【连载-3】数据中心网络虚拟化 隧道技术

4.STT
STT(Stateless Transport Tunneling),无状态传输隧道技术,是在数据中心2层/3层物理网络上创建2层虚拟网络的又一种Overlay技术。在进行数据封装时使用了无状态的类TCP头(TCP-like Header),因此可以认为其是一种MAC-in-TCP方式。使用类TCP头的好处在于可以利用网卡的一些硬件下放机制来提高系统性能,例如TSO(TCP Segmentation Offload)和 LRO(Large Receive Offload)。利用TSO技术,我们可以将TCP分片工作下放到网卡。由网卡来完成大包地分片,以及复制MAC、IP、TCP包头等工作。相反,所谓的LRO技术,即是接收端利用网卡将分片合并成一个大包之后再生成一个中断并发送给操作系统。TSO和LRO的好处是明显的。首先,通过传输大包的方式减少了系统中断的次数,从而减少中断开销。其次,封装的开销(封装头)可以均摊到多个MTU大小的数据包上,所以数据传输的有效性也可以大幅提升。为了利用网卡的这种加速特性,STT的封装头模拟了TCP的格式,但是STT并没有维护TCP的连接状态。例如,在使用STT发送数据之前不需要进行三次握手,并且TCP的拥塞控制机制等等也不会起作用。虽然STT可以利用网卡加速来提升系统性能,但是由于其没有维护TCP的状态信息,所以其也会遇到一些问题。例如,某些系统中可能会使用一些中间盒(middlebox),但是由于有些中间盒会检查数据流的四层会话状态,所以会导致无状态的STT流无法通过这些中间盒。当然这个问题,采用MAC-in-IP的NVGRE方案也同样存在。但是对于MAC-in-UDP的VXLAN方案则不是问题。

如图 9所示,数据包在通过STT发送之前首先需要封装STT帧头。STT帧头的格式如图 10所示,其中各域的含义如下。从这些域的定义我们可以发现,利用STT帧头可以大幅简化接收方的处理进程。例如,接收方可以很容易的通过IP Version域来判断封装内部的载荷数据是IPv4还是IPv6,或者通过TCP payload域来判断载荷数据是否是TCP包。

1)Version:版本,当前需要指定为0

2)Flags:8位,具体定义如下:

  • 0位:checksum verified,如果设置为1,则表示被封装的载荷数据包的检验和已经被验证。
  • 1位:checksum partial,如果检验和只针对TCP/IP头进行计算,那么此位必须置位。另外,需要说明的是,如果发送方使用TSO,那么此位必须置位。最后,从定义我们可以看出,0位和1位不可能同时为1。
  • 2位:IP version,如果载荷数据包是IPv4包,那么该位置位;如果是IPv6包,那么则不置位。
  • 3位:TCP payload,如果载荷包采用TCP,那么该位置位。
  • 4-7:保留,发送方需要将其置0,接收方需要忽略这4位。

3)L4 Offset:STT帧头尾部距载荷数据包四层头(TCP/UDP)的偏移量。增加这个域的好处在于方便接收方的快速处理。

4)Reserved Filed:发送方需要将其置0,而接收方则会忽略这个字段。

5)Max Segment Size:隧道端点在网络上发送数据时需要采用的TCP MSS大小。

6)PCP:优先级

7)V:如果设置为1,则说明后续的VLAN ID和前述PCP域有效

8)VLAN ID:虚拟网络编号,12位

9)Context ID:64位上下文ID。上下文ID的作用是为了标识STT帧的所有者,所以可以将上下文ID理解为广义的虚拟网络标识符。STT使用64标识符的好处是显而易见的,这使得他可以比VXLAN和NVGRE支持更多的虚拟网络。另外,因为STT是为分片而生,所以可以通过分片将STT首部的开销进行分摊。

数据中心网络虚拟化 隧道技术 图 9. 使用STT封装的数据包分片后格式

图 9. 使用STT封装的数据包分片后格式

数据中心网络虚拟化 隧道技术 图 10. 分片前的STT帧头格式

图 10. 分片前的STT帧头格式

就像前面提到的,STT相比于其他封装协议的优势在于可以利用网卡的TCP offload功能来加速数据的传输。而STT实现这个功能的法宝就是在图 9中已经出现的TCP-like头。如图 11所示,STT中所采用的TCP-like头与[RFC0793]中定义的TCP首部是相同的。这里的区别体现在对图 11中用*号标识的两个字段的用法。首先,ACK域被用来标识分片,其在功能上与IPv4和IPv6首部分片中的ID域是一样。对于一个STT数据帧,分片的编号必须是固定的,并且在一定时间之内不同STT数据帧分片的编号不能重复。其次,32位的SEQ域被分为两部分:高16位用于标识整个STT帧的长度(单位字节),而低16位则用于标识当前分片的偏移量。我们可以发现,对于一个STT帧而言,SEQ的高16位是不变的,而低16位则逐渐增大。这使得修改后的SEQ与传统的SEQ的工作方式是一样的。为了保证数据分片的正确组合,一些注意事项必须重点强调。首先,对于一个STT帧,所有分片的源端口必须保持恒定。其次,为了方便实施ECMP等流量均衡策略,针对一个数据流的所有STT帧同样需要具有恒定的源端口号。

数据中心网络虚拟化 隧道技术 图 11. STT分片格式

图 11. STT分片格式

5.总结
通过上面的介绍,我们可以发现为了构建覆盖网络,我们需要将虚拟网络的数据通过隧道传输。而为了构建隧道,我们需要对原有的载荷数据包进行封装。按照封装的层次不同,可以有MAC-in-UDP(VXLAN),MAC-in-IP(NVGRE),MAC-in-TCP(STT),ANY-in-UDP(VXLAN-GPE)和ANY-in-ANY(GRE)。由于不同协议选取的封装层次不同,所以将具有不同的特点。例如,VXLAN使用标准的UDP协议来进行封装,因此具有最好的通过性。STT虽然使用TCP来进行封装,但是它修改了TCP首部的定义,并且没有维护TCP的状态信息,所以对于某些中间盒而言,STT数据帧将无法通过。NVGRE因为使用的是IP封装,所以对于某些需要四层状态信息的中间盒而言,NVGRE数据包也将无法通过。本节介绍的是Overlay网络的一些封装技术,但我们在此处需声明,要做到网络虚拟化,并非一定要通过Overlay的方式。例如,上节提到的NEC VTN所采用的Hop-by-hop方式亦是一种选择。Overlay方式是在主机端实现虚拟化,Hop-by-hop方式是在控制器实现虚拟化。Overlay方式下中间网络设备看到的物理网络流量,隐藏了虚拟机流量,Hop-by-hop方式网络设备看到的是虚拟机流量(即虚拟机可见),从而网络设备可对虚拟机流量做一些QoS操作。但是同时,对Hop-by-hop方式而言,网络设备需维护虚拟机级别的网络状态信息。若网络中虚拟机非常多,则这个开销也是不容忽视的。

参考文献
[1]Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks RFC7348 ,http://datatracker.ietf.org/doc/rfc7348/

[2]Generic Protocol Extension for VXLAN, http://tools.ietf.org/html/draft-quinn-vxlan-gpe-04

[3]M. Sridharan, et al., “NVGRE: Network Virtualization using Generic Routing Encapsulation-- draft-sridharan-virtualization-nvgre-08”, April, 2015.

[4]Brad McConnell, et al., “A Stateless Transport Tunneling Protocol for Network Virtualization-- draft-davie-stt-01”, March, 2012.

A Stateless Transport Tunneling Protocol for Network Virtualization (STT) ,http://datatracker.ietf.org/doc/draft-davie-stt/

作者简介:
付斌章(博士),男,中国科学院计算技术研究所副研究员,主要研究方向为大规模计算机系统高性能互连网络,包括数据中心网络和片上网络等。

吴洁,女,中国科学院计算技术研究所,硕士研究生,主要研究方向为数据中心网络虚拟化.

刘静一,女,华中科技大学,硕士研究生,主要研究方向为数据中心网络虚拟化.注: 该文为其在中科院计算所实习期间工作.

分页阅读: 1 2


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/12077.html
分享到:
相关文章
条评论

登录后才可以评论

fbz_ict 发表于15-07-06
2