BGP边界网络路由协议
一、协议分类:
EGP
距离矢量(路径向量)
无类
二、IGP和EGP主要的不同点:
IGP主要用于AS内计算和发现路由;
BGP主要用于AS间传递和控制路由;
BGP自身没有发现路由的能力,依靠IGP、静态或者直连发现路由之后,在将相应路由转化BGP路由,然后进行传递。
互联网由不同的AS组成,BGP路由协议负责连接不同的AS,进行路由的传递。
BGP的应用场景:
1、作为承载网(ISP)时
2、网络存在多个出口时
BGP用于传递大量的路由信息,对设备的性能消耗比较大,一般运行在网络边界并且性能较好的设备上。
三、BGP的AS号
运行BGP路由器必须存在一个AS号,一台BGP路由器只能有一个AS号
AS号的表示方式:
1、2字节的AS号 (常用)
范围:1----65535
公有的AS号:1----64512 私有的AS号:64513----65535
2、4字节的AS号
范围:2^32
四、BGP的特点
1、BGP可以跨越多跳(非直连)路由器建立邻居关系;
2、基于TCP协议,端口号179, 传递路由信息可靠;
3、路径向量协议,传递路由信息时携带丰富的路径属性,路径属性相当于IGP协议的度量值,可以基于多种度量值控制选路
4、BGP可以结合多种路由选择工具以及路由策略工具使用,方便做选路控制以及控制路由信息传递。
五、BGP的邻居建立
1、BGP的邻居建立之前需要先建立TCP的连接;
2、BGP的邻居经常会使用非直连建立邻居关系,需要保证TCP源IP和目的IP时可以可达的,可以使用IGP或者静态路由保证可达;
3、BGP没有自动发送邻居的能力,只能手工指定邻居,邻居需要相互peer;
4、BGP存在两种邻居关系:
4-1:EBGP 运行在不同AS之间的BGP路由器建立的邻居关系为EBGP
1、EBGP一般用直连接口建立邻居关系
2、如果EBGP邻居之间存在多条路径时,也可以使用环回接口建立;
3、EBGP邻居之间使用环回接口建立,要注意指定更新源以及注意环回接口可达(一般使用静态路由保证可以)
4、EBGP邻居之间邻居关系默认报文的TTL=1,如果使用非直连建立,要增加报文的默认TTL值,通过设置EBGP多跳实现
4-3:IBGP 运行在相同AS之间的BGP路由器建立的邻居关系为IBGP
1、IBGP一般用非直连接口建立邻居关系
2、IBGP通常用环回接口建立邻居关系,有冗余路径并且比较稳定,但是要保证可达;
3、IBGP使用环路接口建立邻居关系,要注意指定更新源(指定BGP的发送源IP地址);
4、IBGP邻居之间邻居关系默认报文的TTL=255
0、配置BGP router id (配置与OSPF类似)
1、配置EBGP邻居关系(使用直连接口)
AR1:
bgp 200
peer 15.1.1.5 as-number 100
AR5:
bgp 100
peer 15.1.1.1 as-number 200
display bgp peer 查看BGP的邻居状态机,Established说明邻居建立完成
2、配置IBGP邻居关系(使用环回接口)
AR1:
bgp 200
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LoopBack0
AR4:
bgp 200
peer 1.1.1.1 as-number 200
peer 1.1.1.1 connect-interface LoopBack0
3、配置EBGP邻居关系(使用环回接口)
3-1:配置静态路由,保证环回接口可达
AR4:ip route-static 6.6.6.6 32 46.1.1.6
AR6:ip route-static 4.4.4.4 32 46.1.1.4
3-2:进入BGP ,peer 对端地址并且指定更新源地址、设置EBGP多跳
AR4:
peer 6.6.6.6 as-number 300
peer 6.6.6.6 connect-interface LoopBack0
peer 6.6.6.6 ebgp-max-hop 5
AR6:
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LoopBack 0
peer 4.4.4.4 ebgp-max-hop 5
六、BGP的报文
1、open 报文:用于邻居关系建立时协商参数
协商的内容包含:
*1、版本:必须一致
*2、AS:收到的AS号要和配置的一致
3、超时时间:取小值
*4、BGP的router id:不能一致
*5、能力参数:要匹配
BGP仅支持MD5认证,认证信息放在TCP 的OPTIONS字段中,并没有放在open报文中
2、keepalive:维护BGP的邻居关系(60S发送间隔,180S超时时间)以及作为
open 报文的确认
3、Notification:当BGP路由器检测到错误状态时,就向邻居发出Notification报文,之后BGP路由器会立即中断TCP链接。
4、update:BGP路由更新报文,携带BGP可达路由、可达路由的路径属性以及不可达路由。
5、Route-refresh报文:路由刷新报文用于在改变路由策略后请求对等体重新发送路由信息。
Route-refresh报文需要手工触发,在执行完路由策略或者对路由信息有调整之后
在用户视图下配置:
refresh bgp all import 当入方向策略发生变化时,需要刷新路由时执行
refresh bgp all export 当出方向策略发生变化时,需要刷新路由时执行
七、BGP的邻居状态机(邻居建立过程):
Idle:闲置状态,准备发起TCP的连接,一般没有到peer的路由导致或者邻居没有指定
peer回来;
connect:BGP建立TCP连接的过程,当TCP连接建立成功,则发送open报文,进入OpenSent状态;
当TCP连接建立失败,则进入Active状态;
Active:活跃状态,TCP的连接建立失败,尝试重新建立TCP连接,一般是配置错误导致;
如果在Active状态,TCP连接成功,则发送open报文,进入OpenSent状态;
OpenSent:进入Open报文协商,如果open协商成功,则发送keepalive报文,进入OpenComfirm状态;
如果open协商失败,则发送Notification报文,进行TCP连接的拆除;
OpenComfirm:等待邻居的keepalive报文,如果5S内收到,则进入Established;
如果5S内没有收到,则Notification报文,进行TCP连接的拆除;
Established:完成建立状态,邻居建立完成。
一般会停留的状态:
IDLE以及Active,表示配置错误导致BGP邻居无法建立;
Established:邻居建立完成;
八、BGP路由的生成方式
1、Network:是逐条将IP路由表中已经存在的路由引入到BGP路由表中。
被Network的路由一定需要在路由表中存在;
Network路由时,IP前缀和掩码一定要和路由表中的一致的。
配置:
BGP
network 5.5.5.5 255.255.255.255
display bgp routing-table 查看BGP的路由,包含自身和从邻居收到的
BGP路由的协议优先级为255,比所有的IGP要差,因为AS内学习到应该优于从AS间学习到的;
2、Import:是根据运行的路由协议(RIP,OSPF,ISIS等)将路由引入到BGP路由表中,同时import命令还可以引入直连和静态路由。
bgp 200
import-route ospf 1
如果一条路由通过Import和Network成为BGP路由,那么只会优选Network的路由传递给邻居;
通过Import生成的BGP路由,后缀为“?”;
通过network生成的BGP路由,后缀为“i”;
九、BGP路由通告方式
1、BGP通告原则之一:仅将自己最优的路由发布给邻居
BGP路由表的前缀为“>”表示为最优的路由;
前缀为“*”表示为有效的路由;BGP路由下一跳可达才能成为有效路由;
BGP默认不会进行负载均衡,即使收到多条相同路由,只会有选择出一条最优。
2、BGP通告原则之二:通过EBGP获得的最优路由发布给所有BGP邻居,
发送给EBGP邻居时,路由的下一跳地址会发生改变;
发送给IBGP邻居时,路由的下一跳地址不会发生改变,可能会导致下一跳地址不可达的问题,如果下一跳地址不可达,则BGP无效。
解决方案:
1、使用IGP协议或静态路由使用下一跳可达;
2、修改路由的下一跳地址
配置:
BGP
peer 4.4.4.4 next-hop-local 向IBGP邻居传递EBGP路由时,下一跳地址修改为本路由器的更新源地址;
此命令只是针对EBGP邻居接收到的路由有效;
3、BGP通告原则之三:通过IBGP获得的最优路由不会发布给其他的IBGP邻居,
也称IBGP的水平分割,主要用于BGP的AS内防环;
IBGP的水平分割会带来路由信息传递的问题,解决方案:
1、IBGP全互联,所有的IBGP建立邻居关系,但是会导致IBGP的会话数过多;
2、路由反射器,打破IBGP水平分割原则,从IBGP邻居收到的路由按照一定的防环规则
反射给IBGP邻居;
BGP的进程下配置:peer 1.1.1.1 reflect-client
4、BGP通告原则之四:BGP与IGP同步
BGP与IGP同步规则:是指从IBGP邻居学习到的路由,在IGP中也要学习到,否则路由无效;
同步规则是为了防止路由黑洞问题;
同步规则开启会导致路由信息传递的问题,所以默认同步不开启,因为BGP的主要作用之一用于传递路由;
同步规则关闭可能会到来路由黑洞问题,使用以下方式解决:
1、将部分BGP路由引入到IGP;
2、将数据包所需经过的路径上开启BGP。
