边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。
BGP的结构和功能
BGP用于在不同自治系统(AS)之间交换路由信息。 当两个AS需要交换路由信息时,每个AS必须指定一个运行BGP的节点来代表该AS与其他AS交换路由信息。 该节点可以是主机。 但是通常是路由器执行BGP。 使用BGP在两个AS中交换信息的路由器也称为边界网关或边界路由器。
由于它可能连接到不同的AS,因此AS中可能有多个运行BGP的边界路由器。 在同一自治系统(AS)中两个或多个对等实体之间运行的BGP称为IBGP(Internal/Interior BGP)。 在属于不同AS的对等实体之间运行的BGP称为EBGP(External/Exterior BGP)。 与AS边界上的其他AS交换信息的路由器称为边界路由器。 在互联网操作系统(Cisco IOS)中,IBGP通告的路由的距离为200,优先级低于EBGP和任何内部网关协议(IGP)通告的路由。 在其他路由器实现中,优先级顺序也是EBGP高于IGP,而IGP高于IBGP。
BGP属于外部网关路由协议,可以实现自治系统间无环路的域间路由。BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP可分为IBGP(Internal BGP)和EBGP(External BGP)。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议。
IETF先后为BGP制定了多个建议,分别为:
RFC 4271:当前正使用的BGP协议版本,称之为BGP4。
RFC 1654:BGP4协议的第一个规范。
RFC 1105、RFC 1163、RFC 1267、RFC1771:BGP4之前的BGP版本。