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