路由器背板的IPv6之變
——
IPv6已經(jīng)從實(shí)驗(yàn)室走出并開(kāi)始規(guī)模商用,目前Internet上運(yùn)行有數(shù)以萬(wàn)計(jì)的交換機(jī)、路由器等IPv4網(wǎng)絡(luò)設(shè)備,但這些現(xiàn)有設(shè)備由于要么采用低性能的純軟件設(shè)計(jì)、要么采用不可升級(jí)的純硬件技術(shù),難以滿(mǎn)足對(duì)IPv6的支持,而采用網(wǎng)絡(luò)處理器技術(shù)的新一代路由器則可以通過(guò)對(duì)網(wǎng)絡(luò)處理器重新編程從而實(shí)現(xiàn)對(duì)IPv6的支持。當(dāng)多個(gè)線(xiàn)路接口卡組成一個(gè)大容量系統(tǒng)時(shí),就必須通過(guò)交換背板來(lái)互連多個(gè)線(xiàn)卡。常用的背板交換系統(tǒng)無(wú)論是Crossbar無(wú)阻塞交換陣列還是基于以太網(wǎng)的交換背板,在IPv4時(shí)代都很好地滿(mǎn)足了設(shè)備性能要求。然而當(dāng)應(yīng)對(duì)IPv6時(shí),看似和IPv4或IPv6并無(wú)多大關(guān)系的背板交換系統(tǒng)是否可以一成不變的拿來(lái)為IPv6系統(tǒng)服務(wù)呢?
IPv4路由器的背板交換
以武漢烽火網(wǎng)絡(luò)公司自主研發(fā)設(shè)計(jì)的高端路由器Fengine R8000系列架構(gòu)為例。R8001采用多線(xiàn)卡設(shè)計(jì),數(shù)據(jù)包的轉(zhuǎn)發(fā)流程在邏輯上分為入方向和出方向。入方向首先從線(xiàn)路接口芯片中接收數(shù)據(jù)包并進(jìn)行數(shù)據(jù)包緩存,判斷校驗(yàn)邏輯對(duì)數(shù)據(jù)包進(jìn)行數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層的協(xié)議分析,根據(jù)不同的協(xié)議類(lèi)型將數(shù)據(jù)包遞交給不同的上層協(xié)議處理模塊。入方向的主要任務(wù)是路由查找,根據(jù)目的IP地址在轉(zhuǎn)發(fā)表項(xiàng)中查找該數(shù)據(jù)包對(duì)應(yīng)的出接口以及下一跳地址。理論上對(duì)一個(gè)數(shù)據(jù)包的路由查找、鏈路層封裝以及附加處理都可以在入方向完成,但在分布式路由系統(tǒng)中,為了系統(tǒng)的穩(wěn)定性、維護(hù)的方便性,通常將相對(duì)獨(dú)立的模塊單獨(dú)設(shè)計(jì),并分布在不同的處理單元中,如路由協(xié)議的計(jì)算由主控單元完成,而鏈路層封裝需要的ARP(地址轉(zhuǎn)換協(xié)議)只需要在本地線(xiàn)卡執(zhí)行,并且由于其僅僅和數(shù)據(jù)包的出方向線(xiàn)卡相關(guān),因此在出方向線(xiàn)卡上維護(hù)的ARP地址緩存只需要與本線(xiàn)卡有關(guān),而其他線(xiàn)卡不需要。出方向主要完成對(duì)IP數(shù)據(jù)包的鏈路層再封裝,之后一個(gè)被系統(tǒng)處理完畢的數(shù)據(jù)包即可根據(jù)入方向查找轉(zhuǎn)發(fā)表得到的出端口從相應(yīng)的物理端口發(fā)送出去。在此我們注意到,從入方向到出方向,需要攜帶的信息為出端口和下一跳兩個(gè)必備的基本信息,以及優(yōu)先級(jí)等其他一些輔助信息,而這些信息在多數(shù)系統(tǒng)中是通過(guò)附加在原始數(shù)據(jù)包的頭部作為有效數(shù)據(jù)的一部分經(jīng)過(guò)交換背板到達(dá)出方向線(xiàn)卡。
交換背板的單端口速率應(yīng)不低于線(xiàn)卡的最大處理能力,這樣才能保證交換通道不會(huì)成為系統(tǒng)的瓶頸。在采用以太網(wǎng)作為交換的系統(tǒng)中,交換背板的單端口速率通常和線(xiàn)卡的最大處理能力一致,如采用的10Gbps網(wǎng)絡(luò)處理器的線(xiàn)卡對(duì)應(yīng)的交換系統(tǒng)應(yīng)采用單端口速率為10Gbps的交換芯片。假定網(wǎng)絡(luò)處理器從線(xiàn)路中以10Gbps的速率接收數(shù)據(jù)包,如果這些數(shù)據(jù)包全部需要通過(guò)交換背板而進(jìn)入其他線(xiàn)卡,此時(shí)要保證不丟包,就必須使發(fā)往交換端口的速率不超過(guò)10Gbps。為滿(mǎn)足這一條件,必須使發(fā)往交換端口的數(shù)據(jù)包的長(zhǎng)度不得大于原始的數(shù)據(jù)包長(zhǎng)度。例如從線(xiàn)路接口以線(xiàn)速(速率為V:bps)收到N個(gè)長(zhǎng)度為L(zhǎng)(單位byte)的數(shù)據(jù)包,在不考慮空閑字節(jié)的情況下,有如下關(guān)系:
當(dāng)包的長(zhǎng)度不變或者變小的情況下,具有與線(xiàn)卡最大處理速率相同的交換端口便可以線(xiàn)速接收來(lái)自線(xiàn)卡的數(shù)據(jù)包;反之,如果包長(zhǎng)度增加,線(xiàn)卡發(fā)送給交換端口的數(shù)據(jù)速率就超過(guò)了交換端口的處理能力,必然造成丟包。
從上面的分析知道數(shù)據(jù)包在從入方向到出方向必須要增加下一跳和出接口等基本信息,下一跳在IPv4中為一個(gè)IP地址,即4字節(jié),出接口則至少一個(gè)字節(jié),因此如果將這些至少5個(gè)字節(jié)的信息添加到原始數(shù)據(jù)包頭部,則通過(guò)背板的數(shù)據(jù)包長(zhǎng)度必然要增加,線(xiàn)速處理必然受到影響。幸運(yùn)的是根據(jù)分布式路由設(shè)計(jì)原則,數(shù)據(jù)包的鏈路層信息只在入方向解析,而出方向不需要原始數(shù)據(jù)包的鏈路層信息,因此在入方向?qū)?shù)據(jù)包發(fā)往交換端口前完全可以將數(shù)據(jù)包的鏈路層信息剝掉。以太網(wǎng)的鏈路層為14個(gè)字節(jié),如果剝掉鏈路層而添加上下一跳地址等信息,則完全可以做到新數(shù)據(jù)包的長(zhǎng)度不超過(guò)原始數(shù)據(jù)包長(zhǎng)度。在采用以太網(wǎng)交換技術(shù)作為背板時(shí),還需要添加6個(gè)字節(jié)的以太網(wǎng)MAC地址作為交換芯片的尋址關(guān)鍵字,但長(zhǎng)度仍不會(huì)超過(guò)原始數(shù)據(jù)包長(zhǎng)度。因此交換系統(tǒng)的線(xiàn)速性能得以保證。
IPv6路由器的背板交換
正是由于IPv4的下一跳地址只有4個(gè)字節(jié),再加上出接口等信息,所添加的頭部小于以太網(wǎng)的鏈路層頭部14個(gè)字節(jié),因此通過(guò)交換背板的包長(zhǎng)度小于原始數(shù)據(jù)包的長(zhǎng)度,因而交換系統(tǒng)的線(xiàn)速性能得以保證;但當(dāng)系統(tǒng)處理IPv6的數(shù)據(jù)包時(shí),由于IPv6路由的下一跳地址為一個(gè)IPv6地址即16個(gè)字節(jié),再加上出接口信息必定超過(guò)以太網(wǎng)的鏈路層頭部,這樣原始數(shù)據(jù)包在按照目前IPv4的處理方法發(fā)往交換背板時(shí),新的數(shù)據(jù)包長(zhǎng)度必然要大于原始數(shù)據(jù)包長(zhǎng),因此交換端口的接收能力必然會(huì)成為系統(tǒng)性能的一個(gè)瓶頸。
常用的背板交換系統(tǒng)有Cross-bar交換和基于以太網(wǎng)的交換兩種,每種方式在針對(duì)IPv6的處理時(shí)采用的方法不同。
1.Crossbar交換系統(tǒng)
在Crossbar交換體系中,目的線(xiàn)卡的尋址是通過(guò)將實(shí)際線(xiàn)卡所在的物理槽位號(hào)寫(xiě)進(jìn)crossbar接口的寄存器中,或者將槽位號(hào)以有效數(shù)據(jù)的形式發(fā)送出去,再由交換單元來(lái)識(shí)別。由于實(shí)際系統(tǒng)的槽位數(shù)一般是有限的若干個(gè)線(xiàn)卡數(shù),用一個(gè)字節(jié)即可表示256個(gè)槽位,對(duì)于一個(gè)單系統(tǒng)來(lái)說(shuō)足夠了。這樣再加上16個(gè)字節(jié)的IPv6下一跳地址和出接口,因而添加在數(shù)據(jù)包頭部的信息有18個(gè)字節(jié);而原始數(shù)據(jù)包的以太網(wǎng)首部為14個(gè)字節(jié),因此既便把鏈路層首部全部去掉,新的數(shù)據(jù)包比原始數(shù)據(jù)包仍會(huì)多出4個(gè)字節(jié)。例如對(duì)于以太網(wǎng)的最小包長(zhǎng)64字節(jié)來(lái)說(shuō),發(fā)送給交換系統(tǒng)的數(shù)據(jù)包實(shí)際上為68字節(jié)。
線(xiàn)速轉(zhuǎn)發(fā)時(shí),以太網(wǎng)幀還包括12個(gè)字節(jié)的IFG(幀間隔)以及8個(gè)字節(jié)的前導(dǎo)碼,因此包長(zhǎng)為L(zhǎng)字節(jié)的以太網(wǎng)幀的滿(mǎn)線(xiàn)速吞吐量為:
其中V為接口的速率,單位為bps。
因此當(dāng)系統(tǒng)線(xiàn)速接收64字節(jié)以太網(wǎng)幀后以68字節(jié)發(fā)送時(shí)系統(tǒng)效率為:
隨著數(shù)據(jù)包長(zhǎng)的增加,因交換開(kāi)銷(xiāo)多出的4個(gè)字節(jié)可以忽略,而在實(shí)際系統(tǒng)中對(duì)于長(zhǎng)包的處理能力都有一定的裕量,因此在實(shí)測(cè)系統(tǒng)中對(duì)于較長(zhǎng)的包如500字節(jié)以上,都可以達(dá)到線(xiàn)速。
在上述分析中所有以太網(wǎng)的幀長(zhǎng)中包含有4字節(jié)的CRC(循環(huán)冗余校驗(yàn))開(kāi)銷(xiāo),在長(zhǎng)距離傳輸中該開(kāi)銷(xiāo)用來(lái)在接收端對(duì)收到的數(shù)據(jù)包進(jìn)行是否有誤碼的判斷。但在Crossbar交換系統(tǒng)中由于是系統(tǒng)內(nèi)部的板卡之間互連,并不需要類(lèi)似CRC的誤碼判別,因此在以太網(wǎng)接收端檢驗(yàn)CRC后即可將該字段剝掉,這樣對(duì)于一個(gè)L長(zhǎng)度的原始數(shù)據(jù)包經(jīng)過(guò)IPv6路由處理后發(fā)往交換端口時(shí)長(zhǎng)度剛好等于L,進(jìn)而交換背板的線(xiàn)速能力得以保證。
2.基于以太網(wǎng)的交換系統(tǒng)
以太網(wǎng)交換的基本原理是根據(jù)以太網(wǎng)幀的目的MAC地址進(jìn)行尋址。在分析IPv4系統(tǒng)時(shí)我們注意到,在將數(shù)據(jù)包發(fā)往交換端口時(shí)除了基本信息下一跳地址和出接口外,必須再增加6個(gè)字節(jié)的MAC地址用于尋址,而且對(duì)于IPv4來(lái)說(shuō)這種處理方法仍能保證交換系統(tǒng)的線(xiàn)速。但在IPv6系統(tǒng)中,從Crossbar交換系統(tǒng)的分析中可以看出,數(shù)據(jù)包長(zhǎng)無(wú)法繼續(xù)進(jìn)行壓縮,因此采用IPv4系統(tǒng)的方法在IPv6的以太網(wǎng)交換系統(tǒng)中無(wú)法保證線(xiàn)速。
以太網(wǎng)交換芯片著名廠(chǎng)商Broadcom提出了一種用于背板交換的10Gbps接口協(xié)議,即Higig協(xié)議。該協(xié)議的核心思想是將用于尋址目的線(xiàn)卡的MAC地址用較少的字段代替,并與轉(zhuǎn)發(fā)需要的其他控制信息如組播廣播方式、VLAN控制、優(yōu)先級(jí)等組合成一個(gè)12字節(jié)的首部,即Higig首部;同時(shí)為保證10Gbps鏈路交換時(shí)的線(xiàn)速性能,Higig首部放置在以太網(wǎng)幀MAC地址的前面,替代標(biāo)準(zhǔn)以太網(wǎng)幀前的8個(gè)前導(dǎo)碼,并將IFG縮減4個(gè)字節(jié)。因此對(duì)于一個(gè)長(zhǎng)度L字節(jié)的以太網(wǎng)幀,加上12字節(jié)IFG和8字節(jié)前導(dǎo)碼,其總長(zhǎng)度為L(zhǎng)+20,而在轉(zhuǎn)換成Higig幀時(shí)其長(zhǎng)度為L(zhǎng)+8字節(jié)IFG+12字節(jié)Higig頭部,總長(zhǎng)度保持不變,因而保證了在完成交換功能時(shí)仍能線(xiàn)速。
從上述分析可以看出使用Higig協(xié)議實(shí)現(xiàn)IPv6的路由交換可以進(jìn)一步提高性能,其方法是將目的卡號(hào)用Higig頭部承載,不占用有效數(shù)據(jù)開(kāi)銷(xiāo),而IPv6下一跳和出接口等基本信息18字節(jié)替代以太網(wǎng)的14個(gè)鏈路層首部信息,這樣新構(gòu)造的有效數(shù)據(jù)包長(zhǎng)僅比原始數(shù)據(jù)包長(zhǎng)多4個(gè)字節(jié),對(duì)于64字節(jié)數(shù)據(jù)包其性能可以達(dá)到95%。為進(jìn)一步提高性能,可以在系統(tǒng)內(nèi)部交換時(shí)將CRC的功能省掉,進(jìn)而可以得到100%的線(xiàn)速性能。系統(tǒng)內(nèi)部的高速交換鏈路雖然有很高的可靠性,但不能100%保證無(wú)誤碼,因此在實(shí)際系統(tǒng)設(shè)計(jì)時(shí)需要在性能和傳輸質(zhì)量之間權(quán)衡,選擇最合理的策略
評(píng)論