Bgp
外观
边界网关协议(Border Gateway Protocol,BGP)是互联网上一个核心的去中心化自治路由协议。他通过维护路由表或者“前缀”表来实现自治系统(AS)之间的可达性,属于矢量路由协议。bgp不使用传统的内部网关协议(igp)的指标,而使用基于路径、网络策略或者规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。
对等体关系
与ospf、is-is不同,bgp的会话基于tcp建立的。建立bgp对等体关系的两台路由器并不要求直连。
bgp存在以下两种对等体关系类型:
EBGP
External BGP:位于不同自治系统(as)的BGP路由器之间的BGP对等体关系。两台路由器之间要建立EBGP对等体关系,必须满足:
- 两个路由器所属AS不同(AS号不同)
- 在配置EBGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。
IBGP
Internal BGP:位于相同自治系统(as)的BGP路由器之间的BGP邻接关系。
BGP报文类型
| 报文名称 | 作用 | 发送时刻 |
|---|---|---|
| Open | 协商BGP对等体参数,建立对等体关系 | BGP TCP连接建立成功后 |
| Update | 发送BGP路由更新 | BGP对等体关系建立后有路由需要发送或如有变化时向对等体发送Update报文 |
| Notification | 报告错误信息,中止对等体关系 | 当BGP在运行中发现错误时,发送Notification报文将错误通告给BGP对等体 |
| Keepalive | 标志对等体建立,维持BGP对等体关系 | BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送Keepalive报文用于保持连接 |
| Route-refersh | 用于在改变路由策略后请求对等体重新发送路由信息,只有支持路由刷新能力的BGP设备会发送和响应此报文 | 当路由策略发生变化时,触发请求对等体重新通告路由 |
路由器反射器
引入路由器反射器之后存在两种角色:
- RR(Route Reflector):路由器反射器
- Client:RR客户端
RR会将学习的路由器反射出去,从而是的IBGP路由器在AS内部传布无需建立IBGP全互联。
将一台BGP路由器指定为RR的同时,还需指定其他Client。至于Client本身,无需做任何配置,他并不知晓网络中存在RR。
反射规则
RR在接收到BGP路由时:
- 如果路由器反射器从自己的非客户对等体学习到一条IBGP路由,则他将该路由反射给所有客户
- 如果路由器反射器从自己的客户学习到一条IBGP路由,则他会将该路由反射给所有非客户,以及除了该客户外的其他客户
- 如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体