路由选择协议
因特网是全球最大的互联网,它所采取的路由选择协议具有以下三个主要特点:
-
自适应:因特网采用动态路由选择,能较好地适应网络状态的变化。
-
分布式:因特网中的各路由器通过相互间的信息交互,共同完成路由信息的获取和更新。
-
分层次:将整个因特网划分为许多较小的自治系统(AutonomousSystem,AS)在自治系统内部(域内路由选择)和外部(域间路由选择)采用不同类别的路由选择协议,分别进行路由选择。
-
自治系统内部使用内部网关协议
IGP
,自治系统之间使用外部网关协议EGP
-
外部网关协议
EGP
和内部网关协议IGP
只是路由选择协议的分类名称,而不是具体的路由选择协议。 -
外部网关协议和内部网关协议名称中使用的是“网关”这个名词,是因为在因特网早期的
RFC
文档中,没有使用“路由器”而使用的是“网关”这一名词。
动态路由协议
动态路由协议分为距离矢量路由协议和链路状态路由协议。
-
距离矢量路由协议(Distance Vector Routing Protocols):
- 通过向相邻路由器定期通告自己的路由表,逐跳传递路由信息。
- 典型协议:RIP(Routing Information Protocol)。
- 优点:实现简单。
- 缺点:收敛慢,容易产生路由环。
-
链路状态路由协议(Link State Routing Protocols):
- 每个路由器通过广播链路状态信息构建整个网络的拓扑图,使用
Dijkstra
算法计算最短路径。 - 典型协议:OSPF(Open Shortest Path First)、IS-IS(Intermediate System to Intermediate System)。
- 优点:收敛快,路由精确。
- 缺点:实现复杂,资源消耗大。
- 每个路由器通过广播链路状态信息构建整个网络的拓扑图,使用
-
路径矢量路由协议(Path Vector Routing Protocols):
- 主要用于大型互联网络(如互联网),通过通告路径信息,避免路由环。
- 典型协议:BGP(Border Gateway Protocol)。
- 优点:适用于大规模网络,避免路由环。
- 缺点:实现复杂,路由策略灵活。
边界网关协议 BGP
路由信息协议 RIP
和 开放最短路径优先 OSPF
都属于内部网关协议,用于自治系统内部的路由选择。
边界网关协议(Border Gateway Protocol,BGP
)属于外部网关协议 EGP
这个类别,用于自治系统 AS 之间的路由选择协议。
由于在不同 AS 内度量路由的“代价”(距离、带宽、费用等)可能不同,因此对于AS之间的路由选择,使用统一的“代价”作为度量来寻找最佳路由是不行的。
并且,AS 之间的路由选择还必须考虑相关策略(政治、经济、安全等)
自治系统之间的路由选择协议应当允许使用多种路由选择策略。这些策略包括政治、经济、安全等,它们都是由网络管理人员对每一个路由器进行设置的。但这些策略并不是自治系统之间的路由选择协议本身。
BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(即不能兜圈子),而并非要寻找一条最佳路由。
BGP 的基本概念
-
在配置 BGP 时,每个 AS 的管理员要选择至少一个路由器作为该 AS 的“BGP发言人”
-
一般来说,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器。
-
不同自治系统的 BGP 发言人要交换路由信息,首先必须建立 TCP 连接,端口号为 179,在此 TCP 连接上交换 BGP 报文,以建立 BGP 会话。利用 BGP 会话,交换路由信息,如增加新的路由或撤销过时的路由、报告出错的情况等。
-
使用
TCP
连接交换路由信息的两个 BGP 发言人,彼此称为对方的邻站(neighbor)或对等站(peer) -
BGP 发言人除了运行 BGP 协议外,还必须运行自己所在AS所使用的内部网关协议IGP,例如
RIP
或OSPF
-
BGP 发言人交换网络可达性的信息,也就是要到达某个网络所要经过的一系列自治系统。
-
当 BGP 发言人相互交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略,从收到的路由信息中,找出到达各自治系统的较好的路由,也就是构造出树形结构且不存在环路的自治系统连通图。
BGP 适用于特别适合于处理大型、复杂且具有多级结构的互联网环境,即多级结构的因特网:
BGP-4 的四种报文
BGP-4
是目前使用得最多的版本,在 [RFC4271]
中规定了 BGP-4
的四种报文:
-
打开(OPEN)报文:用来与相邻的另一个 BGP 发言人建立关系,使通信初始化。
-
保活(KEEPALIVE)报文:用来周期性地证实邻站的连通性
-
更新(UPDATE)报文:用来通告某一条路由的信息,以及列出要撤销的多条路由。
-
通知(NOTIFICATION)报文:用来发送检测到的差错。