复杂网络环境下链路速率和PPS之间的换算方法研究
2018-09-03孟祥迪
孟祥迪
(中兴通讯股份有限公司,深圳 518057)
1 引言
本文在介绍以太网上数据传输的基本原理、报文封装格式基础上,重点讲述了L2/L3VPN复杂网络环境下链路速率与PPS之间的换算,并对丢包原因进行了详细地分析,为网络运维人员及测试人员准确定位故障和技术分析,提供了详细的计算理论依据[1-2]。
2 数据在以太网链路上传输的基本原理
以太网采用随机访问控制协议中的CSMIACD(带有冲突检测的载波侦听多址访问)作为多路访问控制协议。如果载波侦听过程中发现介质空闲,则必须等待IFG(Iinter Frame Imme)时间让物理信道恢复平稳,同时也让接收者对接收的帧做必要的处理。下面简单介绍以太网帧间隙与帧的前导字符。
2.1 以太网帧间隙
以太网设备必须允许在被连续传输的两个中间有一个最小空闲周期,被称作帧间空隙(IFG:Interframe Gap;IPG:Interpacket Gap)。它在两个帧中间提供一个短暂的恢复时间,设备有时间做好接收下一帧的准备。
最小的帧间空隙为96比特时间。对于10Mb/s以太网意味着9.6微秒;对于100Mbs以太网意味着96 毫微秒;对于1Gb/s以太网意味着960毫微秒。
2.2 以太网帧的前导字符
每种格式的以太网帧的开始处都有64比特(8 字节)的前导字符。其中,前两个字节称为前同步码(Preamble),内容是16进制数0xA,最后1字节为起始标志符0xAB,标识以太网帧的开始。前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。在物理链路上看到的内容如表1所示。
表1 以太网帧格式
从表1可以看出,目的MAC开始算起到CRC校验结束为一标准帧。图1中的帧间隙(12Byte)和帧前导字符(8Byte)不属于帧的一部分。所以对于每一个帧来说,前面的20个Byte都属于必须的额外开销。
2.3 MPLS报文格式
本文重点介绍MPLS VPN复杂环境下的报文格式。
2.3.1 标准MPLS报文格式[2-3]
MPLS技术起源于IPv4,最初是为了提高转发速率而提出。MPLS技术集二层的快速交换和三层的路由转发于一体。现在许多业务应用,如VPLS、VPWS、L3 VPN以及MPLS TE等都借助于MPLS技术来实现。MPLS的标签转发给这些业务的实现提供了便利。在帧模式的链路上,MPLS报文属于2.5层,它位于以太网帧的协议类型与IP报文头之间。表2为标准MPLS标签的结构。
表2 标准MPLS标签结构
标准MPLS包头有32Bit s,共4个Byte,其中有:20个bit用作标签(Label);3个bit的EXP,协议中没有明确,通常用作COS;1个bit的S用于标识是否是栈底,表明MPLS的标签可以嵌套;8个bit 的TTL,与IP报文的TTL值类似,该值从IP报文的TTL域拷贝过来,每进行一次标签交换,外层label 的TTL值就减“1”。
因此,在每一个MPLS报文可以有多个label,靠近二层头的label为栈顶label。靠近IP报文头的为栈底的label。LSR设备在执行标签交换时总是基于栈顶的label。同时需要考虑在MPLS VPN网络环境中,当存在标签嵌套的情况时,链路速率与PPS之间的换算关系时一定要注意:每一个标签都包含完整的32bit的MPLS报文头,而不只是20个bit的label。
(1)不带802.1Q的MPLS报文格式
图1 不带802.1Q的MPLS报文格式
当报文中带有MPLS标签头时,在Type字段中可以看到0x8847(单播)或者0x8848(组播)。
(2)带有802.1Q的MPLS报文格式
图2 带有802.1Q的MPLS报文格式
当报文中带有MPLS标签头时,在Type字段中仍可以看到0x8847(单播)或者0x8848(组播)。
(3)带两层MPLS标签的报文格式
理论上,MPLS技术的标记栈可以无限嵌套,从而提供无限的业务支持能力,为将来其在VPN 网络中无限承载业务提供可能。但由于受设备物理接口的MTU的限制,MPLS技术也无法实现无限嵌套。目前在VPN网络中应用最多的是实现两层MPLS标签的嵌套,MPLS两层嵌套报文结构。
图3 带两层MPLS标签的报文格式
如图3所示,靠近二层头中的Type字段为栈顶的label,靠近IP报文的为栈底label,LSR设备在执行标签是,总是基于栈顶的label进行交换。每一个标签都包含了完整的32bit的MPLS报文头,而不是仅仅为20个bit的label。
3 链路速率与PPS之间的换算分析
在进行链路速率与实际PPS换算分析过程中,需要考虑以下几种情况:一是分析链路速率与PPS 关系时,需要考虑帧间隙和前导符等20个Byte的额外开销;二是测试过程中,不同测试仪发送流量的时候,有的帧长度包含CRC校验字段,有的不包含CRC校验字段。这在分析计算流量时,需要区别的对待;三是在L2/L3 VPN环境下,无论是LDP形成的LSP,还是通过TE形成LSP,在没有修改相应的MPLS非零标签时,数据转发流量添加标签值是一致的;四是通常所说的10M、100M、1000M、10GE概念,都是指物理介质每秒可以传送多少bit的数据,而在实际应用中经常使用“每秒传递多少数据帧,PPS”来表示报文的速率。
在IP网络环境下,普通以太网报文链路速率和PS之间的换算方式如表3所示:
表3 普通以太网报文链路速率和PS之间的换算方式
假设端口的速率为Abits;帧的长度为L Byte;PPS的值为N,则它们之间的换算为:N=A/(L×8+12(帧间隙)×8+8(前导符)×8)
下面重点介绍L2/L3 VPN环境下,端口链路速率为1000M,如何进行以太网链路速率和PPS之间的换算。
3.1 L2 VPN环境下报文之间换算方式
L2 VPN主要分为VPLS和VPWS两种业务模式。
3.1.1 VPLS业务环境时,RAW模式和TAG模式下的链路速率与PPS的换算
(1)RAW模式下
表4 RAW模式下链路速率与PPS的换算
线速发送的数据帧长度为64字节(带有Vlan tag),当在交换机上开启VPLS业务并设置为RAW 模式时,RAW模式会剥离掉用户Vlan报文头。因此,PE设备在数据帧上添加22个字节。在VPLS业务下的RAW模式的报文之间的换算方式:
(2)TAG模式下
表5 TAG模式下链路速率与PPS的换算
限速发送的数据帧长度为64字节(带有Vlan tag),当在交换机上开启VPLS业务并设置为TAG 模式时,TAG模式未剥离掉用户的Vlan。因此,PE 设备在数据帧上添加26个字节。在VPLS业务下的TAG模式的报文之间的换算方式:
3.1.2 VPWS业务环境时,链路速率与PPS的换算
VPWS业务环境时,当在交换机上开启VPWS 业务时,直接将用户的报文透传出去。因此,PE设备会为数据帧上添加26个字节。在VPWS业务模式下报文之间的换算方式如下:
3.2 L3 VPN环境下报文之间换算方式
表6 L3 VPN环境下报文之间换算方式
线速发送的数据帧的长度为64字节(带有vlan tag的帧)。当交换机开启的L3 VPN业务时,PE设备会为数据帧添加两个MPLS标签,即(4+4)=8个字节。所以当流量从交换机的PE设备出去后,报文的的PPS的值N为:
4 丢包原因分析
当线速发送流量经过网络设备后,如果有“流量丢失”,则可能是由于报文格式的不同造成,属于正常的现象。下面针对几种情况分析可能引起的丢包原因。
(1)当流量流经交换机设备时,交换机上开启了VPLS业务,由于VPLS业务是将CE的数据包在VPLS隧道中透传,所以CE传送的报文在PE上会当作PE数据报文的内容进行传递。因此,CE报文的MAC地址是不会拆分。不管外层标签使用普通的MPLS提供的LSP还是使用TE所提供LSP,PE设备会重新封装PE设备之间的MAC,同时添加2层MPLS标签。一个用来标识VPLS的内层标签;一个是用来提供隧道转发的外层标签。假设网络中存在P设备的情况,两个PE之间采用背靠背方式组网,在PE设备上就弹出了标签。这种情况下在PE设备上就只是添加了内层的MPLS标签,即添加4个字节。因此,在这种情况下就造成报文长度增加从而引起进出流量不一致,形成所谓的“流量丢失”。
(2)当VPLS使用RAW模式而且网络中部署有P设备时,由于RAW模式剥掉CE设备上传过来的vlan tag,这种情况下报文被添加的字节数等于“4(VPLS的内层标签)+4(VPLS的外层标签)+6(PE与PFE之间的目的MAC)+6(PE与PE之间的源MAC)+2(协议类型)=22(字节)”。当VPLS使用TAG模式而且网络中部署有P设备时,由于TAG 模式不需要剥掉CE设备上传过来的vlan tag。因此,在这种情况下,数据报文被添加的字节数等于“(4(yps的内层标签)+4(ypls的外层标签)+6(PE 与PE之间的目的mae+6(PE与PE之间的源mac)+2(协议类型)+4(vlantag)=26(字节)”。因此,在这种情况下,输出流量较输入流量增加了报文长度,导致流量“假丢失”,属于正常转发现象。
(3)当全网部署了VPWS业务,流量流经网络设备时,由于VPLS业务将CE的数据包通过VPWS 隧道透传,CE的报文在PE设备上作为PE数据报文的内容进行传递。因此,CE报文的MAC没有被拆分,仅在PE设备上重新封装PE设备间的MAC,同时添加2层MPLS标签,一个用来标识VPWS的内层标签签,另一个用来提供隧道转发的外层标签,不需考虑外层使用普通的MPLS提供LSP,还是使用TE所提供的LSP。
假设网络中存在PE设备的情况,两个PE之间采用背靠背方式组网,在PE设备上就弹出了标签。这种情况下在PE设备上就只是添加了内层的MPLS 标签(4字节)。当VPWS网络中部署有P设备时,由于VPWS直接将CE报文透传的,而且PE设备直接将用户报文作为数据内容进行封装,重新添加上MPLS的内外层标签和PE到P设备的MAC以及vlan 标签值。所以这种情况下报文被添加了(4(ypls的内层标签)+4(VPLS的外层标签)+6(PE与PE之间的目的mac)+6(PE与PE之间的源MAC)+2(协议类型)+4(vlan tag)=26个字节。输出流量较输入流量增加了报文长度,导致流量“假丢失”,属于正常转发现象。(4)在L3VPN环境下,整体网络业务部署相对复杂,网络中存在大量P设备。当用户的流量从CE送到PE后,PE设备会为其添加2层MPLS标签。内层MPLS标签用来标识VRF实例;外层的MPLS 标签用来转发流量。无论外层的LSP是使用LDP形成的还是通过TE形成的隧道,这种情况下报文被被添加了(4+4)=8个字节的MPLS标签值。在纯L3 VPN环境下,同样会出现输出流量不是线速的情况,属于正常报文转发。
5 结束语
本文对复杂网络环境下链路速率和PPS之间的换算方法进行了详细的讲解,分析了不同应用场景下,因数据报文添加了不同的外层标签而导致“丢包”的原因,并解释了这种丢包如何影响输出流量的。为网络运维人员和相关测试人员计算网络设备以及全网吞吐量提供了理论依据,避免了在各大测试场合由于计算方式的不合理而造成对网络设备转发性能的误解。■