网络层路由
当设备有多条路径到达目的地时,它总是选择一条路径,而不是其他路径。此选择过程称为路由。路由由称为路由器的特殊网络设备完成,也可以通过软件流程完成。基于软件的路由器功能有限,范围也有限。
路由器始终配置一些默认路由。如果未找到特定目的地的路由,默认路由会告诉路由器将数据包转发到哪里。如果存在多条路径到达同一目的地,路由器可以根据以下信息做出决策:
跳数
带宽
度量
前缀长度
延迟
路由可以静态配置或动态学习。可以将一条路由配置为优先于其他路由。
单播路由
互联网和内联网上的大部分流量(称为单播数据或单播流量)都是通过指定目的地发送的。在互联网上路由单播数据称为单播路由。这是最简单的路由形式,因为目的地已知。因此,路由器只需查找路由表并将数据包转发到下一跳。
广播路由
默认情况下,任何网络上的路由器都不会路由和转发广播数据包。路由器会创建广播域。但可以将其配置为在某些特殊情况下转发广播。广播消息发往所有网络设备。
广播路由可以通过两种方式(算法)完成:
路由器创建一个数据包,然后将其逐个发送到每个主机。在这种情况下,路由器会创建具有不同目标地址的单个数据包的多个副本。所有数据包都以单播形式发送,但由于它们被发送给所有设备,因此它模拟了路由器正在广播。
此方法消耗大量带宽,并且路由器必须知道每个节点的目标地址。
其次,当路由器收到要广播的数据包时,它只是将这些数据包从所有接口泛洪出去。所有路由器的配置方式相同。
此方法对路由器的 CPU 来说很简单,但可能会导致从对等路由器收到重复数据包的问题。
反向路径转发是一种技术,其中路由器提前知道其前任应该从哪里接收广播。此技术用于检测和丢弃重复项。
多播路由
多播路由是广播路由的特殊情况,具有显著差异和挑战。在广播路由中,数据包会被发送到所有节点,即使它们不需要。但在多播路由中,数据只发送到想要接收数据包的节点。
路由器必须知道有节点希望接收多播数据包(或流),然后它才应该转发。多播路由使用生成树协议来避免循环。
多播路由还使用反向路径转发技术来检测和丢弃重复和循环。
任播路由
任播数据包转发是一种多台主机可以具有相同逻辑地址的机制。当收到发往该逻辑地址的数据包时,它会被发送到路由拓扑中最近的主机。
任播路由是在 DNS 服务器的帮助下完成的。每当收到任播数据包时,都会向 DNS 询问将其发送到何处。DNS 提供的 IP 地址是其上配置的最近 IP。
单播路由协议
有两种路由协议可用于路由单播数据包:
距离矢量路由协议
距离矢量是一种简单的路由协议,它根据源和目标之间的跳数做出路由决策。跳数较少的路由被视为最佳路由。每个路由器都会向其他路由器通告其设置的最佳路由。最终,所有路由器都会根据其对等路由器的通告建立其网络拓扑,
例如路由信息协议 (RIP)。
链路状态路由协议
链路状态协议比距离矢量协议稍微复杂一些。它考虑了网络中所有路由器的链路状态。此技术有助于路由构建整个网络的通用图。然后,所有路由器都会计算其最佳路径以进行路由。例如,开放最短路径优先 (OSPF) 和中间系统到中间系统 (ISIS)。
多播路由协议
单播路由协议使用图,而多播路由协议使用树,即生成树来避免循环。最优树称为最短路径生成树。
DVMRP - 距离向量多播路由协议
MOSPF - 多播开放最短路径优先
CBT - 基于核心的树
PIM - 协议独立多播
协议独立多播现在被广泛使用。它有两种类型:
PIM 密集模式
此模式使用基于源的树。它用于密集环境,例如 LAN。
PIM 稀疏模式
此模式使用共享树。它用于稀疏环境,例如 WAN。
路由算法
路由算法如下:
泛洪
泛洪是最简单的数据包转发方法。当收到数据包时,路由器会将其发送到除接收数据包的接口之外的所有接口。这会给网络带来过多负担,并且大量重复数据包会在网络中徘徊。
可以使用生存时间 (TTL) 来避免数据包无限循环。还有另一种泛洪方法,称为选择性泛洪,以减少网络开销。在这种方法中,路由器不会在所有接口上泛洪,而是选择一些接口。
最短路径
网络中的路由决策大多基于源和目的地之间的成本。跳数在这里起着主要作用。最短路径是一种使用各种算法来决定跳数最少的路径的技术。
常见的最短路径算法有:
Dijkstra 算法
Bellman Ford 算法
Floyd Warshall 算法