BGP-13 配置BGP多路徑發佈

    



    JUNIPER文檔裏面對add-path的解釋:

    “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只發布活動路徑。”


    在Junos裏面,BGP在本地內存裏存放路由信息,稱之爲ROUTING INFORMATION BASE.一個BGP對等體維護三種類型的RIB:adjacency-RIB-in/adjacency-RIB-out/Local-RIB。

    文檔裏面對Local-RIB的定義是:到達每個前綴的目的的最佳路由。基於每個目的地,只有單一的路徑通告(最優)。


    那我們就先按照文檔,搭建好實驗環境,來觀察現象。

    拓撲:

BGP多路徑.png

簡單解釋下這個拓撲:

    在AS2裏面,我們把R5/R6在本地的靜態路由199.1.1.1/32和198.1.1.1/32 宣告到AS1,R7將本地的靜態路由199.1.1.1/32宣告到AS1。

    於是在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.首先查看配置命令:

add-path 命令.png

1.1. send層次下:

    path-count 配置的是多路徑的數目。

    prefix-policy 配置的是策略,用於篩選路由前綴。

1.2. receive 就是接受多路徑。



2.AS2的BGP配置就用R5作爲例子:

2.1首先配置EBGP對等體:

r5-bgp-1.png

我們可以看到的是基本的BGP配置:type 指定是ebgp;鄰居 R1的直連接口地址和AS號;export策略。

2.2配置export策略:

r5-bgp-2.png

將本地和直連路由發佈出去。

 2.3配置本地路由:

r5-bgp-3.png

2.4配置完畢以後我們檢查下 R5上的路由:

2.4.1 本地和直連:

R5本地和直連.png

2.4.2查看R5 EBGP 宣告的和R1 EBGP 接受的:

          R5 BGP宣告給R1的:

r5宣告給R1的bgp.png

         R1 BGP從R5 接受的:

r1接受到r5的bgp.png


3.AS1中的路由器的配置:

    文檔裏將R2/R3配置爲R1的客戶端,R8作爲R4的客戶端。BGP反射器的配置昨天在BGP-17裏面已經練習了。

3.1所以我們在R1的配置裏面,IBGP分爲兩組(看來昨天的疑問可以得到確定了):

R1的BGP配置.png

3.2 同理R4的配置也一樣:

可以很清晰地看到:

group rr裏,對等體是R1,所以相應的動作就是接受

group rr_rr裏面,就是發送。

r4 bgp配置.png

這裏會有一個策略:allow_199:

r4的策略.png

因爲AS2裏面一共有199和198兩條路由,後續會在R4多路徑的配置上過濾掉了198。觀察他們在R8上的區別。

3.3R8的BGP配置:

很簡單,設置多路徑接受即可。

r8 bgp.png


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。

r1 NLRI'S.png

       4.1.2 R4,兩個對等體。

r4 NLPI.png

r4 NLRI.png

        4.1.3 R8  略。


        4.2 檢查路由的多路徑。

      4.2.1 R1上是不是發佈了多個路徑。

            結果我們發現一個前綴多個下一跳。



R1 發佈了多路徑.png

   以199爲例子,10.0.15.2-R5,10.0.0.20-R2-R6,10.0.0.30-R3-R7。

   4.2.2 R4上是不是接受到了多個路徑。

r4 接受到了多路徑.png

    4.2.3 R4發送到R8的多路徑。

r4 發佈的多路徑.png

    可以看到198只有一條那就是10.0.0.20的下一跳。這正是我們想看到的。

r4的策略.png

    R4上的策略只允許199多路徑發佈。

    4.3 R8的BGP路由。

r8 bgp路由.png

    4.4 查看一下199路由的detail。

add-path 1.png

add-path 2.png

app-path 3.png

可以看到不同路徑的Addpath Path ID是不同的。

那爲什麼*的是10.0.0.20呢?



    我最近在根據JUNIPER的官方文檔學習BGP,下一節的內容將會是根據多路徑進行負載均衡。這是我根據文檔做的實驗記錄和學習筆記,邏輯和思路完全順着它來,不懂的地方我會查文檔標記出來。歡迎大家一起探討學習。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章