BGP,IBGP,EBGP知识点请教,从IBGP学习的路由不能转发给其他IBGP邻居怎么理解

2025-04-18 12:48:36
推荐回答(4个)
回答1:

理解如下:

如果只是单纯的使用BGP的话,那么想要A将自己学到的路由转发给B和C的话,需要建立full-mesh关系,也就是说A与B A与C B与C要在ip层建立邻居关系。

若是思科设备的话,就在BGP进程下输入 neighbor [ip address] remote-as (邻居的AS号),这样A就能把从D学来的路由转发给B和C,在BGP里有这样一个规则:对于从EBGP邻居学来的路由,本地路由器会将其转发给他的所有IBGP对等体(也就是邻居),要是从IBGP学来的路由,则本地路由器不会将该路由转发给他IBGP邻居,但会转发给其它EBGP邻居。 

扩展资料:

IBGP的相关要求规定:

1、BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。

2、BGP属于外部或域间路由协议。BGP的主要目标是为处于不同AS中的路由器之间进行路由信息通信提供保障。BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。

3、多个BGP路由器之间的协调。如果在一个自治系统内部有多个路由器分别使用BGP与其他自治系统中对等路由器进行通信,BGP可以协调者一系列路由器,使这些路由器保持路由信息的一致性。

参考资料来源:百度百科-IBGP

回答2:

如果只是单纯的使用BGP的话,那么想要A将自己学到的路由转发给B和C的话,需要建立full-mesh关系,也就是说A与B A与C B与C要在ip层建立邻居关系,若是思科设备的话,就在BGP进程下输入 neighbor [ip address] remote-as (邻居的AS号),这样A就能把从D学来的路由转发给B和C,这里要注意一点,在BGP里有这样一个规则:对于从EBGP邻居学来的路由,本地路由器会将其转发给他的所有IBGP对等体(也就是邻居),要是从IBGP学来的路由,则本地路由器不会将该路由转发给他IBGP邻居,但会转发给其它EBGP邻居。 就拿您给的图举例:A从D学来的路由,是通过EBGP邻居学来的,那么它会将此路由转发给它的IBGP邻居:B和C。B收到A发来的路由后,即B是通过IBGP学来的路由,那么此时他是不会转发给C的,同样的C也不会将其从A学来的路由转发给B,但是会转发给它的EBGP邻居 E。至于下一条属性是这样的:A从D学来的路由的下一跳就是D与A建立邻居所使用的IP地址,而A将该路由转发给B和C的时候,这个下一跳不会改变。但是C再将该条路由传递给E的时候,E收到的该路由的下一跳是C。此时存在这样一个问题,假如说D的这条路由是1.1.1.1/32,那么在E上ping 1.1.1.1 source 5.5.5.5.5(假设E在BGP里传递的路由是5.5.5.5/32) 是ping 不通的,原因是E将ping报发给C,但C不知道该如何去往D,因为它所拥有的1.1.1.1/32的路由条目的下一跳是D,它并没有D的路由。解决的办法可通过更改下一跳属性
即可以在A的bgp进程下,对所有IBGP的所有对等体 使用 neighbor {ip address(邻居的IP)} next-hop-self,如果是H3C设备,则此命令为 peer {ip address(邻居的IP)} next-hop-local.这样C才知道我要去往1.1.1.1,下一跳该找A;注意在C上也要同样使用此命令,这样A也才能知道要去往5.5.5.5我下一跳要找C。这样才能实现互通。

回答3:

1:A从D学的路由B能从A学到,而C会收到此条路由但不一定会使用它。因为BGP有个机制:“BGP 路由器不应使用通过IBGP获悉的路由,除非该路由是本地的或通过IGP获悉的(使用no sy命令可以取消这个机制)”。
2:原理同1,在配置无误的情况下,A从D收到的路由会转发给B,B也会转发给A。
3:关于show ip bgp命令,看到前面有“>”符号的路由就说明这是被BGP选中的最佳路由,它将被提交给IP路由表。

PS:如果还不清楚的话我告诉你知识点,你自己去查
知识点1:BGP同步
知识点2:BGP表

回答4:

D------------(A------------B------------C)------------E
EBGP IBGP IBGP EBGP
1,B不会把从A学到的route再传给C,所以C学不到
2,A自己引入BGP的route,C是可以学到的。
下一跳的原则,跨越AS的时候才会改变下一跳,在同一个AS内部传递时,不会改变下一跳。(有个特殊情况,就是BGP的第三方下一跳)