无IGP的IBGP
R1,R2,R3使用物理口去建立邻居,底层不需要IGP,只需要R1将直连的两条路由宣告进BGP进程使R2,R3可以学到路由,发送TCP连接即可。
将IGP注入BGP
R3:
router eigrp 90
network 3.0.0.0
network 34.0.0.0
network 172.168.0.0
network 192.168.3.0
no auto-summary
router bgp 34
bgp router-id 3.3.3.3
redistribute eigrp 90 route-map filter
access-list 1 permit 34.0.0.0
!
route-map filter deny 10
match ip address 1
!
route-map filter permit 20
在R2上看现象:
Network Next Hop Metric LocPrf Weight Path
*> 3.3.3.0/24 23.0.0.3 0 0 34 ?
*> 4.4.4.0/24 23.0.0.3 2297856 0 34 ? 如果是默认的mask则不显示。
*> 172.168.3.0/24 23.0.0.3 0 0 34 ?
*> 192.168.3.0 23.0.0.3 0 0 34 ?
由于重分布的时候没有设定METRIC,因此4.4.4.0这条EIGRP路由进入BGP的时候采用默认的METRIC。
使用:default-metric来调整重分布路由的COST
改动以后,硬清邻居
Network Next Hop Metric LocPrf Weight Path
*> 3.3.3.0/24 23.0.0.3 0 0 34 ?
*> 4.4.4.0/24 23.0.0.3 100 0 34 ?
R5的BGP中通告几条路由,如果我需要使整个AS34学到AS5的路由,可以将BGP路由注入到AS34的IGP中。
R5环回口:
100.1.0.0
100.1.1.0
100.1.2.0
100.1.3.0
R3:
R3(config-router)#redistribute bgp 34 metric 1000 100 255 1 1500
为什么不将BGP重分布进IGP中,1.重分布会将每条BGP路由宣告给IGP,如果需要有选择的去重分发,仍然需要路由过滤。2.目前BGP路由表过大,IGP承受不了。面临网络崩溃
也可以在R3上写静态路由,指向外面,然后将静态重分布进EIGRP,因为R4上没路由,只需要将包扔给R3或其他路由器,其他路由器上有相应路由,就可以处理转发
R3:
ip route 100.1.0.0 255.255.252.0 Null0
router eigrp 90
redistribute static metric 1000 100 255 1 1500
R4上看:
100.0.0.0/22 is subnetted, 1 subnets
D EX 100.1.0.0 [170/2588160] via 34.0.0.3, 00:04:51, FastEthernet0/0
在R3上将R4的路由通告出去。有去有回。
这种方法,如若需要有针对性的去通告路由,也需要做过滤,常用:1.distribute-list 2.route-map
问题提出:
1、R2和R3之间用以太网链路相连,R2和R3之间运行一个IGP协议,并将172.16.1.0宣告进IGP。
2、三台路由器运行BGP,组成3个AS
3、R1与R2建EBGP邻居,R1和R3建EBGP邻居。
4、在R2上将172.16.1.0网络再宣告进BGP。
5、R3通过IGP学到172.16.1.0路由,同时也通过EBGP邻居学到172.16.1.0路由。它将比较两条路由的AD值来选最优路由,由于EBGP路由的AD值默认为20,所以R3选择EBGP路由为最优路由,并放入路由表。而实际上这条EBGP路由所连接的是一条T1的链路,带宽是小于R2与R3之间的以太网链路的。并非最好的路由。
总结:
·通过IGP学到某条路由,又从EBGP学到相同的路由。
由于EBGP AD=20,小于IGP的AD,所以会优先EBGP的路由,
但实际路径可能从IGP走更优。
解决:
R3学到两条相同的路由,用以下方法在BGP进程下改,实际上就是提高了从BGP学到的路由的AD值
R3(config-router)#network 172.16.1.0 mask 255.255.255.0 backdoor
通过这样的宣告将EBGP学到的路由的AD值提高,从20提高到200
Next-hop-unchange
问题的产生:
1、三台路由器先运行一个IGP协议,注意,172.16.1.0不用宣告进IGP
2、然后运行BGP,R1与R2建立EBGP邻居,R2与R3建立IBGP邻居
3、在R3上将172.16.1.0宣告进BGP
4、观察R1与R2上的172.16.1.0路由的下一跳,看看有啥问题产生
原理:因为EBGP的AD小于IGP导致R1选路的时候,IGP的路由被EBGP覆盖!
你将会发现,在R1与R2之间形成了环路。
解法1:
在R2上做:
R2:
router bgp 2
neighbor 1.1.1.1 next-hop-unchanged //告诉邻居下一跳不改变,推荐做法
这种方法有两个限制:
1、有的IOS不支持unchaged命令
2、EBGP必须要有多跳
R2(config-router)#nei 12.0.0.1 next-hop-unchanged
%BGP: Can propagate the nexthop only to multi-hop EBGP neighbor 必须要有多跳,也就是说通常要用环回口建EBGP邻居,如果是用直连接口建EBGP邻居,也要打上多跳命令才行。否则上面的命令不起作用。
解法2:
在R1上修改:
R1:
route-map WOLF
set ip next-hop 13.1.1.3
router bgp 1
neighbor 12.1.1.2 route-map WOLF in //将邻居12.1.1.2传过来的路由的下一跳改为13.1.1.3
聚合路由:
BGP聚合方法1.静态路由,然后network静态路由,2.aggregate-address。
1.R1上:
int lo 1
ip add 192.168.192.1 255.255.255.0
int lo 2
ip add 192.168.193.1 255.255.255.0
int lo 3
ip add 192.168.194.1 255.255.255.0
int lo 4
ip add 192.168.195.1 255.255.255.0
int lo 5
ip add 192.168.196.1 255.255.255.0
int lo 6
ip add 192.168.197.1 255.255.255.0
int lo 7
ip add 192.168.198.1 255.255.255.0
int lo 8
ip add 192.168.199.1 255.255.255.0
ip route 192.168.192.0 255.255.248.0 Null0
R2上看:
12.0.0.0/24 is subnetted, 1 subnets
C 12.0.0.0 is directly connected, Serial1/0
B 192.168.192.0/21 [20/0] via 12.0.0.1, 00:00:07
2.
R1上:aggregate-address 192.168.192.0 255.255.248.0 summary-only BGP汇总默认不会抑制明细,除非打上此命令
R2上: aggregate-address 192.168.192.0 255.255.248.0 as-set summary-only 还原此明细路由的AS-PATH属性,如果不还原,此聚合路由会再通告给R1,加入R1上明细挂了一条以后,会发生环路。