MPLS XXX
解決私網通信問題,5個路由器模擬,R1環回模擬私網,R2R3R4位ISP,R5環回模擬私網。
思路:1.先把私網路由傳遞給ISP,都與運營商之間運行IGP協議
2.在運營商邊界是不能直接與R1或R5建立IGP協議的,否則學習到的路由會保存
到路由器的主路由緩存中,就會牽扯到與BGP的底層IGP協議有選路的問題,所以學習私網路由必須存放在一個虛擬的路由緩存轉發表中。
3.在邊界路由器上先創建虛擬路由緩存,接着爲了標記不同的私網,引出了RD
4.一定把連接用戶的接口劃入虛擬路由轉發中,每一個路由標記具有相同的RD值
5.將私網路由導入到主路由表中,是因爲邊界路由器並不能傳遞虛擬路由給中間類似於R3的路由器,所以需要重發布到主路由表中,這裏是導入到BGP路由緩存中。而導入的路由是IPV4+RD,也就是XXXV4路由。
5.版本4與版本4+區別在於版本4只支持IPV4路由,現在傳遞的是XXXV4,只能使用MP-BGP,也就是BGPV4+,由於默認BGP傳遞的是IPV4路由,現在重發布XXXV4,那麼也是不認識這種路由的,所以要開啓VPVV4的MP-BGP功能,單播傳遞
6.現在數據到達R4,那麼怎麼確保R1發過來的就是到達R5的路由呢?引出RT,路由目標,使用了BGP的擴展的團體屬性。收到帶有RT值與自己導出的RT值一致
7.R4收到的路由是BGP路由,不能支持傳遞給R5,所以有需要把BGP協議導入到IGP協議中,R1學習R5同樣的過程
8.至此還沒有用到MPLS,現在只是路由傳遞到對端了,數據依舊不通,其實數據到達R2肯定就丟棄了,因爲R2的連接R1的接口劃入VRF中,只能查看VRF表,又因爲路由是以BGP的形式存在,根據BGP特點可知,下一跳地址爲IBGP更新源地址,也就是4.4.4.4,但是在VRF表項中,根本不可能存在到達R4的4.4.4.4路由,所以遞歸失敗,數據不通。
9.接着做MPLS技術,數據到達R2後,查看VRF的cef表,但是針對5.5.5.0是不會打標籤的,因爲存在形式是BGP,標籤是不支持部署在BGP路由的,於是只能針對下一跳地址分配的標籤移植到BGP中,,這個時候標籤是3給的,R3會收的,接着倒數第二跳彈出,變爲IP數據包,到達R4後,一樣只能查看主路由表中的cef表,是肯定找不到5.5.5.5的,報文丟棄。
那麼問題來了。既然做了MPLS,爲何還會數據不通信了?其實MPLS XXX是打了雙層標籤的。
R3針對R2學習路由的下一跳地址4.4.4.4分配標籤傳遞給R2,R2把這個標籤移植到BGP的私有路由裏面。
另外一個標籤一定是要R4給的,R3做了倒數第二跳彈出,之後應該還有一個標籤,是R4給R2,R2傳遞過來的(打了兩層標籤)。又存在一個問題,R4怎麼把標籤信息傳遞給R2,之前傳遞R5私網路由時候都可以增加RT參數,把標籤加入傳遞給R2當然也可以。
數據到達R4後,R4查看MPLS forwarding table,發現是自己發的,雖然是針對XXXV4發的,直接查表扔給R5.,
爲啥這次會給R5呢?第一,沒有做雙層標籤之前,由於倒數第二跳彈出,那麼到達R4後直接查看的是FIB表,自然不能通信,第二,如果做了雙層標籤,那麼由於R3過來的數據還是有label,那麼R4會先查看LFIB表的,這個表裏面自然就可以把數據傳遞給R5的。
反過來是一樣的。
VRF:虛擬路由轉發,
RD::路由區分器,區分不同的VRF,XX:XX 1:1 2:2
AS號:number 234:1 234:2
RT:路由目標,負責路由導入與導出
實驗拓撲:
R1R2運行RIP,R4R5運行EIGRP,R2R3R4運行BGP,R1環回192.168.1.0 R5環回192.168.2.0
- 創建VRF,並將接口劃入VRF中
將接口劃入VRF中會發現地址不存在了,所以還得手工再配置接口地址
接着查看路由條目,發現12.1.1.0沒有,直連消失,並不在主路由表中
查看VRF路由表
做完這些發現一個奇怪的現象,爲什麼R1pingR2可以通,R2pingR1爲何不通呢?
R1查看主路由,傳遞給R2,又因爲R2接口在VRF中,所以R1pingR2會通
同理R4到R5也要這樣做
R4pingR5與R2pingR1其實是可以通信的
-
在CE與PE之間運行路由協議
R1 R2運行RIP R4 R5運行EIGRP
-
建立MP-BGP,爲了傳遞XXXV4路由
針對鄰居開啓傳遞XXXV4路由的能力,同時開啓發送並接收團體屬性的功能
關閉傳遞IPV4路由功能(可選)
-
路由導入(將VRF中路由重發布進入MP-BGP中)
查看
這個時候R4也收到了XXXV4路由,接着傳遞給R5,繼續做重發布
至此,R1的環回到達R5,繼續做R5的環回到達R1
接着再重發布路由到RIP中
- 運行MPLS
- 通信
接下來觀察數據爲什麼可以通信?
在R1上先查看追蹤路徑
由表可知,打了兩個標籤,301 400,怎樣打了兩個標籤呢?
R1發送數據到達R2,R2肯定查看VRF表
到達192.168.2.1的下一跳是4.4.4.4,所以繼續查看forwarding-table
到達4.4.4.4的出標籤是301,
這個400是怎麼來的?
R4針對192.168.2.0是本地打標籤的,透過BGP傳遞給R2
抓包查看
如果再加兩個路由器R6 R7,一個192.168.3.0 一個192.168.4.0
R2 R6之間運行OSPF
R6上正常配置OSPF100就行,但是在R2上面配置OSPF時候,進程號不能再是100了,這裏用200,route-id改成22.2.2.2,然後OSPF沒有address-family這個東西所以這樣配置
同理,配置R4 R7上面的OSPF信息
接着做路由的導入與導出
導入
導出
接着再考慮192.168.4.0網段
現在R1 R5, R6 R7通信就完成了,那麼如果這四個之間要通信呢?
主要是RT的參數問題
R2上面有了,R1上面肯定也會收到的
現在是R1可以與R6 R7通信了,
但是R5上面還是隻能收到R1自己的路由,所以在R4上還得做以上的操作