概述
- BGP是目前“唯一”的EGP协议,用于AS之间传递路由信息,目前版本为4
为什么需要BGP?
- 不同AS自治系统的管理部门不同,路由策略不同
- AS之间的路由不强调最优路径,更强调路由控制和路由策略
IGP与BGP对比
- IGP关注如何自动学习最优路径,如何提高路由收敛速度,有明确的算法
- BGP关注如何将人为控制策略应用到BGP上,强调路由控制的灵活性,无需明确的算法
BGP的特性
- 在不考虑路由控制和路由策略的情况下,使用
距离矢量(路径矢量)算法
,默认以AS为单位计算代价,即到达目的网络最优路径是经过的AS最少的。 - 使用
TCP作为传输层,端口号为179
- 支持CIDR技术
- 路由信息中可以携带丰富的
路由属性,提供丰富的路由控制机制和路由策略
- 路由更新机制:
只发送增量路由
,非周期更新 - 不支持负载均衡,只选一条最“优”路径
BGP发言人和AS
- 也称为AS网关路由器,位于AS边界
- 既运行IGP,又运行BGP
BGP的邻居
- 两个BGP路由器
只要能建立TCP连接就能成为邻居
- BGP的
邻居建立由管理员手动配置
,不是自动寻找 - BGP的两种邻居关系
IBGP和EBGP
EBGP:两个BGP邻居不在同一个AS,IBGP:两个BGP邻居位于同一个AS
从IBGP学习到的路由是否需要通告给其他IBGP邻居?
- 如果通告可能出现环路
- 如果不通告在部分互联网IBGP中会使得路由更新失效
- 例如:B,E不是IBGP邻居,B获得的路由不告诉E,F也无法得到路由信息
IBGP的水平分割原则 - 默认BGP认为BGP网络时全互联的,从IBGP邻居获得的路由不通告给其他IBGP邻居
解决中转路径上路由问题的方法
方法1:同步
(早期使用的办法),将BGP获得的路由重分布到IGP中,当E收到IBGP路由之后,并通过IGP获得同一网段路由,完成同步,E通告路由给F。同步缺点LBGP路由太多,重分布到IGP之后给IGP带来太多负担,建议禁止同步功能
方法2:保证所有中转路径上的路由器都运行BGP
BGP的路由通信原则
1、路由信息只会通告给邻居,不会洪泛
2、从EBGP得到的路由会立刻向所有EBGP邻居和IBGP邻居通告
3、从IBGP得到的路由不通告给其他IBGP邻居,在全互联的AS下通告给EBGP邻居
BGP的四种报文
OPEN报文
用来与相邻的另一个BGP发言人建立关系
UPDATE报文
用来发送某一路由的信息,以及列出要撤销的多条路由
KEEPALIVE报文
用来确认打开报文和周期性证实邻站关系
NOTIFICATION报文
用来发送检测到的差错
BGP属性
- 防止路由环路的产生
- 提供丰富的路由策略
常见的BGP属性
- Origin AS-Path Next hop
- MED Local-Preference
- Atomic-Aggregate Aggregator
AS-Path属性记录BGP路由所经过的自治系统号,当某个BGP路由器收到一条包含自己所在自治系统的BGP时会丢弃该路由,从而避免环路
EGP(BGP)和IGP的比较
策略
AS之间选路策略至关重要,AS内部选路管理和性能更重要
规模
AS之间网络规模更大,EGP必须能够适应超大规模网络
。IGP对此要求不高
性能
AS之间强调策略开销
,不强调实际的网络开销,不强调路由器性能问题,AS内部强调路由花费
,必须考虑路由器的性能