JUNIPER文檔裏面對add-path的解釋:app
「BGP peers advertise routes to each other in update messages. BGP stores its routes in the Junos OS routing table (inet.0). For each prefix in the routing table, the routing protocol process selects a single best path, called the active path. Unless you configure BGP to advertise multiple paths to the same destination, BGP advertises only the active path.Related Documentation負載均衡
對於路由表中的每一個前綴,路由協議進程選擇一條稱爲活動路徑的最佳路徑。除非配置BGP將多條路徑發佈到同一目的地,不然BGP只發布活動路徑。」less
在Junos裏面,BGP在本地內存裏存放路由信息,稱之爲ROUTING INFORMATION BASE.一個BGP對等體維護三種類型的RIB:adjacency-RIB-in/adjacency-RIB-out/Local-RIB。ide
文檔裏面對Local-RIB的定義是:到達每一個前綴的目的的最佳路由。基於每一個目的地,只有單一的路徑通告(最優)。學習
那咱們就先按照文檔,搭建好實驗環境,來觀察現象。spa
拓撲:3d
簡單解釋下這個拓撲:orm
在AS2裏面,咱們把R5/R6在本地的靜態路由199.1.1.1/32和198.1.1.1/32 宣告到AS1,R7將本地的靜態路由199.1.1.1/32宣告到AS1。
blog
因而在AS1,咱們從R1上能夠收到的199.1.1.1/32路由有三條路徑,分別來自R5/R6/R7,而198.1.1.1/32 路由有兩條路徑,分別來自R5/R6。接口
默認狀況下,基於上述原則「到達每一個前綴的目的的最佳路由,基於每一個目的地,只有單一的路徑通告(最優)」,在R8上看199.1.1.1/32和198.1.1.1/32 的路由都只有一條路徑。
因此,R1/R4/R8是這個實驗的三個關鍵路由器。R1負責將同一個前綴的路由的多條發佈(SEND)出去,R8負責這個多路徑路由的接受(RECEIVE)。R4從R1接受而且發佈到R8。
1.首先查看配置命令:
1.1. send層次下:
path-count 配置的是多路徑的數目。
prefix-policy 配置的是策略,用於篩選路由前綴。
1.2. receive 就是接受多路徑。
2.AS2的BGP配置就用R5做爲例子:
2.1首先配置EBGP對等體:
咱們能夠看到的是基本的BGP配置:type 指定是ebgp;鄰居 R1的直鏈接口地址和AS號;export策略。
2.2配置export策略:
將本地和直連路由發佈出去。
2.3配置本地路由:
2.4配置完畢之後咱們檢查下 R5上的路由:
2.4.1 本地和直連:
2.4.2查看R5 EBGP 宣告的和R1 EBGP 接受的:
R5 BGP宣告給R1的:
R1 BGP從R5 接受的:
3.AS1中的路由器的配置:
文檔裏將R2/R3配置爲R1的客戶端,R8做爲R4的客戶端。BGP反射器的配置昨天在BGP-17裏面已經練習了。
3.1因此咱們在R1的配置裏面,IBGP分爲兩組(看來昨天的疑問能夠獲得肯定了):
3.2 同理R4的配置也同樣:
能夠很清晰地看到:
group rr裏,對等體是R1,因此相應的動做就是接受
group rr_rr裏面,就是發送。
這裏會有一個策略:allow_199:
由於AS2裏面一共有199和198兩條路由,後續會在R4多路徑的配置上過濾掉了198。觀察他們在R8上的區別。
3.3R8的BGP配置:
很簡單,設置多路徑接受便可。
4.咱們已經搭建完了實驗環境,開始檢查實驗現象。
4.1 驗證BGP對等體的接受和發送多路徑的能力。
當你在查看bgp鄰居的時候,會發現如下字段:
NLRI'S for which peer can receive multiple paths : inet-unicast
NLRI'S for which peer can send multiple paths : inet-unicast
咱們逐個檢查:
4.1.1 R1,顯示對端能夠receive。
4.1.2 R4,兩個對等體。
4.1.3 R8 略。
4.2 檢查路由的多路徑。
4.2.1 R1上是否是發佈了多個路徑。
結果咱們發現一個前綴多個下一跳。
以199爲例子,10.0.15.2-R5,10.0.0.20-R2-R6,10.0.0.30-R3-R7。
4.2.2 R4上是否是接受到了多個路徑。
4.2.3 R4發送到R8的多路徑。
能夠看到198只有一條那就是10.0.0.20的下一跳。這正是咱們想看到的。
R4上的策略只容許199多路徑發佈。
4.3 R8的BGP路由。
4.4 查看一下199路由的detail。
能夠看到不一樣路徑的Addpath Path ID是不一樣的。
那爲何*的是10.0.0.20呢?
我最近在根據JUNIPER的官方文檔學習BGP,下一節的內容將會是根據多路徑進行負載均衡。這是我根據文檔作的實驗記錄和學習筆記,邏輯和思路徹底順着它來,不懂的地方我會查文檔標記出來。歡迎你們一塊兒探討學習。