建立邻接关系的基本过程
BGP会在每对邻接路由器之间形成一条TCP连接,由这条连接发送BGP消息,最终发送包含路由信息的BGP更新消息。
每个路由器都要显式地配置其邻接路由器的IP地址,路由器通过这些信息了解哪些IP地址试图建立TCP连接。如果路由器接收到未配置为BGP邻接路由器的IP地址发来的TCP连接请求(BGP端口179),它会直接拒绝该请求。TCP连接建立之后,BGP开始发送BGP Open消息。一旦一对Open消息互相交换完毕,邻接路由器即进入已建立(established)状态,这是可工作的BGP路由器对的稳定状态。此时,BGP的更新消息可以进行交换。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

BGP邻接关系建立的关键特性
1BGPTCP端口号:179
2)可以通过bgp timers keepalive holdtime路由器子命令或对每个邻接路由器使用neighbor timers命令来设置保活(keepalive)和保持(hold)定时器的时间。其默认值分别为60180秒。它们用来判断邻接路由器是否失效。
3)在同一AS中的邻接路由器可以成为内部BGPiBGP)邻接路由器。
4)在另一AS中的邻接路由器可以成为外部BGPeBGP)邻接路由器。
5)确定BGP路由器IDRID)的顺序如下:bgp router-id命令,BGP进程启动时处于up状态的loopback接口的最大IPBGP进程启动时处于up状态的其他接口的最大IP
6)怎样确定到达邻接路由器路由的源IP地址:可使用neighbor update-source命令,或者,默认情形下,使用该路由的外发接口的IP地址。
7)怎样确定到达邻接路由器路由的目的IP地址:使用neighbor命令显式指定。
8)自动汇总(auto-summary)功能默认是屏蔽的,可以通过auto-summary路由器子命令激活。
9)邻接路由器的认证方式:只支持MD5,使用neighbor password命令配置。

 

内部BGP邻接路由器
前面已经介绍了iBGP邻接路由器是同处于一个AS中的路由器。iBGP路由器对通常使用loopback接口的IP地址来连通,以获得更高的可用性。在单个AS中,每对路由器之间常常至少有两条路由,如果使用一个一般接口的IP地址来建立TCP连接,一旦该接口失效(此时可能还有其他路由可连通),BGPTCP连接也会随之失败。显然,使用loopback地址来建立连接会更为合理。

 

iBGP配置实例
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
配置目标:
1ASN 123中的三台路由器组成全网格(两两之间互为邻居)的iBGP邻接关系。
2R1使用bgp router-id命令配置其RID,而不使用loopback接口地址。
3R3使用peer-group来配置邻接路由器R1R2。这样不仅可以使配置命令更为简单,而且可以提升路由器的处理效率。
4R1-R3的邻接关系使用MD5认证。
配置:
1R1的配置:
interface Loopback1
 ip address 1.1.1.1 255.255.255.255
!
router bgp 123
 no synchronization
 bgp router-id 111.111.111.111
 bgp log-neighbor-changes
 neighbor 2.2.2.2 remote-as 123
 neighbor 2.2.2.2 update-source Loopback1
 neighbor 3.3.3.3 remote-as 123
 neighbor 3.3.3.3 password secret-pw
 neighbor 3.3.3.3 update-source Loopback1
 no auto-summary
2R3的配置:
interface Loopbacl1
 ip address 3.3.3.3 255.255.255.255
!
router bgp 123
 no synchronization
 bgp log-neighbor-changes
 neighbor my-as peer-group
 neighbor my-as remote-as 123
 neighbor my-as update-source Loopback1
 neighbor 1.1.1.1 peer-group my-as
 neighbor 1.1.1.1 password secret-pw
 neighbor 2.2.2.2 peer-group my-as
 no auto-summary
配置说明:
1)配置中并不直接定义邻接关系是iBGP还是eBGP,而是由路由器通过比较router bgp命令所定义的ASNneighbor remote-as命令所列出的邻接路由器ASN来判断,如果两者匹配,即为iBGP,如果不匹配,则为eBGP
2BGPpeer-group命令可以将BGP邻接路由器的配置归为一组,然后对邻接路由器应用该peer组。BGP对每个peer组只建立一套更新消息,因其路由策略应用于全组(而不仅是一台路由器),所以可起到提升处理效率的作用。

 

外部BGP邻接路由器
eBGP路由器对之间往往只有一条物理链路,此时,eBGP在组对时可以就简单地使用接口IP地址,当这条链路失效时,路由器对之间的TCP连接也会失败(因为此时已经没有路由可连通这两个路由器)。如果在eBGP路由器对之间存在冗余链路,neighbor命令应该使用loopbackIP地址,其原理与iBGP类似。

 

eBGP配置实例
拓扑图如上,考虑如何在R3-R4R1-R6上建立eBGP邻接关系
配置:
1R1的配置:
router bgp 123
 neighbor 172.16.16.6 remote-as 678
2R3的配置:
router bgp 123
 neighbor 4.4.4.4 remote-as 45
 neighbor 4.4.4.4 update-source loopback1
 neighbor 4.4.4.4 ebgp-multihop 2
配置说明:
1)注意eBGPneighbor remote-as命令设置的ASNrouter bgp命令的ASN不一样,这意味着两者之间是eBGP的邻接关系。
2R3-R4需要配置ebgp-multihop 2命令,否则两者之间邻接关系无法建立。对于eBGP连接,Cisco IOS默认的IPTTL值是1(假定用接口IP地址来组对),而现在R3-R4使用的是loopback接口地址来组对,如果此时TTL设置为1IP包会因为超出跳数而丢弃,所以必须将跳数配置为2