Datacom-HCIE-06 BGP基础原理
为了满足大规模路由的需求,需要通过BGP(Border GatewayProtocol)在AS之间传递数量庞大的IPv4、v6路由,并且通过各种策略进行路径的选取,控制等;此外,为了满足MPLS VPN的业务,在AS内及AS间需要MP-BGP。针对上述需求,
本文将介绍BGP原理以及BGP对IPv6的扩展特性—BGP4+。
BGP概述
外部网关协议
使用TCP作为其传输层协议 (TCP 179)
支持CIDR
增量更新 (且无周期更新)
路径矢量路由协议 (AS_path)
无环路 (AS号,IBGP水平分割)
路由策略丰富
可防止路由振荡
易于扩展 (TLV)
BGP基本工作原理
邻居发现
ibgp和ebgp
引入路由
network和import-route
通告原则
最优路由,ibgp水平分割
路由属性
十三条选路原则
BGP工作原理-报头格式
Marker:16字节,该字段是为了兼容性考虑,必须全部设置为1.
Length:2字节,BGP消息长度,范围19~4096。
Type:1字节,BGP消息的类型,Type有5个可选值。
BGP工作原理—报文类型
Open报文 协商BGP参数
Update报文 交换路由信息
Notification报文 差错通知
Keepalive报文 保持邻居关系
Route-Refresh报文 用于在改变路由策略后请求对等体重新发送路由信息
Open
Update
Notification
错误子代码
报文头部错误子代码
- 连接不同步
- 错误的报文长度
- 错误的报文类型
OPEN消息错误子代码
- 不支持的版本号
- 错误的对等体AS号
- 错误的BGP-ID
- 不支持的选项参数
- 认证失败(已更改,不推荐)
- 不可接受的保持时间
UPDATE消息错误子代码
- 属性列表格式不正确
- 无法识别的公认属性
- 缺少公认属性
- 属性flag错误
- 属性长度错误
- 无效的起源属性
- AS路径环路(已更改,不推荐)
- 无效的下一跳属性
- 可选属性错误
- 无效的网络字段
- AS_path格式错误
CEASE子代码
- 已达到最大前缀数
- 管理关闭
- 对等体取消配置
- 管理重置
- 连接拒绝
- 其他配置更改
- 解决连接冲突
- 资源不足
Keepalive
Route-refresh
<用户视图>refresh bgp all import
\手动刷新bgp路由
改变路由策略后自动刷新,请求对等体重新发送路由信息。
BGP工作原理
BGP工作原理—状态机
BGP工作原理—数据库
IP路由表 (IP-RIB)
全局路由信息库,包括所有IP路由信息
BGP路由表 (Loc-RIB)
BGP路由信息库,包括本地BGP Speaker选择的路由信息
邻居表
对等体邻居清单列表
Adj-RIB-In
对等体宣告给本地BGP Speaker的未处理的路由信息库
Adj-RIB-Out
本地BGP Speaker宣告给指定对等体的路由信息库
BGP工作原理—BGP路由信息处理
BGP工作原理—对等体之间的交互原则
BGP对等体交互路由原则:
从IBGP对等体获得的路由,只发布给EBGP对等体
从EBGP对等体获得的路由,发布给所有EBGP和IBGP对等体
只将BGP的最优路由发布给对等体
只发送更新的BGP路由
IBGP与IGP的同步(已淘汰)
GP工作原理—同步
同步(Synchronization)
在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被加入到路由表,并发布给EBGP对等体。
BGP属性特点
BGP属性特点—概述
BGP路由属性是一套参数,它是对路由的进一步的描述
公认必遵
所有BGP路由器都必须识别,且必须存在于Update消息中
如果缺少这种属性,路由信息就会出错
公认任意
所有BGP路由器都可以识别,但不要求必须存在于Update消息中
即就算缺少这类属性,路由信息也不会出错
可选过渡
在BGP对等体之间具有可传递性的属性
BGP路由器可以不支持此属性,但它仍然会接收这类属性,并传递给其他对等体
可选非过渡
如果BGP路由器不支持此属性,则相应的这类属性会被忽略,且不会传递给其他对等体
Origin为公认必遵属性
AS_Path为公认必遵属性
Next_Hop为公认必遵属性
Local_Pref为公认任意属性
community为可选过渡属性
MED为可选非过渡属性
Originator_ID为可选非过渡属性
Cluster_List为可选非过渡属性
BGP属性特点—Origin
Origin属性用来定义路径信息的来源,该属性为公认必遵
IGP
通过路由始发AS的IGP得到的路由信息,如通过network命令注入BGP的路由标识符为“i”
EGP
通过EGP得到的路由信息标识符为“e”
Incomplete
通过其他方式学习到的路由信息,如通过import-route命令注入BGP的路由标识符为“?”
BGP属性特点—PrefVal
协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效,不会传递给BGP邻居。因为协议首选值是人为主动设置的,代表本地用户的意愿,因而在BGP进行选路时会优先比较协议首选值。
BGP属性特点—AS_Path
AS_Path属性按矢量顺序记录某条路由从本地到目的地址所要经过的所有AS编号。该属性为公认必遵。
BGP属性特点—Next_Hop
Next_Hop属性记录了路由的下一跳信息,该属性为公认必遵
在IBGP邻居之间传递路由时,默认不会修改下一跳地址。next-hop-invariable
在EBGP邻居之间传递路由时,默认会修改下一跳地址。next-hop-local
BGP属性特点—Local_Pref
Local_Pref属性表明BGP路由器的优先级,该值越大越优先。该属性为公认任意。
BGP属性特点—MED
MED属性类似于IGP的代价值,用于AS间的路由选路。该属性为可选非过渡
BGP路由计算—选路规则
当到达同一目的地存在多条路由时,BGP依照如下策略顺序进行路由选择:
• 如果此路由的下一跳不可达,忽略此路由
- 优选协议首选值(PrefVal)最高的路由。
- 优选本地优先级(Local_Pref)最高的路由。
- 依次优选手动聚合、自动聚合、network、import-route、从对等体学习的路由。
- 优选AS路径(AS_Path)最短的路由。
- 依次优选Origin类型为IGP、EGP、Incomplete的路由
- 对于来自同一AS的路由,优选MED值最低的路由。
- 依次优选EBGP路由、IBGP路由、LocalCross路由、RemoteCross路由。
- 优选到BGP下一跳IGP度量值(metric)最小的路由。
- 以上8条相同时的可以开启负载均衡。默认最大下一跳个数为1,即不使用负载均衡。
- 优选Cluster_List最短的路由。
- 优选Originator_ID最小的路由。
- 优选Router ID最小的设备发布的路由。若携带OID,则不比这一条。
- 优选从具有最小IP Address的对等体学来的路由。