(中國(guó)電信股份有限公司無(wú)錫分公司,無(wú)錫 214000)
電信城域網(wǎng)目前綜合承載寬帶,IPTV,語(yǔ)音業(yè)務(wù)。隨著網(wǎng)絡(luò)規(guī)模的增大,網(wǎng)絡(luò)內(nèi)未知組播報(bào)文的數(shù)量隨之增多,達(dá)到一定程度后,就會(huì)對(duì)網(wǎng)絡(luò)帶寬,設(shè)備負(fù)載產(chǎn)生壓力,進(jìn)而影響業(yè)務(wù)質(zhì)量。研究未知組播的成因,實(shí)施對(duì)應(yīng)的網(wǎng)絡(luò)優(yōu)化勢(shì)在必行。
城域網(wǎng)設(shè)備,例如交換機(jī)在處理單播報(bào)文時(shí),每轉(zhuǎn)發(fā)一個(gè)數(shù)據(jù)幀,就會(huì)進(jìn)行相應(yīng)的源MAC地址學(xué)習(xí),從而學(xué)習(xí)到一個(gè)單播轉(zhuǎn)發(fā)表項(xiàng)。而組播轉(zhuǎn)發(fā)表項(xiàng)則不同,它是通過(guò)一些三層或二層的組播協(xié)議獲得的。城域網(wǎng)常用的二層組播協(xié)議有IGMP(Internet Group Management Protocol,因特網(wǎng)組管理協(xié)議)。
在組播轉(zhuǎn)發(fā)流程中,設(shè)備使用CPU分析IGMP報(bào)文,形成組播轉(zhuǎn)發(fā)表下發(fā)給ASIC (Application Specific Integrated Circuits,專用集成電路)芯片,芯片根據(jù)轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)組播報(bào)文。命中組播轉(zhuǎn)發(fā)表的報(bào)文,稱為已知組播,沒有命中的報(bào)文,稱為未知組播。
對(duì)于未知組播,設(shè)備根據(jù)自身設(shè)計(jì),在物理端口層面將報(bào)文丟棄或者泛洪。同時(shí)報(bào)文被抄送至CPU,交給上層協(xié)議處理。當(dāng)未知組播報(bào)文到達(dá)一定速率,就會(huì)超過(guò)CPU處理能力或觸發(fā)CPU保護(hù)機(jī)制,導(dǎo)致部分正常業(yè)務(wù)的IGMP報(bào)文被丟棄。
IGMP報(bào)文被部分丟棄后,正常組播表項(xiàng)有幾率得不到刷新被老化,對(duì)應(yīng)流量成為未知組播。此時(shí),若設(shè)備在物理端口層面的轉(zhuǎn)發(fā)策略為丟棄,則IPTV業(yè)務(wù)表現(xiàn)為流量中斷;若策略為泛洪,則報(bào)文會(huì)被轉(zhuǎn)發(fā)至該網(wǎng)絡(luò)廣播域下除源端口以外其他所有端口,可能導(dǎo)致用戶側(cè)端口擁塞,甚至觸發(fā)相鄰網(wǎng)絡(luò)設(shè)備的CPU丟包,影響范圍進(jìn)一步擴(kuò)大。
當(dāng)設(shè)備開啟可控組播功能,配置了組播節(jié)目列表之后,所收到報(bào)文中的組播目的地址不在列表范圍內(nèi),該組播即為非法組播。設(shè)備不會(huì)為非法組播建立組播轉(zhuǎn)發(fā)表項(xiàng),而是根據(jù)自身設(shè)計(jì),丟棄,泛洪或者限速泛洪。
非法組播一般有兩個(gè)來(lái)源:
(1)終端內(nèi)置協(xié)議:例如,開啟了IPv6協(xié)議棧的電信家庭網(wǎng)關(guān),會(huì)向IPv6組播目的地址FF02::16發(fā)送MLDv2(Multicast Listener Discover,組播偵聽發(fā)現(xiàn)協(xié)議)報(bào)文。
TP-LINK,華為,NETGEAR,小米,REALTEK等廠家的路由器或智能終端,會(huì)向IPv4組播目的地址239.X.X.X,224.X.X.X等發(fā)送IGMPv2,IGMPv3報(bào)文。在城域網(wǎng)匯聚交換機(jī)(下掛約2.5萬(wàn)終端)CPU側(cè)抓包,1分鐘內(nèi)可以收到此類終端發(fā)出的729個(gè)IPv4組播報(bào)文,包含322個(gè)IPv4組播組。
(2)惡意組播攻擊:終端沒有組播業(yè)務(wù)需求,卻向外發(fā)送過(guò)量組播報(bào)文的行為,稱為惡意組播攻擊。終端可以利用某些設(shè)備對(duì)未知組播的“泛洪”處理動(dòng)作,在不具備合法接入IP的情況下,向網(wǎng)絡(luò)發(fā)送大量惡意組播報(bào)文,惡意報(bào)文又被設(shè)備沿廣播樹泛洪至整個(gè)網(wǎng)絡(luò),進(jìn)而造成網(wǎng)絡(luò)中CPU性能瓶頸節(jié)點(diǎn)下的組播轉(zhuǎn)發(fā)出現(xiàn)異常。惡意組播源不僅可以存在于IPTV業(yè)務(wù)VLAN(Virtual Local Area Network,虛擬局域網(wǎng))中,也可存在于專線、寬帶,語(yǔ)音等任意業(yè)務(wù)的任意VLAN內(nèi)。
以W市某次攻擊事件為例,惡意終端原有專線業(yè)務(wù)已拆機(jī),網(wǎng)關(guān)IP等三層業(yè)務(wù)數(shù)據(jù)已刪除,但接入光路和端口VLAN仍然保留。攻擊者利用城域網(wǎng)的IGMP報(bào)文處理機(jī)制,直接構(gòu)造大量虛假IGMP請(qǐng)求報(bào)文發(fā)送給上聯(lián),速率約0.35kp/s。經(jīng)過(guò)專線交換機(jī)泛洪后,造成匯聚交換機(jī)CPU處理IGMP報(bào)文時(shí)大量丟包,進(jìn)而影響了該匯聚交換機(jī)下所有組播業(yè)務(wù)。攻擊時(shí),匯聚交換機(jī)CPU報(bào)文統(tǒng)計(jì)如圖1所示,IGMP報(bào)文轉(zhuǎn)發(fā)比例被降低到了9.8%。
圖1 匯聚交換機(jī)IGMP報(bào)文丟包
交換機(jī)和路由器的組播轉(zhuǎn)發(fā)表通常由組播組、源端口、目的端口、VLAN組成[1]。當(dāng)組播轉(zhuǎn)發(fā)表規(guī)格過(guò)小,設(shè)備實(shí)際承載的組播數(shù)量超過(guò)了組播轉(zhuǎn)發(fā)表最大條目數(shù)量,超出的組播組流量就會(huì)成為未知組播。
在目前城域網(wǎng)匯聚層和接入層中的交換機(jī)通常工作在IGMP snooping模式,往往不配置組播節(jié)目列表或不具備可控組播能力,此時(shí)組播轉(zhuǎn)發(fā)表規(guī)格過(guò)小成為未知組播的潛在來(lái)源因素。
CPU若存在丟包,IGMP報(bào)文得不到及時(shí)處理,會(huì)使得組播轉(zhuǎn)發(fā)表項(xiàng)得不到正確刷新[2]。根據(jù)IGMP協(xié)議機(jī)制,若兩個(gè)周期的IGMP通用組查詢被丟棄,再過(guò)一個(gè)IGMP最大查詢響應(yīng)時(shí)間,設(shè)備上所有組播表項(xiàng)都將老化,原先合法的組播將成為未知組播。若兩個(gè)周期的特定組響應(yīng)報(bào)文被丟棄,再過(guò)一個(gè)最大查詢響應(yīng)時(shí)間,設(shè)備上特定組播組表項(xiàng)都將老化,流量成為未知組播。
CPU丟包和未知組播的形成之間互為因果:CPU丟包幾率導(dǎo)致未知組播產(chǎn)生,另一方面未知組播會(huì)被抄送CPU處理,加劇CPU丟包。
城域網(wǎng)內(nèi)設(shè)備和終端CPU丟包的原因主要有:
(1)未知組播:以之前提到的MLDv2協(xié)議報(bào)文為例:網(wǎng)絡(luò)未優(yōu)化前,在W市某局家庭網(wǎng)關(guān)PON口抓包,終端從上聯(lián)口收到了同一匯聚交換機(jī)下其他家庭網(wǎng)關(guān)的大量MLDv2報(bào)文,速率約1.5kp/s。該速率觸發(fā)了家庭網(wǎng)關(guān)的CPU保護(hù)機(jī)制,造成IPTV業(yè)務(wù)的IGMP報(bào)文隨機(jī)性丟包,最終導(dǎo)致組播類視頻斷流。
(2)針對(duì)設(shè)備CPU的惡意攻擊:有些協(xié)議需要設(shè)備CPU處理,例如ICMP,IGMP,TELNET,廣播等。攻擊者利用此機(jī)制,向設(shè)備發(fā)送過(guò)量協(xié)議報(bào)文,從而影響CPU正常工作。
W市某次網(wǎng)管服務(wù)器中毒,網(wǎng)管向接入網(wǎng)OLT(Optical Line Terminal,光線路終端)發(fā)送ICMP報(bào)文,報(bào)文速率0.5kp/s。導(dǎo)致該OLT主控板CPU異常,峰值利用率達(dá)到73%,遠(yuǎn)高于相同負(fù)載的同類型OLT,峰值時(shí)間與該OLT下IPTV業(yè)務(wù)卡頓時(shí)間相近。在OLT上臨時(shí)配置ACL(Access Control List,訪問(wèn)控制列表)禁止網(wǎng)管服務(wù)器訪問(wèn),后期重裝服務(wù)器操作系統(tǒng)后,IPTV業(yè)務(wù)恢復(fù)正常。
(3)網(wǎng)絡(luò)環(huán)路:通常為用戶將網(wǎng)線接在了同一臺(tái)ONU(Optical Network Unit,光網(wǎng)絡(luò)單元)的兩個(gè)口上導(dǎo)致。上聯(lián)設(shè)備發(fā)送的廣播包進(jìn)入環(huán)路后形成廣播風(fēng)暴,耗盡二層設(shè)備CPU資源。
提高設(shè)備硬件規(guī)格,網(wǎng)絡(luò)優(yōu)化是應(yīng)對(duì)未知組播的兩個(gè)主要措施。而網(wǎng)絡(luò)優(yōu)化可以在不增加硬件成本,不影響現(xiàn)有業(yè)務(wù)的前提下,促進(jìn)網(wǎng)絡(luò)的平穩(wěn)發(fā)展,是運(yùn)營(yíng)商的較優(yōu)選擇。
網(wǎng)絡(luò)優(yōu)化中,保留并處理業(yè)務(wù)相關(guān)的協(xié)議報(bào)文,隔離或丟棄不相關(guān)協(xié)議報(bào)文,做好網(wǎng)絡(luò)安全防護(hù)工作,是方案的基本原則。
W市城域網(wǎng)優(yōu)化方案如下:
(1)配置合法組播前綴列表:針對(duì)組播轉(zhuǎn)發(fā)表規(guī)格大小問(wèn)題,業(yè)務(wù)控制層設(shè)備可以配置合法組播前綴列表,接入層設(shè)備開啟IGMP proxy功能[3]并使能合法組播前綴列表。配置后,設(shè)備只學(xué)習(xí)包含在前綴列表范圍內(nèi)的IGMP報(bào)文并形成組播轉(zhuǎn)發(fā)表項(xiàng)。
(2)匯聚層和接入層開啟二層隔離:傳統(tǒng)的二層網(wǎng)絡(luò),VLAN和VLAN之間相互隔離,但同一個(gè)VLAN內(nèi)的終端仍然屬于同一個(gè)廣播域,存在廣播/組播風(fēng)暴隱患。匯聚層和接入層配置二層隔離后,同一個(gè)VLAN內(nèi)廣播以及未知組播僅向二層設(shè)備上聯(lián)口轉(zhuǎn)發(fā),下聯(lián)設(shè)備和終端之間二層隔離,不再收到其他終端發(fā)出的的廣播和組播報(bào)文。
例:針對(duì)跨OLT泛洪,匯聚交換機(jī)開啟下聯(lián)口隔離。注意上聯(lián)端口不能配置隔離,避免路由器接收不到用戶側(cè)正常的廣播和組播報(bào)文;針對(duì)跨PON口和VLAN內(nèi)泛洪,OLT開啟PON口隔離和VLAN內(nèi)隔離。隔離效果如圖2所示:
圖2 二層隔離效果
(3)接入層開啟未知組播丟棄:未知組播處理方式為“泛洪”的二層接入設(shè)備,可以開啟未知組播丟棄。配置后,設(shè)備將丟棄未知組播報(bào)文,不再上送CPU,也不向其他端口轉(zhuǎn)發(fā)。
(4)統(tǒng)籌規(guī)劃CPU報(bào)文分類限速和出口報(bào)文分類限速:針對(duì)僅本地處理的報(bào)文:設(shè)備開啟CPU保護(hù)功能,對(duì)ASIC芯片上送CPU的報(bào)文分類并限速,優(yōu)先保證網(wǎng)絡(luò)管理和重要業(yè)務(wù)報(bào)文的處理。
針對(duì)除本地處理外繼續(xù)向網(wǎng)絡(luò)泛洪的報(bào)文:首先,可信ONU或者交換機(jī)利用QoS為報(bào)文著色分類;其次,各層次設(shè)備依據(jù)QoS標(biāo)記,部署出口報(bào)文分類限速;底層設(shè)備限速適當(dāng)嚴(yán)格,把攻擊流量隔離在靠近用戶側(cè)。
(5)周期巡檢,積極應(yīng)對(duì):采集統(tǒng)計(jì)CPU報(bào)文處理信息,形成維護(hù)基準(zhǔn),開展針對(duì)設(shè)備CPU的周期性檢測(cè)和異常處理。設(shè)備主控板和業(yè)務(wù)板的CPU都需要處理
網(wǎng)絡(luò)優(yōu)化是一項(xiàng)長(zhǎng)期性,周期性的系統(tǒng)工作。隨著城域網(wǎng)終端規(guī)模的增長(zhǎng)和業(yè)務(wù)融合的發(fā)展,需要維護(hù)人員不斷調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),優(yōu)化網(wǎng)絡(luò)流量,解決網(wǎng)絡(luò)質(zhì)量瓶頸,使得用戶體驗(yàn)得到較大提升,為運(yùn)營(yíng)商業(yè)務(wù)戰(zhàn)略和國(guó)家通信事業(yè)提供有力支撐。