QUIC在零信任解决方案的落地实践

2023-12-19 22:12

本文主要是介绍QUIC在零信任解决方案的落地实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

ZTNA为以“网络为中心”的传统企业体系架构向以“身份为中心”的新型企业安全体系架构转变,提供解决方案。随着传统网络边界不断弱化,企业SaaS规模化日益增多,给终端安全访问接入创造了多元化的空间。其中BYOD办公方式尤为突出,移动化办公确实为个人提升了效率,为组织节省了成本;但是给业务系统的安全接入,业务处理及时响应上带来了成本和挑战。需要我们思考是否引入非传统的技术点来解决用户需求侧的痛点,同时保障整体方案的稳定性和可实践性。

ZTNA实施过程中遇到了哪些问题

移动化办公场景下,特别在高铁,地下停车场等基站变更频繁或弱网等场景下,传统TCP应用接入模式下,会导致基于TCP创建的零信任通道在不断地中断,重新建链;导致业务访问无法做到及时响应,体验性很差。

ZTNA解决方案上特别提到了单包授权;而单包授权虽然解决了防火墙端口必须要默认打开的弊端;需要先敲门后授权,减少业务系统的网络攻击面。但是单包授权在应用过程中,还是存在需要改进的点:

● 单包授权模式下,业务报文往往都会伴随着有敲门报文;UDP敲门报文必须要鉴权成功,打开相应业务端口,业务报文才能具备有效性。往往实际落地过程中,由于中间转发设备多路径,以及QoS等问题,首个SYN包握手大概率失败,增加了访问时延。

● 同时传统单包敲门还有一个问题,就是无法解决nat网络场景,导致敲门放大问题。带来了网络不确定性。而传统模型下,只能借助缩小敲门有效时间来应对。

如何来解决上述问题,提升ZTNA解决方案的稳定性?我们最终选用QUIC协议来保障。

QUIC是什么

QUIC(Quick UDP Internet Connection)最开始是由Google提出的一个基于UDP的传输协议,为了解决传统tcp协议固 有的性能瓶颈,它是下一代互联网协议HTTP/3的底层传输协议。除了应用于Web领域,它同样适用于一些通用的需要低延迟、高吞吐特性的传输场景。IETF推进其标准化工作,2021 年,QUIC 协议的正式标准化版本 RFC9000 发布。

选型QUIC的优势体现点

1. 握手建链相比较传统TCP更快

QUIC建链时间大约0~1 RTT,其在两方面做了优化:

● 传输层使用了UDP,相比TCP需要三次握手,减少了1个RTT延迟。

● QUIC底层使用tls1.3进行加密通信,相比tls1.1和tls1.2, 通过ClientHello和ServerHello的扩展进行密钥交换,省去了1.2版本中KeyExchange的过程,又省去了一次握手。

2. 支持连接迁移

相比传统的TCP使用5元组来区别一个连接,QUIC在握手阶段随机生成connection id,不在通过五元组来区分,这样当网络发生改变导致五元组发生变化后,依旧可以通过握手阶段的connection id关联连接。

3. 可插拔的拥塞控制

QUIC在应用层协议实现了Cubic、BBR、Reno等拥塞控制算法,用户可以根据不同的网络场景选择合适的拥塞控制算法,也可以自己实现私有的拥塞控制算法。

4. 避免队首阻塞的多路复用

QUIC 一个连接支持多个 stream,stream之间相互独立,一个stream丢了一个packet,并不影响其他stream。

5. 解决弱网场景

●  tcp重传报文导致rtt无法准确计算。

●  tcp拥塞控制在丢包场景会进行退让,导致发生窗口减少,但丢包有可能是网络状况差,不一定是发生拥塞。

QUIC落地ZTNA场景下实践效果

1. 确认通道稳定性明显提升

网络切换行为

隧道状态(隧道重新建立/隧道不变)

隧道应用访问(访问正常/无法访问)

网络特征(延迟高低,用户是否明显感知)

4G切WIFI(单次快速切换)

隧道不变

正常访问

4G切WIFI(10次快速切换)

隧道不变

正常访问

4G切WIFI(50次快速切换)

隧道不变(4g连接很长一段时间之后再去切wifi,偶现隧道重新连接)

正常访问

否(隧道重连时感知明显 )

网络切换行为

隧道状态(隧道重新建立/隧道不变)

隧道应用访问(访问正常/无法访问)

网络特征(延迟高低,用户是否明显感知)


WIFI切4G(单次快速切换)

隧道不变

正常访问


WIFI切4G(10次快速切换)

隧道不变

正常访问


WIFI切4G(50次快速切换)

隧道不变(wifi连接很长一段时间之后再去切4g,偶现隧道重新连接)

正常访问


否(隧道重连时,感知明显)

从上图表面,当网络发生切换后,零信任通道还是可以正常使用,不需要重新连接。


2. 确认访问速度显著提升

图片

QUIC落地ZTNA场景下实践效果

1. 相比较TCP服务侧处理CPU偏高

相比于TCP的ack是在内核处理,QUIC的ack报文需要从内核提到用户态处理,增加了额外的用户态内核态切换和数据拷贝,并且QUIC的ack报文也是加密的,增加了tls加解密,所以cpu负载更高。

2. 运营商UDP流量限速

由于UDP无连接,中间设备无法进行连接跟踪,当中间网络带宽瓶颈时,TCP有拥塞控制主动让出带宽,而UDP没有拥塞控制,运营商中间设备会对UDP报文QoS限速丢包。

总结

技术本身均有其优势和劣势,这个都是技术选型横向比较中确实存在的。技术的落地关键点还是要来源于结合落地场景的分析,什么样的场景或者需求驱动力下,采用哪种技术会更加稳妥。例如在局域网办公场景下,网络环境趋于稳定,选择QUIC驱动力则不强,可以选用传统TCP进行应用访问建链即可。而我们整体ZTNA解决方案中,均具备灵活可配置,让用户在技术落地和用户场景上找到最优解。

这篇关于QUIC在零信任解决方案的落地实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/513880

相关文章

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Vuex Actions多参数传递的解决方案

《VuexActions多参数传递的解决方案》在Vuex中,actions的设计默认只支持单个参数传递,这有时会限制我们的使用场景,下面我将详细介绍几种处理多参数传递的解决方案,从基础到高级,... 目录一、对象封装法(推荐)二、参数解构法三、柯里化函数法四、Payload 工厂函数五、TypeScript

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的