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

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

kkFileView在线预览office的常见问题以及解决方案

《kkFileView在线预览office的常见问题以及解决方案》kkFileView在线预览Office常见问题包括base64编码配置、Office组件安装、乱码处理及水印添加,解决方案涉及版本适... 目录kkFileView在线预览office的常见问题1.base642.提示找不到OFFICE组件

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例