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