王高偉,張吉興,肖志輝,,陳一山
(1.西南交通大學信息科學與技術學院 成都610031;2.電子科技大學通信與信息工程學院 成都611731;3.邁普通信技術股份有限公司 成都610041)
隨著高清在線視頻業務為代表的高帶寬業務的不斷發展,高帶寬業務成為當前互聯網發展過程中的一個重要特點。為了吸引用戶并提升用戶黏性,網絡業務提供者都致力于不斷提升用戶的感官體驗,因此從長期趨勢來看,用戶對網絡帶寬的需求將繼續呈現爆發式增長趨勢。當前網絡帶寬的提供能力、服務質量保障能力等面臨巨大挑戰,網絡基礎設施的承載能力必須能夠與實際相匹配,并且具有足夠的彈性和自適應性才能滿足需求環境的快速發展。在此背景下,許多的新技術得以提出和發展,CDN(content distribution network,內容分發網絡)、網絡存儲等技術的實施一定程度上緩解了現實壓力,但未能從根本上解決問題。三網融合的提出及其實施,使得IP網的承載能力面臨著更大的挑戰,這一點在接入層面體現得更為突出。在融合網絡環境中,以高帶寬視頻業務為代表的新型業務將以更快的速度出現,新的更加嚴峻的帶寬矛盾將很快呈現。然而,傳統的接入網長期存在接入層級多、設備種類多、寬帶提供能力差、維護管理復雜等突出問題,使得“帶寬不寬”的局面長期存在。網絡用戶不得不面對上網體驗差、網絡故障頻發的無奈局面,而網絡運營商面臨著設備更新換代頻繁、用戶投訴多且故障處理效率低的困境。
在此背景下,源自3Tnet的大規模接入匯聚路由器(large-scale access convergence router,ACR)[1]具備高帶寬提供能力等特點和優勢,成為擺脫上述困擾的優先選擇,為三網融合的深度發展提供了基礎的設備保障。本文從接入層面上考慮,研究實現ACR中的PPPoE(PPP over Ethernet,以太網上的點對點協議)[2]功能,以大規模大容量接入為目標,在分布式路由器上實現PPPoE接入認證。ACR的研究與實現能有效降低網絡的異構復雜度,使其用最少的互聯級數,達到降低時延和抖動的目的,用帶有遠端用戶接口單元,分合路器組成的樹形分叉地域分布式系統架構,保證大規模的用戶接入。在大規模匯聚接入條件下的交換節點具有更好的資源共享性和經濟性、更低的用戶平均響應時間,大規模接入有利于簡化管理復雜度,降低運營成本,使邊緣網絡到用戶接口的管理一體化。ACR的網絡位置如圖1所示。

圖1 ACR的網絡位置
在眾多的接入技術中,把多個主機連接到接入設備的最經濟的方法就是以太網,而PPP(point to point protocol,點對點協議)[3]可以提供良好的訪問控制和計費功能,為了在以太網上利用PPP既有的訪問控制和計費功能,于是就產生了在以太網上傳輸PPP報文的PPPoE。
PPPoE可以分為3個階段,發現階段、會話階段和終止階段。PPPoE鏈路建立的前兩個階段如圖2所示。

圖2 PPPoE鏈路建立報文交互過程
PPPoE發現階段共有4個部分組成。它們是由4條交互報文完成。首先,客戶端PC利用廣播發送一個PADI報文(PPPoE active discovery initiation packet),報文信息包含了告訴對端其想要獲得的服務類型。這時,所有的訪問集中設備都會收到PC端發來的PADI報文,并回復一個單播報文,告知PC端其能夠提供它所要的服務。復雜的網絡拓撲結構決定了PC會收到不同訪問集中設備發來的PADO報文(PPPoE active discovery offer packet),此時PC把最先收到的PADO報文對應的訪問集中設備作為自己的通信方,并單播發送一個PADR報文 (PPPoE active discovery request packet)。訪問集中設備收到報文并確定一個唯一的會話ID,通過發送一個PADS報文(PPPoE active discovery session-confirmation packet)把會話ID發送給PC,如果沒有錯誤,就進入PPPoE的會話階段。
PPPoE會話階段進行PPP的流程,如圖2所示,下文不再贅述。PC與訪問集中設備依據PPP傳送PPP數據報文,進行PPP的各項協商和數據傳輸。在會話階段傳送的數據分組中必須包含發現階段所確定的會話ID并保持不變,然后開始后續通信。通常情況下,PPP完成結束會話的控制,但在RFC文檔中,定義了一個PADT報文(PPPoE active discovery terminate packet)用來終 止PPPoE會話,PC或訪問集中設備在PPP會話開始后的任何時候發送該報文都可以結束會話。
PPPoE通信的雙方PC與訪問集中設備會使用PPP自身提供的PPP終結報文來結束PPPoE會話。若不能使用PPP結束會話時,可以由PC或訪問集中設備的一方發送PADT報文來實現。
ACR是指同時具有常規大容量高性能雙協議棧核心路由器的寬帶、IPv4/IPv6組網功能和支持業務精細化管理、支持多種接入方式提供分級可靠QoS保障,實現極小匯聚層級的大規模接入匯聚功能的新型路由交換設備。因此,功能和性能雙重因素使得它的設計非常復雜。
在復雜繁多的路由器體系標準下,IETF提出標準的ForCES[4](轉發與控制線分離協議)具有獨到的觀點,倍受許多專家和學者推崇。本文研究的ACR便是基于ForCES體系實現轉發與控制分離的思想。分布式ACR體系結構如圖3所示。這種體系具備高可靠性和高擴展性,利用網絡解耦實現控制與轉發分離,在系統中各單元網絡互操作性得到了充分的體現。

圖3 ACR體系結構
在ACR采用的分布式結構中,交換和主控分離設計,交換背板帶寬為萬兆級,線卡報文處理器采用多核CPU。因此ACR系統架構簡單來說就是多核分布式高端路由器。主控卡采用高性能的單核CPU做主處理器,使用吉比特級以太線路做各張線卡、交換卡的控制通道和主從備份通道,并配備大容量的內存做各種表項存儲,負責控制平面的大部分工作,包括PPPoE控制報文的處理和轉發信息的管理并利用分布式數據庫,經適配層的處理后下發到各張線卡,從主控卡負責備份,并實時同步。若因外界原因發生故障時,ACR可以快速切換到從主控卡,保證ACR的可靠性。交換卡則負責完成在兩張線卡之間進行報文的交換功能。線卡由兩部分組成,一部分是母板,一部分是子卡。母板上的主要部件是多核CPU,它作為數據平面的報文處理器對接收到的數據分組進行轉發和控制處理,并出萬兆和吉比特以太信號到兩個子卡。子卡的主要功能是對外出各種WAN和LAN的接口,將多核報文處理器出來的以太信號進行擴展和轉換的部件,比如FPGA或者以太交換芯片。FPGA將以太信號轉換為各種WAN接口;以太交換芯片將一個萬兆級接口擴展為多個吉比特級接口。因此,線卡負責各種數據報文的快速轉發、控制等功能。
在主控卡上,報文處理器負責控制報文的處理、轉發表的管理并通過分布式數據庫下發到各個線卡上。同時,主控卡應實時對從主控卡和線卡上表項同步、包括刪除、插入、更新等操作,實現從主控卡和線卡表項信息的一致。在線卡上,轉發表主要由通道號、接口索引及標志信息構成,線卡中的轉發引擎通過查找轉發表找到對應通道和端口號,并根據通道號和端口號來確定快速轉發流程。

圖4 分布式ACR轉發控制結構
分布式ACR轉發控制架構如圖4所示。
控制平面上,鏈路轉發平臺為各鏈路協議提供通信接口來實現鏈路管理。鏈路協議控制報文(PPP、HDLC、以太報文、PPPoE及MPPP)經過握手協商階段學習到相關轉發信息,創建并記錄到轉發表項中的信息通過轉發表項信息管理模塊進行處理。適配層既分布在主控卡也分布在線卡上,主控卡的適配層模塊維護數據表,并通過分布式數據庫,將信息分布到線卡上。線卡的適配層模塊不再維護數據表,收到來自主控卡上的數據信息后,直接調用PPPoE對應的產品接口函數,更新產品軟件接口的數據。例如,鏈路管理模塊在主控卡上維護一張轉發表,在線卡上鏈路協議模塊收到分布的表項信息,直接調用鏈路管理模塊提供的接口函數,更新轉發表的信息。
如圖5所示,在適配層上創建轉發表后,通過分布式數據庫組織轉發表并下發到各個線卡,以此同時同步從主控卡上的轉發信息。線卡上的轉發表伴隨主控卡上的下發信息同步更新。

圖5 轉發表通過分布式數據庫下發
在控制平面,轉發信息主要有接口索引、通道號、槽位號等信息組成轉發表,并且以各個協議對應的轉發表項以列句柄的方式組織。在轉發層面,轉發引擎利用查找轉發表作為快速轉發的依據,通過對接口索引、通道號實現快速查找匹配,找到相應的通道實現快速轉發的目的。
PPPoE和轉發相關的信息包括接口、槽位號、轉發通道號、協議配置、協議狀態及鏈路信息。主控卡上適配層轉發表中的信息需要包含以上的信息,每個轉發表項對應一個接口。根據需要,轉發表中還可以包含其他一些和鏈路轉發過程相關的信息,如鏈路層的統計信息等。鏈路協議為分布式數據庫提供轉發表項信息,在適配層上創建轉發表,由于分布式數據庫作為數據庫具備插入、刪除和更新等功能,可以對轉發表做實時的修改。只要轉發表信息發生改變,鏈路管理模塊就會把變更信息通過分布式數據庫下發到線卡。
鏈路管理模塊發出對轉發表項的插入、刪除和更新操作完成后,由分布式數據庫把操作結果下發到線卡上,并查找到對應線卡上的相關操作函數表實現同步更新,各個轉發表項的參數與主控卡上傳遞的參數接口一致。對于鏈路協議模塊而言,主控卡的鏈路模塊只負責具體數據下發,線卡的對應模塊只根據下發數據做出相應的處理。即當線卡收到主控卡下發的數據信息時,調用相關函數更新轉發表項。數據平面就通過查找轉發表項的數據狀態,找到對應的端口和通道直接轉發數據報文,而不再統一交給主控制卡去實現轉發動作。這樣便是由線卡的轉發引擎實現快速轉發,這種優勢在多線卡的分布式路由器上體現得更加明顯,多張線卡同步并行處理數據分組有效地分擔了上層控制面CPU的工作,達到負載分擔,相比集中式系統大大提高了轉發性能。
主控卡上PPPoE模塊在平臺上注冊相關的應用程序接口函數,并統一形成函數表。完成PPPoE接口產品軟件API的創建、插入、刪除和更新函數,在PPPoE數據轉發階段用到的虛擬接口(virtual access,VA)也是在此時完成創建。這是因為實際物理端口數目的限制,從而需要創建一個VA用來和對端交換數據。此時,系統會按照用戶的配置,選擇一個虛擬模板(virtual template,VT),根據VT的配置參數,動態地創建一個VA。
PPPoE在適配層上為轉發平臺查詢、維護一張轉發表,該表需要進行同步和下發。轉發表項的具體信息包括接口索引、槽位號、通道號和同步標志等其他報文首部信息。PPPoE模塊所有適配層對平臺提供的接口函數都采用異步的方式實現,即對適配層表項的添加、刪除、更新操作,分布式數據庫對表項的分發返回結果處理以及批量定時器超時處理都以事務的形式添加到適配層的任務中執行。
PPPoE在適配層上需要對事務進行接口創建,反映到分布式數據庫上就是對轉發表項的添加,此時要調用分布式數據庫插入函數添加適配層表項。添加表項時,首先檢查要添加的表項是否已經存在,如果存在則表示是主從切換后執行,這種情況需要將同步標記更新為false,并向分布式數據庫返回插入成功。分布式數據庫會根據該返回值進行表項的同步和分布操作。如果添加的表項不存在,則創建表項,并進行初始化各列的值。根據列句柄設置同步標記的值,如果是分布列句柄,則設置同步標記為true,否則不設置。
PPPoE適配層的任務調度執行PPPoE接口刪除事務,執行接口刪除。PPPoE接口刪除反映到數據庫即為轉發表項的刪除,此時調用分布式數據庫刪除函數,刪除適配層表項。刪除表項時,首先檢查要刪除的表項是否存在:如果存在,則刪除表項,向分布式數據庫返回OK,使分布式數據庫繼續后續的同步和下發;如果不存在,則可能是主從切換后的主控卡上執行腳本或者程序邏輯上存在問題。本文對這兩種情況都統一向分布式數據庫返回成功,但返回結果不會同步到從主控卡也不會下發到線卡上。
PPPoE適配層平滑處理,發生主從切換后,新的主控卡會先執行腳本。PPPoE模塊根據腳本重新設置轉發平臺表項,并更新到適配層轉發表中。如果更新的表項不存在則添加,如果存在則只更新同步標記為false。系統通知平滑處理時,調用PPPoE模塊的平滑處理函數進行適配層的平滑,這時只需要檢查適配層表項中的同步標記為true的表項,并刪除該表項。
PPPoE模塊線卡的適配層上也是維護一張轉發表,該轉發表是主控卡上轉發表的子集,它是由分布式數據庫下發而來的,該轉發表比較簡單,只包含接口索引、槽位號和通道號的信息。
線卡上的適配層存儲實現與主控卡上的適配層類似,由插入、刪除、更新等接口函數,調用插入函數就可以完成線卡適配層轉發表項的添加,此時沒有同步標記,所以新增的表項需要設置轉發表項的同步標記為true。添加表項之前需要先檢查新增表項的索引是否已經存在,當主從切換執行腳本或者主控卡執行批量時,會出現添加的表項已經存在的情況。如果表項存在,只需要更新同步標記為true。線卡上轉發表通過同步標記來進行平滑。
PPPoE在數據轉發流程中,不會使用到線卡轉發表中的信息。因為設置了轉發表項與轉發通道關聯,但實際不會使用。
同理,調用刪除接口函數,可以完成線卡適配層轉發表項的刪除。在線卡上適配層轉發表項還關聯批量下發事務,當新插入一張板卡時,線卡上適配層調用批量事務開始函數,遍歷所有的轉發表項,設置同步標記為false(默認是true)。當批量下發結束時,線卡適配層調用批量事務結束函數,因為在主控卡批量過程中,重新下發所有轉發表項,線卡將下發下來的轉發表項全部標記值更新為true。批量結束時,檢查所有轉發表項。如果同步標記值仍然為false,則表明主控卡上已經不存在該表項,此時線卡在批量結束時需要將同步標記值為false的表項刪除。
PPPoE在線卡上的產品軟件接口子模塊(PPPoEPsi)主要完成數據平面報文的接收處理,對接收到的報文進行合法性檢查以及修改報文描述符等工作。
在快速轉發平臺的多核CPU轉發引擎中,以太接口收到報文進行鏈路處理時,如果是PPPoE發現階段的報文,則上交到主控卡進行處理,此時進入控制平面的數據接收流程。在輸入處理的鏈路控制階段的業務控制流程中,對PPPoE數據分組,去掉外層的PPPoE和以太分組頭,換入接口為VA,調用VA的鏈路處理(PPP封裝)和輸入解析函數,開始完整的PPP處理流程。
PPPoE數據報文快速轉發流程如圖6所示。發送階段,在正常的路由階段后,出口是VA,判斷跨卡,輸出在相應卡上處理,再經QoS隊列處理后進VA的邏輯發送,發送中封裝PPPoE和以太分組頭,進入以太接口的鏈路輸出控制和發送處理。

圖6 PPPoE數據報文快速轉發流程
VA一般能確定綁定的物理口,故VA通道生成后,判斷是否跨卡。若跨卡,直接跨到對應綁定的物理接口所在的板卡上進行輸出處理和封裝、發送處理。當VA綁定的物理口變化時,轉發平臺應該響應并更新在通道結構中對應的值。
整個PPPoE模塊在分布式系統下主要軟件實現函數從 上 到 下 由PPPoEPsapi、PPPoEMpuPsal、PPPoEDdbMpu、PPPoEDdbLpu、PPPoEDfp、PPPoELpuPsal、PPPoEPsi模 塊 組成,如圖7所示。

圖7 PPPoE分布式系統軟件模塊
PPPoEPsapi模塊:對轉發平臺的PPPoE業務模塊提供操作產品軟件的接口,通過類似函數表的方式掛接各個接口來實現。
PPPoEMpuPsal模塊:PPPoE業務模塊適配負責類似參數轉換、資源操作等處理,以注冊的方式掛接到Psapi。為控制平面提供API,提供查詢接口API,完成自身的數據表項同步和下發。
PPPoEDdbMpu模塊:對簡單的轉發表操作,包括創建、插入、刪除、查詢,實現數據的分發、包括從主控卡分發到從主控和線卡。

圖8 測試拓撲結構
PPPoEDdbLpu模塊:實現分布式數據庫存儲接管函數。
PPPoEDfp模塊:提供報文的接收調度、入隊和出隊的接口及隊列報文的調度。
PPPoELpuPsal適配層模塊:不再維護數據表,收到來自控制平面的數據信息后,直接調用PSI的函數,更新PSI的數據。
PPPoEPsi模塊:完成線卡轉發表項的添加刪除操作,完成對數據轉發平面報文接收處理。
本次測試在上海工程技術大學寬帶中心一樓實驗室內完成,包括大規模接入匯聚路由器相關測試、ACR主機測試、ACR遠端模塊測試和ACR寬帶接入服務及業務控制測試,具體測試拓撲如圖8所示。
測試配合設備采用機頂盒與電視機,測試儀器采用思博倫公司的Spirent Test Center。本文涉及關于以太網端口上PPPoE接入測試時,驗證ACR支持的最大鏈接數(PPPoE會話連接),測試結果符合要求。
本文首先描述了分布式路由器架構,重點分析了ACR的轉發控制架構,詳細介紹分布式數據庫數據下發的關鍵實現。主控卡上實現鏈路協議模塊相關接口的注冊,適配層上完成轉發表項的創建,并利用分布式數據庫實現同步和下發。主控卡和網絡層交下來的控制報文送到線卡上去發送,PPPoE數據報文經過鏈路處理、輸入控制、選路輸出控制后,實現快速轉發。測試結果顯示,ACR完全可以滿足大規模接入場景應用,而且通過后期升級,可以達到更高的報文處理速度。
1 孟赟,劉九評.ACR設備在廣電網絡內的應用部署設計.有線電視技術,2013(6):47~52
2 RFC2516.A Method for Transmitting PPP over Ethernet,1999
3 RFC1661.The Point-to-Point,1994
4 孫宗峰,肖志輝,孫健.基于分布式路由器的IPv4-IPv6轉發控制架構研究.電信科學,2012(6):42~47
5 RFC894.A Standar for the Transmission of IP-Data Grams over Ethernet Networks,1984
6 Zeng X Y,Cheng C Q.Discuss of user identification technology in DSL network.Proceedings of 2009 International Symposium on Intelligent Ubiquitous Computing and Education,Chengdu,China,2009