应用场景
当公司地理位置跨度较大,跨多个运营商时就需要使用跨域技术解决路由传递问题
例如北方主要使用联通网络,南方主要使用电信网络,如果两个公司一个在北京一个在广东就需要使用到跨域方案解决MPLS BGP路由传递问题
一、option A方案(仅适用于小数量的CE站点间通信,对ASBR设备性能要求较高)
通过ipv4 VPN实例报文传递两端CE的路由条目,将另一端运营商整个域看做是一台CE设备。ASBR之间通过VPN实例下建立EBGP邻居传递路由,VPN实例分别绑定在互联的端口下,利用BGP VPNV4扩展团体属性控制本地VPNV4域内的路由收入,发出则通过ASBR间实例下建立的EBGP邻居进行传递。
拓扑分析
1、公司研发中心分布于北京和深圳两个地区,通过MPLS BGP专线互通,运营商需要解决双方的路由传递问题;
2、CE1/CE2与PE1/PE2起EBGP邻居,PE1/PE2与ASBR1/ASBR2起IBGP邻居,ASBR1与ASBR2在VPN实例下建立EBGP邻居,通过IPV4报文传递路由。
3、互联地址为设备的编号统一为24位掩码,例如P1AR2与ASBR1AR3之间互联地址为23.0.0.2/24与23.0.0.3/24,router ID 为设备编号即AR1为1.1.1.1 ;AR2为2.2.2.2。
配置思路
1、配同两个MPLS域底层
2、PE1与ASBR1之间起VPNV4 IBGP邻居,PE2与ASBR2同理
3、PE1与CE1起EBGP邻居,PE2与CE2同理,在PE1与CE1互联的接口下绑定VPN实例通过给路由打上扩展团体属性控制路由的收发。
4、ASBR1与ASBR2之间在VPN实例下起EBGP邻居,通过IPV4通告路由,即将CE1方向的VPNA实例路由通过IPV4通告给CE2方向的VPNB,反之同理。
注意事项
1、两端的VPN实例不可一样,否则失去意义。
2、两端路由是首先传递到ASBR上然后再传递到对端的ASBR上的,所以ASBR上接口需要绑定VPN实例来控制路由的收发(这里的收发控制的是与PE设备交互VPNV4路由的收发)。
3、绑定VPN实例的接口地址可以复用,因为通过VPN实例已经将地址隔离开了。
4、不可关闭设备上的BGP团体属性传递,否则路由传递失效。
配置开始
1、配同两个MPLS域底层
在PE 、P 、ASBR之间配置IGP路由协议跑通底层,再开启MPLS LDP分发标签,略过
P1设备上查看IGP情况,OSPF已经起来了(注意loopback0口下起的ROUTER-ID需要宣告到OSPF下,否则LDP会话不能建立)
P1设备上查看LDP会话状态,LDP协议也正常起来了
2、PE1与ASBR1之间起VPNV4 IBGP邻居,PE2与ASBR2同理
PE1上:
bgp 100
router-id 1.1.1.1
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
ipv4-family unicast
undo peer 3.3.3.3 enable //关闭掉IPV4下的BGP邻居
ipv4-family vpnv4
peer 3.3.3.3 enable //开启VPNV4下的BGP邻居
ASBR1上:
bgp100
router-id 3.3.3.3
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
ipv4-family unicast
undo peer 1.1.1.1 enable //关闭掉IPV4下的BGP邻居
ipv4-family vpnv4
peer 1.1.1.1 enable //开启VPNV4下的BGP邻居
PE2与ASBR2同理,略过
3、PE1与CE1起EBGP邻居
PE1上:
ip vpn-instance VPNA //起VPN实例VPNA
route-distinguisher 1:1
vpn-target 100:100
interface g0/0/0
ip binding vpn-instance VPNA
ip add 192.168.0.1 24
bgp 100
ipv4-family vpn-instance VPNA
peer 192.168.0.2 as-number 300
CE1上:
interface g0/0/0
ip add 192.168.0.2 24
int loop 0
ip add 7.7.7.7 32
bgp 300
peer 192.168.0.1 as-number 100
network 7.7.7.7 32
PE2上与CE2上同理,略过
4、ASBR1与ASBR2之间在VPN实例下起EBGP邻居
ASBR1上:
ip vpn-instance VPNA //起实例用来与PE1交互VPNV4路由
route-distinguisher 1:2
vpn-target 100:100 //RT值必须与PE1上的RT值一致
int g0/0/1
ip binding vpn-instance VPNA
ip add 192.168.0.1 24 //此处地址不会与PE1上的VPNA实例中地址冲突,因为MPLS域内通过MPLS标签转发。
bgp 100
ipv4-family vpn-instance VPNA //实例下起EBGP邻居,用来与ASBR2交互IPV4下的VPN实例路由
peer 192.168.0.2 as-number 200
ASBR2上:
ip vpn-instance VPNB //起实例用来与PE2交互VPNV4路由
route-distinguisher 2:1
vpn-target 200:200 //RT值必须与PE2上的RT值一致
int g0/0/0
ip binding vpn-instance VPNB
ip add 192.168.0.2 24
bgp 200
ipv4-family vpn-instance VPNB //实例下起EBGP邻居,用来与ASBR1交互IPV4下的VPN实例路由
peer 192.168.0.1 as-number 100
配置完成查看BGP邻居状态
在ASBR1上:
查看是否向对端发送CE1路由
ASBR1上:dis bgp vpnv4 vpn-instance VPNA routing-table peer 192.168.0.2 advertised
-routes
已经向对端发送了在ASBR2上查看是否接收路由
ASBR2上 :
dis bgp vpnv4 vpn-instance VPNB routing-table
由于双方CE都是在同一各AS号,在PE上还需要替换掉路由AS
PE1上:
ipv4-family vpn-instance VPNA
peer 192.168.0.2 substitute-as //向对端发送路由时将与对端想冲突的AS号替换为本地的AS号
PE2上同理
查看CE1与CE2上的路由
测试是否能通
CE1上: