Technorati 标签: CCIE, CCNP, BGP, 实验, 属性

在IGP时代我们都知道,比如说ospf,链路状态协议,在进行路由选择的时候,比的是链路的耗费,哪条链路耗费小则会更优先,如果两个链路耗费是一样的,那么就做负载均衡。

实际上就2个原则成就了ospf---最短路径优先的工作原理。

那如果在BGP中,有多条路由可以到达目的的时候,应当如何进行选择呢?哪一条路径是比较优先的呢?

来看看这11个属性的优先级,加深记忆,最好能熟练的背下来:

1 HIGHEST WEIGHT--cisco私有属性

2 HIGHEST LOCAL PRERENCE -----公认可选

3 ROUTE ORIGINATED BY THE ROUTER NEXT HOP=0.0.0.0 * -----公认必尊well-known mandatory

4 SHORTEST AS PATH * -----公认必尊well-known mandatory

5 LOWEST ORIGINATED IGP>EGP>INCOMPLETE * -----公认必尊well-known mandatory

6 LOWEST MED

7 EBGP PATH OVER IBGP PATH

8 PREFER THE PATH THROGH THE CLOSEST IGP NEIGHBOR

9 RREFER OLDEST ROUTER FOR EBGP PATH

10 PREFER THE PATH WITH THE LOWEST NEIGHBOR BGP ROUTER ID

11 BGP LOWEST ROUTER ID

12 MINIMUM CLASTER LIST LENGTH

在bgp中,除了有一大堆原理需要深刻理解以外,选路原则是重中之重。一定需要掌握(要想对bgp有所认识和故障排查,这里一定是要掌握而不是了解)选路原则。

该文档会逐一对每个属性进行验证.力求能达到让我自己在心里有数对这些概念。

再来看看BGP的选路原则:

1、 优先选取具有最大权重(weight)值的路径,权重是Cisco专有属性。

2、 如果权重值相同,优先选取具有最高本地优先级的路由。

3、 如果本地优先级相同,优先选取本地路由(下一跳为0.0.0.0)上的BGP路由。

4、 如果本地优先级相同,并且没有源自本路由器的路由,优先选取具有最短AS路径的路由。

5、 如果具有相同的AS路径长度,优先选取具有最低源代码(IBGP<EBGP<INCOMPLETE)的路由。

6、 如果起源代码相同,优先选取具有最低MED值的路径。

7、 如果MED都相同,在EBGP路由和联盟EBGP路由中,首选EBGP路由,在联盟EBGP路由和IBGP路由中,首选联盟EBGP路由。

8、 如果前面所有属性都相同,优先选取离IGP邻居最近的路径。

9、 如果内部路径也相同,优先选取最低BGP路由器ID的路径。

Next-hop 属性详解

我查了房至勇IE笔记还有中文版的TCP/IP路由技术(卷二),还有一些cisco的培训PPT.在这些资料上提到了三个原则关于Next-hop的。在本文档中会一一覆盖。但是,我个人认为,既然是选录原则,就一定要进行比较,而这些所有资料中提到的都是工作原则,那么我的疑问是,如果weight还有Local_Pref都是默认的情况,第三条比较Next-HOP该如何比较?在井同学的帮助下,找到了英文版中的描述,才解开了这个谜团。应该说之前我查的哪些资料都没有问题,可是都少些了一个关键的东西,如果比较Next-hop这个问题,什么才叫:如果本地优先级相同,优先选取本地路由(下一跳为0.0.0.0)上的BGP路由。

Prefer the path that was locally originated through a network or aggregate BGP subcommand, or through redistribution from an IGP. Local paths sourced by network/redistribute commands are preferred over local aggregates sourced by the aggregate-address command.

首先还是来说一下Next-HOP的三个工作原则:

原则一

如果宣告路由器与接收路由器的位置位于不同的AS,那么Next-Hop是宣告路由的接口地址。

在TCP/IP卷二上面,是这样表示的。

clip_p_w_picpath002

这个和IGP一样的。没有什么好说的,如果BGP的update消息通过EBGP进行宣告,那么Next-hop属性将是Ebgp的IP地址.

普通的IGP是router by router的,而BGP是AS by AS的。

所以当两个EBGP在通告路由的时候,达到的效果就是和IGP一样的效果。因为两个路由器相互是EBGP,都是ASBR.

所以下一跳刚好是另外一个区域的EBGP邻居地址。

原则二

如果正在宣告的路由器和接收路由器在同一个AS内,并且UPdate消息中的路由前缀NLRI目的也是在同一个AS 中,则next_hop为宣告路由器的IP地址.

clip_p_w_picpath004

其实在这个图中,当最后一个路由收到了第一个路由器传递过来的IBGP路由172.16.5.0的时候,所携带的下一跳是172.16.83.2.

对于最后一个路由器来说,如果要到达172.16.5.0的网段,首先要有IGP路由能到172.16.83.2,进行路由的递归查找,最后才能到达目的网段。

所以为什么说BGP实际上查找路由表的时候是进行递归查找的。

原则三:

如果宣告路由器和接收路由器是不同AS的路由器,那么所学到的路由的下一跳始终是宣告路由器的接口IP地址。

直接上图:

clip_p_w_picpath006

在这里如果想路由器172.16.101.2学到的路由207.135.64.0的路由,下一跳是ASBR 172.16.83.2,那么必须在ASBR 172.16.83.2上面的bgp进程下面:neighbor 172.16.101.2 next-hop-self.

这样下一跳才会真正变成IBGP邻居。

我们先用命令验证一下最后这个原则,然后再说关于Next-hop的比较原则:

clip_p_w_picpath008

在这里,R1上面bgp的配置为:

clip_p_w_picpath010

在R4上面,把这条nex-hop-self取消:

clip_p_w_picpath012

根据这个图,我们知道R1和R4都会将100.100.100.100通告给R3.

那么R3会从两个IBGP邻居都接收到同一个路由.

但是在R1上面next-hop-self,在R4上面却没有。这里我们就可以来验证一下关于原则三了,在R3上面:

clip_p_w_picpath014

在R3上面show ip bgp的时候,100.100.100.100有两个下一跳,一个下一跳是1.1.1.1。R1,一个是13.1.1.1已经是R2了。

因为在R3上面没有到13.1.1.1的IGP TCP可达的路由,所以只会是1.1.1.1会优.

这个就是原则三,从IBGP传递过来的EBGP路由是不会改变下一跳的。需要用命令neigbor x.x.x.x next-hop-self修改下一跳。

在CISCO的培训PPT上面只讲解了2个Next-hop的工作原则,还是没有说明清楚比较原则:

clip_p_w_picpath016

下面就来看看今天的重头戏,如果,weight相同,local_pref相同,那么如果比较Next-HOP.

这就是比较原则。从概念上来讲:

1、 优先选取具有最大权重(weight)值的路径,权重是Cisco专有属性。默认始发是32768,其他任何路由器的该属性都是0.越大越优先.

2、 如果权重值相同,优先选取具有最高本地优先级的路由。Local_pref的本地优先级默认是100.越大越优先。

3、 如果本地优先级相同,优先选取本地路由(下一跳为0.0.0.0)上的BGP路由。

首先构建一个环境:

clip_p_w_picpath018

我们首先一步一步来看看如果来验证BGPnext-HOP属性在图中会有两个不同的loopback配置相同的网段R1通过ospf100.100.100.1的网段路由通告给R2,R2是一个ASBR,然后起bgp 65500bgp65500下面network 100.100.100.0/24R3,R3上面会再起一个loopback0地址为100.100.100.2/24,然后也networkbgp 65500下面最后R3实际上通过自己的network学习到下一跳是0.0.0.0100.100.100.0的网段也通过R2通告过来的bgp路由学习到100.100.100.0/24的网段如果在weightlocal_pref都一样的情况那么下一跳是0.0.0.0会优.

这里一定要注意,R2通告过来的关于100.100.100.0的路由的weight一定要是32768,因为如果在R3上面起一个loopback0=100.100.100.2的话,那么作为始发路由器他这条路由的weight默认就是32768.如果通告过来的路由weight0,那还没有轮到比较next-hop就直接根据weight进行选举了。这页是为什么需要在R2上面做一个出站策略来通告路由的原因。

我们先来看看结果,配置会附在后面,下面是在R3上面的结果:

clip_p_w_picpath020

原始配置

R1配置:

interface Loopback0

ip address 100.100.100.1 255.255.255.0

ip ospf network point-to-point

!

interface FastEthernet0/0

ip address 1.1.1.1 255.255.255.0

duplex full

!

router ospf 1

log-adjacency-changes

network 0.0.0.0 255.255.255.255 area 0

!

ip route 2.1.1.0 255.255.255.0 1.1.1.2

R2配置:

interface FastEthernet0/0

ip address 1.1.1.2 255.255.255.0

duplex full

!

interface FastEthernet1/0

ip address 2.1.1.1 255.255.255.0

duplex full

speed auto

!

router ospf 1

log-adjacency-changes

network 1.1.1.0 0.0.0.255 area 0

!

router bgp 65500

no synchronization

bgp log-neighbor-changes

network 100.100.100.0 mask 255.255.255.0

neighbor 2.1.1.2 remote-as 65500

neighbor 2.1.1.2 next-hop-self

no auto-summary

!

R3配置:

R3上面一定要将从R2学习到的bgp路由的weight设置为32768.否则还没有到比较Next-HOP的时候就会根据weight来进行选路了。

interface Loopback0

ip address 100.100.100.2 255.255.255.0

!

interface FastEthernet1/0

ip address 2.1.1.2 255.255.255.0

duplex full

speed auto

!

router bgp 65500

no synchronization

bgp log-neighbor-changes

network 100.100.100.0 mask 255.255.255.0

neighbor 2.1.1.1 remote-as 65500

neighbor 2.1.1.1 route-map set_weight in

no auto-summary

!

access-list 1 permit any

!

route-map set_weight permit 10

match ip address 1

set weight 32768

!

route-map set_weight permit 20