AS:自治系统
BGP-4 采用了路由向量路由协议,在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。
同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP 被称为 IBGP(Internal/Interior BGP)。归属不同的AS的对等实体之间运行的BGP称为EBGP(External/Exterior BGP)。
BGP属于外部网关路由协议,可以实现自治系统间无环路的域间路由。BGP是沟通Internet广域网的主用路由协议。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据,BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议。
BGP邻居建立中的状态和过程如下:
- 空闲(Idle):为初始状态,当协议激活后开始初始化,复位计时器,并发起第一个TCP连接,并开始倾听远程对等体所发起的连接,同时转向Connect状态。。
- 连接(Connect):开始TCP连接并等待TCP连接成功的消息。如果TCP连接成功,则进入OpenSent状态;如果TCP连接失败,进入Active状态。
- 行动(Active):BGP总是试图建立TCP连接,若连接计时器超时,则退回到Connect状态,TCP连接成功就转为Open sent状态。
- OPEN发送(Open sent):TCP连接已建立,自己已发送第一个OPEN报文,等待接收对方的Open报文,并对报文进行检查,若发现错误则发送Notification消息报文并退回到Idle状态。若检查无误则发送Keepalive消息报文,Keepalive计时器开始计时,并转为Open confirm状态。
- OPEN证实(Open confirm):BGP等待Keepalive报文,同时复位保持计时器。如果收到了Keepalive报文,就转为Established状态,邻居关系协商完成。如果系统收到一条更新或Keepalive消息,它将重新启动保持计时器;如果收到Notification消息,BGP就退回到空闲状态。
- 已建立(Established):即建立了邻居(对等体)关系,路由器将和邻居交换Update报文,同时复位保持计时器。
BGP在进行路由通告的时候,需要遵循以下原则:
- 多条路径时,BGP Speaker只选最优的给自己使用(负载均衡和FRR除外)。
- BGP Speaker只把自己使用的路由(最优路由)通告给相邻体。
- BGP Speaker从EBGP获得的路由会向自己所有BGP相邻体通告(包括EBGP和IBGP)。
- BGP Speaker从IBGP获得的路由不向自己的IBGP相邻体通告(反射器除外)。
- BGP Speaker从IBGP获得的路由是否通告给自己的EBGP相邻体要根据IGP和BGP同步的情况来决定。
- 当收到对端的refresh报文并且本端邻居支持refresh能力,BGP Speaker将把自己所 有BGP路由通告给对等体。
- GR过程中,主备倒换方在GR结束时BGP Speaker会把自己所有BGP路由通告给对等体。