BGP & MP-BGP & VRF
BGP & MP-BGP & VRF
正常BGP
# 启动bgp之后的默认配置
[CX1]bgp 100
[CX1-bgp]dis th
#
bgp 100
#
ipv4-family unicast
undo synchronization
[CX1-bgp]peer 10.0.3.3 as-number 100
[CX1-bgp]peer 10.0.3.3 connect-interface LoopBack 0
[CX1-bgp]dis th
#
bgp 100
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 10.0.3.3 enable
[CX1]dis bgp peer
BGP local router ID : 10.0.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.0.3.3 4 100 3 3 0 00:00:11 **Established** 0
- 第七行的意思是默认使用ipv4中的单播,我们敲的peer 10.0.3.3默认就会自动写入到ipv4地址族当中
- 第8行的意思是同时关闭IPV4地址族当中的BGP和IGP的同步功能;
我们具体来看一下传统IPV4单播BGP的配置:
[CX1-bgp]dis th
#
bgp 100
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 10.0.3.3 enabl
其实我只是敲了第四行和第五行配置,但其实生成的配置却不仅有两条,我们发现它自动生成了一条peer 10.0.3.3放在了ipv4-family当中。
MP-BGP
但当我们配合MPLS搞MPLS-VPN的时候,这个时候就不能再使用IPV4的地址族了,而是要使用vpnv4的地址族,所以我们要关闭IPV4的单播(其实不关也行,就是看着不太舒服),启动ipv4的vpnv4单播地址族如下所示:
[[CX1]undo bgp 100
Warning: The BGP process will be deleted. Continue? [Y/N]:y
[CX1]bgp 100
[CX1-bgp]**undo default ipv4-unicast**
[CX1-bgp]**ipv4-family vpnv4 unicast**
[CX1-bgp-af-vpnv4]qu
[CX1-bgp]dis th
#
bgp 100
undo default ipv4-unicast
#
ipv4-family unicast
undo synchronization
#
ipv4-family vpnv4
policy vpn-target
#
return
[CX1-bgp]**peer 10.0.3.3 as-number 100**
[CX1-bgp]**peer 10.0.3.3 connect-interface LoopBack 0**
[CX1-bgp]dis th
#
bgp 100
undo default ipv4-unicast
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
undo peer 10.0.3.3 enable
#
ipv4-family vpnv4
policy vpn-target
尴尬的事情出现了,当我们关闭于ipv4的单播启用了vpnv4之后,同时敲了两条命令,两条在全局,这和正常的BGP效果一样的,但是peer 10.0.3.3 enable并没有自动出现在ipv4-family vpnv4当中,如果这样建立对等体的话是不成功的,我们必须得手动进入到ipv4-family vpnv4当中把peer 10.0.3.3 enable写进去才可以,如下所示:
[CX1-bgp-af-vpnv4]peer 10.0.3.3 enable
Warning: This operation will reset the peer session. Continue? [Y/N]:y
[CX1-bgp]**dis bgp vpnv4 all peer**
BGP local router ID : 10.0.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.0.3.3 4 100 7 7 0 00:03:24 **Established** 0
MP-BGP与VRF
VRF拥有单独的路由表,也可以单独去配置静态路由或动态路由,可以看做是一台独立的设备,现在的问题时MP-BGP是如何利用本地的VRF与对等体中的VRF做的关联呢?
首先我们要明确一点,VRF之间是不会直接交互的,而是要通过MP-BGP,MP-BGP对等体之间是可以直接交互通信的,VRF需要利用MP-BGP与对端的VRF进行交互,也就是说MP-BGP进程与VRF进程有所关系,也就是说MP-BGP进程要把VRF进程里面的一些信息引入到MP-BGP当中!而且还要把对端发送过来的路由信息注入到本端的VRF当中!
创建vpn实例是单独的进程,创建MP-BGP也是单独的进程,将两者关系起来是通过BGP当中的vpn-instance类型!在做两者的路由引入的时候要通过BGP当中的vpn-instance!
关键问题
如何给VRF当中配置静态路由和动态路由?又如何进行查看?
其实这个问题的关键是我们怎么样在PE设备的操作系统当中进入到VRF当中进行配置路由呢?
# BGP
bgp 2345
ipv4-family vpn-instance A
router-id 172.16.0.1
peer 172.16.0.2 as 64538
-----
# OSPF
ospf 1 vpn-instance A
a 0
network 172.16.0.5 0.0.0.0
-----
# 查看VRF里面的路由条目
dis ip routing-table vpn-instance A
--
如何判断PE的VRF与CE中的动态路由之间是否正常建立了邻接关系?
# 查看是否被引入PE系统当中
dis bgp vpnv4 all peer
如何确定MP-BGP与VRF之间的路由都已经相互引入成功了?
[AR5_PE2]bgp 2345
[AR5_PE2-bgp]ipv4-family vpn-instance A
[AR5_PE2-bgp-A]import-route ospf 1
[AR5_PE2-bgp-A]ospf 1
[AR5_PE2-ospf-1]import-route bgp
dis bgp vpnv4 vpn-instance A routing-table
如何查看本端MP-BGP给VRF分配的标签?
dis bgp
MP-BGP与VPN实例
MP-BGP可以有多个地址族这一点我们都知道
- 默认是ipv4的单播
- 与MP-BGP对等体之间交互的是ipv4的vpnv4类型
- 与本地vpn实例之间交互的是vpn-instance类型,专用于MP-BGP进程与VRF进程相互之间的路由引入