MPLS VPN的基本概念与配置(HCIP完整版)

目录

一、MPLS VPN

1、产生背景

2、VPN分类

3、运营商VPN分类:

4、mpls-vpn 架构

二、MPLS VPN存在哪些问题:

1、CE--PE之间的问题:本地路由冲突问题

2、入口PE--出口PE的问题设备的问题:路由在传输中的冲突问题

3、PE--CE的问题:MPBGP路由引入VRF(虚拟路由表)的问题

4、3大问题对应的解决方案:

三、MPLS-VPN实验

1、拓扑

2、需求:

3、配置思路

4、完整实验命令

四、数据转发流程


一、MPLS VPN

1、产生背景

1)--MPLS最初是为了提高路由器的转发速度而提出的,与传统IP路由方式相比,它在数据转发时,只在网络边缘分析IP报文头,而不用在每一跳都分析IP报文头,节约了处理时间。

        --随着专用集成电路技术的发展,路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势。但是MPLS支持多层标签的特性,使其在VPN、流量工程、QoS等方面得到广泛应用。

2) 思考解决不同公司之间互通方案:

  • 专线:单独铺一条光纤,自己用,相当于自己铺的铁路

        特点:专有线路,价格昂贵,安全性高,带宽浪费

  • vpn(虚拟专用网络) :在公网中传递私网路由,在互联网中划分了一个单独的通道,相当于不用自己铺铁路,带个个小板凳,坐在火车里面给你捎过去了。

        特点:成本低

                使用共享的公共网络环境实现各私网的连接

                不同的私有网络之间相互不可见

2、VPN分类

1)VPN有很多,二层(l2tp vpn)、三层(gre/ipsec) 、 应用层(SSL)

3、运营商VPN分类:

1)传统的VPN:

        --运营商通常仅仅是提供链路的互通,vpn的配置在企业端完成

        --通常也称为 overlay vpn 覆盖型vpn或者叠加型vpn

2)新型的VPN:

        --运营商不仅仅提供链路的互通,还可以帮助企业用户来管理路由,实现vpn互通

        --通常也称为 peer to peer vpn 点到点vpn

        --比如:mpls-vpn

4、mpls-vpn 架构

1)客户网络:

        --C设备--企业内部设备(也叫站点)

        --CE设备--企业边界设备

2)运营商设备

        --P设备--运营商骨干设备

        --PE设备--运营商边界设备(该设备与企业客户设备相连)

3)需要注意的点

        --CE-PE之间:如何转发数据

        --PE-PE之间,如何转发数据:要运行bgp 协议

        —PE-CE之间,如何转发数据

二、MPLS VPN存在哪些问题:

1、CE--PE之间的问题:本地路由冲突问题

备注: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

2、入口PE--出口PE的问题设备的问题:路由在传输中的冲突问题

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 

#经过验证,发现没有宣告,也没有接收!为什么?
3、PE--CE的问题:MPBGP路由引入VRF(虚拟路由表)的问题

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

4、3大问题对应的解决方案:

--问题1:也叫本地路由冲突问题(IP地址空间重叠)-----解决方案:VRF

--问题2:路由在传输中的冲突问题----解决方案:RD

--问题3:对端VPN路由表里的VPN路由引入到对端VPN路由表的问题----解决方案:RT

三、MPLS-VPN实验

1、拓扑

2、需求:

pc1通过vpn访问pc2

3、配置思路

第一步:配置接口地址

第二步:配置ospf

第三步:配置bgp

第四步:配置mpls

第五步:配置VRF

        -创建VRF

        -开启 ipv4-family

        -接口加入VRF

        -给接口重新配置地址

        -配置静态路由

第六步:配置RD

        --在VRF中配置RD

        --在BGP--ipv4地址族中关闭邻居

        --在BGP--vpnv4地址族中开启邻居

        --在BGP中创建vpn-instance 并注入路由

第七步:配置RT

        --在VRF中配置RT(出入方向)

第八步:验证

        --验证vpn路由表

        --验证pc1访问pc2

        --验证标签转发路径

4、完整实验命令
  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底层标签一致不变

  • 39
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值