目录
BGP路由信息处理流程
BGP路由处理所需要的表项
BGP收到从邻居发来更新消息到向邻居发出更新信息的过程
BGP路由宣告方式
BGP防环机制
BGP路由通告原则
如何解决BGP路由黑洞问题
BGP路由状态码
BGP选路原则
BGP负载均衡
Preference_Value属性
BGP路由信息处理流程
BGP路由处理所需要的表项
1.邻居表 BGP邻居名单
2.Local-RIB(BGP路由表) 从邻居获取到以及自己宣告的所有路由及其属性
3.IP-RIB(IP路由表) 从BGP路由表中选取最佳路由加入IP路由表项(如果IP路由表有优于此BGP路由的其它路由,则BGP的路由无法加入到IP路由表中)
4.Adj-RIB-In(入) 邻居宣告给本地的未处理的路由信息库
5.Adj-RIB-Out(出) 本地宣告给指定邻居的路由信息库
BGP收到从邻居发来更新消息到向邻居发出更新信息的过程
BGP路由宣告方式
BGP不对路由进行计算,只是路由的搬运工,通过对已有路由进行宣告来得到BGP路由
本地宣告:network
- 此命令不再具备将接口加入到BGP进程的逻辑(即不同于OSPF的network)
- 此命令就是将路由表中的路由引入到BGP路由表中
- 此命令可以精确控制引入哪些路由到BGP中
引入宣告:import-route
- 将路由表的路由引入到BGP中,高效快捷
- 将其它协议引入到BGP,默认开销为IGP的度量值,路由优先级为255(可以通过default med修改初始度量值)
引入缺省路由:default-route、default-rote-advertise
- default-route imported
- peer 对等体 default-route-advertise
peer 对等体 default-route-advertise conditional-route-match-all 条件
peer 对等体 default-route-advertise conditional-route-match-any 条件 当匹配任一条件路由时,发送缺省路由
BGP防环机制
AS内:通过水平分割 通过IBGP邻居得到的路由不会再传递给IBGP邻居
AS间:AS_Path属性
RR: 通过orifinator-id和cluster-list防环
其它防环机制
BGP SoO属性防环(MPLS VPN场景会使用到)
通过将路由聚合指向Null0防环
默认情况下不会将IBGP路由重新发布到IGP中
BGP路由通告原则
1.到达同一目的 有多条路由时,只会选取最优的(Best)路由来给自己使用
----就比如到达同一网段的路由有多个下一跳,此时只会选择最优的下一跳给自己使用
2.BGP只把自己使用的路由,也就是自己认为最优的路由传给BGP对等体
3.BGP从EBGP对等体获得的路由会向他所有BGP对等体宣告(IBGP和EBGP对等体)
4.BGP路由器从IBGP对等体获知的路由不向它的IBGP对等体通告(水平分割规则,出现路由反射器的情况除外)
5.BGP路由器从IBGP对等体获知的路由是否通告给它的EBGP对等体要视IGP和BGP同步的情况来决定(即:只有IGP和BGP同步,从IBGP学来的路由才会优选,则会将此路由传递给EBGP邻居)
---即自己的IGP是否有此需要通告的路由,如果IGP有,则通告,如果IGP没有,则不通告。
---如果此规则不打开,就会造成路由黑洞问题(默认此同步规则关闭的)
---BGP协议下:synchronization开启同步规则(华为设备不支持此规则,思科支持)
6.BGP进行路由更新时,BGP设备只发送更新的BGP路由
7.BGP连接一建立,BGP Speaker将把自己所有最优BGP路由通告给新对等体
注意:
BGP路由传递给EBGP邻居时,下一跳会自动修改
从EBGP邻居学到的路由传递给IBGP邻居时默认不更改路由的下一跳,会导致IBGP邻居收到的路由不是有效路由(下一跳不可达)
---使用Peer 邻居IP地址 next-hop-local 命令来解决,该命令只对IBGP邻居生效
---在从EBGP邻居得到的路由在传递给IBGP邻居时,将下一跳更改为自身向该IBGP邻居发送BGP报文的源地址
如何解决BGP路由黑洞问题
当BGP与IGP同步没有打开的情况下,需要使用以下方法来解决路由黑洞问题
1、将EBGP路由引入到IGP协议中(此方法基本被淘汰)
比较消耗设备资源,由于BGP路由数量过大,引入到IGP协议,增加了IGP协议计算路由的负担;并且BGP路由震荡,IGP路由也会产生震荡。
2、AS内部所有路由器均运行BGP,即IBGP全互联目前主流架构
- 建立物理的全互联结构,N台设备就要建立N(N-1)/2的IBGP对等体邻居关系
- 配置路由反射器,实现逻辑上的全互联
- 配置BGP联盟,实现逻辑上的全互联
3、通过配置MPLS,通过标签的方式也可以解决路由黑洞
BGP路由状态码
表示BGP表项中的路由状态
*-----表示路由为有效路由
不可用的原因:
- 下一跳不可达
- 已经通过更优的方式学习到了该路由
>----表示此路由为最优路由
d-----表示此路由为惩罚路由——当路由一会Down,一会Up就会被惩罚
s-----抑制路由,即路由不生效——聚合路由时,可以选择抑制明细路由
BGP选路原则
1.如果该路由是到目的地址的唯一路由,直接优选
2.到达同一目的地有多条路由,优选有效路由
3.到达同一目的地有多条有效路由,有更细的原则比较
1) 丢弃下一条不可达路由
2) 优选私有属性(Prefernce)最高的路由——私有路由属性仅本地有效
3) 优选本地优先级(Local_Preference)最高的路由
4) 当有聚合路由时,手动聚合>自动聚合>network>import>从对等体学到的路由
5) 优选AS_Path最短的路由
6) Orign:i>e>?(network>EGP协议引入>import-route引入)
7) 对相同同一AS的路由,优选MED最小的
8) 优选从EBGP学来的路由(EBGP>IBGP)
9) 优选AS内部IGP的Metric最小的路由——Metric 从此路由器到下一跳的度量值
10) Cluster_List最短
11) 起源ID最小
12) Router_ID最小
13) IP地址最小的
BGP负载均衡
默认BGP不进行负载分担,如果①到⑨都一致,并且AS_Path必须一致,则为等价路由,可以负载均担
华为设备配置负载分担
Maximum load-balancing 1 允许一条最优路由(缺省)
Load-balancing as-path-ignore 忽略AS_PATH,不一致也可以实现负载分担
锐捷设备配置负载分担
Maximum-paths [ibgp/ebgp] 1 允许一条最优路由
Load-balancing as-path-ignore 忽略AS_PATH,不一致也可以实现负载分担
当BGP开启负载均衡后
在BGP的路由表中还是只有一条最优路由,但是在IP路由表中会形成负载分担
Preference_Value属性
- Preference_Value是BGP的私有属性(华为私有)
- 仅在本地生效,即仅可用于自己选路
- 越大越优先