在互联网中,每一个数据包都要经过很多次转发才能到达目的地,决定数据包的传递路径的,正是网络设备的路由协议。在了解互联网的路由协议前,我们先熟悉一些概念。
AS、IGP和EGP
自治系统(AS)是指在网络中处于同一个控制下的路由器和主机,在同一个AS中,所有节点都运行相同的路由协议,来实现节点之间的互联。
内部网关协议(IGP)是用于在同一个AS中,主机和路由器进行路由信息交换的协议,常用的IGP协议包括:RIP、OSPF等。外部网关协议(EGP)是用于在各个AS之间交换路由信息的协议,常用的EGP协议是BGP。
路由算法
最有代表性的两种路由算法是:距离向量(Distance-Vector)算法和链路状态(Link-State)算法。
距离向量算法(DV)是指根据距离和方向来决定目标网络或目标主机位置的路由算法。所谓距离,也就是数据包在转发途中经过路由器的数量,通常尽量选择距离最短的路径。
链路状态算法(LS)是路由器在了解网络整体连接状态的基础上生成路由表的路由算法。在链路状态算法中,每个路由器必须保持与当前网络连接状态一致的信息才能进行正确的路由选择。
RIP 和 RIPv2协议
RIP(Routing Information Protocol)协议是一种基于距离向量算法的路由协议,广泛用于局域网。在RIP中,距离(Metrics)的单位为“跳数”,也就是所经过的路由器的个数。RIP希望尽可能少地通过路由器,实现将数据包转发到目标IP地址。
RIP中的节点需要定期将自己知道的路由控制信息向全网广播,30秒广播一次。收到其他节点的路由信息以后,就可以更新自己的路由表,并且推算出与目标网络之间的距离。
如果一定时间内无法收到相邻节点的路由控制信息,与该节点的连接就会被断开。由于收不到路由信息可能是由于丢包导致的,因此RIP规定等待5次,如果到了第6次(180秒)仍未收到路由信息,才会真正关闭连接。
RIPv2是在RIP基础上进行改良而来的协议,增加了组播更新、支持变长子网掩码(VLSM)等一些新的特性。
OSPF协议
OSPF(Open Shortest Path First)协议是一种基于链路状态算法的路由协议,即使网络中有环路,也能够进行稳定的路由控制。在OSPF协议中,路由器之间交换链路状态生成网络拓扑信息,然后再根据这个拓扑信息生成路由控制表。
OSPF的路由计算过程:
- Step 1:路由器之间发现并建立邻居关系。
- Step 2:每台路由器产生并向邻居发送(泛洪)链路状态信息,同时收集来自其他路由器链路状态信息,完成LSDB(Link State Database)的同步。
- Step 3:每台路由器基于LSDB通过SPF算法,计算得到一棵以自己为根的SPT(Shortest Path Tree),再以SPT为基础计算去往各目的网络的最优路由,并形成路由表。
OSPF协议给每条链路赋予一个权重,或者说是代价(cost)。一个链路的代价通常是由这个链路对应的输出网卡来决定的,即参考带宽与实际带宽的比值,默认参考带宽为100M。也就是说,网卡的实际带宽越大,链路代价越小。
OSPF协议始终选择一条累积代价最小的路径作为最终路由,也就是说OSPF不仅考虑了“跳数”,而且还考虑了“带宽”,来选择最优的转发路径。。
BGP协议
边界网关协议BGP(Border Gateway Protocol),是连接不同自治系统的路由协议,属于外部网关协议,主要用于ISP之间相互连接的部分。由BGP、RIP和OSPF这三个协议就可以共同实现互联网的路由控制。
BGP 协议是一种路径向量协议,其主要功能是和其他自治系统的边界路由器(BGP发言人)交换网络可达信息,利用这些信息可以构造 AS 互联的拓扑图并由此清除路由环路,同时在 AS 级别上实施路由策略。
MPLS
随着网络技术的发展,互联网的路由设备在转发IP数据包的过程中除了使用路由技术外,还在使用标记交换技术。标记交换技术中最具代表的就是多协议标记交换MPLS(Multi Protocol Label Switching)协议。
MPLS协议中,边缘路由器先对每个IP包都设定一个标记值,然后核心路由器再根据这个标记进行转发。由于MPLS协议使用固定长度的标记信息,使得标记处理更加简单,可以通过高速的硬件实现包转发。
我会持续更新关于物联网、云原生、数字化技术方面的文章,用简单的语言描述复杂的技术,也会偶尔发表一下对IT产业的看法,请大家多多,欢迎留言和转发,希望与大家互动交流,谢谢。