BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。这个节点可以是一个主机。但通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router) 。
BGP属于外部网关路由协议,可以实现自治系统间无环路的域间路由。BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP可分为IBGP(Internal BGP)和EBGP(External BGP)。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议
(1)实现自治系统间通信,传播网络的可达信息。
(2)多个BGP路由器之间的协调。
(3)BGP支持基于策略的选路(policy-base routing)。
(4)可靠的传输。BGP路由信息的传输采用了可靠地TCP协议。
(5)路径信息。
(6)增量更新。
(7)BGP支持无类型编制(CIDR)及VLSM方式。
(8)路由聚集。
(9)BGP还允许接收方对报文进行鉴别和认证,以验证发送方的身份。
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路由通告给对等体。
路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也可以是部分的。并非组织的和有组合的都是合法的,路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。
公认属性:
是公认所有BGP实现都必须识别的属性,这些属性被传递给BGP邻居。
公认强制属性必须出现在路由描述中,公认自由决定属性可以不出现在路由描述中。
可选属性:
非公认属性被称为可选的,可选属性可以是传递的或非传递的。
可选属性不要求所有的BGP实现都支持。
对于不支持的可选传递属性,路由器将其原封不动的传递给其他BGP路由器,在这种情况下,属性被标记为部分的。
对于可选非传递属性,路由器必须将其删除,而不将其传递给其他BGP路由器。
原文:https://blog.51cto.com/14216997/2414182