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