在IBGP中對等體之間須要創建全互連關係,因此假設一個as內有n臺路由器,創建的IBGP鏈接數就有n(n-1)/2。當IBGP對等體數目不少時候,很消耗設備的資源。ide
利用路由反射器能夠緩解這一問題。客戶端只須要和反射器創建IBGP鏈接便可。反射器會在客戶端之間反射路由信息,客戶端之間不須要創建IBGP鏈接。只有非客戶端和非客戶端之間不能傳遞BGP路由spa
參考Juniper官方文檔咱們來作這個實驗。我以爲有點小問題,還但願老司機指正。3d
A是反射器,BC是A的客戶端,DE位於cluster之外,因此是非客戶端。按照前面介紹的,B和C做爲A的客戶端,只須要和A創建IBGP鏈接,不須要再和DE創建IBGP鏈接。同理,E只須要創建和D,A的IBGP鏈接便可。blog
1.A是反射器,因此須要在BGP裏面指定全部的IBGP對等體,同時配置本身的cluster-id(本例使用A的lo0口):接口
2.B和C做爲客戶端,只須要在BGP裏面指定反射器A的對等體。
進程
3.D和E做爲非客戶端,一樣也不須要指定客戶端B和C的對等體。ip
4.以A爲例子,配置IGP,並把OSPF路由重分佈進IBGP。資源
配置IGP:路由
配置重分佈:文檔
5.直鏈接口和ROUTER-ID以及AS號:
6.檢查BGP的鄰居:
我發現D的狀態裏面是ROUTE REFLECTOR CLIENT。D不是應該非客戶端嗎?
我試着在cluster id後面配置neither 發現cluster是group全局的。
因此我修改了配置,BGP的進程一臺設備只能起一個,可是group能夠創建不少個:
而後我再查看bgp的鄰居:
D依舊創建起了鄰居。可是狀態沒有了 客戶端選項。
B的鄰居中依舊顯示 客戶端。
接下來查看BGP group,由於我修改了配置,輸出可能會和官方的文檔有些出入:
繼續查看BGP summary:
最後查看路由:
實驗的最後,能夠看到在BC上收到了DE的IBGP路由,也在DE上看到BC的IBGP路由。惟一的問題就是 既然DE是非客戶端,爲何文檔裏要把他倆也配置在cluster id下面變成客戶端呢?仍是我理解錯了