本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及BGP路由通信技術(shù)領(lǐng)域,具體是指一種BGP路由通告限速方法和BGP路由通信方法。
背景技術(shù):
網(wǎng)絡(luò)扁平化是當(dāng)今互聯(lián)網(wǎng)數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)的趨勢,Leaf-Spine和Hub-And-Spoke型拓?fù)涫瞧渲械囊环N典型組網(wǎng)形態(tài)。在這兩種拓?fù)渲校琒pine/Hub路由器需要與大量的路由器建立鄰居關(guān)系。這兩種組網(wǎng)方式給網(wǎng)絡(luò)路由器帶來了新的挑戰(zhàn)。
而且,在目前主流的互聯(lián)網(wǎng)數(shù)據(jù)中心中,三層組網(wǎng)方式已經(jīng)漸漸替代二層組網(wǎng)方式,根本原因如下:傳統(tǒng)的二層網(wǎng)絡(luò)主要依靠STP(生成樹協(xié)議)來解決網(wǎng)絡(luò)中的環(huán)路問題,該協(xié)議主要靠強(qiáng)制關(guān)閉某些鏈路,從而將網(wǎng)狀拓?fù)浜喕癁闃錉钔負(fù)鋪斫鉀Q問題。該協(xié)議所帶來的問題就是冗余鏈路無法充分利用。其他某些協(xié)議,如mLAG(多機(jī)鏈路聚合),IRF(智能彈性架構(gòu))也未能完全解決二層網(wǎng)絡(luò)中的環(huán)路問題;而具有一定創(chuàng)新性的TRILL協(xié)議,由于與現(xiàn)有設(shè)備不兼容,導(dǎo)致多年來一直無法商用。而三層組網(wǎng)中,依靠路由協(xié)議動態(tài)計(jì)算,能夠?qū)δ康木W(wǎng)段形成ECMP(等效多路徑負(fù)載均衡),從而充分利用網(wǎng)絡(luò)中的冗余鏈路。所以,三層組網(wǎng)方式在各大互聯(lián)網(wǎng)數(shù)據(jù)中心中已經(jīng)成為一種趨勢。
當(dāng)客戶采用三層組網(wǎng)方式之后,原先主要應(yīng)用于自治系統(tǒng)間互通的BGP協(xié)議由于其出色的流量控制策略和收斂性能,正漸漸替換OSPF,成為數(shù)據(jù)中心內(nèi)部路由協(xié)議的主流選擇。
BGP(邊界網(wǎng)關(guān)協(xié)議)協(xié)議使用TCP協(xié)議來傳輸網(wǎng)絡(luò)可達(dá)性信息和心跳報(bào)文。在Leaf-Spine或Hub-And-Spoke拓?fù)渲?,Spine/Hub路由器需要與大量的路由器建立鄰居關(guān)系,比如在某些大型數(shù)據(jù)中心中,需要與48-96個Leaf路由器建立鄰居。當(dāng)BGP協(xié)議與這些路由器同時建立鄰居關(guān)系時,這些鄰居會發(fā)送大量路由過來,導(dǎo)致Spine路由器CPU利用率過高,無法及時處理這些路由,從而導(dǎo)致鄰居斷鏈。而鄰居斷鏈又會導(dǎo)致重新建立鄰居,重新發(fā)送路由,整個網(wǎng)絡(luò)陷入一種不穩(wěn)定狀態(tài),并且無法自動恢復(fù)。
舉例來說,BGP路由器X與100個其他路由器建立鄰居關(guān)系,心跳超時時間為3秒。在鄰居建鏈階段,每個鄰居需要發(fā)送大量的路由給路由器X。BGP路由通告報(bào)文最長為4096個字節(jié),按網(wǎng)絡(luò)前綴16位計(jì)算,每個BGP路由通告報(bào)文大約包含1333條路由。如果路由器X依次處理這些鄰居發(fā)送過來的路由通告報(bào)文,它必須在3秒鐘內(nèi)處理100個路由通告報(bào)文,也就是133300條路由。否則,就會由于某些鄰居的路由通告報(bào)文無法及時處理,導(dǎo)致鄰居斷鏈。這對于大多數(shù)路由器來說,是一種相當(dāng)困難的挑戰(zhàn)。而現(xiàn)今的大多數(shù)路由器的實(shí)現(xiàn)做不到按順序依次處理每個鄰居的路由通告報(bào)文,從而會導(dǎo)致該問題更加突出。
該問題是隨著近年來互聯(lián)網(wǎng)數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)的演進(jìn)和規(guī)模的擴(kuò)大才漸漸浮現(xiàn)出來的,所以目前尚沒有有效的解決方案。
BGP使用TCP作為傳輸層協(xié)議,TCP自帶流量控制機(jī)制,能夠控制從鄰居收到的BGP消息數(shù)目,但是無法從根本上解決上述問題。因?yàn)門CP滑動窗口的典型值是16K字節(jié),遠(yuǎn)大于一個BGP路由通告報(bào)文的大小。當(dāng)減小滑動窗口的大小,可以減少某段時間中發(fā)送BGP路由通告報(bào)文的數(shù)目,但是最小需要允許發(fā)送一個報(bào)文,無法從根本上解決該問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種BGP路由通告限速方法和BGP路由通信方法,解決了BGP路由器與大量鄰居建鏈時,因?yàn)榻邮章酚蛇^多、無法及時處理導(dǎo)致的鄰居斷鏈問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明具有如下構(gòu)成:
該BGP路由通告限速方法,其特征在于,所述的限速方法為:各個BGP路由器向鄰居路由器發(fā)送路由通告限速信息。
較佳地,所述的路由通告限速信息包括路由通告瞬時速率和路由通告平均速率。
本發(fā)明還涉及一種BGP路由通信方法,其主要特點(diǎn)是,所述的方法包括以下步驟:
(1)各個BGP路由器向鄰居路由器交互路由通告限速信息;
(2)各個BGP路由器和鄰居路由器之間依據(jù)所述的路由通告限速信息進(jìn)行路由通告報(bào)文通信。
較佳地,所述的路由通告限速信息包括路由通告瞬時速率和路由通告平均速率。
較佳地,所述的步驟(1)之前,還包括以下步驟:
(0)各個BGP路由器和鄰居路由器建立TCP連接。
更佳地,所述的步驟(0)包括以下步驟:
(0-1)各個BGP路由器向鄰居路由器發(fā)起TCP連接;
(0-2)各個BGP路由器向鄰居路由器發(fā)送BGP開始報(bào)文并接收鄰居路由器發(fā)送的BGP開始報(bào)文。
較佳地,所述的步驟(1),包括以下步驟:
(1-1)各個BGP路由器向鄰居路由器發(fā)送BGP心跳報(bào)文并接收鄰居路由器發(fā)送的BGP心跳報(bào)文;
(1-2)各個BGP路由器向鄰居路由器發(fā)送BGP路由通告限速報(bào)文并接收鄰居路由器發(fā)送的BGP路由通告限速報(bào)文,所述的BGP路由通告限速報(bào)文中包含有發(fā)送方的路由通告限速信息。
較佳地,所述的通信方法還包括:
各個BGP路由器調(diào)整路由通告限速信息,并將調(diào)整后的路由通告限速信息發(fā)送至鄰居路由器。
更佳地,所述的各個BGP路由器調(diào)整路由通告限速信息,具體為:
各個BGP路由器根據(jù)建立連接的鄰居路由器的數(shù)量調(diào)整路由通告限速信息。
采用了該發(fā)明中的BGP路由通告限速方法和BGP路由通信方法,具有如下有益效果:
(1)通過上述發(fā)明,BGP路由器可以自動向各鄰居發(fā)送路由通告限速信息,通告本路由器能夠承受的路由發(fā)送速度;當(dāng)各鄰居都以一個合理的速率向該路由器發(fā)送路由之后,BGP路由器將能夠從容地處理這些路由,不會引起CPU負(fù)載過高,也不會導(dǎo)致BGP鄰居斷鏈;
(2)當(dāng)BGP路由器由于環(huán)境或配置改變,可以自動重新向鄰居路由器發(fā)送路由通告;根據(jù)該BGP路由器目前需要建立的鄰居數(shù)目,動態(tài)調(diào)整BGP路由通告瞬時速度和BGP路由通告平均速度,并發(fā)送給對端BGP鄰居。
附圖說明
圖1為現(xiàn)有技術(shù)中的BGP路由通信方法的流程圖。
圖2為本發(fā)明的BGP路由通信方法的流程圖。
具體實(shí)施方式
為了能夠更清楚地描述本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例來進(jìn)行進(jìn)一步的描述。
為了控制BGP鄰居通告路由的速度,本文引入一種新型的BGP路由器之間的交互機(jī)制,其作用是讓一個BGP路由器向其BGP鄰居通告“該路由器能夠接收的路由通告的速度”。該機(jī)制用來交互兩個信息,第一個信息是BGP路由通告瞬時速率,第二個是BGP路由通告平均速率。當(dāng)一個支持該機(jī)制的BGP路由器在跟其他BGP路由器建立鄰居的時候,應(yīng)當(dāng)通過報(bào)文將這兩種信息通告給對端BGP路由器。然后這些鄰居給該BGP路由器發(fā)送路由的時候,必須遵循該路由器所規(guī)定的路由發(fā)送速率。
當(dāng)支持該機(jī)制的BGP路由器因?yàn)槟撤N原因修改了路由通告瞬時速率或平均速率的時候,如新建了大量的鄰居時,可以動態(tài)向其他鄰居重新進(jìn)行交互,通告BGP這兩項(xiàng)速率值。
當(dāng)BGP鄰居建立之后,如果沒有這個功能,BGP鄰居將會持續(xù)發(fā)送BGP路由通告報(bào)文,直到所有的路由被發(fā)送出去。當(dāng)大量的鄰居同時往某一個路由器不間斷通告路由的時候,該路由器的CPU利用率會達(dá)到100%,從而導(dǎo)致某些鄰居的BGP報(bào)文無法及時處理,導(dǎo)致鄰居斷鏈。參見圖1。
為了控制BGP鄰居通告路由的速度,本文引入一種新型的BGP路由器之間的交互機(jī)制,其作用是讓一個BGP路由器向其BGP鄰居通告“該路由器能夠接收的路由通告的速度”。該機(jī)制用來交互兩個信息,第一個信息是BGP路由通告瞬時速度,該信息規(guī)定一個BGP路由器向另一個路由器通告路由的瞬時最快速度,如1000路由每秒;第二個是BGP路由通告平均速度,該信息規(guī)定了一個BGP路由器向另一個路由器通告路由的平均速度,如在1分鐘的時間間隔內(nèi),平均不超過500路由每秒。當(dāng)一個支持該機(jī)制的BGP路由器在跟其他BGP路由器建立鄰居的時候,應(yīng)當(dāng)通過報(bào)文將這兩種信息通告給對端BGP路由器。然后這些鄰居給該BGP路由器發(fā)送路由的時候,必須遵循該路由器所規(guī)定的路由發(fā)送速度。BGP路由通告瞬時速度和平均速度值的確定不在本發(fā)明討論之內(nèi),可以手工配置,也可以由某種算法自動計(jì)算(比如根據(jù)目前建立的鄰居數(shù)目計(jì)算)。
當(dāng)支持該機(jī)制的BGP路由器因?yàn)槟撤N原因修改了路由通告瞬時速率或平均速率的時候,如新建了大量的鄰居時,需要動態(tài)向其他鄰居重新進(jìn)行交互,通告BGP這兩項(xiàng)速率值。
本發(fā)明意在引入該新型通信機(jī)制在BGP路由器之間傳遞以上信息,但不對具體的通信方式做限制。例如可以新增一種BGP路由通告限速報(bào)文,報(bào)文類型編號為8,內(nèi)部攜帶兩個字段,每個字段長度為4字節(jié),分別表示路由發(fā)送的瞬時速率和平均速率,單位為路由數(shù),數(shù)值為0表示不限速。比如在建鏈時,路由器X向其鄰居通告了BGP路由通告速率限制報(bào)文,其中兩個字段分別為1000和500,則表明鄰居發(fā)往路由器X的路由發(fā)送瞬時速率不要超過1000路由每秒,平均速率(建議按1分鐘時間間隔取平均)不要超過500路由每秒。當(dāng)鄰居收到該路由通告限速報(bào)文之后,需要按照報(bào)文中的路由通告瞬時速率限制和平均速率限制來發(fā)送報(bào)文。根據(jù)需要,路由器X可以重新通告路由通告限速報(bào)文。比如路由器X由于調(diào)整配置,建鏈的鄰居數(shù)目大幅減少,則可以重新通告路由通告限速報(bào)文,調(diào)整路由通告瞬時速率限制和平均速率限制至3000和2000。或者直接將這兩個字段置為0,取消限速。當(dāng)各鄰居都以一個合理的速率通告路由之后,BGP路由器X將能夠從容地處理這些路由,不會引起CPU負(fù)載過高,也不會導(dǎo)致鄰居斷鏈。
或者舉例來說,BGP路由器可以使用BGP能力通告方式通告上述路由通告速率。[RFC3392:Capabilities Advertisement with BGP-4]規(guī)定了BGP能力選項(xiàng)參數(shù)。能力編碼從128到255屬于私有字段,詳見RFC2434。舉例來說,我們可以選取能力編碼100來表示BGP路由通告瞬時速率,選取能力編碼101來表示路由通告平均速率。在BGP鄰居建鏈時,該能力會放在BGP的開始報(bào)文中發(fā)送給對端。如果對端支持該能力,則在回應(yīng)的BGP開始報(bào)文中也會攜帶該字段;如果對端不支持該能力,則直接忽略該能力,正常建立鄰居關(guān)系。
采用了該發(fā)明中的BGP路由通告限速方法和BGP路由通信方法,具有如下有益效果:
(1)通過上述發(fā)明,BGP路由器可以自動向各鄰居發(fā)送路由通告限速信息,通告本路由器能夠承受的路由發(fā)送速度;當(dāng)各鄰居都以一個合理的速率向該路由器發(fā)送路由之后,BGP路由器將能夠從容地處理這些路由,不會引起CPU負(fù)載過高,也不會導(dǎo)致BGP鄰居斷鏈;
(2)當(dāng)BGP路由器由于環(huán)境或配置改變,可以自動重新向鄰居路由器發(fā)送路由通告;根據(jù)該BGP路由器目前需要建立的鄰居數(shù)目,動態(tài)調(diào)整BGP路由通告瞬時速度和BGP路由通告平均速度,并發(fā)送給對端BGP鄰居。
在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的而非限制性的。