如何實(shí)現(xiàn)PPPoE協(xié)議應(yīng)用?
我們知道PPPoE協(xié)議,是以太網(wǎng)上傳輸?shù)膮f(xié)議,在網(wǎng)絡(luò)應(yīng)用中也非常常見。這里我們則重點(diǎn)講解一下PPPoE協(xié)議在BAS上的實(shí)現(xiàn)。PPPoE撥號(hào)軟件在應(yīng)用中已經(jīng)很成熟(Windows XP中自帶),下面重點(diǎn)討論P(yáng)PPoE在接入服務(wù)器BAS中的實(shí)現(xiàn)方式。
1 PPPoE協(xié)議的效率
從PPPoE協(xié)議模型可以看出,BAS匯聚了用戶的所有數(shù)據(jù)流,它必須將每一個(gè)PPPoE包都拆開檢查處理,這在很大程度上是沿襲了傳統(tǒng)的PPP處理的方式,雖然有很好的安全性,但一旦用戶很多,數(shù)據(jù)包數(shù)量很大,解封裝速度就需要很快,BAS很大的精力花在檢測(cè)用戶的數(shù)據(jù)包上,容易形成接入的“瓶頸”。
為此,在BAS的硬件結(jié)構(gòu)上可以采用分布式網(wǎng)絡(luò)處理器(NP)和ASIC芯片設(shè)計(jì)。網(wǎng)絡(luò)處理器是專門針對(duì)電信網(wǎng)絡(luò)設(shè)備而開發(fā)的專用處理器,它有一套專門的指令集,用于處理電信網(wǎng)絡(luò)的各種協(xié)議和業(yè)務(wù),可以大大提高設(shè)備的處理能力。同時(shí),ASIC芯片轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí)接近硬件的轉(zhuǎn)發(fā)性能,遠(yuǎn)非CPU軟件方式可比,采用這種方式將PPPoE數(shù)據(jù)流的處理與轉(zhuǎn)發(fā)分開,工作效率大大提高。此外在軟件系統(tǒng)結(jié)構(gòu)上還應(yīng)該與其他技術(shù)相結(jié)合,更好地發(fā)揮PPPoE的性能。
2 PPPoE與VLAN的結(jié)合
VLAN即虛擬局域網(wǎng),是一種通過將局域網(wǎng)內(nèi)的設(shè)備邏輯地劃分成一個(gè)個(gè)不同的網(wǎng)段,從而實(shí)現(xiàn)虛擬工作組的技術(shù)。劃分VLAN的目的,一是提高網(wǎng)絡(luò)安全性,不同VLAN的數(shù)據(jù)不能自由交流,需要接受第三層的檢驗(yàn);二是隔離廣播信息,劃分VLAN后,廣播域縮小,有利于改善網(wǎng)絡(luò)性能,能夠?qū)V播風(fēng)暴控制在一個(gè)VLAN內(nèi)部。
PPPoE是一個(gè)客戶端/服務(wù)器協(xié)議,客戶端需要發(fā)送PADI包尋找BAS,因此它必須同BAS在同一個(gè)廣播式的二層網(wǎng)絡(luò)內(nèi),與VLAN的結(jié)合很好地解決了這方面的安全隱患。此外通過將不同業(yè)務(wù)類型的用戶分配到不同的VLAN處理,可以靈活地開展業(yè)務(wù),加快處理流程,當(dāng)然VLAN的規(guī)劃必須在二層設(shè)備和BAS之間統(tǒng)一協(xié)調(diào)。
BAS收到上行的PPPoE包后,首先判別VLAN ID的所屬類別,如果是普通的撥號(hào)用戶,則確定是Discovery階段還是會(huì)話階段的數(shù)據(jù)包,并嚴(yán)格按照PPPoE協(xié)議處理。在會(huì)話階段,根據(jù)不同的用戶類型從不同的地址池中向用戶分配IP地址,地址池由上層網(wǎng)管配置。如果是已經(jīng)通過認(rèn)證的用戶的數(shù)據(jù)包,則根據(jù)該用戶的服務(wù)類型處理,比如,如果是本地認(rèn)證的撥號(hào)用戶,且對(duì)方也申請(qǐng)有同樣的功能,則直接由本地轉(zhuǎn)發(fā)。
如果是專線用戶,則不用經(jīng)過PPPoE協(xié)議復(fù)雜的認(rèn)證過程,直接根據(jù)用戶的VLAN ID便可進(jìn)入專線用戶處理流程,接入速度大大提高。此外為了統(tǒng)一網(wǎng)管,在BAS與其他設(shè)備之間需要通信,這些數(shù)據(jù)包是內(nèi)部數(shù)據(jù)包,也可根據(jù)VLAN ID來(lái)辨別。
對(duì)于下行數(shù)據(jù),由于BAS負(fù)責(zé)分配和解析用戶的IP,兼有網(wǎng)關(guān)的功能,它收到數(shù)據(jù)包的目的IP是用戶的,因此以IP為索引查找用戶的信息比根據(jù)MAC要方便得多,這一點(diǎn)與普通的交換機(jī)有所不同,具體過程跟上行處理差不多。
3 PPPoE對(duì)多業(yè)務(wù)選擇的支持
多業(yè)務(wù)選擇指的是用戶通過一條終結(jié)到BAS的PPP連接來(lái)自主地選擇后臺(tái)網(wǎng)絡(luò)運(yùn)營(yíng)商所提供的多種業(yè)務(wù)。之所以要支持多業(yè)務(wù)的選擇,一方面是因?yàn)楦鞣N業(yè)務(wù)的具體實(shí)現(xiàn)在技術(shù)上的側(cè)重點(diǎn)是不同的,對(duì)網(wǎng)絡(luò)性能的要求也不盡相同,以前采取的固定分配的方式非常不便;另一方面,從網(wǎng)絡(luò)應(yīng)用的發(fā)展看,網(wǎng)絡(luò)內(nèi)容服務(wù)供應(yīng)商ICP與網(wǎng)絡(luò)接入商ISP的分離是必然趨勢(shì),在接入?yún)R聚側(cè),ISP必須嚴(yán)格保證將用戶選擇的業(yè)務(wù)流轉(zhuǎn)發(fā)到相應(yīng)的ICP中去。
目前采用的方法是用戶先在PPPoE撥號(hào)軟件中選擇相應(yīng)的業(yè)務(wù),然后對(duì)用戶進(jìn)行業(yè)務(wù)授權(quán)確認(rèn),最后激活BAS內(nèi)部相應(yīng)的處理模塊。但是采用這種方式,用戶只能知道業(yè)務(wù)的名字,無(wú)法直觀地、全面地獲知BAS提供的各種業(yè)務(wù)類型,特別是在新業(yè)務(wù)的開展上十分困難,有很大的局限性。
因此可以將BAS與后臺(tái)業(yè)務(wù)選擇網(wǎng)關(guān)及RADIUS服務(wù)器相配合,采取先認(rèn)證后選擇業(yè)務(wù)的方式,具體操作如下:
(1)主機(jī)發(fā)送PADI尋找BAS,PADI中包含一個(gè)服務(wù)名類型的TAG,它的值為空,表示該用戶可以接受任何類型的服務(wù)。
(2)BAS收到包后回送PADO,PADO中包含所有可以提供的服務(wù)的TAG,同時(shí),還包含一個(gè)服務(wù)名為General的TAG。
(3)主機(jī)發(fā)送PADR。用戶選擇已知的服務(wù)名,也可以選擇General服務(wù)。
(4)BAS收到PADR包后為用戶分配資源,并開始PPP協(xié)商過程。在PPP過程中,BAS將用戶輸入的賬號(hào)和密碼等信息送到RADIUS服務(wù)器上認(rèn)證。
(5)通過認(rèn)證的用戶,享受BAS提供的該項(xiàng)服務(wù),但如果選擇的是General,則被強(qiáng)制訪問與BAS直連的服務(wù)選擇網(wǎng)關(guān)。后臺(tái)的服務(wù)選擇網(wǎng)關(guān)是一臺(tái)具有Web Server功能的服務(wù)器,用戶可以通過Web的交互式界面得到可選擇業(yè)務(wù)的相關(guān)信息(包括費(fèi)用、帶寬等),同時(shí)顯示該用戶賬號(hào)對(duì)應(yīng)的信息。
(6)用戶選擇相應(yīng)的業(yè)務(wù),同時(shí)服務(wù)選擇網(wǎng)關(guān)會(huì)定義各種用戶的業(yè)務(wù)范圍和操作權(quán)限。
(7)服務(wù)選擇網(wǎng)關(guān)激活接入服務(wù)器內(nèi)部相應(yīng)的業(yè)務(wù)模型實(shí)現(xiàn)該業(yè)務(wù)。以上方式是嚴(yán)格按照PPPoE協(xié)議執(zhí)行的,與當(dāng)前流行的撥號(hào)軟件完全兼容,如果用戶對(duì)其他的業(yè)務(wù)根本不感興趣而對(duì)已申請(qǐng)的業(yè)務(wù)非常熟悉,也不影響用戶的習(xí)慣。
從BAS的角度考慮,PPPoE協(xié)議的操作流程也沒有什么改變,只是多添了一種服務(wù)類型而已。如果運(yùn)營(yíng)商當(dāng)前沒有服務(wù)選擇網(wǎng)關(guān),可以通過網(wǎng)管配置,在對(duì)PADI包的回應(yīng)時(shí)不包含General服務(wù)就可以了。
對(duì)于運(yùn)營(yíng)商來(lái)說(shuō),采用以上方式不僅大大提高了接入用戶操作的透明度,還可以起到業(yè)務(wù)門戶的作用,為下一步的服務(wù)擴(kuò)展提供空間,而且從寬帶接入網(wǎng)以后發(fā)展的趨勢(shì)來(lái)看,按需分配與業(yè)務(wù)類型相應(yīng)的帶寬和QoS是必然的,PPPoE的這種業(yè)務(wù)選擇運(yùn)營(yíng)模式是今后業(yè)務(wù)選擇的發(fā)展方向。
4 PPPoE對(duì)組播的支持
PPPoE本身是一個(gè)點(diǎn)到點(diǎn)的協(xié)議,每一個(gè)用戶與BAS之間都有一條PPP的鏈接,用戶與BAS之間是通過這條鏈路經(jīng)二層設(shè)備以單播的形式傳輸數(shù)據(jù)。但是隨著網(wǎng)上視頻業(yè)務(wù)的不斷發(fā)展,人們對(duì)帶寬的需求越來(lái)越大,PPPoE對(duì)組播的支持顯得非常重要。PPPoE所支持的組播協(xié)議通常指的是二層組播協(xié)議IGMP proxy或IGMP Snooping,采取的基本方法是對(duì)每個(gè)組播數(shù)據(jù)包分組傳送,下面分析這兩種協(xié)議的實(shí)現(xiàn)方式。
◆IGMP Snooping
IGMP Snooping是靠偵聽用戶與路由器之間通信的IGMP報(bào)文維護(hù)組播地址和VLAN的對(duì)應(yīng)表的對(duì)應(yīng)關(guān)系,它將同一組播組的活動(dòng)成員映射為一個(gè)VLAN,在收到組播數(shù)據(jù)包后,僅向該組播組所對(duì)應(yīng)的VLAN成員轉(zhuǎn)發(fā)。主要操作流程如下:
(1)主機(jī)與BAS進(jìn)行PPPoE協(xié)商,通過PPPoE認(rèn)證。
(2)主機(jī)向路由器發(fā)送IGMP成員報(bào)告包,BAS監(jiān)聽到該包,并從PPPoE數(shù)據(jù)包中得到組播組的地址,將該用戶添加到對(duì)應(yīng)的VLAN,如果該用戶是組播組的第一個(gè)用戶,則為這個(gè)組播組產(chǎn)生一個(gè)組播條目,并將該報(bào)文轉(zhuǎn)發(fā)至上層路由器以更新組播路由表。
(3)BAS收到路由器的組播數(shù)據(jù)報(bào)文時(shí),根據(jù)組播MAC地址和組播IP地址的對(duì)應(yīng)關(guān)系,找到對(duì)應(yīng)的VLAN,然后將數(shù)據(jù)包封裝成PPPoE協(xié)議的會(huì)話包,向VLAN內(nèi)的成員轉(zhuǎn)發(fā)。
(4)當(dāng)收到來(lái)自主機(jī)的申請(qǐng)離開組播組的包時(shí),BAS把收到該包的端口從相應(yīng)的VLAN中刪除,若該用戶是組播組最后一個(gè)用戶(此時(shí)VLAN為空),則把該VLAN刪除,并把該包內(nèi)容通過上行端口轉(zhuǎn)發(fā)出去。 IGMP Snooping的規(guī)則比較簡(jiǎn)單,下行方向透?jìng)鞑樵儼闲蟹较蚋鶕?jù)需要轉(zhuǎn)發(fā)加入或離開包,但要求BAS必須有3層提取功能,它對(duì)于主機(jī)和路由器是透明的。
◆IGMP Proxy
IGMP Proxy是靠攔截用戶和路由器之間的IGMP報(bào)文建立組播表,Proxy設(shè)備的上聯(lián)端口執(zhí)行主機(jī)的角色,下聯(lián)端口執(zhí)行路由器的角色。
下面是簡(jiǎn)要流程:
(1)主機(jī)與BAS進(jìn)行PPPoE協(xié)商,通過PPPoE認(rèn)證。
(2)上聯(lián)端口執(zhí)行主機(jī)的角色,響應(yīng)來(lái)自路由器的查詢,當(dāng)新增用戶組或者某組最后一個(gè)用戶退出時(shí),主動(dòng)發(fā)送成員報(bào)告包或者離開包。
(3)下行方向的業(yè)務(wù)包按照組播表進(jìn)行轉(zhuǎn)發(fā)。
(4)下聯(lián)端口執(zhí)行路由器的角色,完全按照IGMP V2中規(guī)定的機(jī)制執(zhí)行,包括查詢者選舉機(jī)制,定期發(fā)送通用查詢信息,收到離開包時(shí)發(fā)送特定查詢等。 IGMP Proxy在兩個(gè)端口分別實(shí)現(xiàn)不同的功能,工作量相對(duì)較大,其優(yōu)點(diǎn)是當(dāng)網(wǎng)絡(luò)中沒有路由器時(shí),IGMP Proxy設(shè)備可以起到查詢者的作用,而且如果要擴(kuò)展組播路由功能,Proxy比Snooping方便。考慮到BAS復(fù)制PPPoE多播數(shù)據(jù)對(duì)底層設(shè)備造成的巨大壓力,而且當(dāng)前的交換機(jī)和部分DSLAM(尤其是以IP為內(nèi)核的DSLAM)已經(jīng)開始支持二層組播,所以從發(fā)展的角度看采用IGMP Proxy更好一些。