孟祥迪
(中興通訊股份有限公司,深圳 518057)
本文在介紹以太網上數據傳輸的基本原理、報文封裝格式基礎上,重點講述了L2/L3VPN復雜網絡環境下鏈路速率與PPS之間的換算,并對丟包原因進行了詳細地分析,為網絡運維人員及測試人員準確定位故障和技術分析,提供了詳細的計算理論依據[1-2]。
以太網采用隨機訪問控制協議中的CSMIACD(帶有沖突檢測的載波偵聽多址訪問)作為多路訪問控制協議。如果載波偵聽過程中發現介質空閑,則必須等待IFG(Iinter Frame Imme)時間讓物理信道恢復平穩,同時也讓接收者對接收的幀做必要的處理。下面簡單介紹以太網幀間隙與幀的前導字符。
以太網設備必須允許在被連續傳輸的兩個中間有一個最小空閑周期,被稱作幀間空隙(IFG:Interframe Gap;IPG:Interpacket Gap)。它在兩個幀中間提供一個短暫的恢復時間,設備有時間做好接收下一幀的準備。
最小的幀間空隙為96比特時間。對于10Mb/s以太網意味著9.6微秒;對于100Mbs以太網意味著96 毫微秒;對于1Gb/s以太網意味著960毫微秒。
每種格式的以太網幀的開始處都有64比特(8 字節)的前導字符。其中,前兩個字節稱為前同步碼(Preamble),內容是16進制數0xA,最后1字節為起始標志符0xAB,標識以太網幀的開始。前導字符的作用是使接收節點進行同步并做好接收數據幀的準備。在物理鏈路上看到的內容如表1所示。

表1 以太網幀格式
從表1可以看出,目的MAC開始算起到CRC校驗結束為一標準幀。圖1中的幀間隙(12Byte)和幀前導字符(8Byte)不屬于幀的一部分。所以對于每一個幀來說,前面的20個Byte都屬于必須的額外開銷。
本文重點介紹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。
在進行鏈路速率與實際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之間的換算。
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業務模式下報文之間的換算方式如下:



表6 L3 VPN環境下報文之間換算方式
線速發送的數據幀的長度為64字節(帶有vlan tag的幀)。當交換機開啟的L3 VPN業務時,PE設備會為數據幀添加兩個MPLS標簽,即(4+4)=8個字節。所以當流量從交換機的PE設備出去后,報文的的PPS的值N為:

當線速發送流量經過網絡設備后,如果有“流量丟失”,則可能是由于報文格式的不同造成,屬于正常的現象。下面針對幾種情況分析可能引起的丟包原因。
(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環境下,同樣會出現輸出流量不是線速的情況,屬于正常報文轉發。
本文對復雜網絡環境下鏈路速率和PPS之間的換算方法進行了詳細的講解,分析了不同應用場景下,因數據報文添加了不同的外層標簽而導致“丟包”的原因,并解釋了這種丟包如何影響輸出流量的。為網絡運維人員和相關測試人員計算網絡設備以及全網吞吐量提供了理論依據,避免了在各大測試場合由于計算方式的不合理而造成對網絡設備轉發性能的誤解。■