胡 捷,陳運清
(中國電信股份有限公司北京研究院 北京100035)
DS-Lite(輕型雙棧)技術(shù)是中國電信集團公司(以下簡稱中國電信)在從IPv4向IPv6遷移時期采用的一種針對固網(wǎng)寬帶用戶部署的過渡技術(shù),可有力推進(jìn)網(wǎng)絡(luò)基礎(chǔ)設(shè)施的IPv6進(jìn)程,加快向IPv6的過渡步伐。
在中國電信部署DS-Lite過渡技術(shù)時,經(jīng)過論證,規(guī)模在30萬用戶以下的城域網(wǎng),每年新增用戶以10%計,可以采用集中式部署的方式滿足3~5年新增用戶的DS-Lite接入需求,即在兩套城域網(wǎng)核心出口路由器CR1和CR2處分別旁掛一臺獨立式AFTR(address family transition router)設(shè)備,實現(xiàn)城域網(wǎng)內(nèi)所有DS-Lite用戶的隧道封裝/解封裝、NAT(network address translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)、路由表查找、狀態(tài)維護(hù)和日志發(fā)送。
現(xiàn)階段的產(chǎn)業(yè)實現(xiàn)上,獨立式AFTR設(shè)備基于MSE設(shè)備設(shè)置AFTR功能板卡實現(xiàn),即采用成熟的MSE機箱、電源、交換矩陣、主控和路由引擎以及用于連接CR和轉(zhuǎn)發(fā)流量的線卡;與MSE唯一不同的就是多了一種有狀態(tài)設(shè)備——AFTR板卡。由于MSE整機交換容量不可能無限遞增,且設(shè)備單槽吞吐率受背板帶寬制約,就目前的制造工藝來說,單塊AFTR板卡支持的DS-Lite隧道數(shù)、每秒新建的會話數(shù)、并發(fā)會話數(shù)以及單板的轉(zhuǎn)發(fā)率等性能上都有一個限度,為了支持更多的DS-Lite用戶,必須在單臺MSE機箱中級聯(lián)多塊AFTR板卡,實現(xiàn)性能線性遞增。仍以一個30萬用戶規(guī)模的城域網(wǎng)為例,如果采用集中式部署DS-Lite,基于目前單塊AFTR板卡性能測試結(jié)果和用戶規(guī)模對吞吐率、并發(fā)會話和每秒新建連接的要求,每臺獨立式AFTR設(shè)備需要配置6~8塊AFTR板卡才能滿足性能要求。
設(shè)備池化,顧名思義就是多塊相同功能的設(shè)備、板卡通過某種方式進(jìn)行集群、級聯(lián)、堆疊,采用虛擬化技術(shù)(多虛一),使得原單一設(shè)備的性能獲得線性增長。從設(shè)備角度而言,池化技術(shù)有多個物理上獨立的設(shè)備進(jìn)行池化和單臺設(shè)備內(nèi)多個物理獨立的板卡進(jìn)行池化之分;多臺Web服務(wù)器經(jīng)過集群技術(shù)組成的服務(wù)器群(server farm)就是前者的最好案例,本文所研究的AFTR板卡池化則是后者的一種實現(xiàn)。從應(yīng)用和業(yè)務(wù)模式角度看,池化技術(shù)還可以分為無狀態(tài)池化和有狀態(tài)池化。以單臺設(shè)備多板卡為例,路由器的多塊交換矩陣模塊之間就是無狀態(tài)池化:構(gòu)成一個全雙工通信的雙向流量,可以經(jīng)過不同的交換矩陣模塊,甚至組成一個單向流的不同報文,都可以經(jīng)過不同的矩陣模塊,所有被切分為信元的報文以及由多個報文構(gòu)成的流都會在線卡進(jìn)行重新組裝。由于無狀態(tài),多個交換矩陣模塊的池化是天然支持的,交換容量隨矩陣模塊的疊加而線性增長。與交換矩陣模塊不同,AFTR板卡需要負(fù)責(zé)隧道終結(jié)和IPv4-IPv4地址轉(zhuǎn)換,這些會話信息作為一種狀態(tài)存在于內(nèi)存數(shù)據(jù)庫,因此是有狀態(tài)設(shè)備。多塊有狀態(tài)的AFTR板卡進(jìn)行池化,與多塊無狀態(tài)的交換矩陣池化在實現(xiàn)上完全不同,技術(shù)要復(fù)雜得多。因為一個狀態(tài)是由構(gòu)成一個通信的雙向流特征(通常是IP報文的五元組,即基于TCP/IP實現(xiàn)進(jìn)程通信的socket association)共同構(gòu)成的,在多塊板卡池化過程中,必須解決組成一個狀態(tài)的雙向流特征匹配關(guān)系。目前基于狀態(tài)的板卡池化主要采用以下兩種解決方案。
(1)所有AFTR板卡自行維護(hù)各自的狀態(tài)表
所有AFTR板卡維護(hù)自己的會話狀態(tài)表時,為了確保狀態(tài)雙向流特征匹配,上下行流量必須經(jīng)過物理上同一塊AFTR板卡。上行去程流量一旦選定某個AFTR板卡,下行回程流量通過基于NAT地址池為目的地址的選路方式,自動引導(dǎo)到去程選定的同一塊AFTR板卡上。板卡之間不進(jìn)行會話狀態(tài)同步,當(dāng)板卡故障,這塊板卡原先承載的會話全部需要新建,并建立在其他板卡上。會話重建在互聯(lián)網(wǎng)流量模型上經(jīng)常發(fā)生,對絕大多數(shù)互聯(lián)網(wǎng)應(yīng)用都不會導(dǎo)致問題,以基于HTTP的Web瀏覽應(yīng)用為例,用戶每刷新一次網(wǎng)頁頁面就是一次會話重建的過程。每個AFTR板卡維護(hù)自己獨立的會話狀態(tài)表,這樣的池化實現(xiàn)簡單,只需要解決雙向流量經(jīng)過同一個物理上的AFTR板卡即可,總體而言簡化了冗余實現(xiàn),降低了成本。
(2)所有板卡共享全部狀態(tài)表
如果要求所有板卡共享狀態(tài),必須實現(xiàn)所有AFTR板卡之間的會話同步,理論上是將多塊AFTR板卡統(tǒng)一整合為可動態(tài)管理和分配的資源池,徹底虛擬為邏輯上一塊,理想狀態(tài)下可實現(xiàn)硬件和軟件完全分離,硬件資源高度整合共享,任務(wù)和應(yīng)用可以跨AFTR板卡調(diào)度或協(xié)同。最直觀的感受就是支持一個會話的雙向流量分別經(jīng)由不同的AFTR板卡處理和轉(zhuǎn)發(fā)。但是以目前的技術(shù)發(fā)展現(xiàn)狀看,這樣做代價很大,實現(xiàn)上也存在瓶頸。為滿足這種需求,理論上可采用主/備(master-slave)和P2P(peer to peer)方式實現(xiàn)多塊板卡之間的狀態(tài)同步,但實現(xiàn)的代價和困難如下。
·主/備方式:多個板卡之間通過一塊主板卡運行內(nèi)存數(shù)據(jù)庫,其他備用板卡訪問主板卡。主板卡負(fù)責(zé)提供獨立的物理內(nèi)存進(jìn)行狀態(tài)流表信息存儲,需要與所有AFTR板卡建立數(shù)據(jù)傳輸通道,由于大量會話的建立是非常隨機的,設(shè)備對每秒新建、并發(fā)會話數(shù)有很高的要求,每個備用板卡新建會話信息要不斷和主板卡上行同步,主板卡還要即刻將新建會話向所有備用板卡實現(xiàn)下行同步,頻繁的一來一往將占用板卡—交換矩陣的吞吐率以及交換矩陣本身的交換能力,且消耗主板卡的CPU處理性能。
·P2P方式:采用每個AFTR板卡分別存儲的模式,實現(xiàn)技術(shù)是每塊AFTR板卡與其他AFTR板卡之間建立全網(wǎng)型(full mesh)的會話狀態(tài)表同步。假設(shè)8塊AFTR板卡進(jìn)行池化,單機系統(tǒng)內(nèi)部需要支持8×(8-1)/2=28個一一對應(yīng)的板卡同步數(shù)據(jù)流,相對主/備方式的7條同步數(shù)據(jù)流而言,AFTR板卡之間的會話同步數(shù)據(jù)極大,更加耗費板卡與矩陣之間的吞吐量,降低交換矩陣的有效能力。
無論哪種同步方式,為了確保每塊AFTR單板維護(hù)全部8塊AFTR的所有會話狀態(tài)表,實際上都會導(dǎo)致單塊AFTR的內(nèi)存配置過大或者單塊AFTR板卡實際支持的并發(fā)會話數(shù)降為標(biāo)稱值的1/8,池化的優(yōu)勢體現(xiàn)不明顯。
經(jīng)過上面的分析,筆者認(rèn)為,至少在當(dāng)前,單臺設(shè)備內(nèi)配置多塊有狀態(tài)AFTR板卡的池化方案,應(yīng)采用“所有AFTR板卡自行維護(hù)各自的狀態(tài)”的方式進(jìn)行。
傳統(tǒng)方式下,多塊AFTR板卡通常采用N∶1方式實現(xiàn)冗余,即單獨采用一塊AFTR板卡作為待機備用(standby),其他N塊AFTR板卡處于激活(active)狀態(tài)。所有激活狀態(tài)的板卡之間互為獨立,沒有關(guān)聯(lián),各自維護(hù)自己的狀態(tài),各自采用獨立的NAT地址池。由于每個單獨板卡維護(hù)自己的會話狀態(tài),必須確保一個會話的上、下行流量都經(jīng)過同一塊物理AFTR板卡,為了實現(xiàn)這種要求,在上行去程流量進(jìn)入AFTR設(shè)備的時候,主流廠商采用基于策略的選路方式,根據(jù)不同的IPv6源地址范圍,指定送往某塊具體的AFTR板卡;下行流量采用NAT后的公有IPv4源地址作為回程目的地址,通過路由尋址的方式,找到同一塊AFTR板卡。
這樣的實現(xiàn)方式具有如下缺陷。
·上行去程流量根據(jù)IPv6源地址進(jìn)行策略路由,是沿襲了獨立式CGN設(shè)備的做法,流量進(jìn)入獨立式CGN設(shè)備后,流量目的地址是互聯(lián)網(wǎng)上的應(yīng)用和業(yè)務(wù)服務(wù)器所在地,而且有些流量是采用公有地址的,無需經(jīng)過NAT,因此在獨立式CGN設(shè)備上必須配置策略路由,首先判斷流量的IPv4源地址,公有地址的直接查找路由表轉(zhuǎn)發(fā);私有地址的再指向CGN板卡,如果配置了多塊CGN板卡,還需要進(jìn)一步對私有地址進(jìn)行區(qū)分,與不同的網(wǎng)段地址相匹配的流量進(jìn)入不同的CGN板卡,以確保實現(xiàn)大致的流量均衡。這樣的解決方案要求私有地址在城域網(wǎng)中以BRAS為粒度按區(qū)域進(jìn)行嚴(yán)格規(guī)劃和分配,且地址段不能太碎裂,對城域網(wǎng)私有IPv4地址的部署帶來很大挑戰(zhàn)。此外,當(dāng)一塊AFTR出現(xiàn)故障時,策略路由需要盡快感知,并將原本要發(fā)往故障AFTR的流量重新定向到待機備用的AFTR板卡,同時還要考慮原板卡NAT地址池的再利用,否則待機備用板卡還要占用一段公網(wǎng)地址。從技術(shù)實現(xiàn)、設(shè)備配置和故障排查上來看,這種方式都極為復(fù)雜,在生產(chǎn)網(wǎng)絡(luò)中幾乎不可用。
·N∶1方式需要單獨拿出一塊AFTR板卡專門作為備份,平時不承載業(yè)務(wù)流量,板卡的利用率不高。
為了解決以上問題,必須采用特定的技術(shù)方案,實現(xiàn)多塊AFTR板卡如下的池化效果:
·多塊板卡通過級聯(lián)實現(xiàn)性能線性疊加;
·采用N+1方式實現(xiàn)負(fù)載分擔(dān)和冗余;
·NAT地址池資源可以在所有AFTR板卡之間漂移和共享;
·一塊AFTR出現(xiàn)故障前所承載的流量、會話以及占用的NAT地址資源,故障后都平均分?jǐn)偟狡渌5腁FTR板卡。
具體的架構(gòu)設(shè)計和技術(shù)實現(xiàn)如下。
在采用DS-Lite過渡技術(shù)時,與私網(wǎng)雙棧NAT444最大的不同,同時也是DS-Lite的優(yōu)勢就在于,所有DS-Lite流量都是IPv6封裝的隧道流量,目的地址就是AFTR板卡的邏輯地址,流量根據(jù)IPv6選路經(jīng)城域網(wǎng)引導(dǎo)到獨立式AFTR設(shè)備的線卡,進(jìn)入線卡后查找FIB經(jīng)交換矩陣轉(zhuǎn)發(fā)到AFTR板卡。如果是其他通往IPv6互聯(lián)網(wǎng)的流量,則在進(jìn)入線卡的時候,經(jīng)過FIB查找而直接經(jīng)交換矩陣轉(zhuǎn)發(fā)到Egress線卡,無需進(jìn)入AFTR板卡。
當(dāng)獨立式AFTR設(shè)備配置了多塊AFTR板卡時,系統(tǒng)必須對外只提供一個邏輯地址,即所有AFTR板卡共享同一個IPv6 AFTR地址。進(jìn)入AFTR的流量,根據(jù)B4源地址散列值隨機分配到不同的AFTR板卡進(jìn)行隧道終結(jié)和NAT處理,此方式優(yōu)勢如下。
·AFTR板卡共享一個邏輯地址,所有DS-Lite客戶端B4設(shè)備只需配置一個隧道目的地址,基于源地址散列實現(xiàn)上行去程流量平均、隨機分布在不同AFTR板卡上,自動實現(xiàn)負(fù)載分擔(dān)。
·由于采用AFTR地址作為隧道目的地址牽引DS-Lite流量,無需對源地址進(jìn)行特定規(guī)劃,無需配置PBR,利于在生產(chǎn)網(wǎng)絡(luò)中的實際部署。
每個板卡占用的NAT地址池資源,以/32為粒度,由獨立式AFTR設(shè)備的主控卡統(tǒng)一、隨機分配到不同的AFTR板卡上,即所有AFTR板卡上用作NAT的源地址都是離散、相互獨立、以/32為粒度的地址,其優(yōu)勢如下。
·主控卡統(tǒng)一分配NAT地址,NAT地址池與AFTR板卡實現(xiàn)松耦合,沒有固定的綁定關(guān)系。AFTR板卡故障后釋放所占用的NAT地址,可以被主控卡回收。
·主控卡重新下發(fā)回收的NAT地址后隨即生成新的FIB并同步下發(fā)到所有線卡,確保獨立式AFTR設(shè)備的所有線卡的FIB更新,從而引導(dǎo)反向下行流量進(jìn)入同一個AFTR板卡。
·采用多個離散/32地址可以避免采用一個子網(wǎng)段作為NAT地址池時,子網(wǎng)全0(網(wǎng)絡(luò)地址)和全1(廣播地址)地址不能用作NAT源地址的問題,提高地址利用率。
·主控卡將回收地址以/32為粒度隨機、均衡地分配到其他未故障板卡上,從而實現(xiàn)這塊板卡原先承擔(dān)的會話數(shù)和流量可以均衡地分擔(dān)到其他板卡。
·可以實現(xiàn)N+1方式的冗余和備用,所有AFTR板卡全部作為激活板卡使用,避免了N∶1方式下需要拿出專門一塊板卡作為待機備用而導(dǎo)致的資源浪費。
圖1 雙向流轉(zhuǎn)發(fā)過程(多塊AFTR板卡的情況)
綜上所述,多塊AFTR池化組成一個獨立式AFTR設(shè)備后,流經(jīng)獨立式AFTR設(shè)備的上下行流量轉(zhuǎn)發(fā)過程如圖1所示。
具體的實現(xiàn)步驟如下。
(1)Ingress線卡查找IPv6 FIB之后,經(jīng)過交換矩陣將其送往AFTR,AFTR剝離IPv6封裝,進(jìn)行IPv4-IPv4 NAT,查找IPv4 FIB將其回送至交換矩陣再到Egress線卡。
(2)返程下行流量進(jìn)入線卡,查找IPv4 FIB后經(jīng)過交換矩陣將其送往AFTR,AFTR查找會話狀態(tài)表進(jìn)行反向IPv4-IPv4 NAT,并查找IPv6索引,然后采用IPv6封裝,AFTR隨即查找IPv6 FIB,之后經(jīng)過交換矩陣送到Egress線卡,經(jīng)線卡接口送到B4。
(3)如果一塊AFTR板卡出現(xiàn)故障,這塊AFTR板卡的地址池(離散的,以/32為粒度的零碎地址,而非傳統(tǒng)意義的一個連續(xù)地址池)隨即釋放,由主控卡將地址隨機、平均分配到其他未發(fā)生故障的AFTR板卡,并及時更新FIB且同步下發(fā)到各線卡,確保返程流量進(jìn)入線卡后可經(jīng)由交換矩陣進(jìn)入同一塊AFTR板卡。
本文重點闡述了單機箱多板卡之間的池化,DS-Lite設(shè)備的發(fā)展趨勢是在板卡間池化的基礎(chǔ)上,結(jié)合IPv6任播地址實現(xiàn)設(shè)備間的池化和云化,終端針對AFTR云可自動實現(xiàn)網(wǎng)絡(luò)發(fā)現(xiàn)、就近接入、冗余備份和流量均衡,DS-Lite業(yè)務(wù)的隧道剝離、地址轉(zhuǎn)換、端口分配、日志發(fā)送以及狀態(tài)維護(hù)等功能全部交由AFTR云處理和實現(xiàn),符合電廠模式的云計算服務(wù),代表著未來發(fā)展方向。
1 張繼平.通信網(wǎng)絡(luò)智能管道架構(gòu)與技術(shù)實現(xiàn).北京:電子工業(yè)出版社,2012
2 陳運清,毛東峰,徐向輝等.城域網(wǎng)組網(wǎng)技術(shù)與業(yè)務(wù)運營.北京:人民郵電出版社,2009