一、內容
1.配置拓撲中的網絡設備,Internet區域配置公網地址,LAN1和LAN2 爲兩個同一公司的兩個私網,LAN1中R4-R5的網段爲10.1.1.0/24,LAN2中R6-R7的網段爲192.168.1.0/24。拓撲中其餘網段IP地址採用課堂上常用IP地址分配方式分配。採用MPLS/VPN連通兩個分離的私網LAN1和LAN2,使其組成一個大私網。
2.說明MPLS/VPN的工作原理,抓包輔助說明。
3.在R5上ping通R7,結合MPLS/VPN工作原理說明數據包的傳輸過程,抓包說明。
二、實現方法
(1) 配置拓撲中的網絡設備,Internet區域配置公網地址,LAN1和LAN2 爲兩個同一公司的兩個私網,LAN1中R4-R5的網段爲10.1.1.0/24,LAN2中R6-R7的網段爲192.168.1.0/24。拓撲中其餘網段IP地址採用課堂上常用IP地址分配方式分配。採用MPLS/VPN連通兩個分離的私網LAN1和LAN2,使其組成一個大私網。
1)按照課堂常用地址分配規則,配置各路由器的接口ip地址,以及路由器的環回地址,其中R4-R5的網段爲10.1.1.0/24,R6-R7的網段爲192.168.1.0/24。
1、R1
R1#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R1(config)#int f0/0
R1(config-if)#ip add 12.12.12.1255.255.255.0
R1(config-if)#no shut
*Mar 1 00:03:52.551: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:03:53.551: %LINEPROTO-5-UPDOWN: Line protocolon Interface FastEthernet0/0, changed state to up
R1(config-if)#int f1/0
R1(config-if)#ip add 14.14.14.1255.255.255.0
R1(config-if)#no shut
*Mar 1 00:04:25.807: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:04:26.807: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R1(config-if)#int loopback 0
*Mar 1 00:04:49.151: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R1(config-if)#ip add 1.1.1.1 255.255.255.255
R1(config-if)#no shut
R1(config-if)#exit
2、R2
R2#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R2(config)#int f0/0
R2(config-if)#ip add 12.12.12.2255.255.255.0
R2(config-if)#no shut
*Mar 1 00:07:05.727: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:07:06.727: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R2(config-if)#int f1/0
R2(config-if)#ip add 23.23.23.2255.255.255.0
R2(config-if)#no shut
*Mar 1 00:07:33.419: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:07:34.419: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R2(config-if)#int loopback 0
*Mar 1 00:07:43.143: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R2(config-if)#ip add 2.2.2.2255.255.255.255
R2(config-if)#no shut
R2(config-if)#exit
3、R3
R3#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R3(config)#int f1/0
R3(config-if)#ip add 23.23.23.3255.255.255.0
R3(config-if)#no shut
*Mar 1 00:09:35.339: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:09:36.339: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R3(config-if)#int f0/0
R3(config-if)#ip add 36.36.36.3255.255.255.0
R3(config-if)#no shut
*Mar 1 00:10:39.443: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:10:40.443: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R3(config-if)#int loopback 0
*Mar 1 00:11:02.407: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R3(config-if)#ip add 3.3.3.3255.255.255.255
R3(config-if)#no shut
R3(config-if)#exit
4、R4
R4#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R4(config)#int f1/0
R4(config-if)#ip add 14.14.14.4255.255.255.0
R4(config-if)#no shut
*Mar 1 00:26:35.359: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:26:36.359: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R4(config-if)#int f0/0
R4(config-if)#ip add 10.1.1.4 255.255.255.0
R4(config-if)# no shut
*Mar 1 00:27:01.127: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:27:02.127: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R4(config-if)#int loopback 0
*Mar 1 00:27:11.419: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R4(config-if)#ip add 4.4.4.4255.255.255.255
R4(config-if)#no shut
R4(config-if)#exit
5、R5
R5#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R5(config)#int f0/0
R5(config-if)#ip add 10.1.1.5 255.255.255.0
R5(config-if)#no shut
*Mar 1 00:29:21.459: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:29:22.459: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R5(config-if)#int loopback 0
*Mar 1 00:28:50.803: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R5(config-if)#ip add 5.5.5.5255.255.255.255
R5(config-if)#no shut
R5(config-if)#exit
6、R6
R6#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R6(config)#int f0/0
R6(config-if)#ip add 36.36.36.6255.255.255.0
R6(config-if)#no shut
*Mar 1 00:31:02.671: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:31:03.671: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R6(config-if)#int f1/0
R6(config-if)#ip add 192.168.1.6255.255.255.0
R6(config-if)#no shut
*Mar 1 00:31:30.227: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:31:31.227: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R6(config-if)#int loopback 0
*Mar 1 00:31:44.831: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R6(config-if)#ip add 6.6.6.6255.255.255.255
R6(config-if)#no shut
R6(config-if)#exit
7、R7
R7#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R7(config)#int f0/0
R7(config-if)#ip add 192.168.1.7255.255.255.0
R7(config-if)#no shut
*Mar 1 00:33:36.443: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:33:37.443: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R7(config-if)#int loopback 0
*Mar 1 00:33:47.483: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R7(config-if)#ip add 7.7.7.7255.255.255.255
R7(config-if)#no shut
R7(config-if)#exit
2)配置公網各路由器的動態路由協議(ospf)。
1、R1
R1(config)#router os 1
R1(config-router)#net 12.12.12.0 0.0.0.255a 0
R1(config-router)#net 1.1.1.1 0.0.0.0 a 0
R1(config-router)#router-id 1.1.1.1
2、R2
R2(config)#router os 1
R2(config-router)#net 0.0.0.0 0.0.0.0 a 0
*Mar 1 00:41:52.199: %OSPF-5-ADJCHG: Process 1,Nbr 1.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
R2(config-router)#router-id 2.2.2.2
3、R3
R3(config)#router os 1
R3(config-router)#net 23.23.23.0 0.0.0.255a 0
*Mar 1 00:43:29.099: %OSPF-5-ADJCHG: Process 1,Nbr 2.2.2.2 on FastEthernet1/0 from LOADING to FULL, Loading Done
R3(config-router)#net 3.3.3.3 0.0.0.0 a 0
R3(config-router)#router-id 3.3.3.3
3)配置公網中路由器的mpls協議,標籤協議採用ldp協議。
1、R1
R1(config)#int f0/0
R1(config-if)#mpls label protocol ldp
R1(config-if)#mpls ip
R1(config-if)#exit
2、R2
R2(config)#mpls label protocol ldp
R2(config)#int f0/0
R2(config-if)#mpls ip
*Mar 1 01:22:24.155: %LDP-5-NBRCHG: LDP Neighbor1.1.1.1:0 (1) is UP
R2(config-if)#int f1/0
R2(config-if)#mpls ip
R2(config-if)#exit
3、R3
R3(config)#int f1/0
R3(config-if)#mpls label protocol ldp
R3(config-if)#mpls ip
R3(config-if)#exit
4)配置私網各路由器的動態路由協議(rip)。
1、R4
R4(config)#router rip
R4(config-router)#v 2
R4(config-router)#no au
R4(config-router)#net 10.1.1.0
R4(config-router)#net 4.4.4.4
R4(config-router)#exit
2、R5
R5(config)#router rip
R5(config-router)#v 2
R5(config-router)#no au
R5(config-router)#net 0.0.0.0
R5(config-router)#exit
3、R6
R6(config)#router rip
R6(config-router)#v 2
R6(config-router)#no au
R6(config-router)#net 0.0.0.0
R6(config-router)#exit
4、R7
R7(config)#router rip
R7(config-router)# v 2
R7(config-router)#no au
R7(config-router)#net 0.0.0.0
R7(config-router)#exit
5)創建VRF。
1、R1
R1(config)#ip vrf vpn1
R1(config-vrf)#rd 100:1
R1(config-vrf)#exit
R1(config)#int f1/0
R1(config-if)#ip vrf forwarding vpn1
% Interface FastEthernet1/0 IPaddress 14.14.14.1 removed due to enabling VRF vpn1
R1(config-if)#ip add 14.14.14.1255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#ip vrf vpn1
R1(config-vrf)#route-target both 100:1
R1(config-vrf)#exit
2、R3
R3(config)#ip vrf vpn1
R3(config-vrf)#rd 100:1
R3(config-vrf)#route-target both 100:1
R3(config-vrf)#exit
R3(config)#int f0/0
R3(config-if)#ip vrf forwarding vpn1
% Interface FastEthernet0/0 IPaddress 36.36.36.3 removed due to enabling VRF vpn1
R3(config-if)#ip add 36.36.36.3255.255.255.0
R3(config-if)#no shut
R3(config-if)#exit
6)PE和CE路由器之間配置動態路由協議(ospf、rip)。
1、R1
R1(config)#router os 2 vrf vpn1
R1(config-router)#net 14.14.14.0 0.0.0.255a 0
R1(config-router)#exit
2、R3
R3(config)#router rip
R3(config-router)#address-family ip vrfvpn1
R3(config-router-af)#version 2
R3(config-router-af)#no au
R3(config-router-af)#net 36.36.36.0
R3(config-router-af)#exit
7)配置BGP協議。
1、R1
R1(config)#router bgp 100
R1(config-router)#nei 3.3.3.3 remote-as 100
R1(config-router)#nei 3.3.3.3 update-sourceloopback 0
R1(config-router)#nei 3.3.3.3 next-hop-self
R1(config-router)#address-family vpnv4
R1(config-router-af)#nei 3.3.3.3 activate
R1(config-router-af)#nei 3.3.3.3send-community both
R1(config-router-af)#exit
2、R3
R3(config)#router bgp 100
R3(config-router)#nei 1.1.1.1 remote-as 100
R3(config-router)#nei 1.1.1.1 update-sourceloopback 0
*Mar 1 01:59:08.039: %BGP-5-ADJCHANGE: neighbor 1.1.1.1 Up
R3(config-router)#nei 1.1.1.1 next-hop-self
R3(config-router)#address-family vpnv4
R3(config-router-af)#nei 1.1.1.1 activate
*Mar 1 01:59:57.419: %BGP-5-ADJCHANGE: neighbor1.1.1.1 Down Address family activated
*Mar 1 01:59:59.583: %BGP-5-ADJCHANGE: neighbor 1.1.1.1 Up
R3(config-router-af)#nei 1.1.1.1send-community both
R3(config-router-af)#exit
8)私網路由條目重分佈進公網。
1、R4
R4(config)#router os 2
R4(config-router)#net 14.14.14.0 0.0.0.255a 0
*Mar 1 02:29:31.707: %OSPF-5-ADJCHG: Process 2,Nbr 14.14.14.1 on FastEthernet1/0 from LOADING to FULL, Loading Done
R4(config-router)#redistribute rip
% Only classful networks will beredistributed
R4(config-router)#redistribute rip subnets
R4(config-router)#exit
2、R1
R1#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R1(config)#router bgp 100
R1(config-router)#address-family ipv4 vrfvpn1
R1(config-router-af)#redistributeospf 2 vrf vpn1 match internal external 1 external 2
R1(config-router-af)#exit
3、R3
R3#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R3(config)#router bgp 100
R3(config-router)#address-family ipv4 vrfvpn1
R3(config-router-af)#redistribute rip
R3(config-router-af)#exit
9)公網路由條目重分佈進私網。
1、R1
R1(config)#router os 2
R1(config-router)#redistribute bgp 100subnets
R1(config-router)#exit
2、R3
R3#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R3(config)#router rip
R3(config-router)#address-family ipv4 vrfvpn1
R3(config-router-af)#redistribute bgp 100metric 10
R3(config-router-af)#exit
3、R4
R4#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R4(config)#router rip
R4(config-router)#redistribute ospf 2metric 10
R4(config-router)#exit
10) 查看路由表。
(2) 說明MPLS/VPN的工作原理,抓包輔助說明。
1)MPLS/VPN的工作原理。
MPLS/VPN是一種三層VPN,也是實施最爲廣泛的一種MPLS技術。MPLS/VPN是指採用MPLS(多協議標記轉換)技術在骨幹的寬帶IP網絡上構建企業IP專網,實現跨地域、安全、高速、可靠的數據、語音、圖像多業務通信,並結合差別服務、流量工程等相關技術,將公衆網可靠的性能、良好的擴展性、豐富的功能與專用網的安全 、靈活、高效結合在一起。
MPLS/VPN網絡主要由CE、PE和P等3部分組成:
CE(Customer Edge Router)用戶網絡邊緣路由器設備,直接與服務提供商網絡相連,它“感知”不到VPN的存在;
PE(Provider Edge Router)服務提供商邊緣路由器設備,與用戶的CE直接相連,負責VPN業務接入,處理VPN-IPv4路由,是MPLS三層VPN的主要實現者;
P(Provider Router)服務提供商核心路由器設備,負責快速轉發數據,不與CE直接相連。
在整個MPLS/VPN中,P、PE設備需要支持MPLS的基本功能,CE設備不必支持MPLS。
MPLS/VPN的網絡採用標籤交換,一個標籤對應一個用戶數據流,非常易於用戶間數據的隔離,利用區分服務體系可以輕易地解決困擾傳統IP網絡的QoS/CoS問題,MPLS自身提供流量工程的能力,可以最大限度地優化配置網絡資源,自動快速修復網絡故障,提供高可用性和高可靠性。
1、虛擬路由轉發VRF(virtual routing forwarding)
VRF是一種VPN路由和轉發的實例。包括三部分:與私網(用戶)相關的路由表、CE與PE相連的PE端口和CE與PE間的動態路由協議。每一個獨立的VRF都有一張獨立的路由表。因爲在PE路由器上的路由需要被相互隔離,以確保對每一個用戶VPN的私有性,這張私有路由表就被稱爲VRF路由表。在PE路由器上,存在有多個VRF表,這些VRF表是和PE路由器上的一個或多個子接口相對應的,用於存放這些子接口所屬VPN的路由信息。通常情況下,VRF表中只包含一個VPN的路由信息,但是當子接口屬於多個VPN時,其所對應的VRF表中就包含了子接口所屬的所有VPN的路由信息。VRF路由表和ciscoIOS的全局路由表是沒有什麼區別的,只不過這個路由表僅僅是對某一個VRF有效,並且和其他的路由表之間是完全隔離開的。不同的VRF就像把路由器從邏輯上劃分成了不同的子路由器一樣的概念,一個實際的物理路由器成爲了多個虛擬邏輯路由器。
對於每一個VRF,都具有路由區分符(Route Distinguisher:RD)和路由目標(Route Target:RT)兩大屬性。
2、路由區分符RD(route distinguish)
RD是VRF路由區分符,RD具有全局唯一性,解決地址衝突問題,VPNV4前綴=RD+IPv4前綴。RD是一個64比特的字段,用於在MP-BGP運載VRF前綴時,確保這些前綴的唯一性。VPN-IPv4地址對客戶端設備來說是不可見的,它只用於骨幹網絡上路由信息的分發。RD並不會說明該前綴屬於哪個VRF,RD的功能並不是VPN標示符,因爲在一些更爲複雜得環境中,可能一個VPN存在多個RD。在PE路由器上的每個VRF實例必須要分配一個RD,格式爲:ASN:nn或者IP address:NN,nn代表數字。
理論上可以爲每個VPN實例配置一個RD。通常建議爲每個VPN都配置相同的RD,不同的VPN配置不同的RD。但是實際上只要保證存在相同地址的兩個VPN實例的RD不同即可,不同的VPN可以配置相同的RD,相同的VPN也可以配置不同的RD。
如果兩個VPN實例中存在相同的地址,則一定要配置不同的RD,而且兩個VPN實例一定不能互訪,間接互訪也不成。
RD並不會影響不同VPN實例之間的路由選擇以及VPN的形成,這些事情由RT搞定。
PE從CE接收的標準的路由是IPv4路由,如果需要發佈給其他的PE路由器,此時需要爲這條路由附加一個RD。
3、路由目標RT(Route target)
對於VRF的唯一標識符是用的RD,而核心網PE到PE的路由傳輸則用的是Route Target。一個RT是一個BGP擴展團體,說明了哪些路由需要從MP-BGP中注入到VRF,它決定VPN路由的收發和過濾,PE依靠RT屬性區分不同VPN之間路由。RT分爲Routetarget export和Route target import。Route target export表示輸出的VPNv4路由收到了額外的BGP擴展團體,在一個VPN實例中,在發佈路由時應給路由條目帶上什麼RD;Route target import從MP-BGP那裏收到的Vpnv4路由覈查可以匹配的擴展團體。如果最終找到了匹配的RT,這個前綴會以IPv4路由的身份被添加到VRF路由表中,否則該前綴會被拒絕。
4、MPLS-BGP
對於使用了擴展屬性MP_REACH_NLRI和擴展團體屬性RT的BGP,我們稱之爲MP-BGP協議。
BGP-4僅僅支持IPv4,MP-BGP是爲了讓BGP可以用於傳輸更多協議(IPv6,IPX,...)的路由信息而進行的擴展。
爲了保持兼容性,MP-BGP僅僅添加了兩個BGP屬性:MP_REACH_NLRI( MP_UNREACH_NLRI )和擴展團體屬性。
MP_REACH_NLRI(MP_UNREACH_NLRI )可以用在BGP Update消息中用於通告或廢止網絡可達性信息。
5、MPLS/VPN的工作原理
前提是PE路由器的各個VPN實例上都配置了RT規則,在發佈路由時應給路由條目帶上什麼RD;帶有什麼RD的路由條目可以進到哪個VPN裏。
a) 標籤分配:
PE和P路由器通過骨幹網具有到bgp下一跳的可達性;通過運行IGP和LDP,分配標籤,建立LSP,獲得到BGP下一跳的LSP通道。PE知道自己的直連網段,將此網段視爲FEC,併爲此FEC分配了本地標籤,然後將本地標籤與FEC關聯起來,形成一個映射關係(本地標籤:FEC),此映射關係用來指導自己對此網段爲目的IP的數據包進行操作。PE將這個映射關係發送給自己的上游路由器。上游路由器收到消息後,將此網段視爲FEC,併爲此FEC分配了本地標籤,然後將本地標籤與FEC關聯起來,形成一個映射關係(本地標籤:FEC),此映射關係用來指導自己對此網段爲目的IP的數據包進行操作——將我的本地標籤交換爲下游路由器標籤。以此類推,建立LSP。
b) 傳遞路由條目:
PE和CE路由器交換路由信息,CE運行標準路由協議。PE維護獨立的路由表:公網路由表和VPN實例的私網路由表。PE知道路由條目是從哪個端口進來的,因爲這個端口對應某一個VPN,所以PE查詢對應VPN實例的路由表,將路由條目學習進去。PE要將此路由條目通過MPLS/VPN骨幹網發佈本地的VPN路由信息發送給MP-BGP鄰居,發送端 PE通過使用 MP-iBGP 將VPN實例路由利用export-target屬性,讓路由條目攜帶上RD和標籤,從本地發佈出去。接受PE 收到VPN-IPv4的MP-iBGPupdates 時,判斷收到的export是否與本地的VPN實例的import相等(帶有什麼RD的路由條目可以進到哪個VPN裏),相等就加入到相應的VPN實例路由表中,否則丟棄。VPN-v4 路由變爲IPV4路由。私網標籤保留,留做轉發時使用。再由本VPN實例的路由協議引入並轉發給相應的CE。
c) 發送數據包:
入口PE收到CE的普通IP報文後,PE根據入接口所屬的VPN實例查看相應的VPN轉發表,查找下一跳和標籤。爲報文打上外層標籤(用來指示如何到達BGP下一跳)和內層標籤(表示報文的出接口或者屬於哪個VPN實例(屬於哪個VPN)),形成標籤棧。倒數第二跳路由器彈出外層標籤,根據下一跳發送至出口PE,出口PE路由器根據內層標籤判斷報文是去向哪個CE,彈出內層標籤,用普通IP報文向目的CE進行轉發。
2)抓包輔助說明MPLS/VPN的工作原理。
1、RD和RT(截圖以R1發給R3的BGP update報文爲例,R3發給R1的BGP update報文同理)
BGP update報文的拓展屬性中可看到RD=100:1。
BGP update報文的拓展屬性中可看到RT爲100:1。
2 、MPLS-BGP(以R5 ping R7環回爲例)
R4將源IP爲10.1.1.5,目標IP爲7.7.7.7的ping(request)包轉發給R1,IP層TTL減一,request數據包從R1出去後,被添加了兩層標籤,有兩層MPLS層。頂層MPLS層標籤號爲17,是MPLS的標籤;底層MPLS層標籤號爲20,是BGP的標籤。(數據包過來後,R1查去LAN2中的7.7.7.7的標籤,查到出標籤是20,添加底層標籤,又查vrf路由表,發現去往7.7.7.7的下一跳爲3.3.3.3,查mpls轉發表,查到mpls域中去往3.3.3.3的數據包應打上編號爲17的標籤,添加頂層標籤。)兩個MPLS層的TTL直接與IP層的TTL相等,均爲253。
通過show ip bgp vpnv4 all labels命令,可以查看bgp標籤表,當目標地址爲7.7.7.7時,R1會給數據包打上編號爲20的底層標籤。
也可以通過R1在發ping(request)包前,R3發送給R1的BGP update數據包中得到去往7.7.7.7應該打上什麼底層標籤。
通過show ip route vrf vpn1命令,可以查看R1的vrf路由表,當目標地址爲7.7.7.7時,可知下一跳爲3.3.3.3。
也可以通過R1在發ping(request)包前,R3發送給R1的BGP update數據包中得到去往7.7.7.7的下一跳爲3.3.3.3。
通過show mpls forwarding-table命令,可以查看R1的mpls轉發表LFIB,當目標地址爲3.3.3.3時,R1會給數據包打上編號爲17的頂層標籤。
(3) 在R5上ping通R7,結合MPLS/VPN工作原理說明數據包的傳輸過程,抓包說明。(R5 ping通R7環回)
1)R5給R4發送源IP爲10.1.1.5,目標IP爲7.7.7.7的ping(request)包,且IP層TTL爲255。
2)R4將源IP爲10.1.1.5,目標IP爲7.7.7.7的ping(request)包轉發給R1,在進入MPLS域之前,request數據包只有IP層,沒有MPLS層,且IP層TTL爲254。
3)R4將源IP爲10.1.1.5,目標IP爲7.7.7.7的ping(request)包轉發給R1,IP層TTL減一,request數據包從R1出去後,被添加了兩層標籤,有兩層MPLS層。頂層MPLS層標籤號爲17,是MPLS的標籤;底層MPLS層標籤號爲20,是BGP的標籤。(數據包過來後,R1查去LAN2中的7.7.7.7的標籤,查到出標籤是20,添加底層標籤,又查vrf路由表,發現去往7.7.7.7的下一跳爲3.3.3.3,查mpls轉發表,查到mpls域中去往3.3.3.3的數據包應打上編號爲17的標籤,添加頂層標籤。)兩個MPLS層的TTL直接與IP層的TTL相等,均爲253。
通過show ip bgp vpnv4 all labels命令,可以查看bgp標籤表,當目標地址爲7.7.7.7時,R1會給數據包打上編號爲20的底層標籤。
也可以通過R1在發ping(request)包前,R3發送給R1的BGP update數據包中得到去往7.7.7.7應該打上什麼底層標籤。
通過show ip route vrf vpn1命令,可以查看R1的vrf路由表,當目標地址爲7.7.7.7時,可知下一跳爲3.3.3.3。
也可以通過R1在發ping(request)包前,R3發送給R1的BGP update數據包中得到去往7.7.7.7的下一跳爲3.3.3.3。
通過show mpls forwarding-table命令,可以查看R1的mpls轉發表LFIB,當目標地址爲3.3.3.3時,R1會給數據包打上編號爲17的頂層標籤。
4)R1將源IP爲10.1.1.5,目標IP爲7.7.7.7的ping(request)包轉發給R2,request數據包進入R2後,兩層MPLS層的TTL減一爲252,IP層的TTL不變,爲253。倒數第二跳彈出,去除標籤(因爲3.3.3.3是R3的環回,直連,R2爲倒數第二跳,倒數第一跳是R3)。數據包從R2出去,有一層MPLS層(原底層MPLS層),也有IP層。現頂層MPLS層(原底層MPLS層)標籤號爲20,是BGP的標籤,是爲去LAN2中的7.7.7.7打的標籤。
通過show mpls forwarding-table命令,可以查看R2的mpls轉發表LFIB,當目標地址爲3.3.3.3時,R2會倒數第二跳彈出,去除標籤。
5)R2將源IP爲10.1.1.5,目標IP爲7.7.7.7的ping(request)包轉發給R3, request數據包進入R3後,MPLS層的TTL減一爲251,賦給IP層的TTL,去除標籤號爲20的標籤。數據包從R3出去,沒有MPLS層,只有IP層,IP層的TTL爲251。
6)R6將源IP爲10.1.1.5,目標IP爲7.7.7.7的ping(request)包轉發給R7,且IP層TTL爲250。
7)R7將源IP爲7.7.7.7,目標IP爲10.1.1.5的ping(reply)包轉發給R6,且IP層TTL爲255。
8)R6將源IP爲7.7.7.7,目標IP爲10.1.1.5的ping(reply)包轉發給R3,在進入MPLS域之前,reply數據包只有IP層,沒有MPLS層,且IP層TTL爲254。
9)R6將源IP爲7.7.7.7,目標IP爲10.1.1.5的ping(rely)包轉發給R3,IP層TTL減一,reply數據包從R3出去後,被添加了兩層標籤,有兩層MPLS層。頂層MPLS層標籤號爲16,是MPLS的標籤;底層MPLS層標籤號爲21,是BGP的標籤。(數據包過來後,R3查去LAN1中的10.1.1.5的標籤,查到出標籤是21,添加底層標籤,又查vrf路由表,發現去往10.1.1.5的下一跳爲1.1.1.1,查mpls轉發表,查到mpls域中去往1.1.1.1的數據包應打上編號爲16的標籤,添加頂層標籤。)兩個MPLS層的TTL直接與IP層的TTL相等,均爲253。
通過show ip bgp vpnv4 all labels命令,可以查看bgp標籤表,當目標地址爲10.1.1.5時,R3會給數據包打上編號爲21的底層標籤。
也可以通過R3在發ping(reply)包前,R1發送給R3的BGP update數據包中得到去往10.1.1.5應該打上什麼底層標籤。
通過show ip route vrf vpn1命令,可以查看R3的vrf路由表,當目標地址爲10.1.1.5時,可知下一跳爲1.1.1.1。
也可以通過R3在發ping(reply)包前,R1發送給R3的BGP update數據包中得到去往10.1.1.5的下一跳爲1.1.1.1。
通過show mpls forwarding-table命令,可以查看R3的mpls轉發表LFIB,當目標地址爲1.1.1.1時,R3會給數據包打上編號爲16的頂層標籤。
10) R3將源IP爲7.7.7.7,目標IP爲10.1.1.5的ping(reply)包轉發給R2,reply數據包進入R2後,兩層MPLS層的TTL減一爲252,IP層的TTL不變,爲253。倒數第二跳彈出,去除標籤(因爲1.1.1.1是R1的環回,直連,R2爲倒數第二跳,倒數第一跳是R1)。數據包從R2出去,有一層MPLS層(原底層MPLS層),也有IP層。現頂層MPLS層(原底層MPLS層)標籤號爲21,是BGP的標籤,是爲去LAN1中的10.1.1.5打的標籤。
通過show mpls forwarding-table命令,可以查看R2的mpls轉發表LFIB,當目標地址爲1.1.1.1時,R2會倒數第二跳彈出,去除標籤。
11) R2將源IP爲7.7.7.7,目標IP爲10.1.1.5的ping(reply)包轉發給R1, reply數據包進入R1後,MPLS層的TTL減一爲251,賦給IP層的TTL,去除標籤號爲21的標籤。數據包從R1出去,沒有MPLS層,只有IP層,IP層的TTL爲251。
12) R4將源IP爲7.7.7.7,目標IP爲10.1.1.5的ping(reply)包轉發給R5,且IP層TTL爲250。