计算机网络:BGP路由协议
BGP路由协议的概述
首先,再当前的互联网中,BGP是目前唯一支持的外部网关协议EGP的协议,用于自治系统AS之间传递路由信息,目前的版本为4。
从图中可以看出,BGP协议是连接自治系统AS的“桥梁”。
为什么需要BGP协议
原因:
- 不同的自治系统的管理部门不同,路由策略不同,比如腾讯和华为的内部路由策略肯定是不同的,都属于机密。
- AS之间的路由不用强调最优路径,更强调的是路由控制和路由策略。
内部网关协议IGP和外部网关协议EGP的对比
IGP | EGP |
---|---|
IGP更加关注如何学习最优路径,如何去提高路由收敛的速度,有明确的算法支持 | EGP关注如何将认为控制策略应用到EGP上,强调控制的灵活性和协调性,无明确的算法。 |
BGP的特性
我们知道,BGP是唯一支持EGP的协议,而IGP有RIP和OSPF协议支持。BGP协议如此厉害能撑起EGP的一片天必定是有着它不可替代的特性。
特性:
- 再不考虑路由控制和策略的情况下,使用的是距离矢量算法(DV算法),默认以自治系统AS为单位计算代价,即到达网络最优路径是经过AS最少的。
- 使用的是
TCP
作为传输层,端口号是179
. - 支持CIDR技术。
- 路由信息中可以携带丰富的路由属性,提供丰富的路由控制机制和路由策略。
- 路由更新机制:
只发送增量路由,非周期更新
。 - 不支持负载均衡,只选择最优路径。
BGP发言人
处于自治系统的,用于和其他自治系统沟通的路由器。相当于和其他自治系统的“桥梁”。
- BGP发言人也称作
AS网关路由器
,位于AS的边界。 既运行IGP又运行BGP
。
BGP的邻居关系
- 两个BGP路由器只要能建立TCP连接就是邻居。
- BGP邻居由
管理员手动配置
,无法自己寻找。 - BGP邻居分为在同个自治系统的IBGP邻居和不在同个自治系统的EBGP邻居。
中转AS中的IBGP问题
从IBGP学习到的路由是否需要通告给其他IBGP邻居?
- 如果通告可能出现路由环路。
- 如果不通告再部分互联的IBGP中会使得路由更新失效。
例如下图,BE不是IBGP邻居,但是B不把信息告诉E,F也无法获得路由信息。
解决方法:
IBGP的水平分割原则
- 默认BGP认为BGP网络是全互联的,从IBGP邻居活得的路由不同高给其他IBGP邻居
BGP路由器的通告原则
- 路由信息只会通告给邻居,不会泛洪。
- 从EBGP得到的路由会立刻向所有EBGP邻居和IBGP邻居通告。
- 从IBGP得到的路由不通告给其他IBGP邻居,在全互联的AS下通告给EBGP邻居。
BGP四种报文
- OPEN报文:用来与相邻的另一个BGP发言人
建立关系
。 - UPDATE报文:用来
发送某一路由的信息,以及列出要撤销的多条路由
。 - KEEPALIVE报文:用来
确认打开报文
和周期性地证实邻站关系
。 - NOTIFICATION报文:用来
发送检测到的差错
。
BGP属性:AS-Path
AS-Path属性记录BGP路由所经过的自治系统号,当某个BGP路由器收到一条包含自己所在自治系统的BGP路由时会丢弃该路由
,从而避免环路
BGP属性:MED
Multi-Exit-DISC
当路由器有多条选择的时候,设置MED的值,来决定下一步往哪走。
BGP属性:Stub AS 和主干选择策略
- 若某个AS只承载源地址或目的地址为本AS的通信流,称该AS为Stub AS.
- 可以使用BGP其他属性定义stub AS,若图中W,X,Y为stub AS,B无法通过X到达C和Y.
- A,B,C为主干ISP,可以定制BGP属性策略,使得C访问W时不能经过B
这里只是粗糙得解释了一下BGP,BGP是一个复杂的体系,内部属性极多。
本文来自博客园,作者:{Zeker62},转载请注明原文链接:https://www.cnblogs.com/Zeker62/p/15046182.html