服务热线:

著名指标备灾软件开发人员和设备制造商

国内数据安全解决办法 提供商

主页 > 火星人观点 > 细节

让互联网更快:引向QUIC这条路 | MARS模块类
?

  本文是从"云技术实践",石田 版本

  QUIC(Quick UDP Internet Connections)是一种新指标具有默认加密指标internet传输交易,它提供了一些改进,旨在加速HTTP传送并使其更加安全,目标是最终接受代它TCP和TLS交易。在这篇文章中,,尊龙人生就是博将概述QUIC交易指标一些关键特性及其Web好处,以及在支持这一新交易方面遇到指标一些挑战。

  真指标有两个交易是共享指标QUIC这个名字,一是"Google QUIC"(下学期"gQUIC"),是Google几年前工程师创建指标原始交易,经过多年指标实验,现在IETF(Internet Engineering Task Force)采用并正在标准化进程中。

  另一个是"IETF QUIC"(下学期"QUIC"),在[退出]之后.指标结果gQUIC存在着显著指标差异,所以你可以把它看作是一个单独指标交易。通过许多组织和个人指标合作努力,从数据传输格式到握手和HTTP地图 ,QUIC改进原gQUIC创建,但共同指标目标仍然是使互联网尽快、更安全。所以,QUIC提供了哪些改进??

内置指标安全和能力机制

  QUIC现在常用指标东西TCP比较,根本指标改变是它指标创建目标:默认情况下提供安全传输交易。QUIC通过在传输水平提供安全功能(类似身份验证和加密)去实现它,在过去,这些功能通常由高级交易组成.(类似TLS)有。

  首先QUIC握手是结合在一起指标TCP经典指标三人握手TLS 1.3端点指标身份验证和加密参数指标协商。为了熟悉TLS对交易里指标人说出来,,QUIC真指标,它接受代了它TLS记录交易,保留TLS握手交易。

  这不仅真实保连接始终经过身份验证和加密,它也使初始连接更快:给予TCP和TLS 1.3比较握手组合所需指标两次往返行程,素数QUIC握手只需要客户端和服务器之间指标一次往返。

  否定指标回答 ,QUIC其他可能被中间设备滥用以干扰连接指标元数据也被加密。相似,使用连接迁移时,被动攻击可以使用盒 序列号将多个网络路径在上面用户活动关联起来(见下文)。通过加密盒 序列号,QUIC您可以真实保它们不给予连接端点以外指标任何实体指标活动相关联。

  加密也可能是一个僵化指标问题(ossification)有效补救,这使交易具有灵活性(相似,协商交易指标不同版本指标能力)在[退出]之后错误指标假设,无法在实践中使用。僵化指标问题导致TLS 1.3长期延迟部署,在一些变化中,(以防止中间设备错误地阻塞TLS交易)只有在通过之后,才有可能进行部署。

对封头堵塞

 HTTP/2提供指标重要改进之一是将不同指标HTTP要求重用相同指标TCP连接,这使得HTTP/2应用程序可以并行有要求并更好地利用可用指标网络带宽。

 这是一个重大指标进步,类似果你想同时有多个问题,HTTP/1.1要求(相似,平等浏览器需要同时获得它时CSS和JavaScript平等资喷泉呈现网页时),应用程序需要启动多个TCP+TLS连接。创建一个新指标连接需要重复指标初始握手,和初始拥塞窗口加速,这意味着网页指标呈现速度将会降低,多路复用HTTP以避免这些问题。

  但是,它也有一个缺陷,在[退出]之后多次要求/响应使用相同指标TCP连接传输,所以他们都受到包丢失指标影响(相似,在[退出]之后网络拥塞,),即使丢失指标数据只涉及一个要求。这种现象叫做"队长阻塞"。

  QUIC它还为多路复用提供了良好指标支持,改变一下HTTP类可以地图 到不同指标QUIC输送类,但他们仍然拥有相同指标QUIC连接,所以不需要再握手了,分享拥堵状况, QUIC类程是独立传递指标,所以在大多数情况下,,一个类指标盒 丢失不会影响其他输送类。

  这可以大大减少,相似,通过呈现一个完整指标网页(包括CSS、JavaScript、图片和其他类型指标资喷泉)所需时间,尤其 平等通过高拥塞网络时,丢包率很高。

这很简单,A?

  为了实现这些目标,QUIC交易需要打破许多网络应用认为理所平等然指标假设,这可能会使QUIC实现和部署更加困难。

  QUIC创建是基于UDP数据报以简化部署,同时,避免了一些网络设备丢弃未知交易包指标问题,因为绝大多数设备已经支持UDP。这是让指标QUIC在用户空间中实现,相似,浏览器可以实现新指标交易功能并将它们发送给用户,而无需等待操作系统更新。

  但是,虽然预期指标目标是避免损坏,但是,类似何防止滥用和将盒 路由到正真实指标端点仍然是一项挑战。

通过NAT对这个问题指标深入理解

  素数NAT路由器可以使用传统指标4元组(喷泉IP地址和端口,结束IP地址和端口)通过他们指标TCP连接,通过观察TCP SYN、ACK和FIN盒 ,可以检测到连接指标建立和终止。这使您能够准真实地管理它NAT绑定生命周期以及内部和外部IP地址给予端口指标关系。

  但这是..QUIC还不能实现,因为平等前指标部署NAT路由器不明白QUIC,类似此,它们通常返回到默认配置,然后就对了UDP类程有不很精真实,您通常使用任意指标,有时时间很短,可能会影响长期运行指标连接。

  平等NAT退休时间(相似,超时),NAT外部端点将看到来自不同喷泉端口指标盒 ,这些盒 给予最初建立连接时所观察到指标喷泉端口不同,这样就可以只使用4元组无法跟踪连接。

  不仅NAT!QUIC创建用于提供指标函数之一称为"连接迁移",让QUIC端点随意移动到另一个地方IP地址给予网络路径指标连接。相似,平等已知时Wi-Fi网络可用时(相似,平等用户进入他们最喜欢指标咖啡店时,),移动客户端可用于蜂窝数据网络和Wi-Fi迁移QUIC连接。

  QUIC尝试引入一个连接ID指标概念来解决这个问题:一个挨着QUIC包所携带指标可变长度指标opaque blob,可用于标识连接。端点可以使用ID追踪他们负责指标联系,不用检查4元组(真指标,可能不止一个ID标识相同指标连接,相似,使用连接迁移时避免链接不同路径, 但是这种行为是由端点控制指标,而不由中间设备控制指标)。

  但是,这也被使用anycast寻址和ECMP路由网络运营商引发问题,其中一个目标IP地址可能会识别数百甚至数千个服务器。因为这些网络使用指标边缘路由器还不知道类似何有它们QUIC类量,所以有可能发生UDP虽然包属于同一个QUIC连接(也就是说,有同样指标联系ID)但是有不同指标4元组(在[退出]之后 NAT重新绑定也许连接迁移)被路由到另一个服务器,从而切断了连接。

  为了解决这个问题,网络运营商可能需要采用更聪明指标方式4水平负载平衡解决办法 ,它们可以通过软件实现,不接触边缘路由器,它可以被部署(另见Facebook指标Katran活动)。

QPACK

  HTTP/2另一个好处是头部受压(header compression也许HPACK),它让HTTP/2结束点从HTTP删除要求和答复中指标冗余,以减少网络传输指标数据量。

  尤其 ,在其他技术中,,HPACK使用前HTTP要求(也许者回应)发送(也许接受)指标标题动态填充表项,让端点处于新要求中(也许者回应)引用前面在,而不重传。

  HPACK动态表需要在编码器中(发送HTTP要求也许答复指标平等事方)译码器(接见他们指标人)同步,否则,解码器将无法解码它接收到指标内容。

  OnTCP在上面HTTP/2,这种同步是透明指标,因为传输水平(TCP)负责提供给予寄送相同指标订单HTTP要求和答复,编码器可以简单地部分要求更新表指标指令(也许者回应)本身,使编码变得非常简单。但为了QUIC说出来,有点复杂。

  QUIC多个可以在不同指标类上独立有HTTP要求(也许者回应),这意味着,尽管在单个类指标情况下,它负责按顺序传送数据,但是没有跨多个类指标顺序保证。

相似,,类似果客户通过QUIC类A发送HTTP要求A,然后穿过水类B发送要求B,因为网络中指标盒 被重新排序也许丢失,可能会发生服务器要求A早些时候收到了要求B,和要求B被编码并从要求中引用A领头,所以服务器将无法解码它,因为它还没有收到要求A。

  在gQUIC交易中,只是在同一个地方gQUIC类序列化HTTP要求和答复标头(不body)来解决这个问题,这意味着无论类似何都会按顺序传递标头。这是一个非常简单指标解决办法 ,您可以重用大量现有指标HTTP/2密码 ,但再一次 ,它补充道QUIC预期队列头阻塞指标减少。类似此,IETF QUIC工作组创建了一套HTTP和QUIC之间("HTTP/QUIC")基于GIS指标新型地图 关系,并呼叫"QPACK"一种新指标基于GIS领头部压缩方案。

  在HTTP/QUIC地图 和QPACK在最新指标规范草案中,每个HTTP要求/响应切换使用自己指标双向方式QUIC类,所以队里没有阻拦。也,来支持它QPACK,在每一端都需要另外创建两个单方QUIC类,一封寄给另一位同伴QPACK表更新,另一个用于真实认另一方收到指标更新。这样,QPACK编码器只有在解码器显式真实认后才能使用动态表引用。

应对反射攻击

 基于UDP交易中一个常见指标问题是它们容易受到反思性攻击,攻击者通过喷泉IP地址欺骗(他们看起来相似是受害者送指标)诱使一些服务器向第三方受害者发送大量数据。

  平等服务器发送指标响应大于收到指标要求时,这种攻击是非常有效指标,在这种情况下,尊龙人生就是博称之为"增强"。

  TCP通常不受这种攻击指标影响,因为在握手过程中发送指标初始盒 (SYN,SYN+ACK,...)有相同指标长度,所以它们没有任何增强指标潜力。

  再一次 ,QUIC握手非常不对称:相似TLS相同,在第一次传输中,QUIC服务器通常发送自己指标证书链,可能会很大,客户端只需要发送几个字节(QUIC嵌入包中TLS ClientHello文字)。类似此,客户端发送指标初始QUIC必须用特定指标最小长度填充盒 (即使包指标实际内容要小得多)。但是,这种缓解措施仍然不够,因为通用服务器响应跨越多个盒 ,可能仍然比客户端填充指标盒 大得多。

  QUIC该交易还定义了一个显式喷泉地址验证机制,服务器不会首先发送长响应,只是送了一个小得多指标retry盒 ,它包含唯一指标加密令牌,然后,客户端必须在新指标初始盒 中响应它。这样,服务器更容易真实认客户端没有喷泉IP地址欺骗(因为它得到了retry盒 ),你可以握手。这种缓解方法指标缺点是将初始握手指标时间从一次往返增加到两次。

  另一种解决办法 通过减少服务器响应来减少反射攻击指标影响,相似,使用ECDSA证书(通常超过RSA小得多)。也,你也可以尝试使用现成指标压缩算法.(类似zlib和brotli)压缩TLS证书,这个也是gQUIC最初引入指标功能,但现在TLS尚未在。

UDP能力

 QUIC其中一个常见指标问题是部署指标硬件和软件不认识它。类似前所述,QUIC类似何解决路由器等网络中间设备指标问题,但另一个可能指标问题是QUIC穿过终点UDP发送和接收数据指标能力。多年来,很多工作都是为了优化TCP,包括在软件(类似操作系统)还有硬件(类似网络接口)中生成卸载函数,但这些功能现在都不适用于UDP。

  但是,QUIC拥有这些功能只是时间问题。最近,Linux上水平实现UDP普通段卸载(Generic Segmentation Offloading)作为工作指标一个例子,这将让应用程序组装和传输多个用户空间和内核空间网络堆栈UDP段转换为单个(也许者近似)UDP段。也,和在Linux附加zerocopy套接字支持示例,这将使应用程序避免将用户空间内存复制到内核空间。

结论

 给予HTTP/2和TLS 1.3相同,QUIC将提供一些旨在提高网站能力和安全性指标新功能,现在IETF工作小组计划在今年年底前提供这份报告QUIC规范指标第一版。

  原始文本链接: