專利名稱::防范邊界網(wǎng)關(guān)協(xié)議路由劫持的協(xié)同監(jiān)測(cè)方法
技術(shù)領(lǐng)域:
:本發(fā)明提出一種防范邊界網(wǎng)關(guān)協(xié)議(BGP)路由劫持(包括前綴劫持和下一跳劫持)的協(xié)同監(jiān)測(cè)方法,屬于計(jì)算機(jī)網(wǎng)絡(luò)安全
技術(shù)領(lǐng)域:
。
背景技術(shù):
:互聯(lián)網(wǎng)是計(jì)算機(jī)技術(shù)與通信技術(shù)相互融合的產(chǎn)物,自20世紀(jì)90年代中期以來,隨著網(wǎng)絡(luò)規(guī)模的快速增長(zhǎng)和基于互聯(lián)網(wǎng)的商業(yè)應(yīng)用日益增多,互聯(lián)網(wǎng)正逐步演變成為人類社會(huì)重要的信息基礎(chǔ)設(shè)施。為了增強(qiáng)可擴(kuò)展性,互聯(lián)網(wǎng)采用了層次式的路由體系結(jié)構(gòu),在自治系統(tǒng)(AutonomousSystem,AS)粒度上被劃分為“域內(nèi)”和“域間”兩個(gè)層次。自治系統(tǒng)被定義為運(yùn)行在統(tǒng)一的策略之下,向外展示出一致的路由策略的一組路由設(shè)備。邊界網(wǎng)關(guān)協(xié)議(BGP)是當(dāng)前域間路由協(xié)議事實(shí)上的標(biāo)準(zhǔn),其主要作用是在自治系統(tǒng)之間交換網(wǎng)絡(luò)可達(dá)信息?;贐GP的路由系統(tǒng)是互聯(lián)網(wǎng)的核心基礎(chǔ)設(shè)施,使分布在世界范圍內(nèi)的網(wǎng)絡(luò)終端、設(shè)備能夠通過互聯(lián)網(wǎng)進(jìn)行通信。路由劫持是BGP路由系統(tǒng)當(dāng)前面臨的最嚴(yán)重的安全威脅,具體分為前綴劫持和下一跳劫持。前綴劫持直接表現(xiàn)為一個(gè)AS(攻擊者AS)宣告了屬于另外一個(gè)AS(受害者AS)的IP地址空間(受害網(wǎng)絡(luò))。在互聯(lián)網(wǎng)發(fā)展的歷程中,前綴劫持事件時(shí)有發(fā)生,嚴(yán)重干擾了互聯(lián)網(wǎng)的正常運(yùn)行,影響較大的包括1997年的AS7007事件,2005年Google被Cogent劫持事件,以及2008年的YouTube事件等。這些事件都造成了受害網(wǎng)絡(luò)提供的服務(wù)被中斷兩小時(shí)以上。BGP前綴劫持的根源在于BGP鄰居之間過度的無條件的信任。每個(gè)AS依據(jù)從鄰居AS學(xué)到的路由進(jìn)行最優(yōu)路由的選擇,然后使用最優(yōu)路由轉(zhuǎn)發(fā)數(shù)據(jù),而不會(huì)實(shí)際上也不能對(duì)路由的可信性進(jìn)行判斷。當(dāng)前綴劫持發(fā)生時(shí),借助于RouteViews和RIPE-RIS等路由采集項(xiàng)目,可以從路由數(shù)據(jù)中發(fā)現(xiàn)受害者網(wǎng)絡(luò)同時(shí)被兩個(gè)或者多個(gè)不同的AS宣告,具備明顯的特征。另一種更具隱蔽性的攻擊方式稱為下一跳劫持,攻擊者AS假稱自己是受害者AS的直接鄰居。由于只有受害者AS本身才知道攻擊者AS是否自己的鄰居,而前綴劫持/下一跳劫持發(fā)生時(shí),攻擊者AS發(fā)出的錯(cuò)誤路由一般都不會(huì)傳播到受害者AS本身,因此前綴劫持和下一跳劫持都非常難于檢測(cè)。為了防范路由劫持,學(xué)術(shù)界和工業(yè)界做出了大量的努力,當(dāng)前的工作主要集中在兩個(gè)方面。一是針對(duì)脆弱的BGP信任模型,通過設(shè)計(jì)安全協(xié)議機(jī)制,為BGP提供全面的保護(hù),在本質(zhì)上是限定“只允許做什么”的方法;二是針對(duì)前綴劫持,通過對(duì)到特定網(wǎng)絡(luò)的路由以及數(shù)據(jù)轉(zhuǎn)發(fā)路徑進(jìn)行監(jiān)測(cè)來保證前綴的安全,在本質(zhì)上是限定“不允許做什么”的方法。在安全協(xié)議機(jī)制設(shè)計(jì)方面,目前仍然沒有形成一個(gè)在效果和代價(jià)上可接受的方案,其原因是多方面的。其一,絕大多數(shù)安全協(xié)議機(jī)制都需要修改路由協(xié)議,部署代價(jià)高昂;其二,路由器上的計(jì)算和存儲(chǔ)資源都非常有限,而安全協(xié)議的實(shí)現(xiàn)往往需要較大的開銷;其三,很多安全機(jī)制都需要全網(wǎng)范圍內(nèi)的公鑰基礎(chǔ)設(shè)施(PublicKeyInfrastructure,PKI)的支持,而這在分布式的互聯(lián)網(wǎng)上非常難于實(shí)現(xiàn);其四,從動(dòng)機(jī)上講,當(dāng)前提出的安全機(jī)制往往只有在全網(wǎng)范圍內(nèi)部署之后才能受益,商業(yè)利益驅(qū)動(dòng)的運(yùn)營(yíng)商往往缺乏動(dòng)力去部署。同樣,致力于檢測(cè)前綴劫持的監(jiān)測(cè)機(jī)制也沒有得到廣泛的推廣,其原因包括以下三個(gè)方面。一是,網(wǎng)絡(luò)前綴和宣告者AS之間的映射會(huì)隨著商業(yè)關(guān)系變化,當(dāng)前并沒有一個(gè)權(quán)威的機(jī)構(gòu)或數(shù)據(jù)源能夠提供準(zhǔn)確實(shí)時(shí)的映射關(guān)系,只有網(wǎng)絡(luò)前綴的擁有者本身才知道映射關(guān)系的變化是否合法;二是,由于運(yùn)營(yíng)商之間本質(zhì)上是相互競(jìng)爭(zhēng)關(guān)系,觀察到前綴劫持的AS并沒有通知受害者AS的義務(wù),往往缺乏及時(shí)的處理與控制;三是當(dāng)前綴劫持發(fā)生時(shí),被劫持網(wǎng)絡(luò)到互聯(lián)網(wǎng)上其它AS的通信在很大程度上已經(jīng)被切斷,因此即使有AS愿意將此前綴劫持事件通知給受害者AS,網(wǎng)絡(luò)管理員之間常用的通過Email等依賴于互聯(lián)網(wǎng)的手段業(yè)已基本失效。本發(fā)明方法的提出基于以下幾個(gè)基本事實(shí)(1)路由安全的重要性日益突出,對(duì)路由劫持進(jìn)行防范具有廣泛的需求和廣闊的市場(chǎng)。相關(guān)研究表明,互聯(lián)網(wǎng)流量在網(wǎng)絡(luò)前綴之間的分布是不均衡的,一少部分網(wǎng)絡(luò)前綴承載了互聯(lián)網(wǎng)中相當(dāng)大一部分流量。提供互聯(lián)網(wǎng)搜索、視頻共享和實(shí)時(shí)新聞等在線服務(wù)的內(nèi)容提供商(InternetContentProvider,ICP)的服務(wù)質(zhì)量嚴(yán)重地依賴于路由系統(tǒng),具體體現(xiàn)在以ICP提供的服務(wù)為目的地的流量能否被正確地路由到該ICP提供服務(wù)的網(wǎng)絡(luò)。路由劫持的直接體現(xiàn)就是“流量吸附”,攻擊者AS能夠通過劫持受害網(wǎng)絡(luò)的路由從而達(dá)到重定向流量到自身的目的,因此防范路由劫持對(duì)于ICP尤為重要。(2)對(duì)路由劫持進(jìn)行防范需要協(xié)同。對(duì)BGP路由劫持的防范存在著一對(duì)天然的、不可調(diào)和的矛盾。一方面,只有網(wǎng)絡(luò)前綴的擁有者本身才能鑒別路由變化是否由于攻擊行為引起;另一方面,BGP傳播路由的機(jī)制以及網(wǎng)絡(luò)運(yùn)營(yíng)商的路由策略使得攻擊者發(fā)起的錯(cuò)誤路由很難傳播到受害者AS本身,因此,依賴于BGP協(xié)議本身的路由傳播機(jī)制并不能讓AS保護(hù)自己的路由不被劫持,必須引入?yún)f(xié)同讓攻擊者發(fā)起的錯(cuò)誤路由能夠傳播到受害者AS。(3)路由數(shù)據(jù)采集項(xiàng)目RouteViews和RIPE-RIS,發(fā)布路由數(shù)據(jù)供網(wǎng)絡(luò)學(xué)術(shù)研究和面向整個(gè)hternet的路由監(jiān)測(cè)服務(wù)使用,已經(jīng)與遍布全球的400多個(gè)自治系統(tǒng)與建立了BGP會(huì)話。這些自治系統(tǒng)設(shè)立了專為RouteViews和RIPE-RIS提供數(shù)據(jù)的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,但是自身并沒有得到有針對(duì)性的有效的網(wǎng)絡(luò)安全服務(wù)。同時(shí),互聯(lián)網(wǎng)中絕大部分AS都擁有自己的網(wǎng)絡(luò)測(cè)量、管理設(shè)施對(duì)域內(nèi)的路由狀態(tài)和流量分布進(jìn)行監(jiān)測(cè),對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行管理。本方法所提出的協(xié)同監(jiān)測(cè)方法通過協(xié)同AS中這些平時(shí)閑置或利用率很低的設(shè)施對(duì)BGP路由劫持攻擊進(jìn)行監(jiān)測(cè),AS不需要進(jìn)行額外的投資就可以獲得額外的回報(bào),有助于本方法的推廣和應(yīng)用。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是通過充分利用多個(gè)自治系統(tǒng)(AS)內(nèi)現(xiàn)有的網(wǎng)絡(luò)管理與測(cè)量基礎(chǔ)設(shè)施,構(gòu)建用于監(jiān)測(cè)邊界網(wǎng)關(guān)協(xié)議(BGP)路由劫持的協(xié)同網(wǎng)絡(luò),以增強(qiáng)互聯(lián)網(wǎng)域間路由系統(tǒng)的安全性。技術(shù)方案是參與協(xié)同的AS利用原有的或新設(shè)立的服務(wù)器運(yùn)行BGP協(xié)議,與一個(gè)或多個(gè)內(nèi)部路由器建立用于采集路由更新報(bào)文的BGP會(huì)話,同時(shí)與多個(gè)其他AS中的監(jiān)測(cè)服務(wù)器建立協(xié)同監(jiān)測(cè)會(huì)話,具體由路由更新監(jiān)測(cè)方法和會(huì)話狀態(tài)監(jiān)測(cè)方法二部分組成。在控制平面,分析監(jiān)測(cè)會(huì)話獲取的路由更新報(bào)文,檢測(cè)BGP前綴劫持和下一跳劫持;在數(shù)據(jù)平面,對(duì)協(xié)同監(jiān)測(cè)會(huì)話的狀態(tài)進(jìn)行維護(hù)和檢測(cè),實(shí)時(shí)發(fā)現(xiàn)針對(duì)于協(xié)同網(wǎng)絡(luò)本身的路由劫持事件。本發(fā)明新定義的術(shù)語有監(jiān)測(cè)器、監(jiān)測(cè)會(huì)話、監(jiān)測(cè)鄰居、內(nèi)部鄰居和外部鄰居等。監(jiān)測(cè)器是每個(gè)參與構(gòu)建協(xié)同監(jiān)測(cè)網(wǎng)絡(luò)的AS所設(shè)立的監(jiān)測(cè)服務(wù)器;監(jiān)測(cè)器之間建立的用于通信的BGP會(huì)話稱之為監(jiān)測(cè)會(huì)話;相應(yīng)地,一個(gè)監(jiān)測(cè)會(huì)話連接的兩個(gè)監(jiān)測(cè)器稱為監(jiān)測(cè)鄰居;根據(jù)是否處在同一AS內(nèi),監(jiān)測(cè)器與其他路由器或監(jiān)測(cè)服務(wù)器的BGP鄰居關(guān)系分為內(nèi)部鄰居和外部鄰居。本發(fā)明使用的其他符號(hào)和術(shù)語說明如下網(wǎng)絡(luò)前綴一個(gè)連續(xù)的IP地址塊在路由系統(tǒng)中表示為一個(gè)網(wǎng)絡(luò)前綴,簡(jiǎn)稱前綴;M1,M2...Mn已經(jīng)與自治系統(tǒng)u建立了監(jiān)測(cè)會(huì)話的η個(gè)監(jiān)測(cè)器,本發(fā)明中所有方法的描述均從自治系統(tǒng)u的角度出發(fā),下文將不區(qū)分自治系統(tǒng)及其設(shè)立的監(jiān)測(cè)器;Iffl監(jiān)測(cè)器m試圖進(jìn)行保護(hù)的前綴集合,在本發(fā)明中指ASm直接宣告的所有網(wǎng)絡(luò);ipem:監(jiān)測(cè)器m用于和外部鄰居建立監(jiān)測(cè)會(huì)話的IP地址,由于該地址必須具備全互聯(lián)網(wǎng)范圍內(nèi)的可達(dá)性,因此ASm必須向路由系統(tǒng)中宣告包含該地址的網(wǎng)絡(luò)前綴;ipim監(jiān)測(cè)器m用于和內(nèi)部鄰居建立BGP會(huì)話的IP地址,由于該地址僅需在ASm內(nèi)部可達(dá),建議采用私有網(wǎng)絡(luò)地址,且不向路由系統(tǒng)中宣告包含該地址的地址塊;cm監(jiān)測(cè)器m的協(xié)同前綴(cooperatingprefix),ASm宣告的,包含ipeim的前綴中地址空間最小的網(wǎng)絡(luò)前綴;Gm=ASm的非用于構(gòu)建協(xié)同網(wǎng)絡(luò)的一般前綴(generalprefix)的集合,也就是監(jiān)測(cè)器m宣告的除了協(xié)同前綴之外的前綴的集合,Gffl=Iffl-{cj。1.路由更新監(jiān)測(cè)方法本方法對(duì)來自監(jiān)測(cè)鄰居的路由更新報(bào)文進(jìn)行檢測(cè),即“控制平面”的檢測(cè),以發(fā)現(xiàn)針對(duì)于本自治系統(tǒng)的BGP前綴劫持和下一跳劫持事件。本方法涉及的符號(hào)說明和術(shù)語定義如下r:一條路由,是一個(gè)二元組r=(d,ρ),其中d是網(wǎng)絡(luò)前綴,ρ是路由的AS-Path屬性,具體指本地自治系統(tǒng)到達(dá)網(wǎng)絡(luò)d所需依次經(jīng)過的自治系統(tǒng)序列,記為[VkVlri...V1V0]。BGP中傳播的的路由更新有‘Announcement,和‘Withdrawal,兩種類型,分別記為‘A,和‘W’,‘A’類型的路由更新對(duì)應(yīng)于非空的AS-Path屬性,‘W’類型的路由更新對(duì)應(yīng)于空的AS-Path屬性。r.origin在路由系統(tǒng)中宣告網(wǎng)絡(luò)d的自治系統(tǒng),當(dāng)r·;^0時(shí),r.origin=V0;r.firsthop路由r在互聯(lián)網(wǎng)上的傳播過程中所經(jīng)過的第一個(gè)不同于r.origin的自治系統(tǒng);u的策略對(duì)于Iu中的任意前綴d,u的策略包括前綴和宣告者之間的映射關(guān)系策略0u(d)以及前綴和第一跳AS之間的映射關(guān)系策略Lu(d)。Ou(d)表示自治系統(tǒng)u認(rèn)為有權(quán)利宣告前綴d的自治系統(tǒng)集合,Lu(d)表示u的AS鄰居中被允許直接從u處學(xué)習(xí)到前綴d的路由的自治系統(tǒng)集合,反映了u的路由輸出策略;MiM從監(jiān)測(cè)器虬處觀察到的到達(dá)前綴d的路由;OSetu(d,t)在t時(shí)亥lj,U從各個(gè)監(jiān)測(cè)鄰居觀察到的到前綴d的宣告者集合;FSetu(d,t)在t時(shí)刻,U從各個(gè)監(jiān)測(cè)鄰居觀察到的到前綴d的路由的第一跳自治系統(tǒng)的集合;前綴d對(duì)Mi不可達(dá)(deIu)監(jiān)測(cè)鄰居Mi沒有去往本地自治系統(tǒng)網(wǎng)絡(luò)d的路由;7前綴d可達(dá)性喪失表明所有的監(jiān)測(cè)鄰居Mi(1彡i彡η)都沒有去往前綴d的路本檢測(cè)方法的具體過程是監(jiān)測(cè)服務(wù)器u在t時(shí)刻接收到監(jiān)測(cè)鄰居Mi發(fā)送的關(guān)于前綴d的路由更新報(bào)文r時(shí),執(zhí)行以下步驟(1)判斷該路由涉及的前綴d是否在集合Iu中,如果是,則說明該路由與本自治系統(tǒng)的相關(guān)性,繼續(xù)(2-6),否則返回;(2)對(duì)路由r進(jìn)行內(nèi)容解析,得到該路由對(duì)應(yīng)AS-Path屬性r.ρ;(3)如果r.p=^0,該路由更新是‘A’類型,對(duì)該路由進(jìn)一步解析得到r.origin屬性和r.firsthop屬性,并更新監(jiān)測(cè)器Mi對(duì)應(yīng)的信息,Mi[d]=r;(4)如果np=0,該路由更新是‘W’類型,則MJd]=0,同時(shí),意味著Mi所在的AS到網(wǎng)絡(luò)前綴d變得不可達(dá),生成前綴d對(duì)Mi不可達(dá)告警信息;(5)重新計(jì)算當(dāng)前時(shí)刻從各個(gè)監(jiān)測(cè)鄰居觀察到的到前綴d的宣告者集合和下一跳集合,0Setu(d,t)—UiLiCMi[d].origin)-,FSetu{d,t)—U^MiIdlfirsthop)-,(6)檢測(cè)新接收到的源自治系統(tǒng)和第一跳自治系統(tǒng)與預(yù)定義策略的一致性,若r.origin不屬于Ou(d),則生成前綴劫持告警,若r.firsthop不屬于Lu(d),則生成下一跳劫持告警,若OSetu(d,t)為空或FSetu(d,t)為空,則生成前綴d可達(dá)性喪失告警。2.會(huì)話狀態(tài)監(jiān)測(cè)方法本方法通過對(duì)多個(gè)監(jiān)測(cè)器之間建立的協(xié)同監(jiān)測(cè)會(huì)話的通信狀態(tài)進(jìn)行監(jiān)測(cè),防范針對(duì)于協(xié)同監(jiān)測(cè)網(wǎng)絡(luò)本身的路由劫持。本方法工作在‘?dāng)?shù)據(jù)平面’上,實(shí)時(shí)監(jiān)測(cè)本監(jiān)測(cè)器與監(jiān)測(cè)鄰居之間的數(shù)據(jù)通路是否正常,并在檢測(cè)到協(xié)同監(jiān)測(cè)會(huì)話失效時(shí)啟動(dòng)故障診斷方法,推斷導(dǎo)致失效的原因。協(xié)同監(jiān)測(cè)會(huì)話通常連接兩個(gè)并不直接相鄰的監(jiān)測(cè)器,建立多跳步的BGP外部連接(ebgp-multihop),在本質(zhì)上與通常的BGP會(huì)話并沒有區(qū)別。出于維護(hù)連通性的目的,BGP會(huì)話的每一方都需要為維護(hù)兩個(gè)定時(shí)器,KeepAlive和HoldDown。按照路由協(xié)議標(biāo)準(zhǔn)RFC4271的規(guī)定,BGP會(huì)話的每一方均需要在時(shí)長(zhǎng)為Ke印Alive的間隔內(nèi)向另一方發(fā)送一個(gè)KeepAlive報(bào)文;若BGP會(huì)話的任意一方在時(shí)長(zhǎng)為HoldDown的間隔內(nèi)未收到Ke印Alive報(bào)文,則將該會(huì)話重置。在默認(rèn)的設(shè)置中,KeepAlive和HoldDown定時(shí)器分別是60秒和180秒。BGP為每個(gè)會(huì)話鄰居維護(hù)一個(gè)單獨(dú)的有限狀態(tài)機(jī)(FiniteStateMachine,FSM),每個(gè)狀態(tài)機(jī)有六個(gè)狀態(tài):Idle,Connect,Active,OpenSent,OpenConfirm禾口Established。一個(gè)協(xié)同監(jiān)測(cè)會(huì)話從其中的一方來看,它的狀態(tài)處于“UP”當(dāng)且僅當(dāng)狀態(tài)機(jī)處于“Established”狀態(tài),而當(dāng)狀態(tài)機(jī)處于其它五個(gè)狀態(tài)時(shí)均認(rèn)為會(huì)話是處于“DOWN”狀態(tài)。監(jiān)測(cè)器u和它的監(jiān)測(cè)鄰居ν之間通過建立在Cu和Cv之間的監(jiān)測(cè)會(huì)話交換關(guān)于前綴集Iu和Iv的路由更新,但是當(dāng)前綴^或Cv被劫持時(shí),會(huì)使監(jiān)測(cè)會(huì)話中斷而導(dǎo)致本監(jiān)測(cè)方法的失效。同時(shí),在u—ν或ν—u任意一個(gè)方向上的路由故障也可能導(dǎo)致監(jiān)測(cè)會(huì)話被中斷。弓丨起協(xié)同監(jiān)測(cè)會(huì)話故障的具體原因可以歸結(jié)為以下四種情況(l)u—ν方向上的路由故障,稱為前向路徑故障;⑵ν—u方向上的路由故障,稱為后向路徑故障;(3)u的協(xié)同前綴從ν處被劫持;(4)ν的協(xié)同前綴從u處被劫持。在實(shí)際網(wǎng)絡(luò)環(huán)境下監(jiān)測(cè)會(huì)話故障的原因可能是以上四種因素的任意組合。8會(huì)話狀態(tài)監(jiān)測(cè)方法通過協(xié)同監(jiān)測(cè)會(huì)話的狀態(tài)來判斷協(xié)同網(wǎng)絡(luò)的工作狀態(tài),并將協(xié)同前綴被劫持(Cu或Cv被劫持)與路由故障引發(fā)的監(jiān)測(cè)會(huì)話中斷區(qū)分開來,實(shí)現(xiàn)路由安全事件的精確報(bào)告和定位。本方法涉及的符號(hào)說明和術(shù)語定義如下T長(zhǎng)度為T的時(shí)間窗口,一般設(shè)置為3個(gè)KeepAlive或1個(gè)HoldDown間隔;Si與監(jiān)測(cè)鄰居Mi建立的協(xié)同監(jiān)測(cè)會(huì)話,其中Si.State指該監(jiān)測(cè)會(huì)話的狀態(tài),即“DOWN”或"UP",Si.fp指u到Mi的路徑,稱為前向路徑,Si.bp指從Mi到u的路徑,稱為后向路徑;ebufi監(jiān)測(cè)器u為每個(gè)監(jiān)測(cè)鄰居Mi維護(hù)一個(gè)緩存,存儲(chǔ)最近T時(shí)間內(nèi)從與Mi的監(jiān)測(cè)會(huì)話上觀察到的事件,包括BGPKeepAlive,BGPNotification,TCP連接建立和撤銷的報(bào)文以及相關(guān)于前綴cMi的ICMP報(bào)文。每個(gè)事件定義為一個(gè)(時(shí)間,類型,原始報(bào)文)三元組,存儲(chǔ)的原始報(bào)文用于網(wǎng)絡(luò)管理員進(jìn)行深度分析;bPi監(jiān)測(cè)器U通過協(xié)同監(jiān)測(cè)會(huì)話從監(jiān)測(cè)鄰居Mi學(xué)到的、自己使用的協(xié)同前綴Cu的路由的AS-Path屬性,這實(shí)際上就是Si.bp;監(jiān)測(cè)器u為其可見的任意網(wǎng)絡(luò)前綴d維護(hù)以下三種狀態(tài)(l)hd監(jiān)測(cè)器u為每個(gè)網(wǎng)絡(luò)前綴d維護(hù)從內(nèi)部鄰居學(xué)到的最近一段時(shí)間的路徑變化,每個(gè)元素為(t,path),其中t為接收到路由更新的時(shí)間,path為接收到的路由更新報(bào)文中的AS-Path屬性;(2)neWpd:當(dāng)前時(shí)刻監(jiān)測(cè)器u用于去往網(wǎng)絡(luò)前綴d的最優(yōu)路由的AS-Path屬性;(3)Oldpd在T時(shí)間以前監(jiān)測(cè)器u用于去往網(wǎng)絡(luò)前綴d的最優(yōu)路由的AS-Path屬性;stable(hd)根據(jù)hd中的信息計(jì)算當(dāng)前本地自治系統(tǒng)到目標(biāo)網(wǎng)絡(luò)d的AS-Path屬性,以及T時(shí)間以前的該AS-Path屬性。具體的計(jì)算過程如下(1)將hd中的元素根據(jù)時(shí)間標(biāo)記以升序排列;(計(jì)算相鄰兩個(gè)元素之間的時(shí)間差;(選取生成最大時(shí)間差的兩個(gè)相鄰元素,將較小時(shí)間戳的元素的AS-Path屬性設(shè)為Oldpd;(4)將Iiewpd設(shè)為所有元素中最大時(shí)間戳的元素的AS-Path屬性;(5)stable(hd)=(οIdpd,newpd);E事件候選集,每個(gè)元素為(oldpd,neWpd),表示網(wǎng)絡(luò)前綴d的路徑由Oldpd變?yōu)閚ewpd;C:故障候選集,其元素(U,ν)代表自治系統(tǒng)1!和¥之間的邊,當(dāng)U=ν時(shí),代表自治系統(tǒng)U的內(nèi)部鏈路,每個(gè)元素(u,v)和一個(gè)計(jì)數(shù)器(U,V),counter相關(guān)聯(lián),表示該鏈路相關(guān)的事件個(gè)數(shù);F故障集,確認(rèn)發(fā)生了故障的鏈路或節(jié)點(diǎn),是C的一個(gè)子集。會(huì)話狀態(tài)監(jiān)測(cè)方法由兩個(gè)獨(dú)立的部分組成,一部分負(fù)責(zé)更新和維護(hù)所監(jiān)測(cè)到的各種狀態(tài),稱為會(huì)話狀態(tài)維護(hù)子方法;另一部分在檢測(cè)到會(huì)話狀態(tài)變化時(shí)對(duì)導(dǎo)致變化的原因進(jìn)行分析,并生成日志以輔助網(wǎng)絡(luò)管理員進(jìn)行網(wǎng)絡(luò)調(diào)試,稱為會(huì)話故障診斷子方法。會(huì)話狀態(tài)監(jiān)測(cè)方法僅只讀取而不更改路由協(xié)議的運(yùn)行狀態(tài),在實(shí)現(xiàn)上獨(dú)立于路由協(xié)議,無須對(duì)路由協(xié)議進(jìn)行修改。2.1會(huì)話狀態(tài)維護(hù)子方法會(huì)話狀態(tài)維護(hù)子方法在監(jiān)測(cè)器上使用原始套接字進(jìn)行監(jiān)聽,在t時(shí)刻接收到IP報(bào)文P時(shí)執(zhí)行以下步驟第一步,獲取IP報(bào)文的“協(xié)議”(Protocol)字段(IP報(bào)文的第10個(gè)字節(jié)),解析得到報(bào)文的源地址字段Psm;第二步,若‘協(xié)議’字段為1,則P是ICMP報(bào)文,否則返回;如果ICMP報(bào)文的類型代碼(type)為3,則該報(bào)文通告的是“目標(biāo)不可達(dá)”異常狀態(tài),讀取錯(cuò)誤代碼(code),提取其數(shù)據(jù)部分中包含的未成功送往目標(biāo)地址的IP數(shù)據(jù)的目的地址,記為b,否則返回;若監(jiān)測(cè)器存在外部鄰居Mi,使得=&,則執(zhí)行以下步驟,否則返回(1)若該ICMP是“網(wǎng)絡(luò)不可達(dá)”(類型代碼3,錯(cuò)誤代碼0),則向ebuf,中加入(t‘網(wǎng)絡(luò)不可達(dá)’,P);(2)若該ICMP是“主機(jī)不可達(dá)”(類型代碼3,錯(cuò)誤代碼1),則向ebuf,中加入(t‘主機(jī)不可達(dá)’,P);(3)若該ICMP是“未知的網(wǎng)絡(luò)”(類型代碼3,錯(cuò)誤代碼6),則向ebuf,中加入(t‘網(wǎng)絡(luò)未知’,P);(4)若該ICMP是“未知的主機(jī)”(類型代碼3,錯(cuò)誤代碼7),則向ebufi中加入(t‘主機(jī)未知’,P);(5)若該ICMP是“端口不可達(dá)”(類型代碼3,錯(cuò)誤代碼3),則向ebuf,中加入(t‘端口不可達(dá)’,P);(6)若該ICMP是“TTL超時(shí)”(類型代碼11,錯(cuò)誤代碼0),則向ebufi中加入(t‘TTL超時(shí)’,ρ);(7)從前至后掃描ebufi,只保存最近T時(shí)間內(nèi)收到的事件,之后返回;第三步,若‘協(xié)議,字段為‘6,(TCP),且TCP部分的‘目的端口,(Destinationport)字段(TCP部分的第3,4字節(jié))為179,則ρ是一個(gè)BGP報(bào)文,否則返回;第四步,解析BGP報(bào)文的‘類型(Type)’字段(BGP部分的第19字節(jié)),記為type;第五步,若type為1或3或4,該報(bào)文是BGPOpen報(bào)文,或Ke印Alive報(bào)文,或Notification報(bào)文,則進(jìn)行以下處理(1)若pSM是本監(jiān)測(cè)器的內(nèi)部鄰居,即pSM==ipiu,則返回;(2)若是本監(jiān)測(cè)器的外部鄰居Mi,即^<==ρ^ιν則在ebufi對(duì)應(yīng)加入(t,‘BGPOpen,,ρ),或(t,‘BGPKe印Alive,,ρ),或(t,‘BGPNotification,,ρ);(3)從前至后掃描ebufi,只保存最近T時(shí)間內(nèi)收到的事件,之后返回;第六步,若type為2,該報(bào)文是BGP路由更新(BGPUpdate)報(bào)文,解析得到撤銷的前綴列表wp,宣告的前綴列表ap,以及AS-Path屬性pathp;第七步,若是本監(jiān)測(cè)器的內(nèi)部鄰居,即Psrc=ipiu,則進(jìn)行以下處理(1)若Wp牛0,則對(duì)于任意網(wǎng)絡(luò)前綴deWp,向hd中加入其最新的變化^0),表明從本地自治系統(tǒng)去往網(wǎng)絡(luò)前綴d的路由在t時(shí)刻其路徑屬性變?yōu)?;(2)若OpΦ0,則對(duì)于任意網(wǎng)絡(luò)前綴de、,向hd中加入其最新的變化(t,pathp),表明從本地自治系統(tǒng)去往網(wǎng)絡(luò)前綴d的路由在t時(shí)刻其路徑屬性變?yōu)閜athp;(3)對(duì)于ρ中涉及的任何網(wǎng)絡(luò)前綴dewpU、,查看并更新相應(yīng)的hd,具體地,僅保留[t_T,t]時(shí)間內(nèi)接收到的路由更新,以及t-Τ時(shí)刻以前接收到的最后一個(gè)路由更新;第八步,若Ps,。是本監(jiān)測(cè)器的外部鄰居Mi,即Pm=Φ%,則進(jìn)行以下處理(1)若Wp*0,若CueWp,則Z^·=0,表明從監(jiān)測(cè)鄰居Mi到本地自治系統(tǒng)u的路徑,即后向路徑,被撤銷;(2)若αρ*0,若CueWp,則bPi=pathp,表明從監(jiān)測(cè)鄰居Mi到本地自治系統(tǒng)u的路徑變?yōu)镻athp。2.2會(huì)話故障診斷子方法會(huì)話故障診斷子方法檢測(cè)到一個(gè)會(huì)話狀態(tài)變化,即Si.StateSi-Si'(Si^Si')時(shí),執(zhí)行以下步驟第一步,判斷Si'的狀態(tài),如果是“DOWN”,則繼續(xù)執(zhí)行;否則是“UP”,返回;第二步,初步判斷引起監(jiān)測(cè)會(huì)話Si失效的原因(1)計(jì)算Si失效前的前向路徑,監(jiān)測(cè)會(huì)SSi對(duì)端的(監(jiān)測(cè)鄰居Mi—方)IP地址是ipeM.,Si-fp=stable(hCM.)■oWpCM;;(2)計(jì)算Si失效前的后向路徑,Si.bp=bPi;(3)監(jiān)測(cè)會(huì)話Si對(duì)端的(監(jiān)測(cè)鄰居Mi—方)IP地址是ipeMi,若中最新的元素的AS-Path屬性為0,則Si的失效由前向路徑故障引起,前向路徑為Si.fp;(4)若ebufi中存在ICMP事件,表明Mi的協(xié)同前綴不可達(dá),Si的失效由前向路徑故障引起,該前向路徑為Si.fp;(5)查看^,若宣告前綴的AS發(fā)生了變化,則SiW失效由于對(duì)端協(xié)同前綴被劫持引起;第三步,若第二步中的條件均未滿足,則引發(fā)Si失效的原因包括本地協(xié)同前綴Cu被劫持,或后向路徑失效。首先初始化F—0,C——0,然后對(duì)于U可見的每個(gè)網(wǎng)絡(luò)前綴d,按以下步驟進(jìn)一步診斷監(jiān)測(cè)會(huì)話Si失效的原因(1)根據(jù)hd計(jì)算newpd和oldpd,(oldpd,newpd)=stable(hd);(2)若newpdΦoldpd,向事件候選集中加入事件e:oldpd—newpd,記為E—EU{(oldpd,newpd)};(3)對(duì)于事件e中涉及的兩條AS-Path,newPd和oldpd,首先去除每條AS-Path中連續(xù)重復(fù)的出現(xiàn)(ASPr印ending),得到形如VkVk^1......V1V0的AS-Path(對(duì)于任意的O^m<η^k,vm^vn);(4)向故障候選集中加入節(jié)點(diǎn),C—CUUUOin,)},更新節(jié)點(diǎn)對(duì)應(yīng)的計(jì)數(shù)器(vm,vm).counter一(vm,vm).counter+1;(5)向故障候選集中加入邊工—〔0141-=1(){(>1+1,771)},更新邊對(duì)應(yīng)的計(jì)數(shù)器(vm+1,Vm).counter一(vm+1,vm).counter+1;第四步,將故障候選集C中的元素按照其關(guān)聯(lián)的計(jì)數(shù)器的值以降序排列,然后進(jìn)行以下步驟(1)若EΨ¢),則從C中選取計(jì)數(shù)器值最高的元素(X,y);(2)對(duì)于E中任何一個(gè)事件e:oldpd—newpd,若其oldpd或者newpd屬性包含節(jié)點(diǎn)或邊(x,y),則將之移除;(3)將(x,y)從C中移除,若(x,y)成功地從E中移除過一個(gè)或多個(gè)事件,將該鏈路加入到故障集F中,F(xiàn)—FU{(x,y)};(4)若E=0,返回;否則轉(zhuǎn)(1);第五步,計(jì)算F中的節(jié)點(diǎn)/邊與前向路徑Si.fp的交集!^,以及與后向路徑Si.bp的交集Fbp;第六步,若Φ0,則是前向路徑故障,若Fbp*0且ebufi中最近2T/3時(shí)間內(nèi)無任何BGP相關(guān)報(bào)文(僅限于Ke印Alive和Notification),則屬后向路徑故障,并返回非空的故障集Ffp或Fbp;若以上條件均不滿足,判定本地協(xié)同前綴被劫持。采用本發(fā)明能達(dá)到以下有益效果本發(fā)明充分利用了AS內(nèi)部現(xiàn)有的網(wǎng)絡(luò)管理、測(cè)量設(shè)施,以及公共路由數(shù)據(jù)發(fā)布項(xiàng)目所設(shè)立的數(shù)據(jù)采集設(shè)施,通過協(xié)同和整合現(xiàn)有的網(wǎng)絡(luò)資源,構(gòu)建監(jiān)測(cè)BGP前綴劫持和下一跳劫持的協(xié)同網(wǎng)絡(luò)。采用本發(fā)明可以取得以下效果(1)從控制平面監(jiān)測(cè)針對(duì)于本自治系統(tǒng)網(wǎng)絡(luò)的前綴劫持和下一跳劫持事件。尤其值得一提的是,目前其他的路由安全監(jiān)測(cè)方法一般只能對(duì)前綴劫持進(jìn)行檢測(cè)。從控制平面對(duì)這兩類事件進(jìn)行檢測(cè)具有開銷小,準(zhǔn)確率高的特點(diǎn)。(2)從數(shù)據(jù)平面對(duì)協(xié)同網(wǎng)絡(luò)正常工作所依賴的底層IP網(wǎng)絡(luò)的通信進(jìn)行保護(hù)。協(xié)同監(jiān)測(cè)會(huì)話采用類似于BGP會(huì)話的連通性維護(hù)機(jī)制,能夠保證不受正常的路由事件的干擾;不需要建立新的疊加網(wǎng)絡(luò)和實(shí)現(xiàn)新的疊加網(wǎng)絡(luò)協(xié)議,部署簡(jiǎn)單。通過對(duì)協(xié)同監(jiān)測(cè)會(huì)話的狀態(tài)監(jiān)控,可以診斷導(dǎo)致會(huì)話狀態(tài)中斷的關(guān)鍵節(jié)點(diǎn)和鏈路,為自治系統(tǒng)管理員進(jìn)行網(wǎng)絡(luò)調(diào)試提供依據(jù)。(3)由于對(duì)前綴劫持和下一跳劫持的檢測(cè)均在本地進(jìn)行,不存在著檢測(cè)到安全事件無法通知受害者自治系統(tǒng)的問題。參加公共路由數(shù)據(jù)發(fā)布服務(wù)的互聯(lián)網(wǎng)運(yùn)營(yíng)商沒有數(shù)據(jù)隱私方面的顧慮,并且直接獲益于本方法的部署,實(shí)現(xiàn)了責(zé)權(quán)利的統(tǒng)一,有利于協(xié)同網(wǎng)絡(luò)規(guī)模的持續(xù)擴(kuò)展和演化。圖1是本發(fā)明在自治系統(tǒng)內(nèi)的部署示意;圖2是本發(fā)明在自治系統(tǒng)之間的部署示意;圖3是監(jiān)測(cè)器在內(nèi)部鄰居和外部鄰居之間的路由輸入/輸出策略示意;圖4是本發(fā)明的功能模塊設(shè)計(jì);圖5展示了本方法在服務(wù)器上的具體實(shí)現(xiàn);圖6是采用本發(fā)明后每3分鐘內(nèi)接收到的BGP更新報(bào)文的數(shù)量及存儲(chǔ)開銷;圖7是采用本發(fā)明后,一個(gè)AS分別與5n(l彡η彡11)個(gè)AS建立協(xié)同監(jiān)測(cè)會(huì)話所能覆蓋的安全范圍,以展示本發(fā)明監(jiān)測(cè)方法的覆蓋能力。具體實(shí)施例方式圖1是監(jiān)測(cè)器在自治系統(tǒng)(AS)內(nèi)部的互聯(lián)示意圖。出于備份的目的,每個(gè)監(jiān)測(cè)器最好與兩個(gè)或以上的內(nèi)部鄰居互聯(lián)。AS內(nèi)部的邊界路由器存在著多種組織形式,包括采用iBGP全互聯(lián),路由反射器和BGP聯(lián)邦。根據(jù)AS內(nèi)部邊界路由器之間互聯(lián)方式的不同,監(jiān)測(cè)器所連接的內(nèi)部鄰居也略有不同。(1)對(duì)于采用iBGP全互聯(lián)邊界路由器的AS,如圖1(a)所示,監(jiān)測(cè)器需要與其中任意的兩個(gè)或以上路由器建立BGP會(huì)話;(2)對(duì)于采用路由反射部署方式的AS,如圖1(b)所示,監(jiān)測(cè)器需要與其中任意的兩個(gè)或以上的路由反射器(RouteReflector,RR)建立BGP會(huì)話,并將監(jiān)測(cè)器配置為路由反射器的客戶(RouteClient,RC);(3)對(duì)于采用BGP聯(lián)邦部署方式的AS,監(jiān)測(cè)器只需加入其中的任意一個(gè)聯(lián)邦,并與該聯(lián)邦內(nèi)任意兩臺(tái)或以上的路由器建立BGP會(huì)話即可,連接方式和圖1(a)所示的相同。當(dāng)監(jiān)測(cè)器與內(nèi)部鄰居互聯(lián)時(shí),本方法要求監(jiān)測(cè)器建立BGP會(huì)話時(shí)使用AS內(nèi)部地址塊,即該地址塊既不向外部自治系統(tǒng)宣告,也禁止從外部自治系統(tǒng)學(xué)習(xí)到關(guān)于該地址塊的路由。該地址塊可以是,但不局限于私有地址。對(duì)該類型地址塊的處理方式類似于對(duì)AS內(nèi)部路由器地址的處理,僅在AS內(nèi)部通過IGP進(jìn)行傳播以提供該地址塊在整個(gè)AS內(nèi)部的連通性,但是在AS邊界上被過濾掉。使用這種方式可以保證監(jiān)測(cè)器和內(nèi)部鄰居之間的通信不被劫持。在實(shí)現(xiàn)方式上,自治系統(tǒng)管理員可以有多種選擇。例如,在邊界路由器上使用route-map,filter-list,redistribute-list/prefix-list等配置手段對(duì)路由器使用的地址塊進(jìn)行過濾;或者在由內(nèi)部網(wǎng)關(guān)路由協(xié)議向BGP進(jìn)行路由發(fā)布時(shí)標(biāo)記上預(yù)定義的COMMUNITY屬性,在邊界路由器上對(duì)特定的COMMUNITY屬性進(jìn)行過濾。圖2是本方法的域間部署示意,域間部署方式體現(xiàn)了本方法的協(xié)同特性,從整個(gè)hternet范圍內(nèi)看,部署了監(jiān)測(cè)器的AS之間按照自定義的策略互聯(lián)從而形成了一個(gè)監(jiān)測(cè)器的對(duì)等網(wǎng)絡(luò)。監(jiān)測(cè)器之間基于TCP進(jìn)行通信,交換相互感興趣的路由更新。原則上,一個(gè)監(jiān)測(cè)器應(yīng)該與多個(gè)監(jiān)測(cè)器建立協(xié)同監(jiān)測(cè)會(huì)話。與域內(nèi)部署不同的是,為了實(shí)現(xiàn)不同AS域中監(jiān)測(cè)器之間的通信,監(jiān)測(cè)器用于與外部鄰居建立協(xié)同監(jiān)測(cè)會(huì)話的網(wǎng)絡(luò)地址必須是互聯(lián)網(wǎng)上可路由的,換言之,包含該地址的地址塊必須向AS鄰居宣告進(jìn)而在整個(gè)域間路由系統(tǒng)中傳播,從而具有全網(wǎng)范圍內(nèi)的可達(dá)性。一般地,一個(gè)監(jiān)測(cè)器只使用一個(gè)地址與外部所有的監(jiān)測(cè)器鄰居建立協(xié)同監(jiān)測(cè)會(huì)話,以便于故障診斷時(shí)在多個(gè)監(jiān)測(cè)會(huì)話之間的狀態(tài)關(guān)聯(lián)。圖3是監(jiān)測(cè)器的輸入/輸出策略在CISCO路由器格式下的示意說明。每個(gè)監(jiān)測(cè)器與其內(nèi)部鄰居事實(shí)上處于同一自治系統(tǒng)的管轄范圍之內(nèi),因此它們之間的輸入輸出策略相對(duì)簡(jiǎn)單。監(jiān)測(cè)器需要不加過濾地接收所有內(nèi)部鄰居發(fā)送過來的路由,而不向內(nèi)部鄰居發(fā)送任何路由,監(jiān)測(cè)器的具體配置如圖3第一行第二列;自治系統(tǒng)u中與監(jiān)測(cè)器互聯(lián)的其他路由器,即監(jiān)測(cè)器的內(nèi)部鄰居,需要向監(jiān)測(cè)器不加過濾地輸出所有的路由,而拒絕監(jiān)測(cè)器發(fā)送過來的任何路由,具體的配置如圖3第一行第三列。對(duì)于處于不同AS中的監(jiān)測(cè)器u和V,在U—ν方向上,u僅限于輸出關(guān)于Iv前綴的路由,同時(shí),ν也僅限于輸入關(guān)于Iv中前綴的更新。同理,在ν—u方向上ν也僅限于輸出關(guān)于Iu中的前綴的路由,u僅輸入關(guān)于Iu中前綴的路由更新。在向外部鄰居輸出路由時(shí),需要將路由中的LocalPreference,Community和Med屬性都重置為空或0,u和ν具體配置分別參考圖3第二行的第二列和第三列。圖4是監(jiān)測(cè)器的功能模塊設(shè)計(jì),包括底層的路由器/路由軟件,管理配置模塊、監(jiān)測(cè)器鄰居關(guān)系配置模塊、路由更新監(jiān)測(cè)模塊、會(huì)話狀態(tài)監(jiān)測(cè)模塊、網(wǎng)絡(luò)探測(cè)模塊和報(bào)警模塊。底層的路由器/路由軟件模塊具體可以采用路由器設(shè)備,也可以采用普通服務(wù)器運(yùn)行軟件路由器,如Quagga,Zebra或M)RP來實(shí)現(xiàn),其被用于和監(jiān)測(cè)器鄰居交換各自感興趣的網(wǎng)絡(luò)更新。管理配置模塊實(shí)現(xiàn)兩方面的功能。對(duì)于任意一個(gè)自治系統(tǒng)U,首先,自治系統(tǒng)管理員需要配置監(jiān)測(cè)器進(jìn)行協(xié)同監(jiān)測(cè)前綴劫持所必需的知識(shí),包括本自治系統(tǒng)擁有的前綴集合,與本自治系統(tǒng)存在直接連接的自治系統(tǒng)鄰居,以及宣告給每個(gè)鄰居的前綴集合。再則,13還需要配置當(dāng)本自治系統(tǒng)監(jiān)測(cè)器與和其它自治系統(tǒng)中監(jiān)測(cè)器建立會(huì)話關(guān)系時(shí),需要的輔助信息包括保護(hù)會(huì)話的安全機(jī)制和密鑰,以及路由輸入和輸出策略。路由更新監(jiān)測(cè)模塊負(fù)責(zé)對(duì)來自鄰居監(jiān)測(cè)器的BGP路由更新進(jìn)行檢查,當(dāng)發(fā)現(xiàn)與預(yù)先定義的知識(shí)存在沖突時(shí)向報(bào)警模塊告警。會(huì)話狀態(tài)監(jiān)控模塊負(fù)責(zé)監(jiān)控本監(jiān)測(cè)器與鄰居監(jiān)測(cè)器之間的數(shù)據(jù)通信的狀態(tài),當(dāng)會(huì)話被中斷時(shí)向報(bào)警模塊告警。報(bào)警模塊從路由更新監(jiān)控模塊和會(huì)話狀態(tài)監(jiān)測(cè)模塊接收告警信息,并啟動(dòng)網(wǎng)絡(luò)探測(cè)模塊對(duì)告警信息進(jìn)行確認(rèn),當(dāng)前綴劫持被確認(rèn)后向自治系統(tǒng)管理員告警。網(wǎng)絡(luò)探測(cè)模塊使用當(dāng)前所廣泛用于拓?fù)涮綔y(cè)的技術(shù)Ping,TraceRoute和TCPPing對(duì)收到的初步告警信息從數(shù)據(jù)平面進(jìn)行驗(yàn)證。圖5展示了本方法在服務(wù)器上的具體實(shí)現(xiàn)。本實(shí)現(xiàn)采用開源的路由軟件Quagga(http://www.quagga.net)和內(nèi)部鄰居以及外部鄰居建立協(xié)同監(jiān)測(cè)會(huì)話,通過原始套接字(RawSocket)捕獲報(bào)文。通過對(duì)報(bào)文處理流程的優(yōu)化,融合了路由更新監(jiān)測(cè)方法和會(huì)話狀態(tài)監(jiān)測(cè)方法。對(duì)捕獲的報(bào)文首先根據(jù)‘協(xié)議’進(jìn)行過濾,只保留‘ICMP’和‘TCP’類型,若是ICMP報(bào)文,進(jìn)一步解析‘錯(cuò)誤類型’和‘錯(cuò)誤代碼’,并根據(jù)ICMP報(bào)文的數(shù)據(jù)部分解析導(dǎo)致出錯(cuò)的IP報(bào)文的目的地址,若該目的地址是某外部鄰居,則更新該鄰居對(duì)應(yīng)的ebuf;若該報(bào)文是TCP類型,則進(jìn)一步檢查該報(bào)文是否BGP報(bào)文,若該報(bào)文是BGP報(bào)文,則需進(jìn)一步解析該BGP消息的類型(type),當(dāng)type為2時(shí),將該報(bào)文送至路由更新檢測(cè)模塊檢測(cè)路由劫持,由會(huì)話狀態(tài)監(jiān)測(cè)方法更新后向路徑,若type為1,3,4,則直接送至?xí)挔顟B(tài)監(jiān)測(cè)方法更新ebuf。對(duì)協(xié)同會(huì)話在數(shù)據(jù)平面上的狀態(tài)(通信狀態(tài))采用Quagga自身提供的‘vtysh’進(jìn)行,本實(shí)現(xiàn)采用的命令是‘vtysh-eshowbgpneighbors’,然后對(duì)返回的文本進(jìn)行分析提取每個(gè)監(jiān)測(cè)會(huì)話的狀態(tài)。周期性查詢Quagga以實(shí)現(xiàn)對(duì)會(huì)話狀態(tài)的實(shí)時(shí)監(jiān)控,查詢周期設(shè)為10s,當(dāng)檢測(cè)到協(xié)同監(jiān)測(cè)會(huì)話的狀態(tài)不是‘Established,時(shí),啟動(dòng)故障診斷。圖6展示了協(xié)同監(jiān)測(cè)系統(tǒng)的開銷。評(píng)估中使用的數(shù)據(jù)來自于美國(guó)俄勒岡州立大學(xué)RouteViews項(xiàng)目的采集器(route-views,routeviews.org),選取了從2010年1月1日零時(shí)零分至2010年12月31日11時(shí)59分從39士3個(gè)自治系統(tǒng)采集的BGP路由更新。具體地,假定被評(píng)估的監(jiān)測(cè)器與這39士3個(gè)監(jiān)測(cè)器建立了協(xié)同監(jiān)測(cè)會(huì)話,主要對(duì)兩個(gè)指標(biāo)進(jìn)行評(píng)估,一是在T設(shè)為默認(rèn)的3分鐘時(shí),監(jiān)測(cè)器在T內(nèi)接收到的BGP路由更新數(shù)量;二是在T設(shè)為默認(rèn)的3分鐘時(shí),監(jiān)測(cè)器存儲(chǔ)T時(shí)間內(nèi)接收到的BGP更新所需要的內(nèi)存空間(以KB計(jì)),前者的平均值為698.5個(gè)/3分鐘,峰值3661個(gè)/3分鐘;后者的平均值為104KB,峰值為417KB??紤]到現(xiàn)今核心網(wǎng)絡(luò)中的流量動(dòng)輒以(計(jì),且服務(wù)器、路由器的內(nèi)存已達(dá)2GB以上,這些開銷是可以承受的。圖7展示采用三種不同的策略選取建立協(xié)同監(jiān)測(cè)會(huì)話的合作自治系統(tǒng)時(shí),所能達(dá)到的安全效果。評(píng)估基于真實(shí)的互聯(lián)網(wǎng)拓?fù)?采集于2010年1月1日RouteViews項(xiàng)目發(fā)布的路由表),共有33232個(gè)自治系統(tǒng)和97485條連接不同自治系統(tǒng)的邊。假設(shè)u部署了本協(xié)同監(jiān)測(cè)方法,參與了協(xié)同監(jiān)測(cè)網(wǎng)絡(luò),當(dāng)一個(gè)AS劫持u的前綴時(shí),就很有可能被u發(fā)現(xiàn)。本方法對(duì)于u的安全范圍定義為劫持u的前綴會(huì)被u發(fā)現(xiàn)的AS集合,相應(yīng)地,安全范圍的大小定義為這一類AS的數(shù)量?!半S機(jī)策略”是指u隨機(jī)地選擇協(xié)同鄰居;“優(yōu)選連接”指u總是選擇節(jié)點(diǎn)度數(shù)最大的AS作為自己的協(xié)同鄰居;“絕對(duì)效用”指u總是選擇能給自己帶14來最大的安全范圍的AS作為自己的協(xié)同鄰居。實(shí)驗(yàn)表明,在選擇的協(xié)同鄰居數(shù)小于35時(shí),“絕對(duì)效用”策略具有顯著的優(yōu)勢(shì),但是當(dāng)選取的協(xié)同鄰居數(shù)超過45之后,三種策略在效果上的差別并不明顯。說明本方法的效果對(duì)節(jié)點(diǎn)的選取策略并不敏感,允許自治系統(tǒng)管理員靈活地選取本自治系統(tǒng)的協(xié)同鄰居,增強(qiáng)了部署上的靈活性。權(quán)利要求1.防范邊界網(wǎng)關(guān)協(xié)議路由劫持的協(xié)同監(jiān)測(cè)方法,其特征在于,該方法的技術(shù)方案是參與協(xié)同的AS利用原有的或新設(shè)立的服務(wù)器運(yùn)行BGP協(xié)議,與一個(gè)或多個(gè)內(nèi)部路由器建立用于采集路由更新報(bào)文的BGP會(huì)話,同時(shí)與多個(gè)其他AS中的監(jiān)測(cè)服務(wù)器建立協(xié)同監(jiān)測(cè)會(huì)話,具體由路由更新監(jiān)測(cè)方法和會(huì)話狀態(tài)監(jiān)測(cè)方法二部分組成。2.根據(jù)權(quán)利要求1所述的防范邊界網(wǎng)關(guān)協(xié)議路由劫持的協(xié)同監(jiān)測(cè)方法,其特征在于,路由更新監(jiān)測(cè)方法對(duì)來自監(jiān)測(cè)鄰居的路由更新報(bào)文進(jìn)行檢測(cè),即“控制平面”的檢測(cè),以發(fā)現(xiàn)針對(duì)于本自治系統(tǒng)的BGP前綴劫持和下一跳劫持事件,檢測(cè)方法的具體過程是監(jiān)測(cè)服務(wù)器u在t時(shí)刻接收到監(jiān)測(cè)鄰居Mi發(fā)送的關(guān)于前綴d的路由更新報(bào)文r時(shí),執(zhí)行以下步驟(1)判斷該路由涉及的前綴d是否在集合Iu中,如果是,則說明該路由與本自治系統(tǒng)的相關(guān)性,繼續(xù)(2-6),否則返回;(2)對(duì)路由r進(jìn)行內(nèi)容解析,得到該路由對(duì)應(yīng)AS-Path屬性r.ρ;(3)如果印*0,該路由更新是‘Α’類型,對(duì)該路由進(jìn)一步解析得到r.origin屬性和r.firsthop屬性,并更新監(jiān)測(cè)器Mi對(duì)應(yīng)的信息,Mi[d]=r;(4)如果印=0,該路由更新是‘W’類型,則岣[d]=0,同時(shí),意味著Mi所在的AS到網(wǎng)絡(luò)前綴d變得不可達(dá),生成前綴d對(duì)Mi不可達(dá)告警信息;(5)重新計(jì)算當(dāng)前時(shí)刻從各個(gè)監(jiān)測(cè)鄰居觀察到的到前綴d的宣告者集合和下一跳集合,0Setu(d,t)—UJLiCMi[d].origin)-,FSetu(d,t)—U1I^M^d].firsthop)·,(6)檢測(cè)新接收到的源自治系統(tǒng)和第一跳自治系統(tǒng)與預(yù)定義策略的一致性,若r.origin不屬于Ou(d),則生成前綴劫持告警,若r.firsthop不屬于Lu(d),則生成下一跳劫持告警,若OSetu(d,t)為空或FSetu(d,t)為空,則生成前綴d可達(dá)性喪失告警。3.根據(jù)權(quán)利要求1所述的防范邊界網(wǎng)關(guān)協(xié)議路由劫持的協(xié)同監(jiān)測(cè)方法,其特征在于,會(huì)話狀態(tài)監(jiān)測(cè)方法通過對(duì)多個(gè)監(jiān)測(cè)器之間建立的協(xié)同監(jiān)測(cè)會(huì)話的通信狀態(tài)進(jìn)行監(jiān)測(cè),防范針對(duì)于協(xié)同監(jiān)測(cè)網(wǎng)絡(luò)本身的路由劫持,該方法工作在‘?dāng)?shù)據(jù)平面’上,實(shí)時(shí)監(jiān)測(cè)本監(jiān)測(cè)器與監(jiān)測(cè)鄰居之間的數(shù)據(jù)通路是否正常,并在檢測(cè)到協(xié)同監(jiān)測(cè)會(huì)話失效時(shí)啟動(dòng)故障診斷方法,推斷導(dǎo)致失效的原因;會(huì)話狀態(tài)監(jiān)測(cè)方法由兩個(gè)獨(dú)立的部分組成,一部分負(fù)責(zé)更新和維護(hù)所監(jiān)測(cè)到的各種狀態(tài),稱為會(huì)話狀態(tài)維護(hù)子方法;另一部分在檢測(cè)到會(huì)話狀態(tài)變化時(shí)對(duì)導(dǎo)致變化的原因進(jìn)行分析,并生成日志以輔助網(wǎng)絡(luò)管理員進(jìn)行網(wǎng)絡(luò)調(diào)試,稱為會(huì)話故障診斷子方法;會(huì)話狀態(tài)監(jiān)測(cè)方法僅只讀取而不更改路由協(xié)議的運(yùn)行狀態(tài),在實(shí)現(xiàn)上獨(dú)立于路由協(xié)議,無須對(duì)路由協(xié)議進(jìn)行修改。4.根據(jù)權(quán)利要求1所述的防范邊界網(wǎng)關(guān)協(xié)議路由劫持的協(xié)同監(jiān)測(cè)方法,其特征在于,會(huì)話狀態(tài)維護(hù)子方法在監(jiān)測(cè)器上使用原始套接字進(jìn)行監(jiān)聽,在t時(shí)刻接收到IP報(bào)文ρ時(shí)執(zhí)行以下步驟第一步,獲取IP報(bào)文的“協(xié)議”(Protocol)字段(IP報(bào)文的第10個(gè)字節(jié)),解析得到報(bào)文的源地址字段Psm;第二步,若‘協(xié)議’字段為1,則P是ICMP報(bào)文,否則返回;如果ICMP報(bào)文的類型代碼(type)為3,則該報(bào)文通告的是“目標(biāo)不可達(dá)”異常狀態(tài),讀取錯(cuò)誤代碼(code),提取其數(shù)據(jù)部分中包含的未成功送往目標(biāo)地址的IP數(shù)據(jù)的目的地址,記為b,否則返回;若監(jiān)測(cè)器存在外部鄰居Mi,使得=&則執(zhí)行以下步驟,否則返回;(1)若該ICMP是‘絡(luò)不可達(dá)’,P);(2)若該ICMP是‘機(jī)不可達(dá)’,P);(3)若該ICMP是‘絡(luò)未知’,P);(4)若該ICMP是‘機(jī)未知’,P);(5)若該ICMP是‘網(wǎng)絡(luò)不可達(dá)’主機(jī)不可達(dá)’未知的網(wǎng)絡(luò)’未知的主機(jī)’端口不可達(dá)’(類型代碼3,錯(cuò)誤代碼0),則向ebufi中加入(t,‘網(wǎng)(類型代碼3,錯(cuò)誤代碼1),則向ebuf,中加入(t(類型代碼3,錯(cuò)誤代碼6),則向ebuf,中加入(t(類型代碼3,錯(cuò)誤代碼7),則向ebuf,中加入(t(類型代碼3,錯(cuò)誤代碼3),則向ebuf,中加入(t主網(wǎng)主端口不可達(dá)’,P);(6)若該ICMP是“TTL超時(shí)”(類型代碼11,錯(cuò)誤代碼0),則向ebufi中加入(t,iTTL超時(shí),,P);(7)從前至后掃描ebufi,只保存最近T時(shí)間內(nèi)收到的事件,之后返回;第三步,若‘協(xié)議,字段為‘6,(TCP),且TCP部分的‘目的端口,(Destinationport)字段(TCP部分的第3,4字節(jié))為179,則ρ是一個(gè)BGP報(bào)文,否則返回;第四步,解析BGP報(bào)文的‘類型(Type),字段(BGP部分的第19字節(jié)),記為type;第五步,若type為1或3或4,該報(bào)文是BGPOpen報(bào)文,或Ke印Alive報(bào)文,或Notification報(bào)文,則進(jìn)行以下處理(1)若Psrc是本監(jiān)測(cè)器的內(nèi)部鄰居,即Psrc==ipiu,則返回;(2)若psrc是本監(jiān)測(cè)器的外部鄰居Mi,即Psrc==ipeMi,則在ebufi對(duì)應(yīng)加入(t,‘BGPOpen,,ρ),或(t,‘BGPKe印Alive,,ρ),或(t,‘BGPNotification,,ρ);(3)從前至后掃描ebufi,只保存最近T時(shí)間內(nèi)收到的事件,之后返回;第六步,若type為2,該報(bào)文是BGP路由更新(BGPUpdate)報(bào)文,解析得到撤銷的前綴列表wp,宣告的前綴列表ap,以及AS-Path屬性pathp;第七步,若Psm是本監(jiān)測(cè)器的內(nèi)部鄰居,即Psm=ipiu,則進(jìn)行以下處理(1)若%ΦO,則對(duì)于任意網(wǎng)絡(luò)前綴deWp,向hd中加入其最新的變化(,0),表明從本地自治系統(tǒng)去往網(wǎng)絡(luò)前綴d的路由在t時(shí)刻其路徑屬性變?yōu)?;(2)若Op*0,則對(duì)于任意網(wǎng)絡(luò)前綴de、,向hd中加入其最新的變化(t,pathp),表明從本地自治系統(tǒng)去往網(wǎng)絡(luò)前綴d的路由在t時(shí)刻其路徑屬性變?yōu)镻athp;(3)對(duì)于P中涉及的任何網(wǎng)絡(luò)前綴dewpUap,查看并更新相應(yīng)的hd,具體地,僅保留[t-T,t]時(shí)間內(nèi)接收到的路由更新,以及t-T時(shí)刻以前接收到的最后一個(gè)路由更新;第八步,若Ps,。是本監(jiān)測(cè)器的外部鄰居Mi,即Vc=ipeMi,則進(jìn)行以下處理(1)若%*0,若CueWp,則%=0,表明從監(jiān)測(cè)鄰居Mi到本地自治系統(tǒng)u的路徑,即后向路徑,被撤銷;(2)若本0,若Cuewp,則bPi=pathp,表明從監(jiān)測(cè)鄰居Mi到本地自治系統(tǒng)u的路徑變?yōu)閜athp。5.根據(jù)權(quán)利要求1所述的防范邊界網(wǎng)關(guān)協(xié)議路由劫持的協(xié)同監(jiān)測(cè)方法,其特征在于,會(huì)話故障診斷子方法檢測(cè)到一個(gè)會(huì)話狀態(tài)變化,即Si.State=Si—Si'(Si^Si')時(shí),執(zhí)行以下步驟第一步,判斷s/的狀態(tài),如果是“DOWN”,則繼續(xù)執(zhí)行;否則是“UP”,返回;第二步,初步判斷引起監(jiān)測(cè)會(huì)話Si失效的原因(1)計(jì)算Si失效前的前向路徑,監(jiān)測(cè)會(huì)SSi對(duì)端的(監(jiān)測(cè)鄰居Mi—方)IP地址是Φ(,Si.fp=Stable(hCM.).oldpCMi;(2)計(jì)算Si失效前的后向路徑,Si.bp=bPi;(3)監(jiān)測(cè)會(huì)SSi對(duì)端的(監(jiān)測(cè)鄰居Mi—方)IP地址是ipeMi,若、^中最新的元素的AS-Path屬性為0,則Si的失效由前向路徑故障引起,前向路徑為Si.fp;(4)若ebufi中存在ICMP事件,表明Mi的協(xié)同前綴不可達(dá),Si的失效由前向路徑故障引起,該前向路徑為Si.fp;(5)查看,若宣告前綴;的AS發(fā)生了變化,則Si的失效由于對(duì)端協(xié)同前綴被劫持引起;第三步,若第二步中的條件均未滿足,則引發(fā)Si失效的原因包括本地協(xié)同前綴Cu被劫持,或后向路徑失效。首先初始化F—禮C—φ,Ε—0,然后對(duì)于u可見的每個(gè)網(wǎng)絡(luò)前綴d,按以下步驟進(jìn)一步診斷監(jiān)測(cè)會(huì)話Si失效的原因(1)根據(jù)hd計(jì)算newpd禾口oldpd,(oldpd,newpd)=stable(hd);(2)若IiewpdΦoldpd,向事件候選集中加入事件e=Oldpd—newpd,記為E—EU{(oldpd,newpd)};(3)對(duì)于事件e中涉及的兩條AS-Path,Iiewpd和oldpd,首先去除每條AS-Path中連續(xù)重復(fù)的出現(xiàn)(ASPr印ending),得到形如VkVlri......V1V0的AS-Path(對(duì)于任意的O彡m<η<k,vm興vn);(4)向故障候選集中加入節(jié)點(diǎn),C—CUUUOm,)},更新節(jié)點(diǎn)對(duì)應(yīng)的計(jì)數(shù)器(vm,vm).counter一(vm,vm).counter+1;(5)向故障候選集中加入邊,C—CUL4_=U0m+1Wm)},更新邊對(duì)應(yīng)的計(jì)數(shù)器(vm+1,vm).counter一(vm+1,vm).counter+1;第四步,將故障候選集C中的元素按照其關(guān)聯(lián)的計(jì)數(shù)器的值以降序排列,然后進(jìn)行以下步驟(1)若EΦ0,則從C中選取計(jì)數(shù)器值最高的元素(X,y);(2)對(duì)于E中任何一個(gè)事件e=Oldpd—newpd,若其oldpd或者Iiewpd屬性包含節(jié)點(diǎn)或邊(x,y),則將之移除;(3)將(x,y)從C中移除,若(x,y)成功地從E中移除過一個(gè)或多個(gè)事件,將該鏈路加入到故障集F中,F(xiàn)—FU{(x,y)};(4)若E=0,返回;否則轉(zhuǎn)(1);第五步,計(jì)算F中的節(jié)點(diǎn)/邊與前向路徑Si.fp的交集Ffp,以及與后向路徑Si.bp的交集^bp;第六步,若^0,則是前向路徑故障,若Fiip*0且ebufi中最近2T/3時(shí)間內(nèi)無任何BGP相關(guān)報(bào)文(僅限于Ke印Alive和Notification),則屬后向路徑故障,并返回非空的故障集Ffp或Fbp;若以上條件均不滿足,判定本地協(xié)同前綴被劫持。全文摘要本發(fā)明涉及一種防范邊界網(wǎng)關(guān)協(xié)議(BGP)路由劫持(包括前綴劫持和下一跳劫持)的協(xié)同監(jiān)測(cè)方法。技術(shù)方案是參與協(xié)同的AS利用原有的或新設(shè)立的服務(wù)器運(yùn)行BGP協(xié)議,與一個(gè)或多個(gè)內(nèi)部路由器建立用于采集路由更新報(bào)文的BGP會(huì)話,同時(shí)與多個(gè)其他AS中的監(jiān)測(cè)服務(wù)器建立協(xié)同監(jiān)測(cè)會(huì)話,具體由路由更新監(jiān)測(cè)方法和會(huì)話狀態(tài)監(jiān)測(cè)方法二部分組成。在控制平面,分析監(jiān)測(cè)會(huì)話獲取的路由更新報(bào)文,檢測(cè)BGP前綴劫持和下一跳劫持;在數(shù)據(jù)平面,對(duì)協(xié)同監(jiān)測(cè)會(huì)話的狀態(tài)進(jìn)行維護(hù)和檢測(cè),實(shí)時(shí)發(fā)現(xiàn)針對(duì)于協(xié)同網(wǎng)絡(luò)本身的路由劫持事件。本發(fā)明充分利用了AS內(nèi)部現(xiàn)有的網(wǎng)絡(luò)管理、測(cè)量設(shè)施,以及公共路由數(shù)據(jù)發(fā)布項(xiàng)目所設(shè)立的數(shù)據(jù)采集設(shè)施,通過協(xié)同和整合現(xiàn)有的網(wǎng)絡(luò)資源,構(gòu)建監(jiān)測(cè)BGP前綴劫持和下一跳劫持的協(xié)同網(wǎng)絡(luò)。文檔編號(hào)H04L29/06GK102394794SQ20111034382公開日2012年3月28日申請(qǐng)日期2011年11月4日優(yōu)先權(quán)日2011年11月4日發(fā)明者徐明,曹華陽,朱培棟,王小強(qiáng),胡罡,鄭倩冰,陳侃,陳穎文申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)