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