目录
简介
BGP名为边界网关协议,在动态路由协议中,我们分为IGP(内部网关路由协议)和EGP(外部网关路由协议),IGP侧重于发现和计算路由,并且是运行在AS内部的路由协议,EGP侧重于传递和控制路由,运行在AS和AS之间的路由协议。不同AS之间通过AS号进行区分,AS号范围1-65535(16Bit),其中1-64511属于公有AS号,64512-65535属于私有AS号。
BGP属于应用层协议,使用传输层协议TCP179端口建立连接,建立BGP邻居之前需要先建立TCP连接,由于TCP连接是单播建立, 所以建立BGP邻居关系的两台设备之间需要路由可达,同时也就表示BGP可以跨跳建立邻居关系。
BGP也叫路径矢量协议,在AS之间传递和控制路由,并且在路由中携带大量属性进行选优和防环,由于BGP的路由规模庞大,所以支持增量更新(触发性更新,即有新路由进来就更新路由表),不支持周期性更新,会造成网络震荡,因为庞大的路由如果周期性更新,在更新过程中必然会对业务造成影响,并且庞大的路由表周期性更新的时间也会很久。
BGP的对等体关系
IBGP: 处于相同AS的两个BGP路由器之间建立的BGP对等体关系,一般采用环回口建立(更佳稳定),需要指定TCP更新源地址为环回口
EBGP:处于不同AS的两个BGP路由器之间建立的BGP对等体关系,一般采用物理接口建立,采用回环口建立时需要指定ebgp多跳(ebgp默认ttl=1)。
BGP报文类型
Open:协商参数,建立对等体关系(AS号,hold time180s,BGP ID)。
Uptate:发布和撤销路由[//]: # (1. BGP通过UPdate报文发布和撤销路由,2. 发布路由携带NLRI(网络层可达信息)和路径属性(用于选路和防环),3. 撤销路由携带Withdrew Router(携带撤销的前缀和前缀长度)。4. 撤销路由不需要路径属性(无意义))
Notification:差错报文,当对等体关系发生错误,发送该报文通知对等体
Keepalive:保活报文,60s发送一次,维护对等体关系
Route-refresh:路由刷新报文,当配置了路由策略,路由信息发生变化通过该报文通知对等体。
BGP状态机
Idle:初始状态,等待Start事件(peer...)
Connect:开始建立TCP连接,启动计时器32秒,如果建立成功进入Opensent状态,建立失败进入Active状态,超时没有建立停留在connect重启计时器
Active:TCP连接建立失败进入该状态,启动计时器重新建立TCP连接,建立成功进入Opensent状态,建立失败重启计时器,建立超时回到connect状态。
Opensent状态:TCP连接建立成功,开始发送Open报文,协商参数
Openconfirm:收到对端发送的Open报文,参数协商成功,开始发送Keepalive报文
Established:收到了对端发送的Keepalive报文,对等体关系建立完成
##后续可交互Update,Route-refresh报文,任何时候收到notification报文都会回到idle状态
BGP 注入路由的方式
Network:宣告,只要是IP路由表中存在的路由都可以进行宣告,需要严格匹配前缀和前缀长度
import-route:引入,可以将不属于BGP的路由引入到BGP中,如直连,静态,OSPF等。
聚合路由:将多条BGP路由聚合为一个聚合网段,通过抑制明细路由减少向BGP对等体通告的路由数量
1.先将明细路由注入BGP
network 前缀 前缀长度
import-route *
2.再进行聚合并抑制明细路由
aggregate 聚合后网段 掩码 detail suppressed1
BGP的通告原则:
- 发布有效且最优路由
- 从EBGP学习到的路由会发布给所有邻居
- 从IBGP学习到的路由不会发布给其他IBGP对等体(IBGP水平分割)
- IGP和BGP同步(当BGP路由器从IBGP对等体学到一条路由后,再传给EBGP对等体之前先检查IGP路由表是否存在该路由,如果存在可以发布给EBGP,如果不存在则不发布)
BGP的路由黑洞和路由表:
路由黑洞 :由于BGP可以跨跳建立对等体关系,导致中间设备没有运行BGP,数据到了中间设备因为没有路由而被丢弃。
解决方式:
- IBGP全互联
- 物理连接
- MPLS(多协议标签转发,不会看目的IP地址)
- 将BGP引入IGP
路由表 :
- BGP通过UPdate报文发布和撤销路由,
- 发布路由携带NLRI(网络层可达信息)和路径属性(用于选路和防环),
- 撤销路由携带Withdrew Router(携带撤销的前缀和前缀长度)。
- 撤销路由不需要路径属性(无意义)
在BGP中,认为下一跳与其目的网段一致的路由无效,*:表示有效路由,*:表示有效路由。