MP-BGP笔记

leased lines ,将两个站点或多个站点互联,将多个局域网互联
leased lines 使用的技术是 statistical multiplexing

statistical “statistic”的变体 统计学的
统计复用,不管上面有没有数据,都为客户开通,付费的话会很贵,不管有没有流量都给用户开通,成本是问题

virtual private network

1、企业内部互联,总部内网和分部内网,互相连通,intranet
2、企业之间的互联,企业A与企业B有些业务的关系,需要互通
3、远程用户接入,移动办公人员,成都北京随时需要接入到企业网中访问服务器

private trunks across a telco/sp shared infrastructure
leased/dialup lines
fr/atm virtual circuits
ip(gre)tunnelling

overlay 的 vpn ,运营商没有参与用户的路由,运营商只做了二层连同,看起来用户的两端设备进行了直连,CE和CE之间跑rip路由,而CE和PE之间不跑路由,属于内网到内网的互联,而不是远程接入的类型,

peer-to-peer 的vpn ,运营商参与了用户的路由,

peer-to-peer vpn
1、access lists (shared router)
2、split routing(dedicated router)-专用路由器,专用的路由器,专门干peer-to-peer vpn这个活的路由器
3、mpls/vpn

optimal 最适宜的;最理想的;最好的

gre,通用路由封装,虽然提供了安全措施,但甚少使用,所以在严格意义上不能算vpn,现实中也很少使用gre

机密性(使之看不懂)、
完整性(虽然看不懂但就把123改成456了-在整个传输过程中没有被篡改)
不可否认性(就是从A发出的,而不是在A、B之间的中间人发出的)

在gre上可以传递组播/广播包
gre over ipsec

A客户rip到pe,C客户也rip到pe,就会有A的路由进入C,C的路由也会进入A,为了不让AC之间传递数据包,
在access lists (shared router)模式下,A、C连接到同一个pe下,此时,控制方式有二:
1、使用distribute-list,在pe上,不让A的路由发送给C,也不让C的路由给A,
2、使用access-list,即使A、C互相之间有对方的路由,但是可以在pe上使用访问控制列表控制数据包的转发,不让A的数据包到C,也不上C的数据包到A,
但上述两种控制方式存在严重的几个问题,运营商会有很多用户,每个用户也会有很多路由,那就需要在pe上写大量的访问控制列表/分发列表,非常的麻烦,另一个问题是客户的地址不能重复,

在split routing(dedicated router)模式下,控制方式,
就是,对客户A给专用的peA,给客户C专用的peC,不同的客户连接不同的pe,解决了地址重复的问题,这就是用专用路由器来达到分离路由的效果
但致命的问题是,运营商的巨量pe成本承受不了,来个客户就提供一个独用的pe,没钱赚了,

associated 关联

attached 附属于

route distinguished RD
route target RT
site of origin SOO

RD,only used on how to distinguish between duplicate address

VPNv4 route:96-bit NLRI=RD + 32-bit IPv4 NLRL

RD,64-bit identifier

用不同的协议传递不同的地址族,VPNv4是一个新的地址族,所以需要新的协议传递,就是 MP-BGP

router对RD的定义是local的,只在本地路由器上有效,所以不同的路由器上对RD的定义往往是不同的,也是允许不同的,

RD是可以放到VPNv4里的,是组成VPNv4的一部分,
但RT放到哪里呢?BGP有community的属性,可以用来装载RT,所以这就是要使用BGP传递VPNv4的原因之一,

export,相当于qos的着色,着色就是在语音传输中对不同的优先级别设置不同的颜色的一种规则,

RD保证相同的路由可以被pe区分开,并且顺利传到对面的pe上,
RT保证收到路由的pe可以按需求接收特定的路由,也就是保证让收到路由的pe知道该把路由分配给正确的路由器,区分不同的vrf

MP-iBGP:
VPN-v4 update:
RD : 1:27:149.27.2.0/24
next-hop=PE-1
SOO=Paris,RT=VPN-A
label=(28)

vrf A ,1:1
149.27.2.0/24 label 20 s1/0
vrf B ,1:27
149.27.2.0/24 label 28 s1/1

vpn label | bgp label | ip packet

mpls label range 16 99
int s1/0
mpls ip

show mpls forwarding

							pe1:

ip vrf a
RD 1:1 (ASN:nn or ip-address:nn VPN route distinguisher)
route-target 1:1 both

show ip route
c 192.168.1.0/24 is directly connected, serial1/1
show ip route vrf a
null:

int s1/1
ip vrf forwarding a
interface serial1/1 ip address 192.168.1.1. removed due to enabling vrf a
ip add 192.168.1.1 255.255.255.0

show ip route vrf a
c 192.168.1.0/24 is directly connected, serial1/1
show ip route
no: c 192.168.1.0/24 is directly connected, serial1/1
因为一个接口只能属于一个路由器,

ping 192.168.1.1
success rate is 0 percent (0/5)
因为使用的是全局路由表,但接口已经从全局路由表移除了,

ping vrf a 192.168.1.1
success rate is 100 percent (5/5)

这说明,即使是在一个路由器上,全局也ping不通vrf,所以,不同的vrf之间更不可能ping 通,这就是隔离,

跑rip,简单

							ce1:

ping 192.168.1.1
success rate is 100 percent (5/5)
ce1上只有一个全局路由表,所以直接ping,能通,ce1也不知道正在同pe1上的vrfa通信,ce1也不知pe1上的vrfa的存在

router rip
version 2
network 11.0.0.0
network 192.168.1.0
no auto-summary
end

							pe1:

router rip
pe1(config-router)#
//network 192.168.1.0 这是错误的,这是在到全局路由表中去关联192.168.1.0,但现在全局路由表中已经没有这个网段了,
address-family ipv4 vrf a
pe1(config-router-af)#
version 2
network 192.168.1.0
no auto-sammary
end

show ip route vrf a
R 11.11.11.11 [120/1] via 192.168.1.2,serial 1/1
c 192.168.1.0/24 is directly connected, serial1/1

router bgp 1
neighbor 3.3.3.3 remote 1
neighbor 3.3.3.3 update-source loopback 0 //bgp会做源检测

show ip bgp summary
neighbor v as up/down state/pfxRcd
3.3.3.3 4 1 never active

ipv4的bgp邻居:
bgp-5-adjchange:neighbor 3.3.3.3 up

看bgp邻居
show ip bgp summary
neighbor v as up/down state/pfxRcd
3.3.3.3 4 1 00:00:17 0

但我们要使用的是,mp-bgp,
router bgp 1
address-family vpnv4
neighbor 3.3.3.3 activate

activate 激活;使活动;使活化

看vpnv4(mpbgp)邻居、
show ip bgp vpnv4 all
all display information about all vpnv4 NLRIs
rd display information for a route distinguisher
vrf display information for a vpn routing/forwarding instance
show ip bgp vpnv4 all summary
neighbor v as up/down state/pfxRcd
3.3.3.3 4 1 00:00:6 0
bgp open 会协商自己的bgp能力,之前建立的ipv4的bgp之后,又需要重新协商bgp的vpnv4的能力,所以之前建立的bgp会掉一次,
而现在,只使用vpnv4的bgp,所以可以关闭ipv4的bgp

但因为在默认情况下,在bgp的进程中指定邻居的时候就会启用ipv4的能力,所以,需要先清理所有的bgp配置,先手工关闭默认使用ipv4的能力
no router bgp 1

router bgp 1
no bgp default ipv4-unicast

neighbor 3.3.3.3 remote 1
nei 3.3.3.3 update loop 0
address-family vpnv4 (如果是需要激活ipv4的bgp,就改成 address-family ipv4)
neighbor 3.3.3.3 activate

在no bgp default ipv4-unicast 与 address-family ipv4的前提下,可以关闭bgp的ipv4能力
router bgp 1
address-family ipv4
no neighbor 3.3.3.3 activate
end
neighbor 3.3.3.3 down neighbor deleted

router bgp 1
address-family vpn4
neighbor 3.3.3.3 activate
nei 3.3.3.3 send-community extended
both
extended
standard

router bgp 1
address-family ipv4 vrf a
redistribute rip

show ip bgp vpnv4 all
show ip route vrf a

router rip
'address-family ipv4 vrf a
redistribute bgp 1 metric 10

需要修改重发布到rip的路由,默认是无穷大,是不会发送的,

可以使用扩展ping

也可以直接带源ping
ping 11.11.11.11 source loop 0

看mp-bgp分配的标签,给客户ce的路由分配的标签,在内层
show ip bgp vpnv4 all labels
network next-hop in-label/out-label
route-distinguisher: 1:1(a)
11.11.11.11/32 192.168.1.2 19/nolabel
22.22.22.22/32 3.3.3.3 nolabel/203
192.168.1.0 0.0.0.0 20/aggregate(a)
192.168.2.0 3.3.3.3 nolabel/204
route distinguisher: 2:2
22.22.22.22/32 3.3.3.3 nolabel/203
192.168.2.0 3.3.3.3 nolabel/204

看ldp分配的标签,给mpls分配的标签,igp标签,在外层
show mpls ldp binding
tib entry: 2.2.2.2/32,rev4
local binding: tag:16
remote binding:tsr:2.2.2.2:0 tag:imp-null
tib entry: 3.3.3.3/32,rev6
local binding: tag:17
remote binding:tsr:2.2.2.2:0 tag:101

在R2上,即P上看lfib
show mpls forwarding
localTag outgoingTag prefix outgoingInterface
100 poptag 1.1.1.1/32 se0/0
101 poptag 3.3.3.3/32 se0/1

在R3上,看LFIB
show mpls forwarding
localTag outgoingTag prefix outgoingInterface
200 100 1.1.1.1/32 se1/0
201 poptag 2.2.2.2/32 se1/0
203 untagged 22.22.22.22/32 se1/1

从R3右侧来的如果是ip包,去11.11.11.11/32,按道理说应该在R3上查fib表
查FIB
show ip cef detail

去11.11.11.11/32 是放全局,还是放vrf
通过实验看,在全局里没有 11.11.11.11/32

但,11.11.11.11/32没放在全局表里,是放在vrf里的,
所以,查FIB的命令是:
show ip cef vrf a detail
11.11.11.11/32,.。。。tags imposed{100 19}

impose 强制实行;把…强加于

R1:
show ip bgp vpnv4 all labels
network next-hop in-label/out-label
route-distinguisher: 1:1(a)
11.11.11.11/32 192.168.1.2 19/nolabel

R2:
show mpls forwarding
localTag outgoingTag prefix outgoingInterface
100 poptag 1.1.1.1/32 se0/0

R1查,LFIB,因为到来的是从R2送来的带着由mp-bgp分配的内层标签的数据包,所以不去查ip包的FIB

R1的LFIB
show mpls forwarding-table
localTag outgoingTag prefix outgoingInterface
16 poptag 2.2.2.2/32 se1/0
17 101 3.3.3.3/32 se1/0
19 untagged 11.11.11.11/32 se1/1
20 aggregate 192.168.1.0/24

untagged表示,是mpls的边界,
untagged表示,弹出所有标签

FIB在LFIB的上层,
如果在LFIB能查到,关联到vrf的接口,就查一次LFIB就能完成转发,

aggregate,表示,弹出标签,生下了纯ip包,所以之后去查FIB

11.11.11.11/32和192.168.1.0/24,同样都是从左边ce送来的路由,区别在于,192.168.1.0/24是R1(PE1)直连的,而11.11.11.11/32却不是R1(PE1)直连的,直连的192.168.1.0/24不能关联接口,这是因为可能存在一种情况,ip包是给R1的,既然是给R1的,R1就不会从se1/1的接口送出去原本是给自己的ip包,既然是直连的就需要查FIB,查FIB的时候就知道这个ip包是给自己的还是给别人的了。

在pe2上traceroute 11.11.11.11
traceroute vrf a 11.11.11.11 source s1/1
1 23.1.1.1[mpls: labels 100/19 exp 0]
2 192.168.1.1[mpls: labels 19 exp 0]
3 192.168.1.2

数据是从上游向下游发送,
下游路由器,编辑orf,送给上游路由器,上游路由器以此作为依据,在out给下游的路由器时,按orf过滤路由,给下游路由器它想要的路由条目

scaling 测量

真实环境下,大规模的时候,不是使用bgp全互联,而是使用路由反射器,route reflector

spoke 辐条

hub and spoke,是一种集中控制,也叫 centerize

spoke 2 hub,但要求spoke之间不能直接互通,
两个spoke通信都要走hub中心,应用场景,总部设有专业防火墙,所以分支之间要通信的数据必须先经过总部防火墙审查,
并且在总部可以控制路由的走向和规则

两个spoke,都配置成,
route-target export 1:1
route-target import 2:2

这样话,即使两个spoke在同一个网段,也不会收到对方的路由,因为它俩只收2:2,但导出的都是1:1,

intranet,同一个vpn通信,
extranet,不同的vpn互相通信

控制不同的vpn之间能否通信,使用的是RT
extranet:
A->B A->C B-X-C
import export

vpnA 1:1 2:2 3:3 1:1

vpnB 1:1 2:2 2:2

vpnC 1:1 3:3 3:3

老师建议,一个vpn只使用一个export,用多个import来控制接收哪些路由

pe1:
router bgp 1
no bgp default ipv4-unicast
nei 3.3.3.3 remote 1
nei 3.3.3.3 upda loop 0
address-family vpnv4
nei 3.3.3.3 activate
end

pe2:
ip vrf a
rd 1:1
rt 1:1
interface s1/1
ip vrf for a
interface serial1/1 ip address 192.168.2.1 removed due to enabling vrf a
ip add 192.168.2.1 255.255.255.0
exit
iproute vrf a 22.22.22.22 255.255.255.255 s1/1

show ip route vrf a
s 22.22.22.22 isdirectly connected,serial1/1

pe1:
show ip bgp vpnv4 all summary
neighbor v as up/down
3.3.3.3 4 1 00:01:28

router bgp 1
address-family ipv4 vrf a
redistribute static

show ip bgp vpnv4 all
network next-hop
route distinguisher: 1:1(default for vrf a)
*> 11.11.11.11/32 0.0.0.0

pe2:
router bgp 1
address-family ipv4 vrf a
redistribute static
end

pe1:
show ip bgp vpnv4 all
network next-hop
route distinguisher: 1:1(default for vrf a)
*> 11.11.11.11/32 0.0.0.0
*>i22.22.22.22/32 3.3.3.3

rip:
router rip
address-family ipv4 vrf a
redistribute bgp 1 metric transparent
end

metric,是经过一台路由器就+1

路由在传输过程中,
BGP协议为了区分不同的 VPN 客户路由
为IPv4 路由添加了一个属性:RD
即 route distinguish ,叫做路由区分符
结构是: xx:xx
长度是:64bit
即此时的 BGP 所传输的路由,是 96bit 的路由条目,
称之为: VPNv4 路由。
BGP也改了名字,叫MP-BGP ,即多协议的BGP

RD 来源于什么地方?
-每个 VPN 客户所使用的 vrf 。
同一个PE设备上的,不同的 vrf 的 RD 一定不能相同。

RT(route target)如果不同,则永远保存在 MP-BGP 的数据库中。
不会进入到任何一个 VRF 路由表中。

VRFs

全称VPN Routing and Forwarding tables

随MP-BGP一起发送的MPLS Label吗?
这时候,VRF Table还会把与BGP路由绑定的MPLS Label加入到数据包中。
这个MPLS Label标识了VPN,因此通常也称为VPN Label,或者私网Label。
这样在VRF内部,IP 数据包就变成了MPLS数据包。

PE2中,对应PE1的下一跳(nexthop),
是MPLS Tunnel中PE2的downstream LSR。
因此这里的nexthop会变成PE2对应的downstream LSR,
这个nexthop叫做IGP nexthop。
与此同时,PE2还会给数据包打上MPLS Tunnel的Label。
此时,数据包相当于有了两个Label,
都在一个Label Stack里。
这里的MPLS Label通常称为Tunnel Label,或者公网Label

PE1根据VPN Label,能找到对应的出口网卡/线路。

eigrp,一个进程只能属于一个as,
router eigrp 1,包含了两个意思,一个是进程号是1,另一个是as号是1

要将eigrp的进程号和as号分离:
router eigrp 1 //指定进程号
address-family ipv4 vrf a //进vrf去改as号
autonomous-system 1
也就是分别指定eigrp的进程号为1和as号为1

对于可以分离进程号和as号的,这样一个eigrp进程就可以支持多个vrf,每个vrf都有着各自的as号,

普通的eigrp是无法分离进程号和as号的,
只有支持vrf的eigrp才可以分离进程号和as号,

而ospf中的命令 router ospf 110 中的110,只表示进程号,

ce与pe之间跑bgp
address-family vpnv4
neighbor 3.3.3.3 activate
neighbor 3.3.3.3 send-community extended
exit-address-family

address-family ipv4 vrf a
neighbor 192.168.1.2 remote-as 2
neighbor 192.168.1.2 activate
exit-address-family

bgp需要手工宣告路由,
router bgp 2
network 11.11.11.11 mask 255.255.255.255 //bgp的掩码必须精确匹配

====================================
pe1#show ip bgp vpnv4 all
bgp table version is 37,local router ID is 1.1.1.1
network next-hop
route distinguisher: 1:1 (default for vrf a)
*> 11.11.11.11/32 192.168.1.2

pe1#show ip route vrf a
B 11.11.11.11 [] via 192.168.1.2,00:00:11
C 192.168.1.0/24 is directly connected,serial1/1

MPLS VPN数据的转发需要理解

1、 路由如何学习 控制层面

CE1----PE1----P-----PE2----CE2

① CE1 和PE1运行 路由协议(static ospf eigrp bgp rip)

② PE1收到这些路由条目之后,放入VRF路由表

③ 将VRF路由信息重发布到VPNv4地址族(igp到bgp)

④ PE2收到路由信息之后,匹配RT值,将VPNv4前缀放入到正确的VRF路由表

2、 数据包如何转发 数据层面

CE1----PE1----P-----PE2----CE2

① CE1把数据发送给PE1

② PE1收到后压入两个标签:私网标签【PE2设备为CE2网段分发的标签(VPNv4)】

				公网标签【PE1-PE2 下一跳】

③ P设备收到这个数据包,在倒数第2跳做弹出操作,POP顶层标签(公网标签)

④ PE2设备收到带有私网标签的数据包,

个人理解,RT值是用在控制层面,择由用的,标签是用在数据转发的,数据层面的,

从ebgp邻居学来,再送给ibgp邻居的路由是不会更改源地址的,否则ibgp邻居是不知道去往另一个as的路由的,也就不会把这种路由放到路由表中,也就更不会将这种路由转发给它的ebgp邻所以需要next-hop-myslef,居,

在BGP MPLS-VPN环境中,
VPN路由使用VPNV4地址族和BGP扩展属性,
通过MP-BGP协议进行传输,
并以BGP路由的形式体现。

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直接相连。


LSR(Label Switch Router):标签交换路由器,MPLS网络的核心交换机,提供标签交换和标签分发功能。一般部署在P节点上。
LER(Label Edge Router):边界标记交换路由器,在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签,提供流量分类和标签的映射、标签的移除功能。一般部署在PE节点上。
LSP(Label Swith Path):标签交换通道。一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行,数据流所走的路径就是LSP。
FEC(Forwarding Equivalence Class):转发等价类,是在转发过程中以等价的方式处理的一组数据分组,例如目的地址前缀相同的数据分组就可以看做时一个FEC。通常对一个FEC分配相同的标签。

VRF(VPN Routing & Forwarding Instance,VPN路由转发实例) 可以看作虚拟的路由器,该虚拟路由器包括以下元素:

一张独立的路由表,从而包括了独立的地址空间;
一组归属于这个VRF的路由器接口的集合;
一组只用于本VRF的路由协议。

ospf,二级层次,0,非骨干

在mpls vpn中 ,ospf是三层结构,super backbone,0,非骨干

ce1:
router ospf 1
network 11.11.11.11 0.0.0.0 area 1
network 192.168.1.0 0.0.0.255 area 1

ospf的每一个进程关联一个vrf
ospf 1 给全局路由表跑mpls

pe1:
router ospf 2 vrf a
network 192.168.1.0 0.0.0.255 a 1

router bgp 1
address-family ipv4 vrf a
redistribute ospf 2 match external internal nssa-external1

把其他协议路由重发布到ospf的时候,需要加subnet,如果不加则只会发布主类路由,加了才会发布子网/可变子网路由

show ip bgp vpnv4 all //bgp vpnv4,是mpbgp传播的 vpnv4 的96bit的地址格式,RD64bit+IP32bit
bgp table version is 16,local router id is 1.1.1.1
network next-hop
route distinguisher: 1:1(default for vrf a)
*> 11.11.11.11/32 192.168.1.2
*>i22.22.22.22/32 3.3.3.3
*> 192.168.1.0 0.0.0.0
*>i192.168.2.0 3.3.3.3

show ip bgp vpnv4 all 22.22.22.22
bgp routing table entry for 1:1:22.22.22.22/32,version 17
local
3.3.3.3(metric 129)from 3.3.3.3(3.3.3.3)
origin incomplete,metric 65,localpref 100,valid,internal,best
extended community:RT:1:1 ospf domain id:0x0005:0x000000020200 //RT是routeType
ospf RT:0.0.0.2:2:0 ospf router id:192.168.2.1:512
mpls labels in/out nolabel/203

5:1
external route :5
extern type 2 :1
extern type 1 :0

inter-area :2

重分布,bgp2ospf
show ip bgp vpnv4 all

router ospf 2 {vrf a}
redistribute bgp 1 subnets

show ip ospf database

清理ospf进程
clear ip ospf process

正常情况,区域内变区域间(1变2),区域间保持区域间(2hold2),as间保持as间(5hold5)
但可以通过domain-id,2变5,
external route :5
inter-area :2
产生正常情况的原因是,在mp-bgp中pe的角色是abr,所以不管ce1和ce2是不是同一个区域,经过abr角色的pe就是区域间,所以1变2

ospf 的两种虚链路
virtual link
sham link
sham 伪装;假象;假情假义;伪善 假装;冒充 虚假的;假装的

sham-link: //传递的是lsa,所以可以达到oia变o的表项
1、建立环回口
2、划分到vrf里
3、给ip地址,必须给32位的,如果给/24的是起不来的,
4、已环回口为端点,建隧道,前提是,环回口链路可达
5、通过mp-bgp做到链路可达,将环回口宣告到mp-bgp中,也就是将新建的直连的环回口重发布到mp-bgp中,也可以network到mp-bgp中
6、执行创建sham-link的命令

1、int loop 1
2、ip vrf forwarding a
3、ip add 7.7.7.7 255.255.255.255
4、router bgp 1
address-family ipv4 vrf a
redistribute connect
6、router ospf 2
area 1 sham-link 6.6.6.6 7.7.7.7
ip addr associated with sham-link source
ip addr associated with sham-link destination
associate a cost with the sham-link

ospf的新增字段 DN bit,当地位,down bit,表示将mp-bgp重分布到ospf进程中的路由,被其他pe处理时,就不会将这种downward再重分布到mp-bgp中,down bit位只能在 3类lsa中出现,所以只能防止3类环路,而5类lsa的防环靠的是 tag,

downward 下降的;向下的

多个vpn之间互访,叫做extranet

Internet和pe之间通过 bgp ipv4路由互访,
因为,pe的全局路由表和其所包含的vrf路由表是相互隔离的,所以和vrf直连的站点site ce1 是看不到Internet的,

extranet with Internet-vrf

mpls域,下层跑ospf,mpls也设置完毕:
1、基本的ip地址配置完毕
2、中间的pe-p-pe跑mpls,也需要设置好,
3、创建vrf,在ce1与pe1之间跑rip导入客户路由到pe1的vrf中

学习mp-bgp会有一个误区,就是把数据面和控制面混到一起了,其实,控制面和数据面是两个方向的东西,先有正向的控制面的路由传递,后有数据面的反向转发,

pe1:
vrf 初始配置:
ip vrf a
rd 1:1
route-target export 1:1
route-target import 2:2

接口划进vrf:
int s1/1
ip vrf forwarding a
interface serial1/1 ip address 192.168.1.1 removed due to enabling vrf a
due 英 [djuː]
美 [duː]
adj. 由于; 因为
removed due to enabling vrf a
由于启用 vrf a 而被删除
ip add 192.168.1.1 255.255.255.0

router rip
address-family ipv4 vrf a
version 2
no auto-summary
network 192.168.1.0
end

ce1:
router rip
version 2
no auto-summary
network 192.168.1.0
network 11.0.0.0
end
int s0
clock rate 64000 //DCE需要设置时钟,否则接口的protocol起不来

再配置pe1的mp-bgp
show ip route vrf a
router bgp 1
no bgp default ipv4-unicast
neighbor 3.3.3.3 remote 1
neighbor 3.3.3.3 update loop 0

address-family vpnv4
neighbor 3.3.3.3 activate //上面的配置是全局路由表可以传递到bgp邻居,这里是使能邻居可以传递vpnv4路由的能力,
address-family ipv4 vrf a
redistribute rip
end

VPNv4地址是指在IPv4地址前缀前增加RD后,形成的地址。
VPNv4路由是指携带VPNv4地址的路由信息。
通过peer enable命令使能BGP对等体后,
PE才能与该对等体交换BGP VPNv4路由。

address-family vpnv4命令用来创建BGP VPNv4地址族
BGP VPNv4地址族视图下的配置用来控制PE设备之间交互的VPNv4路由

show ip bgp vpnv4 all,pe把路由放进vrf中,用bgp vpnv4 查看
show ip route vrf b,也可以用这个命令查看

配置尽量在pe上做,不要在ce上做过多的设置,这样排障不会受客户ce的干扰

vrf specific default route with global keyword

在0.0.0.0 0.0.0.0 pegateway global,这条默认路由使用了global关键字,所以要去全局路由表查,而不是去vrf里查,

在全局路由表中,如果目的,的下一跳是在vrf里,那么可以使用接口来到达目的,

show ip bgp,通过bgp收来的路由,可能是不优的,所以在 show ip route中 是看不到的,但show ip route 中看不到,并不意味着bgp没有收到,

show ip cef vrf a detail,vrf a的FIB,如果配置的是 ip route vrf a 0.0.0.0 0.0.0.0 serial1/1 global,而不是ip route vrf a 0.0.0.0 0.0.0.0 3.3.3.3 global
这时候,使用的是接口地址,所以进入 vrf a的FIB 是查不到标签的,这也说明 使用接口地址的时候,是走的ip包,而不是标签包,所以,在vrf中global的时候不要指定接口,
老师讲解,使用接口,就不会关联标签,没有关联标签,就是纯ip包过去,纯ip包过去是没有22.22.22.22的路由的,所以到达pe2后,就被扔掉了。

show mpls forwarding-table,LFIB

虽然接口被划分到了vrf中,但在全局路由表中,添加静态路由的时候,通过使用接口,是可以将指定接口的静态路由添加到全局路由表中,即使这个接口是属于vrf的,
在vrf中的接口,全局路由是看不到的,但是却可以添加关于这个接口的静态路由到全局路由表中,这是个很神奇的事情

路由泄露,

vrf的FIB
show ip cef vrf a detail

separate pe-ce sub-interface(non-vrf)

pe1:
ip route vrf 0.0.0.0 0.0.0.0 serial 1/1 //在vrfA中将处于pe2上的分支站点ce2的数据引向与pe1相连的总部ce1,

router bgp 1
address-family ipv4 vrf a
redistribute static //将vrfA中的静态路由宣告到bgp中,
end

但有些版本重发布有问题,所以就需要使用network 来将vrfA中的静态路由宣告到bgp中,
router bgp 1
address-family ipv4 vrf a
network 0.0.0.0 mask 0.0.0.0 //但有些版本重发布有问题,所以就需要使用network 来将vrfA中的静态路由宣告到bgp中,
end

show ip bgp vpnv4 all
network nexthot
*> 0.0.0.0 0.0.0.0

show ip bgp vpnv4 all,这个是看bgp vpnv4的路由,是从mp-bgp收来的,如果是最优的就会进入vrf的FIB,即show ip route vrf a
show ip route vrf a
B* 0.0.0.0/0 [200/0] via 1.1.1.1 , 00:00:17

要想让pe1查询pe1自己的全局路由表,ce1就要将ip包指定给pe1的不在vrf中的全局端口,即172.16.1.1
ip route 0.0.0.0 0.0.0.0 s1 //或者是 ip route 0.0.0.0 0.0.0.0 172.16.1.1,即自己的接口和邻居的地址(自己的下一跳)都可以的,
end

pe1,
1、要引入互联网的22.22.22.22的路由
2、要将分支站点ce2的33.33.33.33,告诉互联网

show ip bgp summary
neighbor as
3.3.3.3 1

show ip bgp
network nexthop path

  • i22.22.22.22/32 34.1.1.2 2

pe2:
router bgp 1
address-family ipv4
neighbor 1.1.1.1 next-hop-myself

pe1:
ip route 33.33.33.33 255.255.255.255 s1/3 //172.16.1.1自己的全局接口地址

router bgp 1
network 33.33.33.33 mask 255.255.255.255
end

数据包路径
先查pe2,show ip bpg vpnv4 all label
network nexthop inlabel/outlabel
route distinguisher:1:1(a)
0.0.0.0 1.1.1.1 nolabel/22

到pe2,查vrf的FIB
show ip cef vrf a detail
0.0.0.0/0,
tags imposed:{16 22}
via 1.1.1.1
next hop 23.1.1.1,serial1/0 via 1.1.1.1/32

imposed 使…负担

到p,查LFIB
show mpls forwarding-table
localtag outgoingtag prefix outgoinginterface
16 poptag 1.1.1.1/32 se0/0

到pe1,查LFIB
show mpls forwarding-table
localtag outgoingtag prefix outgoinginterface
22 untagged 0.0.0.0/0[v] se1/1

被送到ce1,在ce1上查全局路由表,
show ip route
s* 0.0.0.0/0 is directly connected,serial1
通过默认路由返回给pe1纯ip包

再次到pe1,因为来的是纯ip包,所以查的是全局路由表,FIB
show ip route
B 22.22.22.22 [200/0] via 3.3.3.3,00:06:13
O 3.3.3.3 [110/129] via 12.1.1.2,04:04:03,serial1/0
再查全局detail
show ip cef detail
22.22.22.22/32,
tag information from 3.3.3.3/32,
local tag:17
tags imposed:{17}
via 3.3.3.3,
next hop 12.1.1.2,serial1/0 via 3.3.3.3/32

到p,查LFIB,
show mpls forwarding-table
localtag outgoingtag prefix outgoinginterface
17 poptag 3.3.3.3/32 se0/1

送到pe2(3.3.3.3)
查全局路由表
show ip route
B 22.22.22.22 [20/0] via 34.1.1.2,02:59:23

背对背 VRF
先配置最下层的mpls域
pea2:
show mpls ldp neighbor
peer ldp ident:2.2.2.2:0;local ldp ident 3.3.3.3:0
tcp connection:2.2.2.2.646 - 3.3.3.3.49385
ldp discovery sources:
serial1/0,src ip addr:23.1.1.1

show mpls forwarding-table
localtag outgoingtag prefix outgoinginterface
200 100 1.1.1.1/32 se1/0
201 poptag 2.2.2.2/32 se1/0
202 poptag 12.1.1.0/24 se1/0

在pe上创建vrf并导入ce的路由
pea1:
show ip route vrf a
R 11.11.11.11 [120/1] via 192.168.1.2 ,00:00:21,serial1/1
C 192.168.1.0/24 is directly connected,serial1/1

pea2:
ip vrf a
rd 1:1
route-target 1:1
int s1/1
ip vrf forwarding a
interface serial1/1 ip address 34.1.1.1 removed due to enabling vrf a
ip add 34.1.1.1 255.255.255.0
end

peb1:
ip vrf a
rd 1:1
route-target 1:1
int s0/0
ip vrf forwarding a
interface serial0/0 ip address 34.1.1.1 removed due to enabling vrf a
ip add 34.1.1.2 255.255.255.0
end

在pea1和pea2之间跑mp-bgp,
pea1:
router bgp 1
no bgp default ipv4-unicast
neighbor 3.3.3.3 remote 1
neighbor 3.3.3.3 update loop 0
address-family vpnv4
nei 3.3.3.3 activate
end

pea2:
router bgp 1
no bgp default ipv4
nei 1.1.1.1 re 1
nei 1.1.1.1 up lo 0
address-family vpnv4
nei 1.1.1.1 acti
end

在peb1和peb2之间跑mp-bgp
peb1:
router bgp 2
no bgp default ipv4
nei 6.6.6.6 re 2
nei 6.6.6.6 up lo 0
address-family vpnv4
nei 6.6.6.6 activate
end

peb2:
router bgp 2
no bgp default ipv4
nei 4.4.4.4 re 2
nei 4.4.4.4 up lo 0
address-family vpnv4
nei 4.4.4.4 activate
end

peb1:
show ip bgp vpnv4 all summary
bgp router identifier 4.4.4.4,local as number 2
neighbor v as
6.6.6.6 4 2

将ce1的rip路由重分布到pea1的vrf中
pea1:
router bgp 1
address-family ipv4 vrf a
redistribute rip
end

show ip bgp vpnv4 all
local router id is 1.1.1.1
network nexthop
route distinguisher:1:1(default for vrf a)
*> 11.11.11.11/32 192.168.1.2
*> 192.168.1.0 0.0.0.0

pea2:
show ip bgp vpnv4 all
local router id is 3.3.3.3
network nexthop
route distinguisher:1:1(default for vrf a)
*>i11.11.11.11/32 1.1.1.1
*>i192.168.1.0 1.1.1.1

将ce2的rip路由,重分布到peb2的vrf中
peb2:
router bgp 2
address-family ipv4 vrf a
redistribute rip
end

show ip bgp vpnv4 all
local router id is 6.6.6.6
network nexthop
*> 22.22.22.22/32 192.168.2.2
*> 192.168.2.0 0.0.0.0

peb1:
show ip bgp vpnv4 all
local router id is 4.4.4.4
network nexthop
*>i22.22.22.22/32 6.6.6.6
*>i192.168.2.0 6.6.6.6

在pe和ce(虚拟的,实际上是pe)之间 使用ipv4的bgp传递路由,

pea2:
router bgp 1
address-family ipv4 vrf a
nei 34.1.1.2 remote 2
end
bgp-5-adjchnge:neighbor 34.1.1.2 vpn vrf a up

peb1:
router bgp 2
address-family ipv4 vrf a
nei 34.1.1.1 re 1
end

pea2:
show ip bgp summary

show ip bgp vpnv4 all summary
bgp router identifier 3.3.3.3, local as number 1
neighbor v as
1.1.1.1 4 1
34.1.1.2 4 2
show ip bgp vpnv4 all
local router id is 3.3.3.3
network nexthop
route distinguisher:1:1(default for vrf a)
*>i11.11.11.11/32 1.1.1.1
*> 22.22.22.22/32 34.1.1.2
*>i192.168.1.0 1.1.1.1
*> 192.168.2.0 34.1.1.2

peb1:
show ip bgp summary

pea1:
show ip bgp vpnv4 all
local router id is 1.1.1.1
network nexthop
route distinguisher:1:1(default for vrf a)
*>11.11.11.11/32 192.168.1.2
*>i22.22.22.22/32 3.3.3.3
*>192.168.1.0 0.0.0.0
*>i192.168.2.0 3.3.3.3

show ip route vrf a
B 22.22.22.22 [200/0] via 3.3.3.3, 00:00:54
R 11.11.11.11 [120/1] via 192.168.1.2, 00:00:22, serial1/1
C 192.168.1.0/24 is directly connected,serial1/1
B 192.168.2.0/24 [200/0] via 3.3.3.3,00:00:54

将pea1学来的在vrf中的bgp路由,重分布进rip中,使得ce1可以看到ce2
pea1:
router rip
address-family ipv4 vrf a
redistribute bgp 1 metric transparent
end

将peb2学来的,在vrf中的bgp 路由,重分布到rip中,使得ce2可以看到ce1
peb2:
router rip
address-family ipv4 vrf a
redistribute bgp 2 metric transparent
end

在pea1上
show ip cef vrf a detail,查看双标签,
22.22.22.22/32,
tag information set
local tag : vpn-route-head
via 3.3.3.3,
next hop 12.1.1.2,serial1/0 via 3.3.3.3/32
tag rewrite with se1/0,tags imposed:{101 204} //101是来自mpls的pa给的标签,204是来自pea2的mp-bgp的vpnv4给的标签,
在pea2上看,vpnv4的标签
show ip bgp vpnv4 all label
network nexthop inlabel/outlabel
route distinguisher:1:1(a)
11.11.11.11/32 1.1.1.1 nolabel/19
22.22.22.22/32 34.1.1.2 204/nolabel
192.168.1.0 1.1.1.1 nolabel/20
192.168.2.0 34.1.1.2 203/nolabel
在pa上看,LFIB
show mpls forwarding-table
localtag outgoingtag prefix outgoinginterface
100

背靠背的vrf,是不好的,称为,被中断的lsp

激活了bgp的 vpnv4能力,就是在使用mp-bgp

看mp-bgp的标签,
show ip bgp vpnv4 all labels

自己分配local标签,的目的是,让别人的可以到达自己,如果自己没有分配本地标签,也就意味着别人是无法到达自己的,

mp-bgp分配标签的场景
1、看,传出去的时候是否,改变下一跳,如果传给别人的时候改变了下一跳,就会分配标签,

看LIB
show mpls ldp bindings
tib entry:34.1.1.0/24,rev15
local binding:tag:imp-null //为本地直连,分配空标签
tib entry:34.1.1.2/32,rev 17
local binding: tag : 203 //不正常,让34.1.1.2看起来不是自己的直连,所以给分配了一个普通标签,

看LFIB
show mpls forwarding-table
localtag outgoingtag prefix outgoinginterface
203 poptag 34.1.1.2/32 se1/1 //系统强制加了一个poptag,本身与对方没有ldp邻居,所以也就不会收到对方的标签,应该是untaged

看vrf的FIB
show ip cef vrf a detail

看LFIB
show mpls forwarding-table

show ip bgp vpnv4 all labels
network nexthop inlabel/outlabel
route distinguisher:1:1
22.22.22.22/32 34.1.1.2 206/305 //更换了mp-bgp分配的内层标签

pea2:
router bgp 1
no bgp default route-target filter //只有关闭了rt的过滤属性,两个跑mp-bgp的邻居才能互相收到对方发布的路由信息

跑mp-bgp
peb1:
router bgp 2
nei 34.1.1.1 remote 1
address-family vpnv4
nei 34.1.1.1 activate
end

peb2:
show ip bgp vpnv4 all label,
22.22.22.22/32 192.168.2.2 503/nolabel
peb1:
show ip bgp vpnv4 all label,查看的是mp-bgp给vpnv4路由分配的标签
22.22.22.22/32 6.6.6.6 305/503 //因为peb1和pea2是ebgp的邻居,peb1将22.22.22.22/32给pea2的时候,就会改变下一跳,改变下一跳的时候就会分配标签,所以这里503变305

pea2:
show ip bgp vpnv4 all label
22.22.22.22/32 34.1.1.2 nolabel/305 //pea2自己没有给这条路由分配标签,是因为,pea2把这条路由传给ibgp邻居pea1,时,并没有改变下一跳34.1.1.2,
//默认给ibgp的邻居传递来自ebpg邻居的路由时,是不会改变下一跳的地址的,
pea1:
show ip bgp vpnv4 all label
22.22.22.22/32 34.1.1.2 nolabel/305 //标签nolabel/305是放在vpnv4的路由条目里一起带给pea1的,

show ip bgp vpnv4 all

  • i22.22.22.22/32 34.1.1.2 //但vrf路由表中的路由不是最优的,因为pea1没有到34.1.1.2的路由,
    为了解决这个问题,及pea1没有peb1的接口34.1.1.2的路由,可以在pea2上将它与peb1之间的直连路由重分布到igp里
    pea2:
    router ospf 1
    redistribute connected subnets

再去pea1:
show ip bgp vpnv4 all
*>i22.22.22.22/32 34.1.1.2 //路由已变最优,且这条路由的下一跳没有改变,因为没有改变下一跳,所以pea1也不需要给这条路由分发标签

为了将pea1获得到的22.22.22.22/32送给ce1,让ce1也知道这条路由,就需要pea1将mp-bgp获得的路由重发布到和ce1之间使用的igp路由协议rip中
router rip
(本人写的,但不是正确的){redistribute bgp ipv4 vrf a transparent}
address-family ipv4 vrf a
redistribute bgp 1 metric transparent

peb2:
router rip

address-family ipv4 vrf a
redistribute bgp 2 metric transparent
network 192.168.2.0
no auto-summary
exit-address-family

router rip address-family ipv4 vrf a
version 2 //rip邻居之间必须打相同的version,否则即使建立起了邻居,也可能收不到某些路由,就是peb2可以收version2的路由,但peb2发给 //ce2的却是version1的路由,而ce2是version2的,当然就不收version1的路由了,
end

clear ip route vrf a *

pea2:
show mpls forwarding-table
localtag outgoingtag prefix
203 pop tag 34.1.1.2/32 //peb1为22.22.22.22/32分配的标签305 ,pea2将去往22.22.22.22/32的包的外层标签203poptag,就剩下内层305标签的包给到peb1,被识别转发
//如果pea2这里不是pop tag 而是untagged,那么所有标签都弹出,peb1就不认识没有305标签的纯ip包了
//正常情况下,路由从peb1向pea2传递,peb1没有给pea2分配标签,所以在pea2上应该是untagged,但这样就断开了lsp,所以系统很聪明用 //了pop tag,让lsp得以接续,

这里有一个道理,不是我分的标签,我就不认识,所以,如果pa是penultimate,就会将外层标签弹出,剩下peb1给的内部305标签,而pea2是不认识305的,所以,pa不能是倒数第二条,所以peb1为22.22.22.22/32分配的内层305标签这条路由,的penultimate必须是pea2,这样pea2弹外层标签,剩下内层305标签的包给peb1,peb1才认识才能正常转发,

每一个mpls域内的lsr,都只匹配local的标签,也就是说只有自己发出去的本地标签,只有收的这样的标签包中才能识别并转发

show ip bgp vpnv4 all
network nexthop
route destinguisher:1:1
*> 22.22.22.22/32 4.4.4.4

show ip bgp labels
network nexthop inlabel/outlabel
4.4.4.4/32 34.1.1.2 nolabel/imp-null

show mpls forwarding-table
localtag outgoingtag prefix
207 305 1:1:22.22.22.22/32

csc,carrier support carrier

carrier‘s MPLS core

一、
跑mpls
int s1/0
mpls ip

二、
建立vpn,跑vrf
R3:
ip vrf a
rd 1:1
route-target 1:1
int s1/0
ip vrf forwarding a
ip add 23.1.1.2 255.255.255.0
end
//这一步,起了vrf ,但还没有跑任何与bgp相关的东西

三、
pe–p–pe
在pe上起vrf,p不需要知道vrf的存在
在R3和R5之间跑mp-bgp
R4是p

R3:
router bgp 2
no bgp default ipv4
nei 5.5.5.5 remote 2
nei 5.5.5.5 update-source loop 0
address-family vpnv4
nei 5.5.5.5 activate
end

R5:
router bgp 2
no bgp default ipv4
nei 3.3.3.3 remote 2
nei 3.3.3.3 up loop 0
address-family vpnv4
nei 3.3.3.3 activate
end

show ip bgp vpnv4 all summary
neighbor v as up/down
5.5.5.5 4 2 00:00:02

neighbor 5.5.5.5 up

——————————————————————
R0:
host R0
router rip
version 2
no auto-summary
network 11.0.0.0
network 192.168.1.0
end

R1:
host R1
router rip
version 2
no auto-summary
network 192.168.1.0
end


R1:
router ospf 1
network 12.1.1.0 0.0.0.255 a 0
network 1.1.1.0 0.0.0.255 a 0
end

R2:
host R2
router ospf 1
network 2.2.2.0 0.0.0.255 a 0
network 12.1.1.0 0.0.0.255 a 0
end


把ce(R2)的路由放进vrf(R3)中,这样,R2和R7之间就可以建立bgp了,
R2:
router ospf 1
network 23.1.1.0 0.0.0.255 a 0
end

另起一个关联vrfA的ospf进程2
R3:
host R3
router ospf 2 vrf a
network 23.1.1.0 0.0.0.255 a 0
end

show ip route vrf a
O 1.1.1.1 via 23.1.1.1 serial1/0
O 2.2.2.2 via 23.1.1.1 serial1/0
O 12.1.1.0 via 23.1.1.1 serial1/0


同R0、R1、R2、R3
配R8、R7、R6、R5

R7:
host R7
router rip
version 2
no auto-summary
network 192.168.2.0
end

R8:
host R8
router rip
version 2
no auto
network 192.168.2.0
network 22.0.0.0
end

R7:
show ip route
R 22.22.22.22 via 192.168.2.2,serial1/1

R7:
router ospf 1
network 67.1.1.0 0.0.0.255 a 0
network 7.7.7.0 0.0.0.255 a 0
end

R6:
host R6
router ospf 1
network 67.1.1.0 0.0.0.255 a 0
network 6.6.6.0 0.0.0.255 a 0
end


R6:
router ospf 1
network 56.1.1.0 0.0.0.255 a 0

R5:
host R5
router ospf 2 vrf a
network 56.1.1.0 0.0.0.255 a 0 //这里并没有宣告R5的环回口5.5.5.5,上面的R3也same R5,那是因为R3和R5都把自己的换回口宣告到了ospf1中的缘故,
end

R5:
show ip route vrf a
O 6.6.6.6 via 56.1.1.2 serial1/1
O 7.7.7.7 via 56.1.1.2 serial1/1
O 67.1.1.0 via 56.1.1.2 serial 1/1


要将R1、R2的路由传递给R6,通过R3和R5之间的bgp vpnv4 的邻居关系进行传递

					R3:
					router bgp 2
					no bgp default ipv4
					nei 5.5.5.5 remote 2
					nei 5.5.5.5 update-source loop 0
					address-family vpnv4
					nei 5.5.5.5 activate
					end

邻居上面 三、已经建立好了,现在就是将R2的路由重分布到mp-bpg中,但 O 12.1.1.0没有必要重分布到mp-bgp中,可以使用route-map控制

					R3:
					host R3
					router ospf 2 vrf a
					network 23.1.1.0 0.0.0.255 a 0
					end

R3:
router bgp 2
address-family ipv4 vrf a
redistribute ospf 2 //把vrf里的路由重分布到bgp中
end

R5:
router bgp 2
address-family ipv4 vrf a
redistribute ospf 2
end

R3:
show ip bgp vpnv4 all
network nexthop
*> 1.1.1.1/32 23.1.1.1
*> 2.2.2.2/32 23.1.1.1
*>i6.6.6.6/32 5.5.5.5
*>i7.7.7.7/32 5.5.5.5


让R1、R2知道R6、R7,互相都知道,使用重分布,bgp vpnv4(mp-bgp) 重分布进ospf
R3:
show ip route vrf a
O 1.1.1.1 via 23.1.1.1 serial1/0
O 2.2.2.2 via 23.1.1.1 serial1/0
B 6.6.6.6 via 5.5.5.5
B 7.7.7.7 via 5.5.5.5
可见,vrf a 中有从mp-bgp处学来的B路由,将B路由重分布进ospf中,就可以让R1、R2知道R6、R7了,

router ospf 2
redistribute bgp 2 subnets //需要加参数subnets,要不然只能重发布主类路由,
end

R5:
router ospf 2
redistribute bgp 2 subnets
end

R1:
show ip route
O IA 6.6.6.6 via 12.1.1.2 serial1/1
O IA 7.7.7.7 via 12.1.1.2 serial1/1


R1通过rip学习到R0上的11.11.11.11/32,要传递到R8,需要和R2建立bgp,然后network从rip学到的11.11.11.11/32,这样,R2就通过bgp知道了11.11.11.11/32
再结合R2与R6之间的bgp,就可以将11.11.11.11/32送达R6,这样R7通过R6也就知道了11.11.11.11/32,再重发布到rip中,最终R8也知道了11.11.11.11/32

目前R1和R2之间只有ospf的关系,

R1:
router bgp 1
no bgp default ipv4
nei 2.2.2.2 remote 1
nei 2.2.2.2 up lo 0
address-family ipv4
nei 2.2.2.2 activate
end

R2:
router bgp 1
no bgp default ipv4
nei 1.1.1.1 re 1
nei 1.1.1.1 up lo 0
address-family ipv4
nei 1.1.1.1 activate
nei 1.1.1.1 route-reflector-client
end

R6:
router bgp 3
no bgp default ipv4
nei 7.7.7.7 re 3
nei 7.7.7.7 up lo 0
address-family ipv4
nei 7.7.7.7 activate
nei 7.7.7.7 route-refletor-client

R7:
router bgp 3
no bgp default ipv4
nei 6.6.6.6 re 3
nei 6.6.6.6 up lo 0
address-family ipv4
nei 6.6.6.6 activate
end

R1:
show ip bgp summary
neighbor v as
2.2.2.2 4 1

R6:
show ip bgp summary
neighbor v as
7.7.7.7 4 3


R2和R6之间建立 bgp

R2:
router bgp 2
bgp is already running;as is 1
router bgp 1
nei 6.6.6.6 remote 3
nei 6.6.6.6 up lo 0
nei 6.6.6.6 ebgp-multihop
address-family ipv4
nei 6.6.6.6 activate
end

R6:
router bgp 3
nei 2.2.2.2 remote 1
nei 2.2.2.2 up lo 0
nei 2.2.2.2 ebgp-multihop
address-family ipv4
nei 2.2.2.2 activate
end

R2:
show ip bgp summary
neighbor v as
1.1.1.1 4 1
6.6.6.6 4 3


在R1上把11.11.11.11/32进行宣告,同理R7

R1:
router bgp 1
network 11.11.11.11 mask 255.255.255.255
end

R7:
router bgp 3
network 22.22.22.22 mask 255.255.255.255
end

show ip route
没有收到11.11.11.11/32的B表项路由,

到R1上看bgp 有没有11.11.11.11/32的路由

R1:
show ip bgp
network nexthop
*> 11.11.11.11/32 192.168.1.2

R2:
show ip bgp summary
nei v as
1.1.1.1 4 1
6.6.6.6 4 3

show ip bgp
network nexthop

  • i11.11.11.11/32 192.168.1.2 可见本条目中,不是 >best
    如果是不优,要有下意识的去看下一跳,nexthop 是 192.168.1.2,而R2是没有非直连的R0的接口192.168.1.2的路由的,
    需要在R1上向bgp邻居R2,next-hop-self

R1:
router bgp 1
address-family ipv4
nei 2.2.2.2 next-hop-self
end

再去R2看,

R2:
show ip bgp
network nexthop
*>i11.11.11.11/32 1.1.1.1 变最优, >best

R6:
show ip bgp
network nexthop
*> 11.11.11.11/32 2.2.2.2 //在R6上可以看到 11.11.11.11/32 已变最优 >best

  • i22.22.22.22/32 192.168.2.2 //但 22.22.22.22/32 仍未变最优 >best

R7:
show ip route
B 11.11.11.11 via 2.2.2.2,

router bgp 3
address-family ipv4
nei 6.6.6.6 next-hop-self
end

R1:
show ip route
B 22.22.22.22 via 6.6.6.6


R6:
show ip bgp
network nexthop
*> 11.11.11.11/32 2.2.2.2 //因为R6是R2的mp-ebgp邻居,所以给ebpg邻居路由时候,会改变下一跳,从1.1.1.1 变成 2.2.2.2

R2:
router bgp 1
address-family ipv4
nei 6.6.6.6 next-hop-unchanged
end

R6:
router bgp 3
address-family ipv4
nei 2.2.2.2 next-hop-unchanged
end
clear ip bgp *

show ip bgp
network nexthop
*> 11.11.11.11/32 1.1.1.1


现在路由已经从R1传到了R7,接下来,将路由重分布到R0、R8使用的rip中,让R0、R8知道,就可以贯通了。
但,默认情况下,是不允许将bgp的ipv4路由重分布进igp的(igp其中包括rip)

R1:
router rip
redistribute bgp 1 metric translate
end

直接写上面的语句是错误的,
需要在bgp中写一条语句
router bgp 1
bgp redistribute-internal
edistribute-internal allow redistribution of ibgp into igps(dangerous) //ibgp管理距离是200
end

R0:
show ip route
R 22.22.22.22 via 192.168.1.1 serial1/0

这样,R0就有了R8上的22.22.22.22/32的路由,

R7:
router bgp 3
bgp redistribution-internal
end

R7:
router rip
redistribute bgp 3 metric translate
end

R8:
show ip route
R 11.11.11.11 via 192.168.2.1 serial1/0


从R0出发,
R0查路由表,show ip route R 22.22.22.22 via 192.168.1.1 ,到R1,
R1查路由表,show ip route B 22.22.22.22 via 7.7.7.7 //经过7.7.7.7
O IA 7.7.7.7 via 12.1.1.2,serial1/1 //7.7.7.7需要走到R2,
R2查路由表,show ip route B 22.22.22.22 via 7.7.7.7
O IA 7.7.7.7 via 23.1.1.2,serial1/1
因为是ip包,到达的R3,所以R3需要查 vrf a 的路由表,
R3查vrf a 路由表,show ip route vrf a ,但是R3的vrf a 中没有到达 22.22.22.22/32 的路由表

要达到的效果是,R3、R5都不应该有11和22 的路由,所以,上面的现象是正常的,因为,是R2直接传给了R6,所以R3、R5上没有11、22的路由是对的,这样避免了R3、R5上面
承载巨量的客户路由,所以在R3、R5上出现了路由黑洞,在R3、R5上查不到11、22的路由,所以就扔了,这就需要在R3到R5之间靠标签传递了,
如果,R2送给R3的是纯ip包,就肯定要在R3上查路由表,但没有,所以就肯定挂,所以这么推断,R2给R3的只能是标签包,所以,需要在R2和R3之间跑ldp,

R2:
int s1/1 //面向R3建立ldp
mpls ip
end

R3:
int s1/0
mpls ip
end

R5:
int s1/1
mpls ip
end

R6:
int s1/0
mpls ip
end


从R0出发,
R0查路由表,show ip route R 22.22.22.22 via 192.168.1.1 ,到R1,
R1查路由表,show ip route B 22.22.22.22 via 7.7.7.7 //经过7.7.7.7
O IA 7.7.7.7 via 12.1.1.2,serial1/1 //7.7.7.7需要走到R2,
R2查cef,
show ip cef detail
22.22.22.22/32 tag information from 7.7.7.7/32,tags imposed:{209} //下一跳是7.7.7.7/32的标签209 , 这个209是R3给的,

R3查 LIB
show mpls ldp binding,但是看不到来自bgp的7.7.7.7/32路由,所以就不会给7.7.7.7/32分标签,
R3再查 LFIB
show mpls forwarding-table
localtag outgoingtag prefix outgoinginterface
209 405 7.7.7.7/32 se1/1

R5:
show ip bgp vpnv4 all labels
network nexthop inlabel/outlabel
route distinguisher:1:1(a)
7.7.7.7/32 56.1.1.2 405/nolabel

R3:

show ip bgp vpnv4 all labels
network nexthop inlabel/outlabel
route distinguisher:1:1(a)
7.7.7.7/32 5.5.5.5 209/405

R2:
show mpls ldp bindings
tib entry:7.7.7.7/32 ,rev 12
local binding:tag:103
remote binding:tsr:23.1.1.2:0,tag:209

show ip route
O IA 7.7.7.7/32 via 23.1.1.2 serial1/1
B 22.22.22.22 via 7.7.7.7,

R4:
show mpls forwarding-table
localtag outgoingtag prefix outgoinginterface
301 poptag 5.5.5.5/32 se1/1

R3:
show mpls forwarding-table detail
localtag outgoingtag prefix outgoinginterface
209 405 7.7.7.7/32 se1/1
tag stack{301 405}

到R5,
查LFIB
show mpls forwarding
localtag outgoingtag prefix outgoinginterface
405 503 7.7.7.7/32 se1/1

到R6:
查LFIB
show mpls forwarding
localtag outgoingtag prefix outgoinginterface
503 untagged 7.7.7.7/32 se1/1

show mpls ldp binding
tib entry:7.7.7.7/32,rev 12
local binding:tag:503
remote binding:tsr:56.1.1.1:0,tag:405


抓包:
R2 to R3
source destination
11.11.11.11 22.22.22.22
multiprotocol label switching header,label:209, s:1

R3 to R4
source destination
11.11.11.11 22.22.22.22
multiprotocol label switching header,label:301 s:0 //外层,ldp压的标签
multiprotocol label switching header,label:405 s:1 //内层,bgp压的标签,是R5给的,vrf a
//(R3: ip vrf a ,address-family vpnv4,nei 5.5.5.5 activate )
R4 to R5
source destination protocol info
11.11.11.11 22.22.22.22 ICMP echo(ping)request
multiprotocol label switching header,label:405 s:1

R5 to R6
source destination protocol info
11.11.11.11 22.22.22.22 ICMP echo(ping)request
multiprotocol label switching header,label:503 s:1

	R6:
	查LFIB
	show mpls forwarding
	localtag		outgoingtag		prefix		outgoinginterface
	503		untagged		7.7.7.7/32	se1/1				//R6给R7 untagged

————————————————————————————————————
方法二,改良版
在R2与R3之间使用bgp ipv4 传递 7.7.7.7/32,这样就会给7.7.7.7/32压标签,vpnv4是与路由关联的,传递了这个路由才会为之分配标签,

在bgp可达的基础上,再建立bgp,(之前是在ospf上建立bgp)

直连的R2、R3之间可以直接建立bgp,

没有客户就不需要vrf,有客户的路由器才需要vrf

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值