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