孟祥迪
(中興通訊股份有限公司,深圳 518057)
本文在介紹以太網(wǎng)上數(shù)據(jù)傳輸?shù)幕驹怼笪姆庋b格式基礎(chǔ)上,重點講述了L2/L3VPN復(fù)雜網(wǎng)絡(luò)環(huán)境下鏈路速率與PPS之間的換算,并對丟包原因進(jìn)行了詳細(xì)地分析,為網(wǎng)絡(luò)運(yùn)維人員及測試人員準(zhǔn)確定位故障和技術(shù)分析,提供了詳細(xì)的計算理論依據(jù)[1-2]。
以太網(wǎng)采用隨機(jī)訪問控制協(xié)議中的CSMIACD(帶有沖突檢測的載波偵聽多址訪問)作為多路訪問控制協(xié)議。如果載波偵聽過程中發(fā)現(xiàn)介質(zhì)空閑,則必須等待IFG(Iinter Frame Imme)時間讓物理信道恢復(fù)平穩(wěn),同時也讓接收者對接收的幀做必要的處理。下面簡單介紹以太網(wǎng)幀間隙與幀的前導(dǎo)字符。
以太網(wǎng)設(shè)備必須允許在被連續(xù)傳輸?shù)膬蓚€中間有一個最小空閑周期,被稱作幀間空隙(IFG:Interframe Gap;IPG:Interpacket Gap)。它在兩個幀中間提供一個短暫的恢復(fù)時間,設(shè)備有時間做好接收下一幀的準(zhǔn)備。
最小的幀間空隙為96比特時間。對于10Mb/s以太網(wǎng)意味著9.6微秒;對于100Mbs以太網(wǎng)意味著96 毫微秒;對于1Gb/s以太網(wǎng)意味著960毫微秒。
每種格式的以太網(wǎng)幀的開始處都有64比特(8 字節(jié))的前導(dǎo)字符。其中,前兩個字節(jié)稱為前同步碼(Preamble),內(nèi)容是16進(jìn)制數(shù)0xA,最后1字節(jié)為起始標(biāo)志符0xAB,標(biāo)識以太網(wǎng)幀的開始。前導(dǎo)字符的作用是使接收節(jié)點進(jìn)行同步并做好接收數(shù)據(jù)幀的準(zhǔn)備。在物理鏈路上看到的內(nèi)容如表1所示。
表1 以太網(wǎng)幀格式
從表1可以看出,目的MAC開始算起到CRC校驗結(jié)束為一標(biāo)準(zhǔn)幀。圖1中的幀間隙(12Byte)和幀前導(dǎo)字符(8Byte)不屬于幀的一部分。所以對于每一個幀來說,前面的20個Byte都屬于必須的額外開銷。
本文重點介紹MPLS VPN復(fù)雜環(huán)境下的報文格式。
2.3.1 標(biāo)準(zhǔn)MPLS報文格式[2-3]
MPLS技術(shù)起源于IPv4,最初是為了提高轉(zhuǎn)發(fā)速率而提出。MPLS技術(shù)集二層的快速交換和三層的路由轉(zhuǎn)發(fā)于一體。現(xiàn)在許多業(yè)務(wù)應(yīng)用,如VPLS、VPWS、L3 VPN以及MPLS TE等都借助于MPLS技術(shù)來實現(xiàn)。MPLS的標(biāo)簽轉(zhuǎn)發(fā)給這些業(yè)務(wù)的實現(xiàn)提供了便利。在幀模式的鏈路上,MPLS報文屬于2.5層,它位于以太網(wǎng)幀的協(xié)議類型與IP報文頭之間。表2為標(biāo)準(zhǔn)MPLS標(biāo)簽的結(jié)構(gòu)。
表2 標(biāo)準(zhǔn)MPLS標(biāo)簽結(jié)構(gòu)
標(biāo)準(zhǔn)MPLS包頭有32Bit s,共4個Byte,其中有:20個bit用作標(biāo)簽(Label);3個bit的EXP,協(xié)議中沒有明確,通常用作COS;1個bit的S用于標(biāo)識是否是棧底,表明MPLS的標(biāo)簽可以嵌套;8個bit 的TTL,與IP報文的TTL值類似,該值從IP報文的TTL域拷貝過來,每進(jìn)行一次標(biāo)簽交換,外層label 的TTL值就減“1”。
因此,在每一個MPLS報文可以有多個label,靠近二層頭的label為棧頂label??拷麵P報文頭的為棧底的label。LSR設(shè)備在執(zhí)行標(biāo)簽交換時總是基于棧頂?shù)膌abel。同時需要考慮在MPLS VPN網(wǎng)絡(luò)環(huán)境中,當(dāng)存在標(biāo)簽嵌套的情況時,鏈路速率與PPS之間的換算關(guān)系時一定要注意:每一個標(biāo)簽都包含完整的32bit的MPLS報文頭,而不只是20個bit的label。
(1)不帶802.1Q的MPLS報文格式
圖1 不帶802.1Q的MPLS報文格式
當(dāng)報文中帶有MPLS標(biāo)簽頭時,在Type字段中可以看到0x8847(單播)或者0x8848(組播)。
(2)帶有802.1Q的MPLS報文格式
圖2 帶有802.1Q的MPLS報文格式
當(dāng)報文中帶有MPLS標(biāo)簽頭時,在Type字段中仍可以看到0x8847(單播)或者0x8848(組播)。
(3)帶兩層MPLS標(biāo)簽的報文格式
理論上,MPLS技術(shù)的標(biāo)記??梢詿o限嵌套,從而提供無限的業(yè)務(wù)支持能力,為將來其在VPN 網(wǎng)絡(luò)中無限承載業(yè)務(wù)提供可能。但由于受設(shè)備物理接口的MTU的限制,MPLS技術(shù)也無法實現(xiàn)無限嵌套。目前在VPN網(wǎng)絡(luò)中應(yīng)用最多的是實現(xiàn)兩層MPLS標(biāo)簽的嵌套,MPLS兩層嵌套報文結(jié)構(gòu)。
圖3 帶兩層MPLS標(biāo)簽的報文格式
如圖3所示,靠近二層頭中的Type字段為棧頂?shù)膌abel,靠近IP報文的為棧底label,LSR設(shè)備在執(zhí)行標(biāo)簽是,總是基于棧頂?shù)膌abel進(jìn)行交換。每一個標(biāo)簽都包含了完整的32bit的MPLS報文頭,而不是僅僅為20個bit的label。
在進(jìn)行鏈路速率與實際PPS換算分析過程中,需要考慮以下幾種情況:一是分析鏈路速率與PPS 關(guān)系時,需要考慮幀間隙和前導(dǎo)符等20個Byte的額外開銷;二是測試過程中,不同測試儀發(fā)送流量的時候,有的幀長度包含CRC校驗字段,有的不包含CRC校驗字段。這在分析計算流量時,需要區(qū)別的對待;三是在L2/L3 VPN環(huán)境下,無論是LDP形成的LSP,還是通過TE形成LSP,在沒有修改相應(yīng)的MPLS非零標(biāo)簽時,數(shù)據(jù)轉(zhuǎn)發(fā)流量添加標(biāo)簽值是一致的;四是通常所說的10M、100M、1000M、10GE概念,都是指物理介質(zhì)每秒可以傳送多少bit的數(shù)據(jù),而在實際應(yīng)用中經(jīng)常使用“每秒傳遞多少數(shù)據(jù)幀,PPS”來表示報文的速率。
在IP網(wǎng)絡(luò)環(huán)境下,普通以太網(wǎng)報文鏈路速率和PS之間的換算方式如表3所示:
表3 普通以太網(wǎng)報文鏈路速率和PS之間的換算方式
假設(shè)端口的速率為Abits;幀的長度為L Byte;PPS的值為N,則它們之間的換算為:N=A/(L×8+12(幀間隙)×8+8(前導(dǎo)符)×8)
下面重點介紹L2/L3 VPN環(huán)境下,端口鏈路速率為1000M,如何進(jìn)行以太網(wǎng)鏈路速率和PPS之間的換算。
L2 VPN主要分為VPLS和VPWS兩種業(yè)務(wù)模式。
3.1.1 VPLS業(yè)務(wù)環(huán)境時,RAW模式和TAG模式下的鏈路速率與PPS的換算
(1)RAW模式下
表4 RAW模式下鏈路速率與PPS的換算
線速發(fā)送的數(shù)據(jù)幀長度為64字節(jié)(帶有Vlan tag),當(dāng)在交換機(jī)上開啟VPLS業(yè)務(wù)并設(shè)置為RAW 模式時,RAW模式會剝離掉用戶Vlan報文頭。因此,PE設(shè)備在數(shù)據(jù)幀上添加22個字節(jié)。在VPLS業(yè)務(wù)下的RAW模式的報文之間的換算方式:
(2)TAG模式下
表5 TAG模式下鏈路速率與PPS的換算
限速發(fā)送的數(shù)據(jù)幀長度為64字節(jié)(帶有Vlan tag),當(dāng)在交換機(jī)上開啟VPLS業(yè)務(wù)并設(shè)置為TAG 模式時,TAG模式未剝離掉用戶的Vlan。因此,PE 設(shè)備在數(shù)據(jù)幀上添加26個字節(jié)。在VPLS業(yè)務(wù)下的TAG模式的報文之間的換算方式:
3.1.2 VPWS業(yè)務(wù)環(huán)境時,鏈路速率與PPS的換算
VPWS業(yè)務(wù)環(huán)境時,當(dāng)在交換機(jī)上開啟VPWS 業(yè)務(wù)時,直接將用戶的報文透傳出去。因此,PE設(shè)備會為數(shù)據(jù)幀上添加26個字節(jié)。在VPWS業(yè)務(wù)模式下報文之間的換算方式如下:
表6 L3 VPN環(huán)境下報文之間換算方式
線速發(fā)送的數(shù)據(jù)幀的長度為64字節(jié)(帶有vlan tag的幀)。當(dāng)交換機(jī)開啟的L3 VPN業(yè)務(wù)時,PE設(shè)備會為數(shù)據(jù)幀添加兩個MPLS標(biāo)簽,即(4+4)=8個字節(jié)。所以當(dāng)流量從交換機(jī)的PE設(shè)備出去后,報文的的PPS的值N為:
當(dāng)線速發(fā)送流量經(jīng)過網(wǎng)絡(luò)設(shè)備后,如果有“流量丟失”,則可能是由于報文格式的不同造成,屬于正常的現(xiàn)象。下面針對幾種情況分析可能引起的丟包原因。
(1)當(dāng)流量流經(jīng)交換機(jī)設(shè)備時,交換機(jī)上開啟了VPLS業(yè)務(wù),由于VPLS業(yè)務(wù)是將CE的數(shù)據(jù)包在VPLS隧道中透傳,所以CE傳送的報文在PE上會當(dāng)作PE數(shù)據(jù)報文的內(nèi)容進(jìn)行傳遞。因此,CE報文的MAC地址是不會拆分。不管外層標(biāo)簽使用普通的MPLS提供的LSP還是使用TE所提供LSP,PE設(shè)備會重新封裝PE設(shè)備之間的MAC,同時添加2層MPLS標(biāo)簽。一個用來標(biāo)識VPLS的內(nèi)層標(biāo)簽;一個是用來提供隧道轉(zhuǎn)發(fā)的外層標(biāo)簽。假設(shè)網(wǎng)絡(luò)中存在P設(shè)備的情況,兩個PE之間采用背靠背方式組網(wǎng),在PE設(shè)備上就彈出了標(biāo)簽。這種情況下在PE設(shè)備上就只是添加了內(nèi)層的MPLS標(biāo)簽,即添加4個字節(jié)。因此,在這種情況下就造成報文長度增加從而引起進(jìn)出流量不一致,形成所謂的“流量丟失”。
(2)當(dāng)VPLS使用RAW模式而且網(wǎng)絡(luò)中部署有P設(shè)備時,由于RAW模式剝掉CE設(shè)備上傳過來的vlan tag,這種情況下報文被添加的字節(jié)數(shù)等于“4(VPLS的內(nèi)層標(biāo)簽)+4(VPLS的外層標(biāo)簽)+6(PE與PFE之間的目的MAC)+6(PE與PE之間的源MAC)+2(協(xié)議類型)=22(字節(jié))”。當(dāng)VPLS使用TAG模式而且網(wǎng)絡(luò)中部署有P設(shè)備時,由于TAG 模式不需要剝掉CE設(shè)備上傳過來的vlan tag。因此,在這種情況下,數(shù)據(jù)報文被添加的字節(jié)數(shù)等于“(4(yps的內(nèi)層標(biāo)簽)+4(ypls的外層標(biāo)簽)+6(PE 與PE之間的目的mae+6(PE與PE之間的源mac)+2(協(xié)議類型)+4(vlantag)=26(字節(jié))”。因此,在這種情況下,輸出流量較輸入流量增加了報文長度,導(dǎo)致流量“假丟失”,屬于正常轉(zhuǎn)發(fā)現(xiàn)象。
(3)當(dāng)全網(wǎng)部署了VPWS業(yè)務(wù),流量流經(jīng)網(wǎng)絡(luò)設(shè)備時,由于VPLS業(yè)務(wù)將CE的數(shù)據(jù)包通過VPWS 隧道透傳,CE的報文在PE設(shè)備上作為PE數(shù)據(jù)報文的內(nèi)容進(jìn)行傳遞。因此,CE報文的MAC沒有被拆分,僅在PE設(shè)備上重新封裝PE設(shè)備間的MAC,同時添加2層MPLS標(biāo)簽,一個用來標(biāo)識VPWS的內(nèi)層標(biāo)簽簽,另一個用來提供隧道轉(zhuǎn)發(fā)的外層標(biāo)簽,不需考慮外層使用普通的MPLS提供LSP,還是使用TE所提供的LSP。
假設(shè)網(wǎng)絡(luò)中存在PE設(shè)備的情況,兩個PE之間采用背靠背方式組網(wǎng),在PE設(shè)備上就彈出了標(biāo)簽。這種情況下在PE設(shè)備上就只是添加了內(nèi)層的MPLS 標(biāo)簽(4字節(jié))。當(dāng)VPWS網(wǎng)絡(luò)中部署有P設(shè)備時,由于VPWS直接將CE報文透傳的,而且PE設(shè)備直接將用戶報文作為數(shù)據(jù)內(nèi)容進(jìn)行封裝,重新添加上MPLS的內(nèi)外層標(biāo)簽和PE到P設(shè)備的MAC以及vlan 標(biāo)簽值。所以這種情況下報文被添加了(4(ypls的內(nèi)層標(biāo)簽)+4(VPLS的外層標(biāo)簽)+6(PE與PE之間的目的mac)+6(PE與PE之間的源MAC)+2(協(xié)議類型)+4(vlan tag)=26個字節(jié)。輸出流量較輸入流量增加了報文長度,導(dǎo)致流量“假丟失”,屬于正常轉(zhuǎn)發(fā)現(xiàn)象。(4)在L3VPN環(huán)境下,整體網(wǎng)絡(luò)業(yè)務(wù)部署相對復(fù)雜,網(wǎng)絡(luò)中存在大量P設(shè)備。當(dāng)用戶的流量從CE送到PE后,PE設(shè)備會為其添加2層MPLS標(biāo)簽。內(nèi)層MPLS標(biāo)簽用來標(biāo)識VRF實例;外層的MPLS 標(biāo)簽用來轉(zhuǎn)發(fā)流量。無論外層的LSP是使用LDP形成的還是通過TE形成的隧道,這種情況下報文被被添加了(4+4)=8個字節(jié)的MPLS標(biāo)簽值。在純L3 VPN環(huán)境下,同樣會出現(xiàn)輸出流量不是線速的情況,屬于正常報文轉(zhuǎn)發(fā)。
本文對復(fù)雜網(wǎng)絡(luò)環(huán)境下鏈路速率和PPS之間的換算方法進(jìn)行了詳細(xì)的講解,分析了不同應(yīng)用場景下,因數(shù)據(jù)報文添加了不同的外層標(biāo)簽而導(dǎo)致“丟包”的原因,并解釋了這種丟包如何影響輸出流量的。為網(wǎng)絡(luò)運(yùn)維人員和相關(guān)測試人員計算網(wǎng)絡(luò)設(shè)備以及全網(wǎng)吞吐量提供了理論依據(jù),避免了在各大測試場合由于計算方式的不合理而造成對網(wǎng)絡(luò)設(shè)備轉(zhuǎn)發(fā)性能的誤解?!?/p>