无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 ?

自动汇总:
在将EIGRP重分布近BGP的R3上,开启自动汇总,到R2上去看
   Network          Next Hop            Metric LocPrf Weight Path
*> 3.0.0.0          23.0.0.3                 0                 0 34 ?
*> 4.0.0.0          23.0.0.3               100               0 34 ?
*> 172.168.0.0      23.0.0.3                 0             0 34 ?
*> 192.168.3.0      23.0.0.3                 0             0 34 ?
 
因为是EIGRP,注意在IGP中也要关闭自动汇总才会有效,否则只关闭BGP的自动汇总是没有效果的。
 
将IGP重分布近BGP的好处是在几乎不改变BGP配置的情况下,将域内路由的变换宣告给BGP,当域内路由发生变的时候,BGP也会感知到。如果想仅将某些内部路由通告给EBGP的时候,就要使用路由过滤。另一种可选方案就是BGP进程中的network。BGP中的network命令前缀需要和IP路由表完全匹配,这条路由才会进入BGP表并被向外宣告。(其实需要说明,IGP中的network始终是network接口,BGP的则是路由)network最多可以指定200个地址,如果需要更多,就要使用重分发。
 
将BGP注入IGP

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

BackDoor

问题提出:

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上明细挂了一条以后,会发生环路。