实验拓扑图:
实验要求:
1.各AS之间实现全网互通,并在路由两条出口中任意一条断开均不影响全网通讯;
a.在Router P6BBR1和P7BBR1上创建EBGP;
b.在Router P6R3和P7R3之间创建EBGP;
2.在PXR1、PXR2、PXR3、PXR4、PXBBR1之间配置IBGP;
3.在PXR1、PXR2、PXR3、PXR4、PXBBR1之间可使用OSPF或RIP、EIGRP等协议完成各接口基本的互通性。这里使用OSPF,并将其中五台路由器全部定义到Aera 0中。
4.验证BGP配置,使用show ip bgp summary来验证BGP邻居关系是否已建立,使用sh ip bgp显示BGP路由选择信息库.查看是否从核心路由器和另一台边缘路由器那里获悉了路由,查看边缘路由器的IP路由选择表,其中是否有BGP路由?
5.最后,老师要求在每一台路由器上都要开启telnet访问,便于老师telnet到各个路由器检查我们的实验配置,方便帮助我们排错.因开启telnet需要设置密码,所有密码均设置cisco.
实验步骤(以下将以P7BBR1、P7R1、P7R2、P7R3、P7R4作说明,在P6BBR1和P6的其它路由器则可参考以此骤):
1.删除路由器中原来的配置(earse Start),以免被以前实验中的配置影响实验的顺利进行,然后重启各路由器(Reload),或针对接口使用default interface (s0)删除该接口的所有配置.
2.按照网络拓扑图上所标示的IP地址在所有ROUTER的接口上按要求配置好IP Address,在DCE接口上配置好时钟频率(clock rate 64000),所有接口确保UP状态(NO shutdown).
3.在所有Route中均需配置一个环回接口(Interface loopback 0),并配置相应的IP地址,用于BGP中宣告网络。OSPF路由协议通告完成后需确保各路由器间可以互相PING通Loopback O的地址.各路由器的OSPF配置命令如下:
P7BBR1:
P7BBR1(config-router)#network 172.31.7.0 0.0.0.255 area 0
P7BBR1(config-router)#network 192.168.7.1 0.0.0.0 area 0
P7R1:
P7R1(config-router)#network 172.31.7.0 0.0.0.255 area 0
P7R1(config-router)#network 10.7.0.0 0.0.0.255 area 0
P7R1(config-router)#network 10.7.1.0 0.0.0.255 area 0
P7R1(config-router)#network 10.7.4.1 0.0.0.0 area 0
P7R2:
P7R2(config-router)#network 172.31.7.0 0.0.0.255 area 0
P7R2(config-router)#network 10.7.0.0 0.0.0.255 area 0
P7R2(config-router)#network 10.7.2.0 0.0.0.255 area 0
P7R2(config-router)#network 10.7.4.2 0.0.0.0 area 0
P7R3:
P7R3(config-router)#network 10.7.3.0 0.0.0.255 area 0
P7R3(config-router)#network 10.7.1.0 0.0.0.255 area 0
P7R3(config-router)#network 10.7.4.3 0.0.0.0 area 0
P7R4:
P7R4(config-router)#network 10.7.3.0 0.0.0.255 area 0
P7R4(config-router)#network 10.7.2.0 0.0.0.255 area 0
P7R4(config-router)#network 10.7.4.4 0.0.0.0 area 0
4.P7BBR1中配置完S0的IP地址后,需要在SO接口上封装帧中继(encapsulation frame-relay),并将下一跳IP地址(172.31.7.1&172.31.7.2)映射到永久虚电路(PVC),在映射PVC时,broadcast这个参数一定要加,这样帧中继映射将支持广播和多播,否则在通告OSPF时无法将网络通告出去,并且要禁用反向地址解析。
P7BBR1(config-if)#frame-relay map ip 172.31.7.1 172 broadcast
P7BBR1(config-if)#frame-relay map ip 172.31.7.2 173 broadcast
P7BBR1(config-if)#no frame-relay inverse-arp
5.同理,在P7R1的S0接口也要封装帧中继,以及将下一跳IP地址(172.31.7.3)映射到永久虚电路,禁用反向地址解析.
P7R1(config-if)#frame-relay map ip 172.31.7.3 271 broadcast
P7R1(config-if)#no frame-relay inverse-arp
6.在P7R2的S0接口也封装帧中继,禁用反向地址解析,配置如下:
P7R1(config-if)#frame-relay map ip 172.31.7.3 271 broadcast
P7R1(config-if)#no frame-relay inverse-arp
7.在点到多点的模式下,OSPF将非广播网络中的所有路由器到路由器的连接视为点到点的链路,不选举DR和BDR,也不会将2类网络LSA扩散到邻接路由器,因在P7BBR1、P7R1、P7R2之间是帧中继的网络,需要配置为点到多点的模式,具体配置如下(各路由器的配置方法一致,均在S0接口配置):
P7BBR1(config-if)#ip ospf network point-to-multipoint.
8.到目前为止,需确保整个内网的路由器的各个接口都可以互相PING通,如果PING不通,先不要进行下面的工作,把整个内网调通再进行后续操作.因为此时若有某些接口无法PING通,说明你已经错了,建议你不要再错下去了,你先排错再说,以免越来越混淆.
9.下面,开始配置IBGP和EBGP,首先在P7BBR1路由器上配置BGP,因在P7BBR1的BGP配置中,有很多邻居的更新策略相同,而在CISCO路由器上,可将更新策略相同的邻居划分到同一个对等体组(peer-group)中,以简化配置,并可提高更新的效率,在此使用peer-group.
P7BBR1:
P7BBR1(config)#router bgp 64159 (进入BGP路由器配置模式,路由器位于AS64159中)
P7BBR1(config-router)#no syncronization (关闭同步规则)
P7BBR1(config-router)#network 172.31.7.0 mask 255.255.255.0 (在BGP中通告网络)
P7BBR1(config-router)#network 192.168.88.0 mask 255.255.255.0 (在BGP中通告网络)
P7BBR1(config-router)#neighbor ok peer-group (创建名为OK的对等体组)
P7BBR1(config-router)#neighbor ok remote-as 64159 (指定BGP邻居,这里指定的是对等体组)
P7BBR1(config-router)#neighbor ok update-source loopback0 (同邻居OK组建立对等关系,将一个环回接口的地址用作源地址)
P7BBR1(config-router)#neighbor ok next-hop-self (将自己作为下一跳通告给邻居)
P7BBR1(config-router)#neighbor 10.7.4.1 peer-group ok (将P7R1的L0加入到OK对等体组)
P7BBR1(config-router)#neighbor 10.7.4.2 peer-group ok (将P7R2的L0加入到OK对等体组)
P7BBR1(config-router)#neighbor 10.7.4.3 peer-group ok (将P7R3的L0加入到OK对等体组)
P7BBR1(config-router)#neighbor 10.7.4.4 peer-group ok (将P7R4的L0加入到OK对等体组)
P7BBR1(config-router)#neighbor 192.168.6.1 remote-as 64158 (指定192.168.6.1为BGP邻居)
P7BBR1(config-router)#neighbor 192.168.6.1 ebgp-multihop 2 (指定到邻居192.168.6.1的跳线为2)
P7BBR1(config-router)#neighbor 192.168.6.1 update-source loopback0 (同邻居192.168.6.1建立对等关系,并将环回接口的地址用作源地址)
P7BBR1(config-router)#no auto-summary (关闭自动汇总)
10.路由表中没有到邻居192.168.6.1的路由,需要手工添加静态路由到192.168.6.1,否则将不可达,EBGP将不能成功建立.
P7BBR1(config)#ip route 192.168.6.1 255.255.255.255 192.168.88.6
11.以下是另外四台路由器的BGP配置,不另加旁注,具体参考以上旁注:
P7R1:
P7R1(config)#router bgp 64159
P7R1(config-router)#no synchronization
P7R1(config-router)#network 10.7.0.0 mask 255.255.255.0
P7R1(config-router)#network 10.7.1.0 mask 255.255.255.0
P7R1(config-router)#network 172.31.7.0 mask 255.255.255.0
P7R1(config-router)#neighbor ok peer-group
P7R1(config-router)#neighbor ok remote-as 64159
P7R1(config-router)#neighbor ok update-source lookback0
P7R1(config-router)#neighbor 10.7.4.2 peer-group ok
P7R1(config-router)#neighbor 10.7.4.3 peer-group ok
P7R1(config-router)#neighbor 10.7.4.4 peer-group ok
P7R1(config-router)#neighbor 192.168.7.1 peer-group ok
P7R1(config-router)#no auto-summary
P7R2:
P7R2(config)#router bgp 64159
P7R2(config-router)#no synchronization
P7R2(config-router)#network 10.7.0.0 mask 255.255.255.0
P7R2(config-router)#network 10.7.2.0 mask 255.255.255.0
P7R2(config-router)#network 172.31.7.0 mask 255.255.255.0
P7R2(config-router)#neighbor ok peer-group
P7R2(config-router)#neighbor ok remote-as 64159
P7R2(config-router)#neighbor ok update-source lookback0
P7R2(config-router)#neighbor 10.7.4.1 peer-group ok
P7R2(config-router)#neighbor 10.7.4.3 peer-group ok
P7R2(config-router)#neighbor 10.7.4.4 peer-group ok
P7R2(config-router)#neighbor 192.168.7.1 peer-group ok
P7R2(config-router)#no auto-summary
P7R3:
P7R3(config)#router bgp 64159
P7R3(config-router)#no synchronization
P7R3(config-router)#network 10.7.1.0 mask 255.255.255.0
P7R3(config-router)#network 10.7.3.0 mask 255.255.255.0
P7R3(config-router)#network 192.168.86.0 mask 255.255.255.0
P7R3(config-router)#neighbor ok peer-group
P7R3(config-router)#neighbor ok remote-as 64159
P7R3(config-router)#neighbor ok update-source lookback0
P7R3(config-router)#neighbor ok next-hop-self
P7R3(config-router)#neighbor 10.6.4.3 remote-as 64158
P7R3(config-router)#neighbor 10.6.4.3 ebgp-multihop 2
P7R3(config-router)#neighbor 10.6.4.3 update-source loopback 0
P7R3(config-router)#neighbor 10.7.4.1 peer-group ok
P7R3(config-router)#neighbor 10.7.4.2 peer-group ok
P7R3(config-router)#neighbor 10.7.4.4 peer-group ok
P7R3(config-router)#no auto-summary
在P7R3中添加到10.6.4.3的静态路由:
P7R3(config)#ip route 10.6.4.3 255.255.255.255 192.168.86.1
P7R4:
P7R4(config)#router bgp 64159
P7R4(config-router)#no synchronization
P7R4(config-router)#network 10.7.3.0 mask 255.255.255.0
P7R4(config-router)#network 10.7.2.0 mask 255.255.255.0
P7R4(config-router)#neighbor ok peer-group
P7R4(config-router)#neighbor ok remote-as 64159
P7R4(config-router)#neighbor ok update-source lookback0
P7R4(config-router)#neighbor 10.7.4.1 peer-group ok
P7R4(config-router)#neighbor 10.7.4.3 peer-group ok
P7R4(config-router)#neighbor 10.7.4.2 peer-group ok
P7R4(config-router)#neighbor 192.168.7.1 peer-group ok
P7R4(config-router)#no auto-summary
12.整个配置基本上就是这样,后面的工作就是验证BGP的配置是否正确,可以使用show ip bgp summary,show ip bgp,show ip route等命令查看配置结果.并可以在任意一个路由器上PING另一个AS的任意一个接口,看看是否PING通.当然,首先要在P6那边的五个路由器也做好相应的配置.还可以将P7BBR1的E0接口shutdown,看看结果会是如何.如有问题,多看书查阅相关资料,举一反三,相信可以查明原因.
R1、R2、R3属于AS 123;R4属于AS 400;
R1、R2、R3运行OSPF,运行OSPF的目的是为了打通AS 123内的路由;
R3-R4之间建立EBGP邻居关系,R2不运行BGP;
R1-R3之间建立IBGP邻居关系;
在R4上,将路由4.4.4.0/24发布到BGP。
R1的配置如下(省略接口IP地址的配置):
R2的配置比较简单,就是运行OSPF而已,这部分配置不再赘述。
R3的配置如下:
R4的配置如下:
完成上述配置后,在R3上查看BGP路由表:
我们看到R3已经学习到了R4通告过来的BGP路由4.4.4.0/24。并且该条BGP路由的NextHop属性值为10.1.34.4,这个下一跳地址是路由可达的。该条路由在R3的BGP路由表里有“* >” 标记,其中“*”表示这条路由是可用的(valid),只有当BGP路由的NextHop为路由可达时,该BGP路由才会被视为可用;而“>”则表示这条路由是被优选的路由,或者说是到达该目的网络的最优路由。
BGP路由的NextHop属性是一个非常重要的属性,它是所有BGP路由都会携带的路径属性,它指示了到达目的网络的下一跳地址。
在R3上查看路由表:
R3已经将到达4.4.4.0/24的BGP路由加载到了全局路由表中。
对于R3而言,到达4.4.4.0/24的路由已经被优选,接下来,它会将该路由通告给IBGP邻居R1。
在R1上查看BGP路由表:
我们看到,R1的BGP路由表中已经出现了4.4.4.0/24路由,而这条路由的NextHop属性值是10.1.34.4,但是R1在本地路由表中没有到达10.1.34.4的路由,因此10.1.34.4不可达,如此一来,该BGP路由也就不可用了(在BGP路由表中没有*号标记),既然不可用,自然就不能装载进路由表中使用。
那么怎么解决这个问题呢?一个最简单的方法是,为R1配置一条静态路由:ip route-static 10.1.34.0 24 10.1.23.3,这样一来R1的路由表里就有了到达10.1.34.4的路由,那么BGP路由4.4.4.0/24的下一跳地址就可达了,对应的BGP路由自然也就可用了。但是这种方法太“笨拙”。另一种方法是,在R3的OSPF进程中将10.1.34.0/24网段也注入进去,使得R1能够通过OSPF学习到10.1.34.0/24路由,这种方法也是可行的。但是由于R3-R4之间的互联链路被视为AS外部链路,因此10.1.34.0/24作为外部网段往往不会被宣告进AS内的IGP。那么还有什么其他办法能解决这个问题么?
BGP路由器在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。如下图所示,R4将4.4.4.0/24通告给R3时,下一跳为10.1.34.4,也就是R4的GE0/0/0接口地址。
BGP路由器将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
BGP路由器在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
例如下图所示,R3收到R4通告的EBGP路由,该路由的下一跳属性值为10.1.34.4,它将该条路由通告给IBGP对等体R1的时候,路由的下一跳属性值不会发生改变,仍然为10.1.34.4。
这就造成了我们上面所述的问题,由于R1没有到达10.1.34.0/24的路由,因此下一跳地址10.1.34.4不可达,从而导致BGP路由4.4.4.0/24不可用。
还有一个方法可以解决这个问题:在R3上使用next-hop-local命令,可修改BGP路由的下一跳属性值为自身。在下图中,我们在R3上增加了peer 10.1.12.1 next-hop-local命令,那么这样一来,当R3再将EBGP路由通告给R1的时候,会将这些路由的下一跳属性值修改为自己的更新源地址(10.1.23.3),而R1已经通过OSPF获知到达10.1.23.0/24的路由,因此10.1.23.3是可达的。
完成配置后,我们在R1上查看BGP路由表:
可以手工指定用于建立BGP连接的源接口及源IP地址。命令如下:[Router-bgp] peer x.x.x.x connect-interface intf [ ipv4-src-address ]缺省情况下,BGP使用报文的出接口作为BGP报文的源接口。当用户完成peer命令的配置后,设备会在自己的路由表中查询到达该对等体地址的路由,并从该路由得到出接口信息。如果peer命令中没有指定接口(connect-interface)和IP地址(ipv4-src-address),那么设备将会使用前述出接口和该接口的IP地址作为BGP报文的源接口和源地址。
为了使物理接口在出现问题时,设备仍能发送BGP报文,可将发送BGP报文的源接口配置成Loopback接口。在使用Loopback接口作为BGP报文的源接口时,必须确认BGP对等体的Loopback接口的地址是可达的。由于一个AS内往往会运行IGP协议,因此AS内的设备能够通过该IGP协议获知到达其他设备的Loopback接口的路由。在AS内部,IBGP邻居关系通常基于Loopback接口建立。
EBGP邻居之间通常使用直连接口的IP地址作为BGP报文源地址,如若使用环回接口建立EBGP邻居关系,要配置peer ebgp-max-hop命令,允许EBGP通过非直连方式建立邻居关系。
同样是上面的环境,我们稍作变更,在R1及R3上创建loopback0,地址分别为1.1.1.1/32及3.3.3.3/32,然后设备各自将loopback0宣告进OSPF,使得彼此都能通过OSPF学习到对方的Loopback0路由。
我们修改BGP的配置,使得R1-R3之间的IBGP邻居关系基于Loopback0来建立。
R1的关键配置如下:
R3的关键性配置如下:
注意,务必要将R1及R3的Loopback0接口激活OSPF。
经过前面的讲解,我们的环境现在是这样的:R1-R3之间建立了基于Loopback接口的IBGP邻居关系;R3对R1配置了next-hop-local;R3与R4之间仍然维持基于直连接口的EBGP邻居关系;R4在BGP中发布路由4.4.4.0/24。
现在R1是能够学习到BGP路由4.4.4.0/24的,并且该路由也是被优选的,此时这条路由会被R1装载进全局路由表使用,但是,这是不是意味着R1就能够ping通4.4.4.4了呢?经过测试你可能会发现:无法ping通?因为数据包在R2这里就被丢弃了,R2并没有运行BGP,因此它无法学习到BGP路由4.4.4.0/24。
怎么才能让R1 ping通4.4.4.4呢?方法之一是在R3上将BGP路由重发布进OSPF,使得R2能够通过OSPF学习到BGP路由4.4.4.0/24,但是这种方法存在一定的风险,因为我们知道BGP承载的前缀数量往往是非常庞大的;另一种方法是,让R2也运行BGP,并与R1、R3建立IBGP邻居关系,这样一来问题就解决了。那么BGP邻居关系就变成了如下图所示。具体配置此处不再赘述。
通常情况下,EBGP邻居之间必须具有直连的物理链路,EBGP邻居关系也将基于直连接口来建立,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。
peer ebgp-max-hop命令用来配置允许BGP同非直连网络上的对等体建立EBGP连接,并同时可以指定允许的最大跳数。命令格式如下:[Router-bgp] peer ipv4-address ebgp-max-hop [ hop-count ]
如上图所示,R1及R2要基于Loopback口建立EBGP邻居关系。这种情况也属于EBGP邻居之间不基于直连接口建立邻居关系的场景,必须配置peer ebgp-max-hop命令。图中R1与R2之间的两条物理链路是为了冗余性考虑。R1的关键配置如下:
R2的关键配置如下:
BGP邻居表
BGP表
查看BGP条目的详细信息:
路由表,display ip routing-table
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)