BGP 笔记
一、BGP产生背景
BGP(Border Gateway Protocol,边界网关协议)用于自治系统间的动态路由协议,是一种外部网关协议。
自治系统AS:一组被进行统一管理,运行同一个IGP协议的路由器组成的网络范围。通常使用相同的路由策略。
自治系统编号:
2字节AS编号:取值范围0-65535,其中0和65535保留
公有AS:1-64511
私有AS:64512-65535
4字节AS编号:2的32次方的编号数量
公有:65536–4199999999
私有:4200000000–4294967294
二、路由协议的分类
IGP:RIP、OSPF、IS-IS
EGP:BGP
三、BGP协议特性
1、BGP负责把路由从一个AS传到另一个AS;从其他AS传递过来的路由在本AS内部的扩散依靠IGP;
2、BGP是路径矢量协议,一跳是一个自治系统;
当一条路由传入某个AS,该路由的下一跳会变为上个AS的出接口的IP地址;当一条路由在某个AS内部的路由器之间传递时,下一跳不变。
3、AS防环机制:路径矢量路由协议,从设计上避免了环路的发生,
当一条路由每从一个AS传出,会把该AS的编号按照从右至左的顺序依次记录在AS_PATH属性中;
一个路由器从其他AS收到一条路由通告,会检查本路由器的AS标号是否出现在该路由条目的AS_PATH属性中,如果出现了则该条目不学习;
4、BGP基于TCP协议传输,端口号179;必须手动配置邻居;
5、BGP在第一次网络收敛的时候发送完整的路由表,后续只发送增量更新;
6、BGP有多种属性可以控制路由选择。
7、支持路由聚合;
8、路由过滤和路由策略;
四、BGP环路问题(水平分割)
1、EBGP水平分割(AS_PATH)
通过AS_PATH属性防环,在学习到的路由中,若有本地AS号,则拒绝学习,防止环路
2、IBGP水平分割
当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。
五、BGP状态机
Idle:空闲状态,停留30秒,初始化开始准备TCP连接并监视远程对等体,启动BGP时,同时建立邻居关系。
connect:TCP连接中状态,本端为TCP被动连接方,若连接建立失败则进入Active状态,反复尝试连接;
Active:活跃状态,本端为TCP主动连接方,TCP连接没建立成功,反复尝试连接;
open-sent:开始发送状态,成功建立TCP连接,发出open报文,open报文中携带参数协商对等体的建立,正在等待接受对方open报文;
open-confirm:开始确认状态,收到open报文,发出Keepalive报文,等待第一个Keepalive报文;
established:已连接状态,收到Keepalive报文,最终成功建立邻居;
六、BGP路由选路原则(13条)
1、首先丢弃下一跳不可达的路由;
2、优选Preferred-value值最大的路由;默认为0;
Preferred-value:定义:首选项。
属性值:默认为0,取值范围是 0~65535,取值越大,优先级越高。
3、优选本地优先级(LOCAL_PREF)最高的路由;
4、依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;
5、优选AS路径(AS_PATH)最短的路由;
6、依次选择ORIGIN属性为IGP、EGP、Incomplete的路由;
7、优选MED值最低的路由;
8、依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;
9、优选下一跳度量值最低的路由;
度量值:一般指通过IGP协议到达下一跳地址的度量值
10、优选CLUSTER_LIST长度最短的路由;
11、优选ORIGINATOR_ID最小的路由;
12、优选Router ID最小的路由器发布的路由。
13、优选IP地址最小的对等体发布的路由。
七、BGP路由的发布策略
只将最优路由发布给对等体。如果配置了active-route-advertise命令,则BGP发布IP路由表中的最优路由;否则,发布BGP路由表中的最优路由。
比较优先级:OSPF 优先级:10和150 ,BGP优先级255。在整个IP路由表中,选择通过OSPF学到的路由。
只把自己使用的路由发布给对等体(自己选的最优路由);
从EBGP获得的路由会向它所有BGP对等体发布;
从IBGP获得的路由不向它的IBGP对等体发布;(IBGP水平分割)
从IBGP获得的路由发布给它的EBGP对等体;
BGP连接一旦建立,BGP发言者将把满足上述条件的所有BGP路由发布给新对等体。之后,BGP发言者只在路由变化时,向对等体发布更新的路由。
五、属性控制的选择建议
1.如果希望影响下游所有路由器的路由选择,建议使用AS-PATH
2.如果只希望影响本AS内部的某个路由器选择,建议使用Local-preference
3.如果希望只影响下游某一个AS的路由器选择,建议使用MED
4.如果希望只影响某一台路由器的路由选择,建议使用preferred-value
四、BGP路由聚合
作用:减小路由表规模
1、自动聚合:
只能对引入的IGP的路由进行聚合;
只能将明细路由汇总到主类,这会造成路由黑洞;
华为设备默认关闭自动聚合功能;
只能在始发路由器上进行配置;
2、手工聚合:
可实现精确汇总:[R1-bgp]aggregate 172.16.0.0 16
可以在任何路由器上对BGP路由进行聚合;
出现问题:明细路由依然被通告,有形成环路的隐患
解决方法:[R1-bgp]aggregate 172.16.0.0 16 detail-suppressed //抑制明细路由,此命令不通告明细路由;
五、路由反射器
1、定义:BGP反射器能把从IBGP邻居学习的路由反射给其他IBGP邻居
2、作用:用于替代IBGP全连接,减少IBGP邻居数量;解决BGP路由黑洞问题;
RR(router reflect):路由反射器
反射器角色:
client:RR客户机
非客户机
3、反射规则
从非客户机端接受的路由,仅反射给客户端;
从客户端接受到的路由,反射给所有客户端和非客户端,路由始发者除外;
从EBGP接收的路由,反射给所有的客户端和非客户端;
4、反射集群:由反射器和客户端组成的网络范围;
如果存在多个反射器,配置相同的cluster_id
5、路由反射存在问题:使得IBGP水平分割原则失效,会导致环路的产生
6、解决方法:
通过两个路径属性来避免环路
(1)cluster_list(集群列表):
类似AS_PATH,每个RR都有一个Cluster id,默认为路由器的router id,可手工修改;
同一个AS内的Cluster id必须相同,才能有防环作用。
路由传递过程中,把经过的反射器的Cluster_id依次记录在Cluster_list中;
Cluster_list用于反射器防环,当反射器收到BGP路由时,如果本机的Cluster_id出现在Cluster_list中,则丢弃该路由;
(2)originator_ID:起源ID
由路由器反射器反射一条路由时产生,会在反射出去的路由中增加originator_ID,它就是本地AS内路由始发者的router-id;
即使这条反射路由经过多个RR,当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。
originator_ID用于路由优选,短的优先
7、总结BGP的防环机制
(1)AS_PATH:解决AS之间的环路问题
(2)IBGP的水平分割:解决一个AS内部IBGP邻居之间环路问题
(3)Cluster-list防环:当一个反射群中存在多个反射器时,通过Cluster-list防环,
(4)originator_ID:在多个反射群之间,通过originator_ID防环