梅利333

从无到有,自有至精

导航

IPV6 ----- 9 MP-BGP

MP-BGP

 

BGP就不用说了,

BGP 可以支持更多的协议,

IPV4-tcp-179

IPV6-tcp-179

BGP通过激活属性,来承载更多的协议 ,

(是否还记得mpls vpn中的一些设置)

 

BGP这个协议就牛多了,

因为它支持多种协议 ,

不管你是IPV4 /IPV6 ,都 一样,

只要是在协议 里面去激活相应的地址簇就,address-famliy ipv6 unicast

并后再指定邻居激活功能nei x.x.x.x active

 

MP-BGP中无非三种 情况

1 运行ipv4的BGP之上传递IPV6的地址

2 运行IPV6的BGP之上传递IPV4的地址

3 运行IPV6 FE80的BGP 传递ipv4 以及ipv6

 

第一种,IPV4之上跑IPV6的路由

 

一起来回顾一下BGP是如何建立的,

我们使用ibgp的关系来建立 ,并且使用eigrp做为底层协议,使用两端的loopback接口1.1.1.1 和2.2.2.2来做为两侧的更新源、

 

IPV4_BGP部份配置

R1(config)#inter f0/0

R1(config-if)#ip add 12.0.0.1 255.255.255.0

R1(config-if)#no shu 

R1(config-if)#inter lo 1

R1(config-if)#ip add 1.1.1.1 255.255.255.0

 

R1(config-if)#router eigrp 1

R1(config-router)#no au

R1(config-router)#net 1.1.1.1 0.0.0.0

R1(config-router)#net 12.0.0.1 0.0.0.0

 

R1(config-router)#router bgp 100

R1(config-router)#bgp router-id 1.1.1.1

R1(config-router)#nei 2.2.2.2 remote 100

R1(config-router)#nei 2.2.2.2 up lo 1

 

R2做同样的配置

R2(config)#inter f0/0

R2(config-if)#ip add 12.0.0.2 255.255.255.0

R2(config-if)#no shu

R2(config-if)#ip add 2.2.2.2 255.255.255.0

R2(config-if)#no shu

 

R2(config)#router eigrp 1

R2(config-router)#no au

R2(config-router)#net 2.2.2.2 0.0.0.0

R2(config-router)#net 12.0.0.2 0.0.0.0

 

R2(config-router)#router bgp 100

R2(config-router)#bgp router-id 2.2.2.2

R2(config-router)#nei 1.1.1.1 remote 100

R2(config-router)#nei 1.1.1.1 up lo 1

 

底层IGP完成,BGP也已经建立起来,

现在要开启考虑如何传递IPV6的路由了,

首先要想传递IPV6 的路由就必须要对IPV6 的协议簇进行激活,并且指定邻居开启这个功能(有一个前提 ,就是要在全局下为路由器开启ipv6 unicast-routing功能)

R1(config)#ipv un

R1(config)#router bgp 100

R1(config-router)#address-family ipv6 unicast  //开启ipv6地址簇

R1(config-router-af)#nei 2.2.2.2 activate   //激活指定的邻居,可以发送这样IPV6信息

 

R2(config)#ipv un

R2(config)#router bgp 100

R2(config-router)#address-family ipv6 unicast

R2(config-router-af)#nei 1.1.1.1 activate

 

然后建立IPV6 地址

R1(config-router)#inter lo 10

R1(config-if)#ipv add 1111::1/128

 

R2(config-router)#inter lo 10

R2(config-if)#ipv add 2222::2/128

 

有了地址,也开启了ipv6的功能,现在开始宣告吧

在哪里宣告又是一个问题,

首先要明白,路由器现在运行的是普通 的BGP,是针对 于IPV4的

如果要宣告IPV6 的,肯定要在IPV6 的地址簇中

R1(config)#router bgp 100

R1(config-router)#address-family ipv6 unicast

R1(config-router-af)#network 1111::1/128

 

R2(config)#router bgp 100

R2(config-router)#address-family ipv6 unicast

R2(config-router-af)#network 2222::2/128

 

宣告完成,来查看一下

Show ipv6 route bgp   //可以查看IPV6 的BGP路由表

 

 show bgp ipv6 unicast

可以查看到ipv6 的BGP表,

然后会发现,现在2222::2已经过来了,但是无法显示 为最优,best,

怎么回事儿,?

往后看,next-hop是个啥 ?

Ipv6带着ipv4地址 ,这个地址是系统自己弄成的,也是根本就不可达的

 

我们之前学习BGP时提到过,关于BGP条止,要么被 BGP的防环机制给干掉,要么就是下一跳不可达,才会被处理为不优条目、

那这个时候怎么办呢《?

首先,确认一下这就是由于下一跳不可达造成的,

那么如何来改呢?

修改它的next-hop 值 ,可以用什么 ???对,没错,route-map

 

但是又有一个问题

我这个下一跳要写谁?IPV4地址 ,还是IPV6地址呢?

如果是IPV4会发生什么 ?

用IPV4 去解析ipv6的地址 ,挺会玩儿的啊 ~,根本就不可能实现

所以只能是IPV6的地址 了,

 

下一跳 ,怎么做?

在R1/R2上两端做一个同网段的ipv6  global地址 。

R1(config-router)#inter f0/0

R1(config-if)#ipv add 2012::1/64

 

R2(config-router-af)#inter f0/0

R2(config-if)#ipv add 2012::2/64

配置 完成后最好测试 一下连通性,即便是直连路由,也要测试一下

 

然后将route-map 的ipv6 下一跳改成ipv6  global地址

R1(config-if)#route-map aa

R1(config-route-map)#set ipv6 next-hop 2012::1

 

R2(config-if)#route-map aa

R2(config-route-map)#set ipv6 next-hop 2012::2

 

然后就是最后一步的调用了,

在哪里调用,也是很关键的,

不用去考虑此时运行的BGP是IPV4 只需要考虑的是传递的什么路由,

如果是IPV4的就在IPV4中去做,

如果是IPV6的就在IPV6中去做,

所以,

我们要到IPV6 的地址 簇中去调 用route-map

R1(config-route-map)#router bgp 100

R1(config-router)#address-family ipv6 unicast

R1(config-router-af)#nei 2.2.2.2 route-map aa out  //但是指定的邻居还得是IPV4的邻居,因为BGP是IPV4 建立起来的

 

R2(config)#router bgp 100

R2(config-router)#address-family ipv6 un

R2(config-router-af)#nei 1.1.1.1 route-map aa out

 

然后再查看BGP表

 

 

由于next-hop 变得有效,

所在这个条目,也就变成了最优

这样一来在路由表中应该可以看到这个条目了

 

 

 测试一下

 

 

 

OK 没问题

 

这部份的总结,

1 建立好IPV4 的BGP

2  开启ipv6 的地址簇,并指定neighbor 激活该功能,允许传递IPV6相关数据

3 创建IPV6 global地址

4 使用路由策略route-map,针对于ipv6 地址的下一跳进行改变

5 在ipv6 地址簇下进行调 用

 

 

 

第二种  IPV6BGP上传递IPV4的路由

有了上一个经验,相必这里应该也不难了

一起来看一下

 

在建立BGP邻居的时候,有一个小点需要注意一下

由于BGP也需要RID,所以必须要有IPV4的地址 在两端 ,可以是loopback接口,

如果没有的话,就需要手动的去指定一个RID了

 

咱们还是一步一步的来吧

R1(config)#inter f0/0

R1(config-if)#ipv add 2012::1/64

R1(config-if)#no shu

 

R2(config)#inter f0/0

R2(config-if)#ipv add 2012::2/64

R2(config-if)#no shu

 

通信 正常,可以建立 BGP邻居

R1(config-if)#inter lo 1

R1(config-if)#ip add 1.1.1.1 255.255.255.0

R2(config-if)#inter lo 1

R2(config-if)#ip add 2.2.2.2 255.255.255.0

 

R1(config-if)#router bgp 100

R1(config-router)#bgp rout

R1(config-router)#bgp router-id 1.1.1.1

R1(config-router)#nei 2012::2 remote 100

*Mar  1 00:02:25.399: %BGP-5-ADJCHANGE: neighbor 2012::2 Up

 

R2(config-if)#router bgp 100

R2(config-router)#bgp router

R2(config-router)#bgp router-id 2.2.2.2

R2(config-router)#nei 2012::1 remote 100

*Mar  1 00:02:25.399: %BGP-5-ADJCHANGE: neighbor 2012::1 Up

 

到这里IPV6 的BGP已经完成,

现考虑在其上传递IPV4路由,

还是一样的道理,想要传递不同协议的路由,就要开启那个协议的协议簇,并激活邻居

 

R1(config-router)#address-family ipv4 unicast

R1(config-router-af)#nei 2012::2 activate

R1(config-router-af)#network 1.1.1.0 mask 255.255.255.0   //一并将IPV4的路由宣告

 

R2(config-router)address-family ipv4 unicast

R2(config-router-af)#nei 2012::1 activate

R2(config-router-af)#network 2.2.2.0 mask 255.255.255.0

 

 

然后在R1上查看bgp 表,

可以看到,路由已经 传递过来了,但是还是存在问题

下一跳 ,又是下一跳 ,

这样的问题基本上都 是因为下一跳 而来的

可以看到32.18.0.0这个地址根本就不存在,是BGP自己生成的,

怎么办?

Route-map

想要传递IPV4的路由,还要在两台设备之间设置 可以互通的IPV4地址

 

R1(config)#inter f0/0

R1(config-if)#ip add 12.0.0.1 255.255.255.0

R1(config-if)#no shu

 

R2(config-router-af)#inter f0/0

R2(config-if)#ip add 12.0.0.2 255.255.255.0

R2(config-if)#no shu

 

R1(config-if)#route-map aa

R1(config-route-map)#set ip nex

R1(config-route-map)#set ip next-hop 12.0.0.1

% Warning: Next hop address is our address  //这里不用怕,只是一个提醒,说下一跳 是自己

 

R2(config-if)#route-map aa

R2(config-route-map)#set ip nex

R2(config-route-map)#set ip next-hop 12.0.0.2

% Warning: Next hop address is our address

 

最关键的一步来了,

调用route-map

在哪里?

还记得吗?

让住一句话,你想要最终传递哪种协议 ,就在哪 种协议簇下去调 用即可

错不了的

 

R1(config-route-map)#router bgp 100

R1(config-router)#address-family ipv4 unicast

R1(config-router-af)#nei 2012::2 route-map  aa out

 

R2(config-route-map)#router bgp 100

R2(config-router)#address-family ipv4 unicast

R2(config-router-af)#nei 2012::1 route-map aa out

最后再验证其结果

 

 

 NEXT-HOP 一变,条目立马变成最优的了

 

测试一下

 

 

 

 

第三种,使用FE80建立 BGP neighbor,

在其之上运行IPV4 以及IPV6

该实验最难点就是在于FE80地址的使用

其实和第二个差不多的

就是FE80地址看起来有些许的头疼

 

老规矩一步一步来,

咱们走着瞧

 

1 配置FE80地址 ,直接开启IPV6功能

R1(config)#inter f0/0

R1(config-if)#ipv en

R1(config-if)#no shu

 

R2(config)#inter f0/0

R2(config-if)#ipv en

R2(config-if)#no shu

 

 

 开启完成之后就可以看到IPV6  的linklocal地址了

 

使用这个地址 建立BGP邻居

R1(config)#router bgp 100

R1(config-router)#bgp router-id 1.1.1.1

R1(config-router)#address-family ipv6 unicast

R1(config-router)#nei FE80::C802:41FF:FE2C:0%FastEthernet0/0 remote-as 100

邻居+对端FE80地址+%+本地出接口

 

R2(config)#router bgp 100

R2(config-router)#bgp router-id 2.2.2.2

R2(config-router)#nei FE80::C801:42FF:FE98:0%FastEthernet0/0 remote-as 100

 

邻居建立可以完成吗?

不行,

因为IPV6 设备默认是不支持传递的

所以还需要激活这个功能,以及指定邻居

 

R1(config-router-af)#nei FE80::C802:41FF:FE2C:0%FastEthernet0/0 activate

R2(config-router-af)#nei FE80::C801:42FF:FE98:0%FastEthernet0/0 activate

直接使用上面的地址就可以了,

 

激活了功能,指定了邻居,是不是就可以直接传递IPV6的路由了呢?

是的,没错,因为此时的BGP就是用IPV6来建立的

R1(config-router-af)#inter lo1

R1(config-if)#ipv add 1111::1/128

R2(config-router-af)#inter lo 1   

R2(config-if)#ipv add 2222::2/128

 

创建IPV6地址

然后进行宣告,

还是要在IPV6的地址 簇中进行

R1(config-if)#router bgp 100

R1(config-router)#address-family ipv6 unicast

R1(config-router-af)#network 1111::1/128

 

R2(config-if)#router bgp 100

R2(config-router)#address-family ipv6 un

R2(config-router-af)#network 2222::2/128

 

 

 

 

 

最主要的是考虑如何传递IPV4,相必有了上面的经验,在这里就不难,只不过是地址 发生了变化,

先来分析一下 所需要的步骤

1 物理接口的ipv4地址

2 BGP激活IPV4地址簇,并指定邻居

3 宣告IPV4路由

4 route-map 修改下一跳

5 ipv4地址簇下调用route-map

 

R1(config-router)#inter f0/0

R1(config-if)#ip add 12.0.0.1 255.255.255.0

R1(config-if)#no shu

 

R2(config-router-af)#inter f0/0

R2(config-if)#ip add 12.0.0.2 255.255.255.0

R2(config-if)#no shu

 

R1(config-if)#router bgp 100

R1(config-router)#address-family ipv4 unicast

R1(config-router-af)#nei FE80::C802:41FF:FE2C:0%FastEthernet0/0 activate

R1(config-router-af)#network 1.1.1.0 mask 255.255.255.0

 

R2(config-if)#router bgp 100

R2(config-router)#address-family ipv4 unicast

R2(config-router-af)#nei FE80::C801:42FF:FE98:0%FastEthernet0/0 activate

R2(config-router-af)#net 2.2.2.0 mask 255.255.255.0

 

R1(config-if)#route-map aa

R1(config-route-map)#set ip next-hop 12.0.0.1

 

R2(config-if)#route-map aa

R2(config-route-map)#set ip next-hop 12.0.0.2

 

R1(config-route-map)#router bgp 100

R1(config-router)#address-family ipv4 unicast

R1(config-router-af)#$802:41FF:FE2C:0%FastEthernet0/0 route-map aa out 

 

R2(config-route-map)#router bgp 100

R2(config-router)#address-family ipv4 unicast

R2(config-router-af)#$801:42FF:FE98:0%FastEthernet0/0 route-map aa out 

 

查看IPV4 的bgp表

 

 

路由表中同样存在

测试

 

 

IPV6最终总结

其实对于IPV6而言,最乱的(难倒是不难,就是来回的绕)就是在路由协议这一块,还有就是当面对着上FE80,以及一些特殊地址时,会有些蒙B的感觉,但是不要慌张。这都不叫事儿,干它就完了,不信学不会。、

 

 -----------------------------------------------------

CCIE成长之 路 --- 梅利

posted on 2020-09-01 10:43  梅利333  阅读(873)  评论(0编辑  收藏  举报