BGP(Border Gateway Protocol )边界网关协议02

 BGP邻居:

分为EBGP和IBGP
在位于不同自主系统的路由器之间运行,被称为EBGP邻居,运行EBGP的路由器通常彼此直接相连
EBGP邻居是位于当前AS外部的路由器,在EBGP邻居之间没有运行IGP,两天路由器要交换BGP路由选择更新,双方的传输层协议TCP必须完成三次握手,才能建立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                连接建立成功次数,丢弃次数。

内部BGP邻居:
neighbor后所指的地址可达。发起方和接收方都不能是默认路由,这样是无效的。
在IBGP中,由于假定IBGP邻居在物理上直接相连的可能性不大,所以将IP分组包头中的TTL=255,EBGP则相反
BGP在位于同一个AS的路由器之间运行,被称为IBGP。他用于在AS内部交换BGP信息,让所有的内部BGP发言者拥有相同的关于外部自主系统的BGP路由选择信息。
运行IBGP的路由器无需彼此直接相连,只要他们能够彼此到达对方,以便完成TCP握手,进而建立BGP邻接关系即可。(实际上是IGP的作用,IGP有此AS内的所有路由,才会有这种情况。换言之,EBGP也可以非直连,只要有路由即可)
在AS内,通常会有多条前往其他路由器的路径,所以使用环回口建立邻居。

如果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 查看通告给邻居的路由。

 

你可能感兴趣的:(职场,Cisco,休闲,BGP,ccnp)