《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 在BGP鄰居之間實現流量非等價負載分擔
在BGP鄰居之間實現流量非等價負載分擔
2016年微型機與應用第04期
劉金生,陳石
(中國聯合網絡通信有限公司 網絡運維部綜合監控處,北京 100033)
摘要: 在多鏈路互聯的BGP鄰居之間實現流量按需負載分擔,可以有效提高鏈路利用率,降低組網成本,但目前常見的實現方法要么對硬件性能要求較高,要么配置復雜,不易在較大網絡特別是電信運營商網內靈活部署。利用BGP路由尋址的特點,采用多重遞歸的方式,實現了按鏈路帶寬的比例分配流量的非等價負載分擔。這種方法原理簡單,易于操作,具備較好的擴展性。
Abstract:
Key words :

  劉金生,陳石

  (中國聯合網絡通信有限公司 網絡運維部綜合監控處,北京 100033)

      摘要:在多鏈路互聯的BGP鄰居之間實現流量按需負載分擔,可以有效提高鏈路利用率,降低組網成本,但目前常見的實現方法要么對硬件性能要求較高,要么配置復雜,不易在較大網絡特別是電信運營商網內靈活部署。利用BGP路由尋址的特點,采用多重遞歸的方式,實現了按鏈路帶寬的比例分配流量的非等價負載分擔。這種方法原理簡單,易于操作,具備較好的擴展性。

  關鍵詞邊界網關協議等價多路徑;非等價負載分擔;遞歸尋址;選路原則

0引言

  數據流量的多鏈路負載分擔技術在互聯網界應用廣泛,對應不同的網絡結構和需求,解決方案不盡相同。本文提供的非等價負載分擔方案基于路由尋址算法和BGP“下一跳”的遞歸屬性,與常見的策略路由方式相比,該方案配置更簡單,部署更加靈活。

1等價負載分擔

  Internet是由眾多相互聯在一起的自治系統(Autonomous System)組成的,為這些自治系統提供路由交換功能的協議就是邊界網關協議(BGP)[1]。為了保障BGP協議自身的健壯性和穩定性,BGP協議規定了13條選路原則,所有開啟BGP功能的路由器都嚴格遵守這些選路原則。

  根據這13條選路原則,BGP協議默認不支持等價路徑,也就是說BGP數據庫中到達同一個目的IP只有一條最優的路由會被放入路由表。

  基于網絡可靠性的考慮,很多企業網在與電信運營商互聯時采用了雙歸、甚至多上聯的拓撲結構。為了提高數據傳送的效率和可靠性,對于這種多鏈路互聯的BGP鄰居,BGP協議在設計之初也保留了一個后門,即“等價多路徑”(Equal Cost MultiPath,ECMP)功能,一旦啟用了這一功能,對于同一目的IP,BGP協議允許最多可以有6條等價路徑被放入路由表中。

  如圖1所示,自治系統AS100和AS200通過邊界路由器R1和R2建立了BGP鄰居關系。R1和R2之間有兩條直連的物理鏈路。當AS100內的用戶訪問AS200內的服務器時,在R1和R2上開啟ECMP功能,兩個自治系統之間的流量就會按照1∶1的比例加載到兩條直連鏈路上,而不是只選擇其中一條鏈路進行數據流量的傳遞。

 

001.jpg

  這樣看,ECMP解決了多鏈路流量負載均擔問題,在一定程度上提高了網絡的可靠性。目前,國內主要電信運營商已把ECMP功能作為BGP接入的備選方案向用戶推薦,各主流電信設備供應商如思科、華為、Junior、中興等也紛紛宣布支持這一功能。

2非等價負載分擔的提出

  仍以圖1為例,R1和R2之間的兩條物理鏈路,第一條是點到點的串行鏈路,假設帶寬為2.5 Gb/s;第二條是廣播型的以太網鏈路,假設為帶寬為10 Gb/s。如果在R1和R2上開啟ECMP功能,則每條鏈路最大流量不能超過2.5 Gb/s,否則串行鏈路就會因流量超過帶寬值而丟包,此時的以太網鏈路尚有10 Gb/s-2.5 Gb/s=7.5 Gb/s的帶寬處于閑置狀態。

  如何既能夠讓去往同一目的IP的流量承載在不同的鏈路上,又能夠讓帶寬高的鏈路能者多勞?就此提出了非等價負載分擔的需求。

  目前實現非等價負載分擔常見方法包括:策略路由、流量工程、MPLSVPN等。這些方法要么對設備的性能要求較高,要么需要BGP鄰居之間密切配合,對各種數據流進行分類和打標記,并在路由進行收發雙向控制,配置過程復雜,無法根據業務流量和中繼鏈路的變化靈活地部署,擴展性差[2]。

3路由尋址與遞歸過程

  路由尋址算法的本質就是在路由表中實現對目的IP地址前綴的最長匹配[3]。

002.jpg

  圖2路由尋址的哈希過程如圖2所示,目的IP一旦被放入路由表,它的前綴同時就被哈希到特定的桶中,尋址的過程就是從哈希表中的第一個記錄開始,對被哈希的關鍵字與給定值(即掩碼值,從32到0)逐個進行比較,當某個哈希的關鍵字與給定值完全相等時,則查找成功,路由協議會根據所查的記錄將包含目的IP數據包送入對應的出接口;否則,若直到最后一個記錄,其關鍵字和給定值比較都不相等,則查找失敗,包含目的IP的數據包被送入默認網關(若未設默認網關,則該數據包被丟棄)。

  路由尋址哈希算法描述[4]如下:

  int Search(int d,int a[],int n)

  /*在數組a[]中查找等于D元素,若找到,則函數返回d在數組中的位置,否則為0。其中n為數組長度*/

  int i;

  /*從后往前查找*/

  for(i=n-1;a!=d;--i)

  return i ;

  /*如果找不到,則i為0*/

  事實上,路由尋址算法還包含了遞歸的過程,即尋找數據包下一跳的過程路由的三元素包括:目標地址、掩碼、下一跳。只有計算出有效的下一跳,IP協議才能逐跳地將數據包送往目的地。

  所謂有效的下一跳,對于路由器而言分為兩個層面。從轉發層面(FIB:轉發信息庫)看,就是本路由器到達目的IP所經的出接口。從控制層面(RIB:路由信息庫)看,就是在路由表中進行最長掩碼匹配的哈希算法查找的結果,是一個IP地址,如果這個IP地址對應一個直連出接口,它就是一個有效的下一跳,可以被直接映射到轉發表中,參與指導數據包的轉發[5];如果這個IP地址沒有對應的直連出接口,則不能稱之為有效的下一跳,需要進行遞歸查找,最終找到對應的直連出接口為止。

  如圖3所示,在BGP路由表中,R0到達Server的下一跳是R3,到達R3的下一跳是R2,到達R2的下一跳是R1,以此類推。IP協議在查找路由時,如果發現下一跳不是與自己直連的,那么就會將此下一跳地址作為目的IP再次按照上述邏輯查找路由表,直到查到與自己直連的下

003.jpg

  一跳或者完全失敗為止,這就是路由的遞歸查找。

  遞歸過程算法描述如下:

  CheckNode{

  int A;

  int B;

  Node children[1<<B];

  }

  union Node{

  Leaf entry;

  CheckNode node;

  }

  由于查找下一跳的次數不是固定的(用A表示),并且經過本次遞歸查找后下一跳是否有對應的直連接口也不確定(用B表示),因此每一輪遞歸查找就是一個CheckNode過程。

4案例實現

  仍以圖1為例,AS100網內的用戶希望向AS200網內的文件服務器(IP地址200.0.0.1)傳送文件,并且希望在傳送過程中根據兩條互聯鏈路帶寬的比例(2.5 Gb/s∶10 Gb/s=1∶4)分配數據流量。具體配置如表1所示。表1R1和R2的初始配置設備名R1R2Loopback0接口IP地址1.1.1.1/322.2.2.2/32鏈路帶寬鏈路流量占比

  需求(共5份)R1R2Serial5/112.0.0.1/2412.0.0.2/242.5 Gb/s1份R1R2GigabitEthernet1/021.0.0.1/2421.0.0.2/2410 Gb/s4份

  本例中R1與R2通過雙方的環回口(loopback0)建立EBGP鄰居關系,因此對R1而言,到達AS200網內的目的IP200.0.0.1的下一跳地址就是R2的loopback0的地址2.2.2.2。

  (1)第一步:指定新的目的IP和下一跳地址

  為了通過遞歸尋址影響BGP的選路,在R1側,把2.2.2.2/32作為新的目的IP,并分配5個虛擬IP地址作為它的下一跳(之所以選擇5個虛擬IP地址,是因為鏈路帶寬比例為1∶4,可以理解為需要把數據流量分成1+4=5份)。

  完成配置后,檢查到達2.2.2.2/32的路由。如圖4所示,每個下一跳均為“traffic share count is 1”,代表這5個下一跳之間是等價的。注意:由于這些虛擬IP地址僅用于本地路由表的遞歸尋址,并不需要廣播到互聯網中,因此建議使用私網地址,本例中使用的是192.168.1.1~192.168.1.5。

004.jpg

  (2)第二步:將虛擬下一跳引入路由表

  根據實際鏈路的帶寬比例(1∶4)為這些下一跳地址分配出接口(本例中串口被分配1次,以太口被分配4次),如圖5所示。

  

005.jpg

  虛擬下一跳地址一旦關聯了出接口,指向虛擬IP地址的靜態路由就變了合法的路由,將被放入路由表中,參與對目的IP的遞歸尋址過程(查找有效的下一跳)。

  (3)第三步:尋址過程分析

  從控制層面看(如圖6所示),在R1的路由表(RIB)中查找到達目的IP200.0.0.1的路由,首先會查到它的下一跳地址2.2.2.2,但由于沒有對應的出接口,需要進行一次遞歸查找;以2.2.2.2作為目的IP,經過第一次遞歸查找,發現到達2.2.2.2有5個等價的下一跳地址,分別是192.168.1.1~192.168.1.5,由于這5個下一跳依然沒有對應的出接口,因此需要再進行一次遞歸查找;經過第二次遞歸查找,5個下一跳都找到了對應的出接口,路由尋址過程結束[6]。

  

006.jpg

  從轉發層面看(如圖7所示),轉發表(FIB)中去往目的IP 200.0.0.1的數據包被等價地分配到5個出口:1份流量由點到點的串口鏈路(Serial5/1)承載,剩下的4份流量由廣播型的以太口鏈路(Gigabit1/0)承載。  

007.jpg

  這樣就實現了預先設定的需求:在兩條鏈路上實現按1∶4的流量進行轉發,即非等價負載分擔。

5結論

  實際案例證明:在路由尋址中增加一次遞歸過程,可以比較靈活地實現等價或非等價負載分擔。相比常用的策略路由,這種方法不需要對特定的數據流量進行分類標記,在配置上更簡單,另外用于遞歸算法的下一跳使用的是私網地址,不消耗公網資源,部署起來也比較方便。

  這里需要強調的是,本例中的EBGP鄰居R1和R2并未打開等價多路徑(ECMP)功能,對于目的IP200.0.0.1,在R1的BGP數據庫中只有2.2.2.2/32這一個下一跳,而不是多個下一跳。也就是說本方法并不是在BGP協議內實現非等價負載分擔,而是借用BGP協議中“下一跳”的概念,通過路由表中的多重遞歸實現流量非等價分擔的效果,因此這與BGP的等價多路徑選路原則并不矛盾。

  另外,本例中介紹的非等價負載分擔方法適用于通過環回口建立的EBGP鄰居。對于通過直連接口建立的EBGP鄰居,可以在雙方的直連接口上配置若干個second IP作為到目的IP的下一跳地址,再經過路由遞歸查找,也能實現非等價負載均衡的效果,具體配置方法本文不再贅述。

參考文獻

  [1] STEWART J.BGP4: interdomain routing in the Internet[M].USA Addison Wesley,1998.

  [2] 薩姆·哈拉比. Internet 路由結構(第2版)[M].孫劍,孫余強,譯.北京:人民郵電出版社,2015.

  [3] 布萊恩特,奧哈拉倫.深入理解計算機系統(第2版)[M].北京:機械工業出版社,2011.

  [4] 維斯.數據結構與算法分析:C語言描述[M].馮舜璽,譯.北京:機械工業出版社,2004.

  [5] 艾云霄,譚躍生,王靜宇,等.MooseFS中chunkserver負載均衡算法研究[J].微型機與應用,2013,32(5):13.

  [6] SCUDDER J, CHANDRA R.RFC 5492: capabilities advertisement with BGP4[EB/OL].(200902xx).http://tools.ietf.org/html/rfc5492.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 豆国产96在线|亚洲| www.亚洲日本| 欧美日韩亚洲高清不卡一区二区三区| 日本高清免费不卡视频| 人人公开免费超级碰碰碰视频| 777四色米奇欧美影院| 无码av天天av天天爽| 午夜剧场1000| 狠狠色综合一区二区| 夜夜橹橹网站夜夜橹橹| 亚洲乱码一二三四区国产| 野花视频www高清| 少妇大胆瓣开下部自慰| 久碰人澡人澡人澡人澡人视频 | 黄无遮挡免费网站视频| 在线观看亚洲av每日更新| 中文字幕欧美视频| 日韩精品人妻系列无码专区 | japan高清日本乱xxxxx| 日本猛少妇色xxxxx猛交| 印度精品性hd高清| 黑人巨大精品欧美一区二区免费 | 翁想房中春意浓1-28| 国产日韩AV免费无码一区二区| 中文字幕亚洲乱码熟女一区二区| 特黄黄三级视频在线观看| 国产精品人人做人人爽人人添| 一个人看的视频在线| 日本高清中文字幕| 亚洲人在线视频| 正在播放91大神调教偷偷| 免费观看理论片毛片| 色综合久久中文字幕综合网| 国产无套粉嫩白浆| 4480私人午夜yy苍苍私人影院| 天美传媒一区二区三区| 中文字幕亚洲精品| 日本护士恋夜视频免费列表| 亚洲AV无码久久| 欧美无遮挡国产欧美另类| 人与动性xxxxx免费|