BGP邻居:
BGP建立邻居,根据更新源不同, 可以选择不同建立邻居的形式:
1.物理口
2.环回口
EBGP通常使用物理接口去建立邻居,因为,不可能知晓对端AS的内部路由,且,EBGP认为对等体间是直连,所以TTL=1。
但也会有特殊情况:
两个AS之间使用多条链路去做冗余,如果使用物理口去建立邻居,无法达到冗余的效果,只能使用环回口去建立,然后写两条静态路由来告诉本端,对端的更新源在何处。
注意:
将环回口宣告进BGP进程,依据路由表分析,看到对端环回口路由的下一跳,然后执行递归查找,找到两条静态路由,负载均衡,是基于逐个网络而非逐个目的地址的。
show ip bgp neighbor 输出:
BGP neighbor is 12.0.0.2, remote AS 2, external link
BGP version 4, remote router ID 2.2.2.2
BGP state = Established, up for 00:04:44
Last read 00:00:43, last write 00:00:43, hold time is 180, keepalive interval is 60 seconds
外部连接类型
OPENSENT状态下使用hold time来协商一个最小的时间,1/3用来成为Keeplive时间。如果为0,则不发送Keeplive。
Local host: 12.0.0.1, Local port: 179
Foreign host: 12.0.0.2, Foreign port: 13242
本端/对端的RID 使用的端口号,主动发起TCP连接的去访问对端的179端口。
For address family: IPv4 Unicast
BGP table version 1, neighbor version 1/0
Output queue size: 0
BGP路由表变化一次,便会增大一次
Connections established 1; dropped 0 连接建立成功次数,丢弃次数。
如果R1,R4使用物理口建立邻居,当接口出现问题,BGP随即宣告失效,但实际上还有另一条链路可用,这就是IBGP为什么使用环回口建立邻居的原因。
如果不指定本端的更新源,则neighbor邻居的更新源,回包会有问题
物 R1源:12.0.0.1 环 R1源:12.0.0.1
理 R1目标:12.0.0.2 回 R1目标:2.2.2.2
接 R2源:12.0.0.2 接 R2源:12.0.0.2
口 R2目标:12.0.0.1 口 R2目标:1.1.1.1
中转AS上的IBGP:
实际上,常用到的解决黑洞的办法就是1.将BGP重分布进IGP,2.AS内路由器进行IBGP逻辑上的全互联。(Tunnel由于在BGP网络中的复杂排错性,了解即可。)
由于互联网路由表过于庞大,第一种方法可扩展性不高,因此大多数中转AS都运行全互联IBGP,并禁用同步。联邦和路由反射器用于避免全互联IBGP。
BGP有别于IGP,BGP无法保证AS中所有路由器都运行BGP,因此必须确保IBGP对等体之间彼此能够传递更新,并确保不会出现环路。
IBGP水平分割:
BGP规定,不将通过IBGP获悉的路由传播给其他IBGP对等体。
如上图,如果发送更新的IBGP没有和所有的IBGP路由器直接相连,则与他直接相连的将收不到BGP路由,造成同一AS内路由器的路由表不同,会产生黑洞。
根据上图,阐述产生黑洞的原因,解决办法:
将BGP重分布近IGP,仅用于实验(不推荐)
在中转路径中路由器必须运行BGP,必须是逻辑上的全互联
IBGP下一跳:BGP规定,EBGP通告的下一跳应该被传输到IBGP中。
BGP同步:
BGP路由器不应使用通过IBGP得到的路由或将其通告给外部邻居,除非该路由从本地或者IGP学到的。
(也就是说,本地C的路由无关同步,如果不关闭同步,也可以写静态路由来欺骗本BGP路由器,讲解的时候,对与BGP路由是否优选,是否有‘〉’原因有2个:1.同步,2.下一跳)
为什么会有同步:
以前最佳的做法是,将BGP路由重分布到自主系统中运行的IGP,这样便无需在中转路径中的每台路由器上运行IBGP,在这种情况下,必须使用同步确保分组不会丢失,因此同步被默认开启。
但随着BGP路由表不断增加,上述做法变的不现实,在12.2(8)T以后,BGP同步被默认关闭。
BGP同步保证了一种情况:将某个目的地通告给外部邻居,而并非AS中所有路由器都能到达该目的地。BGP同步确保了整个AS中信息的一致性,从而避免AS黑洞
禁用同步以后,可以减少路由器通过IGP传输的路由,并提高BGP的汇聚速度,因为路由器获悉BGP路由可以马上通告它。
BGP同步是很不现实的,如果IGP知晓BGP路由,则庞大的BGP表将使IGP崩溃
BGP路由查询
BGP默认是不花空间来存储来自邻居的更新消息的。
R1(config-router)#nei 12.0.0.2 soft-reconfiguration inbound 让路由器存储来自指定邻居的更新消息,这些更新不会受到现有入站策略的任何修改。
R1#show ip bgp neighbors 12.0.0.2 received-routes 查看从邻居收到的路由。
R1#show ip bgp neighbors 12.0.0.2 advertised-routes 查看通告给邻居的路由。