⭐️全网最全❤️BGP详解❤️你值得拥有⭐️
作者:互联网
文章目录
BGP基础
定义
- 边界网关协议,用于在自治系统之间传递路由
自治系统
- 一组被统一管理,运行同一个IGP协议的路由器组成的网络范围
自治系统编号
- 公有AS:1-64511
- 私有AS:64512-65534
BGP协议特性
- BGP只负责把路由从一个AS传递到另外一个AS;从其他AS传递过来的路由在本AS内部的扩散要依靠IGP
- BGP是路径矢量协议,一跳是一个自治系统;当一条路由传入某个AS,该路由的下一跳会变为上个AS的出接口的IP地址;当一条路由在某个AS内部的路由器之间传递时,下一跳不变
- AS防环机制:当一条路由每从一个AS传出,会把该AS的编号按照从右至左的顺序依次记录在AS_PATH属性中;一个路由器从其他AS收到一条路由通告,会检查本路由器的AS编号是否出现在该路由条目的AS_PATH属性中,出现了则该路由条目不学习
- BGP基于TCP协议传输,必须手动配置邻居关系;源端口1024以上随机;目的端口179
- BGP第一次发送完整的路由表,后续只发送增量更新
- BGP有多种属性可以控制路由选择
BGP相关术语
BGP Speaker
- BGP发言者,运行了BGP的路由器
BGP对等体
- BGP邻居,IBGP(同一个AS内部的BGP对等体),EBGP(跨AS之间的BGP对等体)
BGP路由黑洞问题
产生原因
- 由于IBGP邻居之间没有运行BGP协议的路由器无法获得BGP的路由,而导致的数据包进入该路由器被丢弃
解决方案
- BGP引入到IGP
- 在黑洞路由器上配置目的网段的静态路由
- IBGP全连接:IBGP防环机制,从IBGP邻居学习到的路由不会传递给其他IBGP邻居
- BGP路由反射器
- BGP联盟
BGP报文
- Open报文:用于建立邻居关系,里面有 Rouid As编号 Parameter.Value (各种协商能力的列表)
- Keepalive报文:保活报文,用于维持邻居关系
- Update报文:发送路由更新
- Notification报文:用于通告BGP错误
- Route-refresh报文:用于重新发送完整路由表
BGP状态机
- Idle:空闲状态,初始化时,此状态停留32秒
- Connect:连接中状态,本端为TCP连接发起方
- Active:活跃状态,本端为TCP连接被动方
- Open-sent:开始发送状态,成功建立了TCP连接发出了Open报文,正在等待接收对方Open报文
- Open-confirm:开始确认状态,收到Open报文,等待第一个Keepalive报文
- Established:已连接状态,收到Keepalive报文,成功建立邻居
BGP邻居建立条件
-
IBGP
对方的IP地址TCP可达(需要具有到达对方IP地址的路由):建议使用环回口地址来指定IBGP邻居 更新源地址必须和邻居指定的IP地址一致:需要配置修改更新源为环回口 IBGP邻居关系不需要直连
-
EBGP
对方的IP地址TCP可达,且需要直连:可通过修改EBGP最大跳数来使EBGP非直连,建议使用直连接口地址来指定EBGP邻居 更新源地址必须和邻居指定的IP地址一致
BGP路由优选规则
- 丢弃下一跳不可达的路由
- 优选Preferred-value最大的路由
- 优选Local-pref最大的路由
- 依次优选network产生的路由、Import-route引入的路由、聚合路由
- 优选AS-path最短的路由
- 依次优选Origin属性为IGP、EGP、Incomplete的路由
- 优选MED最小的路由
- 依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学习的路由
- 优选下一跳度量值最低的路由
- 优选Cluster_list最短的路由
- 优选Originator_id最小的路由
- 优选Router-id最小的路由器发布的路由
- 优选IP地址最小的邻居发布的路由
BGP路由发布规则
- 只将本机最优路由发布给邻居:配置了advertise-rib-action命令则发布IP路由表中的最优路由(优先级比BGP高)
- 只将自己使用的路由发布给邻居
- 从IBGP学习的路由不向其他IBGP邻居发布
BGP负载分担
- BGP无法产生等价路由
- 可通过路由策略手动对不同流量实现负载分担
常用命令
[h3c]bgp 'as-number' //创建BGP进程,进入BGP协议视图
[h3c-bgp]router-id 'router-id' //配置Router-id
[h3c-bgp]peer 'ip-address' as-number 'as-number' //配置邻居
[h3c-bgp]peer 'ip-address' connect-interface 'interface' //修改更新源
[h3c-bgp]address-family ipv4 unicast //进入IPv4单播地址族视图
[h3c-bgp-ipv4]peer 'ip-address' enable //启用邻居
[h3c-bgp-ipv4]peer 'ip-address' next-hop-local //变更下一跳为本机
[h3c-bgp-ipv4]network 'network' 'mask' //宣告路由
BGP会在本机路由表中对宣告的网段和掩码进行精确匹配,被匹配的路由会放入BGP路由表并向邻居发布
可以宣告任意来源的路由
[h3c]display bgp peer ipv4 //查看BGP邻居
[h3c]display bgp routing ipv4 //查看BGP路由表
BGP属性控制
属性分类
公认必遵属性
- 定义:BGP发布的路由必须携带的属性
- 属性:
AS_path
Next-hop
Origin
公认可选属性
- 定义:所有路由器都识别,但不是必须携带的属性
- 属性:
Local-preference
Atomic-preference
可选传递属性
- 定义 :路由器可以不识别该属性,但会继续向下传递该属性
- 属性 :
Community
Aggregator
可选非传递属性
- 定义 : 路由器可以不识别该属性,且不识别时,不会继续向下继续向下传递
- 属性:
Med
Cluster-list
Originator-id
AS_path
-
定义:AS路径属性,记录路由传递过程中经过的AS编号
-
作用:AS防环,路由优选,AS_path短的优先
-
注意:
增加AS_path长度来控制选路时,建议增加已经真实经过的AS编号,防止AS防环机制导致路由无法学习
Next-hop
- 定义:下一跳属性
- 注意:
1.路由发布给EBGP邻居,下一跳变更为本路由器出口IP
2.路由发布给IBGP邻居,下一跳不变,仍保持为上一个AS出口的IP地址
3.对IBGP邻居发布的路由通过命令更改下一跳为本机
Origin
-
定义:源属性,标识该路由来源
-
属性值:
IGP:
来源于network宣告、聚合的路由,显示为i
EGP:
来源于引入的EGP协议路由,显示为e
Incomplete:
来源于引入IGP协议或静态路由,显示为? -
优选顺序:IGP>EGP>Incomplete
Local-preference
- 定义:本地优先级,用来通告IBGP邻居离开AS(不一定离开as 本as内IBGP之间传递也可以)的最优路径
- 注意:默认值100,大的优先,只对IBGP邻居传递,不对EBGP邻居传递
MED
- 定义:多出口鉴别器
- 属性值:Network的路由,默认值0,引入的路由,默认值为原IGP协议中的cost,小的优先
- 注意:MED属性会被传递至IBGP邻居和EGBP邻居,但不会传递至下下个AS;默认情况下,路由器只会对同一个AS的EBGP邻居传递的路由对比MED
Preferred-value
- 定义:首选项
- 属性值:默认0,如果是本地始发路由器,默认值是32768 ,大的优先
- 注意:私有属性,只对本地有效
属性控制的选择建议
- 如果希望影响下游所有路由器的路由选择,建议使用AS-Path
- 如果希望只影响本As内部路由器的路由选择,建议使用Local-Preference
- 如果希望只影响下游某一台AS的路由器的路由选择,建议使用MED
- 如果希望只影响某一台路由器的路由选择,建议使用Preferred-value
属性控制方法
路由策略使用位置:
- 对邻居传出或传入的方向调用:对匹配的路由使用apply子句修改属性,其他路由使用空节点正常放行
- 宣告网段时调用:直接使用apply子句修改属性,不需要配置空节点
- 引入路由时调用:对匹配的路由使用apply子句修改属性,其他路由使用空节点正常放行
AS路径列表
- 定义:针对路由经过的AS路径设置的匹配条件
- 典型举例:
^$ 匹配本AS始发的路由
.* 匹配所有路由
^100 匹配最后经过的AS是100开头的路由
^100$ 精确匹配只经过AS100的路由
100$ 匹配从AS100始发的路由
常用命令
[h3c-bgp-default]peer 'ip-address' route-policy 'policy-name' 'import/export'
//对邻居调用路由策略
[h3c-bgp-default-ipv4]network 'network' 'mask' route-policy 'policy-name'
//宣告路由时调用路由策略
[h3c-bgp-default]import-route 'protocol' route-policy 'policy-name'
//引入路由时调用路由策略
BGP增强配置
大规模部署BGP的问题
- BGP对等体众多,配置繁琐,管理难度大
- BGP路由表庞大,路由查询效率低
- IBGP全连接,应用和管理BGP难度增加
- 路由变化频繁,导致路由更新频发
对等体组
定义
- 具有某些相同属性的对等体的集合
作用
- BGP邻居太多时,可以极大简化配置
分类
- EBGP对等体组
- IBGP对等体组
相关命令
[h3c-bgp-default]group 'group-name' internal //创建IBGP对等体组
[h3c-bgp-default]group 'group-name' external //创建EBGP对等体组
[h3c-bgp-default]peer 'group-name' as-number 'as-number' //设置对等体组AS编号
[h3c-bgp-default]peer 'ip-address' group 'group-name' //向对等体组加入邻居
BGP路由聚合
作用
- 减小路由表规模
分类
- 自动聚合:自动聚合为主类网段,默认关闭,只能对引入的IGP的路由进行聚合,只能在始发路由器上进行配置
- 手动聚合:可以对任意BGP路由进行聚合,可以在任何路由器上进行配置
相关命令
[h3c-bgp-default-ipv4]summary automatic //开启BGP自动聚合
[h3c-bgp-default-ipv4]aggregate 'network-address' 'mask' detail-suppressed
//配置BGP手动聚合,detail-suppressed 指不发布明细路由
BGP反射器
定义
- BGP反射器能够把从IBGP邻居学习的路由反射给其他IBGP邻居
作用
- 用于替代IBGP全连接,减少IBGP邻居数量
- 解决BGP路由黑洞问题
反射规则
- 从非反射客户端接收的路由,仅反射给客户端
- 从反射客户端收到的路由,反射给所有客户端和非客户端,路由始发者除外
- 从EBGP接收的路由,反射给所有的客户端和非客户端
一个反射群里的所有反射客户机都只需要与反射器建立IBGP关系
反射集群
- 由反射器和客户端组成的网络范围
- 如存在多个反射器,配置相同的Cluster_id
Cluster_list
- 类似AS_path
- 路由传递过程中,把经过的反射集群的Cluster_id依次记录在Cluster_list中
- Cluster_list用于反射集群防环,如果本集群的Cluster_id出现在Cluster_list中,则不再反射
- Cluster_list用于路由优选,短的优先
Originator_id
- 由路由反射一条路由时产生,使用AS内路由始发者的Router-id来标识
- Originator-id用于防环,当路由器收到BGP路由时,对比本机的Router-id和该路由的Originator-id,一致则丢弃路由
- Originator_id用于路由优选,小的优先
注意:反射路由无法使用策略去更改路由属性
相关命令
[h3c-bgp-default-ipv4]peer 'group-name/ip-address' reflect-client
[h3c-bgp-default-ipv4]reflector cluster-id 'cluster-id'
BGP联盟
定义
- 将一个AS划分为若干个子AS,子AS内部IBGP邻居建立全连接,子AS之间建立EGP邻居,原AS称为联盟AS
作用
- 用于替代IBGP全连接,减少IBGP邻居数量
- 解决BGP路由黑洞问题
注意点
- 子AS使用私有AS编号
- 内部路由器的BGP运行在子AS中
- 其他AS的路由器仍然和联盟AS建立EBGP邻居
相关命令
[h3c]bgp 'as-number'//BGP AS编号为子AS编号
[h3c-bgp-default-ipv4]confederation id 'as-number'//配置联盟AS编号
[h3c-bgp-default-ipv4]confederation peer-as 'as-number'//指定联盟中其他AS编号
BGP团体属性
定义
- 一组有相同特征的目的地址的集合
公认团体分类
- Internet:路由可以被发布至所有BGP邻居,默认团体属性
- No-export:路由不能被发布到本AS之外,如果存在联盟,则不能发布到联盟之外,但可以发布到其他子AS
- No-advertise:路由不能通告给其他任何BGP邻居
- No-export-subconfed:路由不能发布到本AS之外,也不能被发布到联盟中的其他子AS
注意:路由器默认不传递团体属性,需要使用命令开启团体属性传递
相关命令
[h3c-bgp-default]peer 'ip-address' advertise-community
//配置允许向其他邻居传递团体属性
BGP路由衰减
作用
- 解决BGP路由震荡
相关参数
- half-life-reachable:可达路由半衰期,路由可达时,惩罚值减半需要的时间
- half-life-unreachable:不可达路由半衰期,路由不可达时,惩罚值减半需要的时间
- reuse:解除抑制状态的惩罚值阈值
- suppress:路由进入抑制状态的惩罚值阈值
- ceiling:惩罚值上限
相关命令
[h3c-bgp-default-ipv4]dampening 'half-life-reachable half-life-unreachable reuse suppress ceiling'
-default]peer 'ip-address' advertise-community
//配置允许向其他邻居传递团体属性
标签:IBGP,h3c,最全,BGP,详解,邻居,路由,属性 来源: https://blog.csdn.net/wuhan_aaa/article/details/120816256