目录
2、入口PE--出口PE的问题设备的问题:路由在传输中的冲突问题
3、PE--CE的问题:MPBGP路由引入VRF(虚拟路由表)的问题
1)--MPLS最初是为了提高路由器的转发速度而提出的,与传统IP路由方式相比,它在数据转发时,只在网络边缘分析IP报文头,而不用在每一跳都分析IP报文头,节约了处理时间。
????????--随着专用集成电路技术的发展,路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势。但是MPLS支持多层标签的特性,使其在VPN、流量工程、QoS等方面得到广泛应用。
2) 思考解决不同公司之间互通方案:
????????特点:专有线路,价格昂贵,安全性高,带宽浪费
????????特点:成本低
????????????????使用共享的公共网络环境实现各私网的连接
????????????????不同的私有网络之间相互不可见
1)VPN有很多,二层(l2tp vpn)、三层(gre/ipsec) 、 应用层(SSL)
1)传统的VPN:
????????--运营商通常仅仅是提供链路的互通,vpn的配置在企业端完成
????????--通常也称为 overlay vpn 覆盖型vpn或者叠加型vpn
2)新型的VPN:
????????--运营商不仅仅提供链路的互通,还可以帮助企业用户来管理路由,实现vpn互通
????????--通常也称为 peer to peer vpn 点到点vpn
????????--比如:mpls-vpn
1)客户网络:
????????--C设备--企业内部设备(也叫站点)
????????--CE设备--企业边界设备
2)运营商设备
????????--P设备--运营商骨干设备
????????--PE设备--运营商边界设备(该设备与企业客户设备相连)
3)需要注意的点
????????--CE-PE之间:如何转发数据
????????--PE-PE之间,如何转发数据:要运行bgp 协议
????????—PE-CE之间,如何转发数据
备注:VPN:虚拟专用网:作用:实现两个不同区域的局域网之间的互联互通,使用私有地址通信
备注:一个城市可能有非常多的企业来租用运营商的VPN,运营商不可能每一个公司都准备一台PE设备,成本太高,所以就可能会出现,一个PE设备,连接多个公司,这些公司在运营商那边称为VPN客户
1)存在问题:一个PE设备,非常可能同时连接多个VPN客户(多个公司),所带来的问题
#IP地址空间重叠:不同的VPN客户内部可能会使相同的私有地址段,所以所传递的路由有可能是重复的
#数据泄露:不同的VPN客户都与PE(R1)有路由,所以不同的VPN客户之间有可能实现数据的互相访问
需求:北京的千度总部要和上海的千度分公司互通 源IP:192.168.1.1/24 目的IP:192.168.2.1/24 实现北京总部的主机,和上海分公司的主机,实现内网和内网的通信,走vpn隧道 北京的阿里妈妈总部要和上海的阿里妈妈分公司互通 源IP:192.168.1.1/24 目的IP:192.168.2.1/24 存在的问题:地址重叠,无法转发 千度数据报文和阿里妈妈数据报文,源IP都是192.168.1.1/24 地址重叠 我们需要解决这个问题 解决方案1: 购买多台PE,够没多台P设备,购买100万台,可以解决问题 但是运营商不干,成本太高---这个方案不通过 解决方案2:VRF:VPN Routing and Forward | Virtual Routing Forwarding VPN路由转发表 | 虚拟路由转发表 通过配置VPN路由表,给每一个公司分配一个独立的VPN路由表,而且VPN路由表是相互隔离的 所以我们成功的解决了客户(CE)端IP地址重叠的问题 但是我们的PE在收到路由后,还要把路由转发给骨干网中P设备 而PE设备在给P设备转发路由的时候,使用的是哪个唯一的公网路由表 又出现新的问题了,什么问题: 多条相同的路由192.168.1.0/24,在公网路由表又出现地址重叠了, 所以PE设备没有办法将这些相同的路由在公网中传递,P设备也无法接受,所以入口PE和出口PE无法交换路由信息 依然无法转发路由,怎么办? 需要继续增加新的解决方案? 新的解决方案叫做 RD: 路由标识符 所以,我们可以创建RD,并且把RD和ipv4地址绑定在一起 RD是8个字节(64个bit)+ipv4地址4个字节(32bit)==96个bit ==这个很长的新的地址叫做vpnv4地址 我们只要保证RD是全球唯一的,那么这个新的vpnv4地址就必然是全球唯一的 RD有两种书写方式 第一种: RD是8个字节,但是前面2个字节是类型,是固定值,不需要我们写,我们只需要写后面6个字节就可以 后面6个字节有两种写法: 1): 前面2个字节(AS号-自定义):后面4个字节(用户自定义) (前面范围: 0-65535) :(后面的范围:0-4291967295) 2):前面4个字节(写ipv4地址:点分十进制格式):后面两个字节(用户自定义) 举例:RD : 100:1 RD: 192.168.1.1:666
2)解决方案:
????????# 解决方案:VRF VPN Routing and Forward / Virtual Routing Forwarding
????????????????&:每一个客户(公司)对应一个VPN实例 (VPN路由表)
????????????????&:每一个VPN实例对应一个独立的VPN路由表
????????????????&:VPN路由表之间是相互隔离的
3) VRF配置步骤
????????#同一个vpn客户的总部和分公司的vpn-instance 命名 强烈建议一致,不同vpn客户的vpn-instance 命名不能一致
[R1] ip vpn-instance b1 //创建vpn-instance 并命名b1 ipv4-family //开启ipv4家族 [R1] int g0/0/1 ip binding vpn-instance b1 //接口绑定vpn 路由表b1 Info: All IPv4 related configurations on this interface are removed! Info: All IPv6 related configurations on this interface are removed! //这个接口下的所有的ipv4/ipv6都被清除了 ip address 192.168.16.1 24 //重新配置接口IP地址
4)验证与查询:
????????--用ping 命令验证,R6 ping R1(192.168.16.1) 是通过的
????????但是R1 ping R6 (192.168.16.6) 不通,
????????查看路由表,发现IP路由表里面没有去往192.168.16.0/24的直连路由,不仅没有路由,连接口也消失了,接口去哪里了?
验证R6和R1能否通信 先来验证R6 ping 192.168.16.1 ,可以ping通 <R6>ping 192.168.16.1 PING 192.168.16.1: 56 data bytes, press CTRL_C to break Reply from 192.168.16.1: bytes=56 Sequence=1 ttl=255 time=30 ms Reply from 192.168.16.1: bytes=56 Sequence=2 ttl=255 time=20 ms Reply from 192.168.16.1: bytes=56 Sequence=3 ttl=255 time=10 ms Reply from 192.168.16.1: bytes=56 Sequence=4 ttl=255 time=20 ms Reply from 192.168.16.1: bytes=56 Sequence=5 ttl=255 time=30 ms 再次验证:R1 ping 192.168.16.6,发现ping不通 [R1]ping 192.168.16.6 PING 192.168.16.6: 56 data bytes, press CTRL_C to break Request time out Request time out Request time out Request time out Request time out 经过验证,发现: -用ping 命令验证,R6 ping R1(192.168.16.1) 是通过的 -但是R1 ping R6 (192.168.16.6) 不通,怎么办 先查看路由表,看是否存在路由,经验证,发现IP路由表中没有去往16网段的路由 [R1]dis ip routing-table 192.168.16.6 [R1] 路由为空 而且不仅没有路由,连端口也消失了,所以ping不通 192.168.16.6 [R1]dis ip routing-table [R1] 在路由表中,别说路由了,连接口都消失的无影无踪了 我想问一问,我的路由哪里去了,我的接口哪里去了, 在呢里呢?在VPN路由表里面找找看 [R1]dis ip routing-table vpn-instance b1 Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: b1 Destinations : 4 Routes : 4 Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.16.0/24 Direct 0 0 D 192.168.16.1 GigabitEthernet0/0/1 192.168.16.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 192.168.16.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 备注#:发现,直连路由和接口在VPN路由表里! 原来的消失的接口偷偷的跑到VPN路由表里面来了,去往16网段的路由也在VPN路由表里 R1不是ping 不通 R6 (192.168.16.6) ,而是ping的姿势不正确, 正确姿势:ping -vpn-instance b1 192.168.16.6 再次验证,R1--R6看是否能通信,发现使用vpn路由表就可以成功和R6通信 [R1]ping -vpn-instance b1 192.168.16.6 PING 192.168.16.6: 56 data bytes, press CTRL_C to break Reply from 192.168.16.6: bytes=56 Sequence=1 ttl=255 time=10 ms Reply from 192.168.16.6: bytes=56 Sequence=2 ttl=255 time=30 ms Reply from 192.168.16.6: bytes=56 Sequence=3 ttl=255 time=30 ms Reply from 192.168.16.6: bytes=56 Sequence=4 ttl=255 time=30 ms Reply from 192.168.16.6: bytes=56 Sequence=5 ttl=255 time=20 ms 继续验证:R1能够ping R6 (192.168.1.1) 吗?不可以,VPN路由表没有路由 怎么办?配置静态路由:在R1上配置命令如下: [R1] ip route-static vpn-instance b1 192.168.1.0 24 192.168.16.6 验证:查看在VPN路由表中是否有新增的静态路由 <R1>dis ip routing-table vpn-instance b1 Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: b1 Destinations : 5 Routes : 5 Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.1.0/24 Static 60 0 RD 192.168.16.6 GigabitEthernet0/0/1 192.168.16.0/24 Direct 0 0 D 192.168.16.1 GigabitEthernet0/0/1 192.168.16.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 192.168.16.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 -继续验证:R1可以ping 通192.168.1.1/24 <R1>ping -vpn-instance b1 192.168.1.1 PING 192.168.1.1: 56 data bytes, press CTRL_C to break Reply from 192.168.1.1: bytes=56 Sequence=2 ttl=127 time=20 ms Reply from 192.168.1.1: bytes=56 Sequence=3 ttl=127 time=20 ms Reply from 192.168.1.1: bytes=56 Sequence=4 ttl=127 time=20 ms Reply from 192.168.1.1: bytes=56 Sequence=5 ttl=127 time=20 ms -继续验证:pc1 ping 192.168.16.1 ,可以通 PC>ping 192.168.16.1 Ping 192.168.16.1: 32 data bytes, Press Ctrl_C to break From 192.168.16.1: bytes=32 seq=1 ttl=254 time=16 ms From 192.168.16.1: bytes=32 seq=2 ttl=254 time=31 ms From 192.168.16.1: bytes=32 seq=3 ttl=254 time=16 ms 5)备注:企业的边界设备(CE-也就是R6)一定要配置默认路由 [R6] undo bgp 100 //先删除R6中原来配置BGP [R6] ip route-static 0.0.0.0 0.0.0.0 192.168.16.1 //记得在R6上配置默认路由 6)备注:参照R6和R1的配置,把R5和R7也配置一下 sys R5 # ip vpn-instance b1 ipv4-family # interface GigabitEthernet0/0/1 ip binding vpn-instance b1 ip address 192.168.57.5 255.255.255.0 # ip route-static vpn-instance b1 192.168.2.0 255.255.255.0 192.168.57.7 R7的配置: [R7] undo bgp 300 //先删除R7中原来配置BGP [R7]ip route-static 0.0.0.0 0.0.0.0 192.168.57.5
1)存在问题:
????????#PE设备保存VPN路由表和全局路由表,P设备只保存全局路由表
????????#PE设备利用VPN路由表解决了本地路由冲突(IP地址空间重叠)问题,但是PE设备在向P设备发送路由时,路由在骨干网络传输中还会出现路由冲突问题,如何解决?
2)解决方案:
????????# PE设备在维护多个VPN 路由表时,同时还维护一个公网的路由表。
????????# RD:路由标识符:使用一个全局唯一的标识 和ipv4地址绑定,以区分冲突的私网路由,这个标识被称为RD。
????????????????&:RD 字段长度:8字节---64bit
????????????????&:IPv4地址长度:4字节---32bit
????????????????&:RD(64)+IPv4(32)=96bit 的新地址,这个新地址就是VPNV4地址。
3)RD配置步骤
????????#[R1]ip vpn-instance b1
????????#[R1-vpn-instance-b1]route-distinguisher 1:5 //配置RD
????????#同一个vpn客户的总部和分公司的RD 强烈建议一致,不同vpn客户的RD 不能一致
4)思考:BGP协议可以识别带RD区分符的vpnv4地址吗? 如果不识别怎么办?
1)解决思路: 为了解决在公网路由表中,IP地址重叠,路由冲突问题,我们使用RD RD+ipv4地址==96个bit新地址,这个地址叫做vpnv4地址 我们要实现北京百度总部的PC1和上海百度分公司的PC2的互通,需要跨越AS200,所以需要BGP 但是BGP默认能够传递vpnv4地址吗,不能,所以我们要在BGP中开启vpnv4地址家族 让BGP可以识别vpnv4地址,传递vpnv4路由 在BGP中关闭ipv4邻居关系,配置vpnv4邻居, 这种可以传递vpnv4路由的BGP,也称为MP-BGP 2)配置步骤 R1的配置: [R1]bgp 200 [R1-bgp]router-id 1.1.1.1 [R1-bgp]peer 10.10.5.5 as 200 //和R5建立邻居 [R1-bgp]peer 10.10.5.5 connect-interface LoopBack 0 //使用loopback接口建立邻居 [R1-bgp]ipv4-family unicast //进入ipv4地址家族 [R1-bgp-af-ipv4]undo peer 10.10.5.5 enable //断开-ipv4邻居 [R1-bgp-af-ipv4]quit [R1-bgp]ipv4-family vpnv4 //进入vpnv4地址家族 [R1-bgp-af-vpnv4]peer 10.10.5.5 enable //开启vpnv4邻居 R5的配置: [R5]bgp 200 [R5-bgp]router-id 5.5.5.5 [R5-bgp]peer 10.10.1.1 as 200 [R5-bgp]peer 10.10.1.1 connect-interface LoopBack 0 [R5-bgp]ipv4-family unicast [R5-bgp-af-ipv4]undo peer 10.10.1.1 enable [R5-bgp-af-ipv4]quit [R5-bgp]ipv4-family vpnv4 [R5-bgp-af-vpnv4]peer 10.10.1.1 enable 3)验证:R1和R5 的 MP-BGP邻居是否建立 #[R1]display bgp vpnv4 all peer BGP local router ID : 1.1.1.1 Local AS number : 200 Total number of peers : 1 Peers in established state : 1 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 10.10.5.5 4 200 3 4 0 00:01:02 Established 0 备注:经过验证,R1和R5可以建立MP-BGP的邻居 -建立完邻居关系后怎么做,引入路由到MP-BGP -如何引入路由到MP-BGP? 4)引入路由到MP-BGP #[R1]display bgp vpnv4 all routing-table //查看有没有vpnv4路由 #虽然建立了MP-BGP邻居关系,但是并没有引入路由 #如何引入,看以下配置: #引入路由配置如下: [R1]bgp 200 [R1-bgp]ipv4-family vpn-instance b1 [R1-bgp-b1]network 192.168.1.0 24 [R5]bgp 200 [R5-bgp]ipv4-family vpn-instance b1 [R5-bgp-b1]network 192.168.2.0 24 5)继续验证: 在R1/R5上查看是否有路由? # [R1] display bgp vpnv4 all routing-table //查看MP-BGP 路由表 # [R1] display ip routing-table vpn-instance b1 //查看VPN路由表 #验证后发现R1和R5上只有自己引入的路由,并没有从对端邻居学来的路由 #所以继续检查: --R1有没有向邻居R5宣告路由? --R5有没有向邻居R1宣告路由? --是没有宣告,还是没有接收? #[R1]display bgp vpnv4 all routing-table peer 10.10.5.5 advertised-routes //宣告 #[R1]display bgp vpnv4 all routing-table peer 10.10.5.5 received-routes //接收 #[R5]display bgp vpnv4 all routing-table peer 10.10.1.1 advertised-routes #[R5]display bgp vpnv4 all routing-table peer 10.10.1.1 received-routes #经过验证,发现没有宣告,也没有接收!为什么?
1)问题描述
????????-MPLS VPN 的路由如如何引入到相对应的VRF
????????-PE和PE在全局路由表传递路由的依赖的是RD
????????-但是R5-PE收到来自R1-PE的MPBGP路由后,需要将这个RD去掉,然后在给到VRF虚拟路由表,由于PE设备中有可能连接了多个企业客户,有可能有多个VRF路由表,PE如何判断要把一个去掉RD的路由放到那个VRF路由表呢? 就是把路由传递给那个企业
2)解决方案:
????????# RT:路由标签
????????# 每一个企业所属的vpn路由,在进入全局路由表传输的时候,都会打上RT标签
????????# RT标签有出入两个方向,
????????????????集团总部的出标签(Export)===分公司的入标签(Import)
????????????????集团总部的入标签(Import)===分公司的出标签(Export)
备注:
????????-RT是BGP的扩展团体属性,它分为import RT 和export RT
分别用于路由的导入和导出,
????????-RT具有全局唯一性,并且只能被一个VPN使用
3) RT 配置步骤
# [R1]ip vpn-instance b1
# [R1-vpn-instance-b1]vpn-target 6:7 export-extcommunity //配置RT--出向
????????????????????????????????????????vpn-target 7:6 import-extcommunity //配置RT--入向
# [R5]ip vpn-instance b1
# [R5-vpn-instance-b1]vpn-target 6:7 import-extcommunity //配置RT--出向
????????????????????????????????????????vpn-target 7:6 export-extcommunity //配置RT--入向
4)在R1和R5上验证
#display bgp vpnv4 all routing-table
#display ip routing-table vpn-instance b1
#验证: PC1 和PC2互ping(抓包)
#在pc1上 ping 192.168.2.1
#在pc1上 tracert 192.168.2.1
--问题1:也叫本地路由冲突问题(IP地址空间重叠)-----解决方案:VRF
--问题2:路由在传输中的冲突问题----解决方案:RD
--问题3:对端VPN路由表里的VPN路由引入到对端VPN路由表的问题----解决方案:RT
pc1通过vpn访问pc2
第一步:配置接口地址
第二步:配置ospf
第三步:配置bgp
第四步:配置mpls
第五步:配置VRF
????????-创建VRF
????????-开启 ipv4-family
????????-接口加入VRF
????????-给接口重新配置地址
????????-配置静态路由
第六步:配置RD
????????--在VRF中配置RD
????????--在BGP--ipv4地址族中关闭邻居
????????--在BGP--vpnv4地址族中开启邻居
????????--在BGP中创建vpn-instance 并注入路由
第七步:配置RT
????????--在VRF中配置RT(出入方向)
第八步:验证
????????--验证vpn路由表
????????--验证pc1访问pc2
????????--验证标签转发路径
sysname R6 # interface GigabitEthernet0/0/0 ip address 192.168.16.6 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.1.254 255.255.255.0 # ip route-static 0.0.0.0 0.0.0.0 192.168.16.1 sysname R1 # ip vpn-instance b1 ipv4-family route-distinguisher 1:5 vpn-target 6:7 export-extcommunity vpn-target 7:6 import-extcommunity # mpls lsr-id 10.10.1.1 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip binding vpn-instance b1 ip address 192.168.16.1 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.12.1 255.255.255.0 mpls mpls ldp # interface LoopBack0 ip address 10.10.1.1 255.255.255.255 # bgp 200 router-id 1.1.1.1 peer 10.10.5.5 as-number 200 peer 10.10.5.5 connect-interface LoopBack0 # ipv4-family unicast undo peer 10.10.5.5 enable # ipv4-family vpnv4 policy vpn-target //不需要敲 peer 10.10.5.5 enable # ipv4-family vpn-instance b1 network 192.168.1.0 # ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.10.1.1 0.0.0.0 network 192.168.12.0 0.0.0.255 # ip route-static vpn-instance b1 192.168.1.0 255.255.255.0 192.168.16.6 sysname R2 # mpls lsr-id 10.10.2.2 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.12.2 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip address 192.168.23.2 255.255.255.0 mpls mpls ldp # interface LoopBack0 ip address 10.10.2.2 255.255.255.255 # ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 10.10.2.2 0.0.0.0 network 192.168.12.0 0.0.0.255 network 192.168.23.0 0.0.0.255 sysname R3 # mpls lsr-id 10.10.3.3 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.23.3 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip address 192.168.34.3 255.255.255.0 mpls mpls ldp # interface LoopBack0 ip address 10.10.3.3 255.255.255.255 # ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 10.10.3.3 0.0.0.0 network 192.168.23.0 0.0.0.255 network 192.168.34.0 0.0.0.255 sysname R4 # mpls lsr-id 10.10.4.4 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.34.4 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip address 192.168.45.4 255.255.255.0 mpls mpls ldp # interface LoopBack0 ip address 10.10.4.4 255.255.255.255 # ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 10.10.4.4 0.0.0.0 network 192.168.34.0 0.0.0.255 network 192.168.45.0 0.0.0.255 sysname R5 # ip vpn-instance b1 ipv4-family route-distinguisher 1:5 vpn-target 7:6 export-extcommunity vpn-target 6:7 import-extcommunity # mpls lsr-id 10.10.5.5 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.45.5 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip binding vpn-instance b1 ip address 192.168.57.5 255.255.255.0 # interface LoopBack0 ip address 10.10.5.5 255.255.255.255 # bgp 200 router-id 5.5.5.5 peer 10.10.1.1 as-number 200 peer 10.10.1.1 connect-interface LoopBack0 # ipv4-family unicast undo peer 10.10.1.1 enable # ipv4-family vpnv4 policy vpn-target //不需要敲 peer 10.10.1.1 enable # ipv4-family vpn-instance b1 network 192.168.2.0 # ospf 1 router-id 5.5.5.5 area 0.0.0.0 network 10.10.5.5 0.0.0.0 network 192.168.45.0 0.0.0.255 # ip route-static vpn-instance b1 192.168.2.0 255.255.255.0 192.168.57.7 sysname R7 # interface GigabitEthernet0/0/0 ip address 192.168.57.7 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.2.254 255.255.255.0 # ip route-static 0.0.0.0 0.0.0.0 192.168.57.5
1、PC1 访问目标IP地址,192.168.2.1,基于自己的子网掩码,从而判断目标与自己不是一个网段,所以将数据包发送给网关R6。
2、R6接收到该数据包以后,直接查看路由表:display ip routing-table 192.168.2.1,确定按照默认路由,转发给PE-R1。
3.PE-R1在接口 Gi0/0/1 接收到该数据包,因为g0/0/1接口属于 vpn-instance b1 ,所以R1应该查找vpn-instance b1 的路由表
<R1>display ip routing-table vpn-instance b1 192.168.2.1 verbose
&:通过以上信息可知:
#并且该路由是携带者“标签”的 ---- Label:1028 ;
#但是,想要去往 192.168.2.1 ,必须得首先去往下一跳IP地址:10.10.5.5 ;
#但是,去往该下一跳IP地址的时候,需要走的是标签隧道,因为 TunnelID 是 0x7,即非0。
# 所以,我们接下来需要查看本地的“标签转发表”的详细信息:要找到某个 LSP 的 Token 的数值为 0x7 。
<R1>display mpls lsp verbose
&通过以上信息可知:
#数据包应该从 Gi0/0/0 转发出去,并且再次添加一个出向标签(out-label:1027),所以,在 R1-R2之间抓包,我们会发现,此时的数据结构应该是:
【2层头部】+【1027】+【1028】+【IP头部】+数据+【2层头部校验和】
备注:分析源地址为:192.168.1.1 ,目标地址为192.168.2.1的包
4、数据包从R1发送出来,到了R2后,R2能够辨别出:当前收到的数据包是一个“标签”包,所以 R2 应该查找自己本地的“标签转发表”。
#因为该数据包,带了多个标签,所以必须得注意: 查找标签的时候,仅仅关注“顶层标签”, 所以我们要在 R2 的标签转发表中,找到一个条目,关注入向标签是:1027
<R2>display mpls lsp
&通过以上信息可知:
#我们需要将标签 1027,交换成 1025 , 然后从端口 Gi0/0/1 转发出去,此时的数据包结构是:
【2层头部】+【1025】+【1028】+【IP头部】+数据+【2层头部校验和】
5、数据包从R2发送出来,到了R3后,R3能够辨别出:当前收到的数据包是一个“标签”包;
所以 R3 应该查找自己本地的“标签转发表”。
因为该数据包,带了多个标签,所以必须得注意: 查找标签的时候,仅仅关注“顶层标签”。
所以我们要在 R3 的标签转发表中,找到一个条目,关注入向标签是:1025
<R3>display mpls lsp
&通过以上信息可知:(1025交换成1025是巧合)
#我们需要将标签 1025,交换成 1025 , 然后从端口 Gi0/0/1 转发出去,此时的数据包结构是:
【2层头部】+【1025】+【1028】+【IP头部】+数据+【2层头部校验和】
6、数据包从R3发送出来,到了R4后,R4能够辨别出:当前收到的数据包是一个“标签”包;
所以 R4应该查找自己本地的“标签转发表”。
因为该数据包,带了多个标签,所以必须得注意: 查找标签的时候,仅仅关注“顶层标签”。
所以我们要在 R4 的标签转发表中,找到一个条目,关注入向标签是:1025
<R4>display mpls lsp
&通过以上信息可知:
#我们需要将标签 1025,交换成 3 , 然后从端口 Gi0/0/1 转发出去。标签3为隐士空标签,就是将标签1025弹掉。
此时的数据包结构是:
【2层头部】+【1028】+【IP头部】+数据+【2层头部校验和】
7.数据包从R4发送出来,到了R5后,R5能够辨别出:当前收到的数据包是一个“标签”包,所以 R5 应该查找自己本地的“标签转发表”。
#此时,该数据包仅仅携带了1个标签,所以我们要在 R5 的标签转发表中,找到一个条目,关注入向标签是:1028
<R5>display mpls lsp
&通过以上信息可知:应该将数据包中的标签 1028 干掉,因为对标签的出向动作设置的是 Null (空)
#但是, 在这个标签转发条目中,又没有明确的说明“出端口”到底是谁?仅仅是告诉我们应该去查找“虚拟路由表” - b1 。
#因为, 前面的标签处理动作是Null,所以现在的数据包应该是一个标准的 “ IP 数据包” 。
#所以, 我们应该查找R5的VPN路由表,信息如下:
<R5>display ip routing-table vpn-instance b1 192.168.2.1
&通过以上信息可知:目的地址段的下一跳为R7,数据包发送给R7 。
#按照上述同样的过程: R7 返回给 192.168.1.1 的数据包,也是可以顺利返回给 R6 的。
备注:在MPLS VPN中,分配标签的不仅仅是LDP协议,还有MP-BGP协议
给IBGP路由:192.168.1.0/24 和192.168.2.0/24 分配标签的是 MP-BGP协议
分配的底层标签
LDP协议是给10.10.1.1 /10.10.2.2/10.10.3.3/10.10.4.4/10.10.5.5 分配的标签
是顶层标签
在数据转发的过程中,LDP的顶层标签不断交换,是BGP底层标签一致不变