定义
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。适用场景是运营商之间传递路由 。
bgp 4(Pv4单播I网络)
mbgp(IPv4组播网络)
bgp 4+ (Pv6单播网络)
mp-bgp (bgp基础上,进行扩展,应用于不同网络)
BGP由来
为方便管理规模不断扩大的网络,网络被分为了不同的自治系统。
外部网关协议EGP(Exterior Gataway Protocol)被用于实现在AS之间动态交换路由信息,但是EGP设计简单,只发布网络可达的路由信息,而不对路由信息进行优选,
同时也没有考虑环路避免等问题,需要优化。优化完事就叫BGP(Border Gateway Protocol)。
自治系统AS(Autonomous System)
AS号分为:
- 2字节(1-65535)
- 4字节(1-4294967295),4字节AS号的设备兼容2字节AS号的设备
BGP分类
BGP按照运行方式分为EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)
- EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。
- IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由器反射器和BGP联盟
注意:路由器反射器不是解决AS内路由黑洞问题。
BGP报文交互角色
BGP报文交互中分为Speaker和Peer两种角色。
- Speaker:发送BGP报文的设备称为BGP发言者(Speaker),它接收或产生新的报文信息,并发布(Advertise)给其它BGP Speaker。
- Peer:相互交换报文的Speaker之间互称对等体(Peer)。若干相关的对等体可以构成对等体组(Peer Group)。
BGP的RID
每个设备有唯一的RID,否则对等体之间不能建立BGP连接
- 手动配置
- 自动选取(Loopback接口最大IPv4地址,无Loopback接口选取接口上最大IPv4地址)
BGP报文
BGP对等体间通过以下5种报文进行交互,其中Keepalive报文为周期性发送,其余报文为触发式发送:
- Open报文:用于建立BGP对等体连接。
- Update报文:用于在对等体之间交换路由信息。
- Notification报文:用于中断BGP连接。
- Keepalive报文:用于保持BGP连接。
- Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。
错误子代码
报文头部错误子代码
- 连接不同步
- 错误的报文长度
- 错误的报文类型
OPEN消息错误子代码
- 不支持的版本号
- 错误的对等体AS号
- 错误的BGP-ID
- 不支持的选项参数
- 认证失败(已更改,不推荐)
- 不可接受的保持时间
UPDATE消息错误子代码
- 属性列表格式不正确
- 无法识别的公认属性
- 缺少公认属性
- 属性flag错