本發(fā)明涉及網(wǎng)絡(luò)空間安全防護(hù)技術(shù)領(lǐng)域,尤其涉及一種多BGP路由實(shí)例并行執(zhí)行的裝置。
背景技術(shù):
BGP 是一種路徑矢量路由協(xié)議,用于傳輸自治系統(tǒng)間的路由信息。BGP 在確定路徑時(shí)考慮的不是速度,而是讓自治域能夠根據(jù)多種BGP屬性來(lái)控制數(shù)據(jù)流的傳輸。BGP 是面向連接的, 一個(gè)BGP對(duì)等體之間是通過(guò)TCP來(lái)建立會(huì)話的。BGP 在啟動(dòng)的時(shí)候傳播整張路由表,以后只傳播網(wǎng)絡(luò)變化的部分,觸發(fā)更新采用 TCP 連接傳送信息,端口號(hào)為 179。在 Internet 上,BGP 需要通告的路由數(shù)目極大,由于 TCP 提供了可靠的傳送機(jī)制,同時(shí) TCP 使用滑動(dòng)窗口機(jī)制,使得 BGP 可以不斷地發(fā)送分組,而無(wú)需像 OSPF 或 EIGRP 那樣停止發(fā)送并等待確認(rèn)。
BGP 具有 4 種消息類型:Open、Keepalive、Update、Notification。其中Open報(bào)文用于TCP 對(duì)話建立以后,鄰居路由器相互標(biāo)示自己,并通告自己的 BGP 運(yùn)行參數(shù)。Keepalive報(bào)文主要用于鄰居間的?;睢pdate消息用來(lái)公布可用的路由或撤銷的路由。Notification報(bào)文主要用于通告差錯(cuò),通常會(huì)導(dǎo)致BGP連接終止。
實(shí)現(xiàn)多個(gè)路由實(shí)例的并行執(zhí)行和單一呈現(xiàn)對(duì)于構(gòu)建異構(gòu)冗余的網(wǎng)絡(luò)主動(dòng)防御體系具有重要意義。所謂并行執(zhí)行就是多個(gè)運(yùn)行BGP協(xié)議的路由實(shí)例能夠在裝置中同時(shí)獨(dú)立地運(yùn)行,都能夠接受鄰居的路由更新報(bào)文,并各自維護(hù)各自的路由表。單一呈現(xiàn)就是多個(gè)并行執(zhí)行的路由實(shí)例對(duì)外呈現(xiàn)為一個(gè)單一的路由節(jié)點(diǎn),對(duì)于它們的鄰居路由器來(lái)說(shuō),只能看到一個(gè)路由實(shí)例,而無(wú)法看到所有的路由實(shí)例及其它們之間的連接關(guān)系。通過(guò)并行執(zhí)行和單一呈現(xiàn),可以實(shí)現(xiàn)單個(gè)路由節(jié)點(diǎn)的特征動(dòng)態(tài)變化,從而提高自身的抗攻擊能力。
技術(shù)實(shí)現(xiàn)要素:
鑒于此,本發(fā)明提供了一種在單一路由節(jié)點(diǎn)內(nèi)同時(shí)運(yùn)行多個(gè)BGP路由實(shí)例的方案,其中每個(gè)路由實(shí)例都能從鄰居路由器學(xué)習(xí)路由表,但鄰居路由器只能發(fā)現(xiàn)一個(gè)路由實(shí)例并與其建立連接,從而隱藏了本發(fā)明的多路由實(shí)例的特性。
為了達(dá)到上述目的,本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
一種多BGP路由實(shí)例并行執(zhí)行的裝置,其特征在于,所述裝置包括多個(gè)可運(yùn)行BGP協(xié)議的路由實(shí)例、輸入輸出代理、管理調(diào)度器、異常判決器,其中:
所述路由實(shí)例可以是一個(gè)通用路由器,也可是一個(gè)能運(yùn)行路由協(xié)議的虛擬機(jī),所有路由實(shí)例必須支持運(yùn)行BGP協(xié)議;
所述輸入輸出代理,部署在本裝置的每一個(gè)對(duì)外接口上,每個(gè)代理都與所有的路由實(shí)例相連,其功能是對(duì)所有路由實(shí)例的輸出和輸入報(bào)文按照一定的策略進(jìn)行過(guò)濾或者分發(fā);
所述管理調(diào)度器是根據(jù)一定的調(diào)度策略,設(shè)定各個(gè)路由實(shí)例的角色,并生成報(bào)文過(guò)濾和分發(fā)策略,將其下發(fā)給各個(gè)輸入輸出代理;
異常判決器可讀取各個(gè)路由實(shí)例的路由表,并利用特定的比較算法對(duì)路由實(shí)例的路由表進(jìn)行比對(duì),從而判決某個(gè)特定的路由實(shí)例的路由表是否存在異常。
在本裝置中,多個(gè)路由實(shí)例的并行執(zhí)行和單一呈現(xiàn)特性是通過(guò)輸入輸出代理的報(bào)文過(guò)濾和分發(fā)機(jī)制實(shí)現(xiàn)的。路由實(shí)例的并行執(zhí)行特性要求每個(gè)路由實(shí)例都必須從鄰居路由器學(xué)習(xí)路由;而單一呈現(xiàn)機(jī)制要求本裝置對(duì)外呈現(xiàn)為一個(gè)單一的路由節(jié)點(diǎn),因此只能與一個(gè)鄰居建立一個(gè)連接,而不是多個(gè)連接。因此在本裝置中,所有路由實(shí)例都不與鄰居路由器直接建立連接,而是由輸入輸出代理與鄰居路由器建立連接,各個(gè)路由實(shí)例分別與輸入輸出代理建立連接,對(duì)于路由實(shí)例和鄰居路由器而言,輸入輸出代理是透明的。
路由實(shí)例的角色分為兩種,一種是呈現(xiàn)實(shí)例,一種是對(duì)照實(shí)例。
呈現(xiàn)實(shí)例主要負(fù)責(zé)和鄰居路由器進(jìn)行路由信息交互,并負(fù)責(zé)轉(zhuǎn)發(fā)策略的生成。在本裝置內(nèi)只能同時(shí)存在一個(gè)呈現(xiàn)實(shí)例。呈現(xiàn)實(shí)例對(duì)外發(fā)布的BGP路由信息將會(huì)被輸入輸出代理轉(zhuǎn)發(fā)給鄰居路由器。如果本裝置中設(shè)置了單獨(dú)的數(shù)據(jù)轉(zhuǎn)發(fā)器,那呈現(xiàn)實(shí)例中的路由表將會(huì)以轉(zhuǎn)發(fā)策略的形式下發(fā)給數(shù)據(jù)轉(zhuǎn)發(fā)器;如果本裝置中沒有設(shè)置單獨(dú)的數(shù)據(jù)轉(zhuǎn)發(fā)器,那呈現(xiàn)實(shí)例的數(shù)據(jù)轉(zhuǎn)發(fā)器將負(fù)責(zé)對(duì)流經(jīng)裝置的數(shù)據(jù)進(jìn)行路由轉(zhuǎn)發(fā)。
對(duì)照實(shí)例用于對(duì)呈現(xiàn)實(shí)例的路由表進(jìn)行異常判決,在本裝置內(nèi)可以同時(shí)存在多個(gè)對(duì)照實(shí)例。對(duì)照實(shí)例向外發(fā)出的任何報(bào)文都會(huì)被輸入輸出代理攔截,輸入輸出代理會(huì)把發(fā)送給呈現(xiàn)實(shí)例的BGP路由更新報(bào)文進(jìn)行復(fù)制并轉(zhuǎn)發(fā)給對(duì)照實(shí)例,使對(duì)照實(shí)例也能從鄰居路由器學(xué)習(xí)路由信息。異常判決器將會(huì)讀取各個(gè)對(duì)照實(shí)例的路由表,用于檢查呈現(xiàn)實(shí)例的路由表是否存在異常。對(duì)照實(shí)例的路由表不會(huì)下發(fā)給數(shù)據(jù)轉(zhuǎn)發(fā)器。
在本裝置中,輸入輸出代理的轉(zhuǎn)發(fā)策略為:
呈現(xiàn)實(shí)例向鄰居路由器發(fā)送Open報(bào)文用于建立連接時(shí),該報(bào)文將會(huì)被輸入輸出代理轉(zhuǎn)發(fā)給鄰居路由器,而對(duì)照實(shí)例發(fā)送的Open報(bào)文將全部被丟棄。鄰居路由器回送的Open報(bào)文將被輸入輸出代理轉(zhuǎn)發(fā)給所有的向外發(fā)送過(guò)Open報(bào)文的路由執(zhí)行體。
對(duì)于Keepalive、Update和Notification這3種類型的BGP報(bào)文,輸入輸出代理將會(huì)轉(zhuǎn)發(fā)所有呈現(xiàn)實(shí)例發(fā)出報(bào)文,而所有對(duì)照實(shí)例發(fā)送的報(bào)文將全部被丟棄。鄰居路由器發(fā)送的這3類報(bào)文將被輸入輸出代理復(fù)制并轉(zhuǎn)發(fā)給所有路由實(shí)例。
如果某個(gè)路由實(shí)例進(jìn)行了重啟或剛剛添加到本裝置中,為了使該路由實(shí)例能夠及時(shí)學(xué)習(xí)到路由,輸入輸出代理在檢測(cè)到該路由實(shí)例進(jìn)入established狀態(tài)后,模擬路由實(shí)例的慢重啟操作,向鄰居路由器請(qǐng)求flush重發(fā)所有BGP路由信息,鄰居路由器在收到flush請(qǐng)求后,將所有BGP路由打包為BGP UPDATA報(bào)文發(fā)送,該報(bào)文將會(huì)被輸入輸出代理轉(zhuǎn)發(fā)給新啟動(dòng)的路由實(shí)例。
如果裝置的轉(zhuǎn)發(fā)功能由呈現(xiàn)實(shí)例的轉(zhuǎn)發(fā)器承擔(dān),那流經(jīng)本裝置的數(shù)據(jù)都將由發(fā)送給呈現(xiàn)實(shí)例,由呈現(xiàn)實(shí)例進(jìn)行數(shù)據(jù)的路由轉(zhuǎn)發(fā),這些數(shù)據(jù)不會(huì)發(fā)送給對(duì)照實(shí)例。如果本裝置加入的獨(dú)立的轉(zhuǎn)發(fā)器,那這些數(shù)據(jù)將發(fā)送給該轉(zhuǎn)發(fā)器。
管理調(diào)度器將按照隨機(jī)的周期對(duì)各個(gè)路由實(shí)例的角色進(jìn)行切換。角色切換時(shí),某個(gè)對(duì)照實(shí)例將被選為呈現(xiàn)實(shí)例,原有的呈現(xiàn)實(shí)例將被設(shè)為對(duì)照實(shí)例。一旦通過(guò)異常判決器發(fā)現(xiàn)呈現(xiàn)實(shí)例的路由表存在異常,則立即觸發(fā)角色切換。每次切換時(shí)都要由管理調(diào)度器生成新的報(bào)文過(guò)濾和分發(fā)策略,并下發(fā)給輸入輸出代理。
本發(fā)明的有益效果是:
本發(fā)明提供了一種在單一路由節(jié)點(diǎn)內(nèi)同時(shí)運(yùn)行多個(gè)BGP路由實(shí)例的方案,其中每個(gè)路由實(shí)例都能從鄰居路由器學(xué)習(xí)路由表,但鄰居路由器只能發(fā)現(xiàn)一個(gè)路由實(shí)例并與其建立連接,從而隱藏了本裝置的多路由實(shí)例的特性。通過(guò)本裝置的角色調(diào)度和異常判決功能,將異構(gòu)冗余特性和對(duì)外呈現(xiàn)的不確定性引入到路由節(jié)點(diǎn)中,極大地降低針對(duì)路由節(jié)點(diǎn)未知漏洞、缺陷、陷門或后門偵察或攻擊的有效性,提高了路由節(jié)點(diǎn)的主動(dòng)防御能力。
附圖說(shuō)明:
圖1為本發(fā)明實(shí)施例提供的一種多BGP路由實(shí)例并行執(zhí)行的裝置;
圖2為本發(fā)明實(shí)施例提供的一種具有獨(dú)立轉(zhuǎn)發(fā)器的多BGP路由實(shí)例并行執(zhí)行的裝置;
圖3為本發(fā)明實(shí)施例提供的一種多BGP路由實(shí)例并行執(zhí)行的裝置的IP設(shè)置示意圖;
具體實(shí)施方式:
依照以下的附圖詳細(xì)說(shuō)明關(guān)于本發(fā)明的示例性實(shí)施例。
本發(fā)明實(shí)施例提供一種多BGP路由實(shí)例并行執(zhí)行的裝置,解決了如何在單一路由節(jié)點(diǎn)內(nèi)并行運(yùn)行多個(gè)BGP路由實(shí)例并實(shí)現(xiàn)單一呈現(xiàn)特性的問題。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
實(shí)施例一:如圖1所示,本實(shí)施例提供了一種多BGP路由實(shí)例并行執(zhí)行的裝置。該裝置可包含多個(gè)路由實(shí)例和端口,在本實(shí)例中共包括了3個(gè)路由實(shí)例和3個(gè)端口,每個(gè)端口上設(shè)置1個(gè)輸入輸出代理,此外還包括1個(gè)管理調(diào)度器和1個(gè)異常判決器,沒有設(shè)置獨(dú)立的數(shù)據(jù)轉(zhuǎn)發(fā)器。
裝置的端口與BGP路由實(shí)例的端口數(shù)量一致且一一對(duì)應(yīng),輸入輸出代理將收到的BGP報(bào)文與其他報(bào)文分開處理,BGP報(bào)文分發(fā)給各個(gè)路由實(shí)例,其他數(shù)據(jù)交由呈現(xiàn)實(shí)例進(jìn)行路由轉(zhuǎn)發(fā)。對(duì)于輸出數(shù)據(jù),如果是對(duì)照實(shí)例發(fā)送的BGP報(bào)文,則輸入輸出代理將其丟棄,如果是呈現(xiàn)實(shí)例發(fā)送的BGP報(bào)文,則輸入輸出代理將BGP負(fù)載進(jìn)行復(fù)制,然后用其與鄰居路由器之間建立的TCP套接字發(fā)送出去。對(duì)于呈現(xiàn)實(shí)例輸出的非BGP報(bào)文,則直接轉(zhuǎn)發(fā)給鄰居路由器。
本發(fā)明IP設(shè)置方法如圖3所示,本發(fā)明所述裝置中的輸入輸出代理與各個(gè)BGP路由實(shí)例之間需要對(duì)各端口的IP進(jìn)行特別設(shè)置。輸入輸出代理作為鄰居路由器和BGP路由實(shí)例之間的TCP代理,配置有兩種地址:IP-router和IP-broker。IP-router是輸入輸出代理面向鄰居路由器的地址,也是整個(gè)裝置對(duì)外呈現(xiàn)給鄰居路由器的IP地址,輸入輸出代理基于該地址維護(hù)與鄰居路由器的BGP鏈接。IP-broker是輸入輸出代理面向各個(gè)BGP路由實(shí)例的地址,輸入輸出代理基于該地址與各個(gè)路由實(shí)例建立BGP鏈接,IP-broker是本裝置的內(nèi)部地址,不對(duì)外呈現(xiàn)。
對(duì)鄰居路由器發(fā)送給路由實(shí)例的BGP報(bào)文,輸入輸出代理需要替換該報(bào)文中的IP地址,將源IP由IP-neighbor替換為IP-broker,目的IP由IP-router替換為各個(gè)路由實(shí)例的IP,也就是IP-instance;重新配置IP頭部與原有BGP負(fù)載組成新報(bào)文,并發(fā)往各個(gè)BGP路由實(shí)例;對(duì)呈現(xiàn)實(shí)例發(fā)給鄰居路由器的BGP報(bào)文,輸入輸出代理將該報(bào)文的源IP改為IP-router,目的IP不變。
實(shí)施例二,如圖2所示,本實(shí)施例與實(shí)施例一基本相同,不同之處在于,所述多BGP路由實(shí)例并行執(zhí)行的裝置中還包括轉(zhuǎn)發(fā)器,轉(zhuǎn)發(fā)器分別與每個(gè)輸入輸出代理和每個(gè)路由實(shí)例相連。根據(jù)“轉(zhuǎn)發(fā)與控制分離”的思想,提供了一種具有獨(dú)立轉(zhuǎn)發(fā)器的多BGP路由實(shí)例并行執(zhí)行裝置。獨(dú)立的轉(zhuǎn)發(fā)器只負(fù)責(zé)非路由報(bào)文的轉(zhuǎn)發(fā),不負(fù)責(zé)生成路由表項(xiàng)。呈現(xiàn)實(shí)例的路由表將會(huì)被轉(zhuǎn)化為轉(zhuǎn)發(fā)策略,并下發(fā)給轉(zhuǎn)發(fā)器。輸入輸出代理會(huì)對(duì)輸入的報(bào)文進(jìn)行分類,BGP報(bào)文將被分發(fā)給各個(gè)路由實(shí)例,而其他報(bào)文將會(huì)發(fā)送給轉(zhuǎn)發(fā)器,由轉(zhuǎn)發(fā)器進(jìn)行路由轉(zhuǎn)發(fā)。
以上所述僅為本發(fā)明示意性的具體實(shí)施方式,并非用以限定本發(fā)明的范圍,任何本領(lǐng)域的技術(shù)人員在不脫離本發(fā)明構(gòu)思和原則的前提下所做出的等同變化與修改,均應(yīng)屬于本發(fā)明保護(hù)的范圍。