实验拓扑
实验需求
CE1模拟客户A的站点1设备,CE2模拟客户A的站点2设备,CE1及CE2上各有一个Loopback接口用来模拟站点内的客户路由。
CE1与PE1之间,CE2与PE2之间运行的PE-CE路由协议是OSPF,使用进程号1。
Backbone内使用OSPF打通骨干内的路由,OSPF使用进程号100。
PE1及PE2建立基于Loopback的MP-iBGP邻居关系。
完成相关配置,使得客户A的两个站点能够互通。
实验步骤
1.Backbone内运行OSPF,统一使用进程号100
在PE1、P1、P2、PE2上运行OSPF。运行该OSPF进程的目的是为了打通Backbone内的路由,四台路由器都要通告自己的Loopback0网段路由。这个IGP打通的路由一方面是为了LDP能够建立起邻接关系,并且能够正常的分发标签,另一方面也是为了PE1及PE2之间能够建立起基于Loopback的MP-iBGP邻居关系。
2.Backbone内运行LDP
在PE1、P1、P2、PE2上运行MPLS及LDP。我的设备上,LDP开始工作后,缺省情况下即会为/32的主机路由捆绑并分发标签。骨干网内四台路由器的Loopback路由都会建立LSP。这为后续的客户数据转发做了铺垫。
3.PE1及PE2创建VPN实例,并运行PE-CE路由协议
在PE1及PE2上创建一个VPN实例,命令为ABC,将连接到CE的接口添加到这个VPN实例中。同时PE1、PE2均与自己直连的CE路由器运行一个基于VPN实例的OSPF进程,统一使用进程号1。务必要注意的是这个OSPF进程是基于VPN实例ABC(也就是基于虚拟路由器)的,而不是基于全局路由器的。
4.PE1及PE2创建MP-BGP进程,并且建立MP-iBGP邻居关系
PE1及PE2基于Loopback建立MP-iBGP邻居关系,激活二者的VPNv4连接。
5.PE1及PE2上配置VPN路由与BGP路由的互重发布
由于PE-CE之间选用的路由协议是OSPF,因此为了将路由拉通,需要在两台PE上配置OSPF进程1,以及MP-BGP的路由双向重发布。
6.查看及验证
实验配置
1.Backbone内运行OSPF
本实验中所有设备的接口IP地址的配置这里不再罗列,请自行完成。
Backbone内的设备:PE1、PE2、P1、P2运行OSPF,统一使用进程号100。运行该OSPF进程的目的是为了打通骨干网内的路由,四台设备在互联接口上激活OSPF,并且通告自己的Loopback0接口路由。
PE1的配置如下:
[PE1] ospf 100 router-id 2.2.2.2 [PE1-ospf-100] area 0 [PE1-ospf-100-area-0.0.0.0] network 2.2.2.2 0.0.0.0 [PE1-ospf-100-area-0.0.0.0] network 10.1.23.2 0.0.0.0
P1的配置如下:
[P1] ospf 100 router-id 3.3.3.3 [P1-ospf-100] area 0 [P1-ospf-100-area-0.0.0.0] network 3.3.3.3 0.0.0.0 [P1-ospf-100-area-0.0.0.0] network 10.1.23.3 0.0.0.0 [P1-ospf-100-area-0.0.0.0] network 10.1.34.3 0.0.0.0
P2的配置如下:
[P2] ospf 100 router-id 4.4.4.4 [P2-ospf-100] area 0 [P2-ospf-100-area-0.0.0.0] network 4.4.4.4 0.0.0.0 [P2-ospf-100-area-0.0.0.0] network 10.1.34.3 0.0.0.0 [P2-ospf-100-area-0.0.0.0] network 10.1.45.4 0.0.0.0
PE2的配置如下:
[PE2] ospf 100 router-id 5.5.5.5 [PE2-ospf-100] area 0 [PE2-ospf-100-area-0.0.0.0] network 5.5.5.5 0.0.0.0 [PE2-ospf-100-area-0.0.0.0] network 10.1.45.5 0.0.0.0
完成配置后,在各设备上查看路由,确保路由表是正确的,例如R1的路由表:
display ip routing-table protocol ospf Destination/Mask Proto Pre Cost Flags NextHop Interface 3.3.3.3/32 OSPF 10 1 D 10.1.23.3 GigabitEthernet0/0/1 4.4.4.4/32 OSPF 10 2 D 10.1.23.3 GigabitEthernet0/0/1 5.5.5.5/32 OSPF 10 3 D 10.1.23.3 GigabitEthernet0/0/1 10.1.34.0/24 OSPF 10 2 D 10.1.23.3 GigabitEthernet0/0/1 10.1.45.0/24 OSPF 10 3 D 10.1.23.3 GigabitEthernet0/0/1
2.Backbone内运行MPLS及LDP
PE1的配置如下:
[PE1] mpls lsr-id 2.2.2.2 #配置设备的LSR ID [PE1] mpls #全局激活MPLS [PE1] mpls ldp #全局激活LDP [PE1] interface GigabitEthernet 0/0/1 [PE1-GigabitEthernet0/0/1] mpls #接口激活MPLS [PE1-GigabitEthernet0/0/1] mpls ldp #接口激活LDP
P1的配置如下:
[P1] mpls lsr-id 3.3.3.3 [P1] mpls [P1] mpls ldp [P1] interface GigabitEthernet 0/0/0 [P1-GigabitEthernet0/0/0] mpls [P1-GigabitEthernet0/0/0] mpls ldp [P1] interface GigabitEthernet 0/0/1 [P1-GigabitEthernet0/0/1] mpls [P1-GigabitEthernet0/0/1] mpls ldp
P2的配置如下:
[P2] mpls lsr-id 4.4.4.4 [P2] mpls [P2] mpls ldp [P2] interface GigabitEthernet 0/0/0 [P2-GigabitEthernet0/0/0] mpls [P2-GigabitEthernet0/0/0] mpls ldp [P2] interface GigabitEthernet 0/0/1 [P2-GigabitEthernet0/0/1] mpls [P2-GigabitEthernet0/0/1] mpls ldp
PE2的配置如下:
[PE2] mpls lsr-id 5.5.5.5 [PE2] mpls [PE2] mpls ldp [PE2] interface GigabitEthernet 0/0/0 [PE2-GigabitEthernet0/0/0] mpls [PE2-GigabitEthernet0/0/0] mpls ldp
完成配置后,确保所有的LDP邻居关系都正确的建立:
display mpls ldp session LDP Session(s) in Public Network Codes: LAM(Label Advertisement Mode), SsnAge Unit(DDDDMM) A '*' before a session means the session is being deleted. ------------------------------------------------------------------------------ PeerID Status LAM SsnRole SsnAge KASent/Rcv ------------------------------------------------------------------------------ 3.3.3.3:0 Operational DU Passive 000004 20/20 ------------------------------------------------------------------------------ TOTAL: 1 session(s) Found.
其他设备的查看不再赘述。
display mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 2.2.2.2/32 3/NULL -/- 3.3.3.3/32 NULL/3 -/GE0/0/1 3.3.3.3/32 1024/3 -/GE0/0/1 4.4.4.4/32 NULL/1025 -/GE0/0/1 4.4.4.4/32 1025/1025 -/GE0/0/1 5.5.5.5/32 NULL/1026 -/GE0/0/1 5.5.5.5/32 1026/1026 -/GE0/0/1
上面输出的是PE1的标签转发表。我们看到关于网络中的/32主机路由都已经收到了标签。
3.PE1及PE2创建VPN实例,并运行PE-CE路由协议
PE1的配置如下:
[PE1] ip vpn-instance ABC #创建VPN实例 [PE1-vpn-instance-ABC] route-distinguisher 2345:1 #配置RD值 [PE1-vpn-instance-ABC-af-ipv4] vpn-target 2345:11 #配置RT值(导入及导出值均为 2345:11) [PE1] interface GigabitEthernet 0/0/0 [PE1-GigabitEthernet0/0/0] ip binding vpn-instance ABC #将该接口绑定到VPN实例ABC [PE1-GigabitEthernet0/0/0] ip address 10.1.12.2 24 [PE1] ospf 1 vpn-instance ABC #运行基于VPN实例ABC的OSPF进程 [PE1-ospf-1] area 0 [PE1-ospf-1-area-0.0.0.0] network 10.1.12.2 0.0.0.0
CE1的配置如下:
[CE1] interface GigabitEthernet 0/0/0 [CE1-GigabitEthernet0/0/0] ip address 10.1.12.1 24 [CE1] interface LoopBack 0 [CE1-LoopBack0] ip address 1.1.1.1 32 [CE1] ospf 1 router-id 1.1.1.1 [CE1-ospf-1] area 0 [CE1-ospf-1-area-0.0.0.0] network 10.1.12.1 0.0.0.0 [CE1-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0
PE2的配置如下:
[PE2] ip vpn-instance ABC [PE2-vpn-instance-ABC] route-distinguisher 2345:1 [PE2-vpn-instance-ABC-af-ipv4] vpn-target 2345:11 [PE2] interface GigabitEthernet 0/0/1 [PE2-GigabitEthernet0/0/1] ip binding vpn-instance ABC [PE2-GigabitEthernet0/0/1] ip address 10.1.56.5 24 [PE2] ospf 1 vpn-instance ABC [PE2-ospf-1] area 0 [PE2-ospf-1-area-0.0.0.0] network 10.1.56.5 0.0.0.0
CE2的配置如下:
[CE2] interface GigabitEthernet 0/0/0 [CE2-GigabitEthernet0/0/0] ip address 10.1.56.6 24 [CE2] interface LoopBack 0 [CE2-LoopBack0] ip address 6.6.6.6 32 [CE2] ospf 1 router-id 6.6.6.6 [CE2-ospf-1] area 0 [CE2-ospf-1-area-0.0.0.0] network 10.1.56.6 0.0.0.0 [CE2-ospf-1-area-0.0.0.0] network 6.6.6.6 0.0.0.0
完成配置后,确保PE能够学习到直连CE的客户路由:
display ip routing-table vpn-instance ABC Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.1/32 OSPF 10 1 D 10.1.12.1 GigabitEthernet0/0/0 10.1.12.0/24 Direct 0 0 D 10.1.12.2 GigabitEthernet0/0/0 10.1.12.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 10.1.12.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
PE1上VPN实例ABC的路由表中已经通过OSPF学习到CE1的客户路由1.1.1.1/32。
4.PE1及PE2创建MP-BGP进程,并建立MP-iBGP邻居关系
PE1的配置如下:
[PE1] bgp 2345 [PE1-bgp] router-id 2.2.2.2 [PE1-bgp] undo default ipv4-unicast #因为本实验中PE1-PE2之间无需交互IPv4路 由,因此取消IPv4单播协议的邻居关系自动建立 [PE1-bgp] peer 5.5.5.5 as-number 2345 [PE1-bgp] peer 5.5.5.5 connect-interface LoopBack 0 [PE1-bgp] ipv4-family vpnv4 unicast #进入IPv4的VPNv4地址族 [PE1-bgp-af-vpnv4] peer 5.5.5.5 enable #激活邻居5.5.5.5
PE2的配置如下:
[PE2] bgp 2345 [PE2-bgp] router-id 5.5.5.5 [PE2-bgp] undo default ipv4-unicast [PE2-bgp] peer 2.2.2.2 as-number 2345 [PE2-bgp] peer 2.2.2.2 connect-interface LoopBack 0 [PE2-bgp] ipv4-family vpnv4 unicast [PE2-bgp-af-vpnv4] peer 2.2.2.2 enable [PE2] display bgp vpnv4 all peer BGP local router ID : 5.5.5.5 Local AS number : 2345 Total number of peers : 1 Peers in established state : 1 Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pref Rcv 2.2.2.2 4 2345 2 2 0 0036 Established 0
PE1及PE2的MP-iBGP邻居(VPNv4)关系已经建立成功。
5.PE1及PE2配置PE-CE路由协议与BGP的相互重发布
PE1的配置如下:
[PE1] bgp 2345 [PE1-bgp] ipv4-family vpn-instance ABC #将OSPF进程1的路由导入到BGP的VPN实例ABC对应的IPv4地址族中 [PE1-bgp-ABC] import-route ospf 1 [PE1] ospf 1 vpn-instance ABC #将BGP路由导入到OSPF进程1 [PE1-ospf-1] import-route bgp permit-ibgp
PE2的配置如下:
[PE2] bgp 2345 [PE2-bgp] ipv4-family vpn-instance ABC [PE2-bgp-ABC] import-route ospf 1 [PE2] ospf 1 vpn-instance ABC [PE2-ospf-1] import-route bgp permit-ibgpdisplay ip routing-table protocol ospf Destination/Mask Proto Pre Cost Flags NextHop Interface 6.6.6.6/32 OSPF 10 3 D 10.1.12.2 GigabitEthernet0/0/0 10.1.56.0/24 O_ASE 150 1 D 10.1.12.2 GigabitEthernet0/0/0
CE1已经学习到了CE2所在站点的路由。
display ip routing-table protocol ospf Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.1/32 OSPF 10 3 D 10.1.56.5 GigabitEthernet0/0/0 10.1.12.0/24 O_ASE 150 1 D 10.1.56.5 GigabitEthernet0/0/0
CE2也已经学习到了CE1所在站点的路由。
6.查看及验证
[PE1] display bgp vpnv4 all routing-table 6.6.6.6 BGP local router ID : 2.2.2.2 Local AS number : 2345 Total routes of Route Distinguisher(2345 1 BGP routing table entry information of 6.6.6.6/32: Label information (Received/Applied): 1027/NULL From: 5.5.5.5 (5.5.5.5) Route Duration: 00h11m23s Relay IP Nexthop: 10.1.23.3 Relay IP Out-Interface: GigabitEthernet0/0/1 Relay Tunnel Out-Interface: GigabitEthernet0/0/1 Relay token: 0x5 Original nexthop: 5.5.5.5 Qos information : 0x0 Ext-Community:RT <2345 : 11>, OSPF DOMAIN ID <0.0.0.0 : 0>, OSPF RT <0.0.0.0 : 1 : 0>, OSPF ROUTER ID <10.1.56.5 : 0> AS-path Nil, origin incomplete, MED 2, localpref 100, pref-val 0, valid, interna l, best, select, pre 255, IGP cost 3 Not advertised to any peer yet VPN-Instance ABC, Router ID 2.2.2.2: Total Number of Routes: 1 BGP routing table entry information of 6.6.6.6/32: Label information (Received/Applied): 1027/NULL From: 5.5.5.5 (5.5.5.5) Route Duration: 00h11m23s Relay Tunnel Out-Interface: GigabitEthernet0/0/1 Relay token: 0x5 Original nexthop: 5.5.5.5 Qos information : 0x0 Ext-Community:RT <2345 : 11>, OSPF DOMAIN ID <0.0.0.0 : 0>, OSPF RT <0.0.0.0 : 1 : 0>, OSPF ROUTER ID <10.1.56.5 : 0> AS-path Nil, origin incomplete, MED 2, localpref 100, pref-val 0, valid, interna l, best, select, active, pre 255, IGP cost 3 Not advertised to any peer yet
在PE1上查看路由6.6.6.6/32的详细信息。该条路由是通过MP-iBGP从PE2传递过来的。从详细信息的输出我们可以看到路由的下一跳是5.5.5.5。并且该路由捆绑的VPN标签是1027。因此当PE1收到IP数据包要去往6.6.6.6时,会为数据包压入VPN标签1027,同时为了让这个标签包能够正常的穿越骨干网并到达PE2上,还需为该标签包再增加一层标签。由于去往6.6.6.6的下一跳是5.5.5.5,因此在外层压入5.5.5.5路由对应的标签:
[PE1] display mpls lsp ------------------------------------------------------------------------------- LSP Information: BGP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 1.1.1.1/32 1027/NULL -/- ABC 10.1.12.0/24 1028/NULL -/- ABC ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 2.2.2.2/32 3/NULL -/- 3.3.3.3/32 NULL/3 -/GE0/0/1 3.3.3.3/32 1024/3 -/GE0/0/1 4.4.4.4/32 NULL/1025 -/GE0/0/1 4.4.4.4/32 1025/1025 -/GE0/0/1 5.5.5.5/32 NULL/1026 -/GE0/0/1 5.5.5.5/32 1026/1026 -/GE0/0/1
从上面的输出我们可以看到PE1的标签转发表中,5.5.5.5的出站标签是1026。所以最终去往6.6.6.6的IP包被压入两层标签。内层VPN标签值是1027,外层LDP标签是1026。报文被处理后转发给了P1。P1在收到这个标签包后查看自己的标签转发表,注意,它只会查看外层标签。
[P1]display mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 3.3.3.3/32 3/NULL -/- 2.2.2.2/32 NULL/3 -/GE0/0/0 2.2.2.2/32 1024/3 -/GE0/0/0 4.4.4.4/32 NULL/3 -/GE0/0/1 4.4.4.4/32 1025/3 -/GE0/0/1 5.5.5.5/32 NULL/1026 -/GE0/0/1 5.5.5.5/32 1026/1026 -/GE0/0/1
从P1的转发表我们可以看出,1026的入站标签,对应的出站标签是1026,并且出站接口是GE0/0/1。因此它将收到的标签包的外层标签从1026置换成1026(碰巧置换前后标签值是一样的),然后从GE0/0/1口发出去。P2将收到这个标签包,也是查标签转发表:
display mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 2.2.2.2/32 NULL/1024 -/GE0/0/0 2.2.2.2/32 1024/1024 -/GE0/0/0 4.4.4.4/32 3/NULL -/- 3.3.3.3/32 NULL/3 -/GE0/0/0 3.3.3.3/32 1025/3 -/GE0/0/0 5.5.5.5/32 NULL/3 -/GE0/0/1 5.5.5.5/32 1026/3 -/GE0/0/1
P2发现,1026的入站标签,对应的出站标签是3,而3是一个保留标签,意味着要将该顶层标签弹出。于是它将收到的标签数据的顶层标签弹出,然后剩余的数据从GE0/0/1口送出去。PE2将最终收到仍然携带者VPN标签的数据。由于这个VPN标签是它自己发给PE1的,因此它知道这个标签值意味着什么、与哪一个VPN实例对应。因此最终它将VPN标签剥去,然后将IP数据包转发给CE2。
在PE1上Tracert 6.6.6.6,可以查看到整个数据层面的过程:
tracert -vpn-instance ABC -v -a 10.1.12.2 6.6.6.6 traceroute to ABC 6.6.6.6(6.6.6.6), max hops: 30 ,packet length: 40,press CTRL_C to break 1 10.1.23.3[MPLS Label=1026/1027 Exp=0/0 S=0/1 TTL=1/1] 110 ms 60 ms 70 ms 2 10.1.34.4[MPLS Label=1026/1027 Exp=0/0 S=0/1 TTL=1/2] 110 ms 50 ms 80 ms 3 10.1.56.5 80 ms 80 ms 60 ms 4 10.1.56.6 110 ms 80 ms 70 ms
实际上是这样的:
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !