网络路由基础概述

  • 概要
  • 路由的分类
    • 静态路由(Static Routing)
    • 动态路由(Dynamic Routing)
  • 路由算法
    • 非自适应路由算法(Nonadaptive Algorithm)
      • 静态路由(Static Routing)
      • 扩散法(Flooding)
      • 随机走动法(Random Walk)
      • 最短路径法(Shortest Path)
      • 基于流量路由法(Flow-based Routing)
    • 自适应路由算法(Adaptive Algorithm)
      • 距离矢量(DV, Distance Vector)路由法
      • 链路状态(LS, Link State)路由法
      • 分级路由(Hierarchical Routing)法
  • 路由表(Routing Table)
  • 路由优先级

概要

网络层最主要的功能就是将分组从源交付到目的节点中,且大多数网络中都是使用数据报分组交换的形式的,数据报需要经过多个节点(也叫“跳”“Hop”)才能达到目的地。

路由实际上就是选择路径的行为,它也是网络层的基本功能。和现实生活一样,路由选择也是综合考虑许多因素的。

路由的分类

路由功能的实现是依靠路由器或三层交换机中的路由表进行的,其又分为两类,下面简单介绍一下。

静态路由(Static Routing)

静态路由在小型局域网中是很常用的,它的配置和管理都相对简单,总的来说,它具有如下特点:

  1. 手动配置

    静态路由需要管理员一条条手动配置,路由器无法自动生成静态路由。在静态路由中包括目的节点或目的网络的IP地址,及数据包从当前路由器开始路由的第一跳节点(通常是网关)对应的接口或IP地址。

  2. 路由路径固定

    因为静态路由是手动配置的原因,所以当网络拓扑结构发生变化时,这些静态路由就无法适应了,必须由管理员手动修改。

  3. 不可通告性

    静态路由信息在默认情况下是私有信息,是不会通告给其他路由器的。但管理员可以通过将其设置为其他动态路由信息,那么网络中的路由器就可以获得该静态路由信息了。

  4. 单向性

    静态路由是单向性的,也就是它仅为下一跳目的地路由,不提供反向路由。也就是说,如果要与目的节点进行双向通信,就必须配置回程路由。

  5. 接力性

    如果静态路由中间的跳数大于1,则必须在除最后一个路由器外的其他路由器上依次设置到达目的节点的静态路由,这是由于它的不可通告性导致的。

  6. 优先级较高

    静态路由具有除直连路由以外的最高优先,也就是说,静态路由会首先被路由器选取使用。

    这里有个小问题,就是默认路由的问题,如果静态路由的目的地址和默认路由相同,那么默认路由将不会被使用。实际应用中要注意。

  7. 仅适用小型网络

    因为手动配置的原因,决定了它无法用于大型网络,否则其维护工作实在过于困难难。

动态路由(Dynamic Routing)

动态路由相对静态路由来说,它的优点就在于它通过动态路由协议来生成路由表信息。总的来说,它有如下特点:

  1. 自动生成

    动态路由利用特定的协议来和连接的网络通信,自动生成网络间的路由表项,这也是相对静态路由来说最明显的不同,所以它适用于大型网络。

  2. 自动调整

    当网络结构发生变化,动态路由可以随着拓扑变化而调整,同时还会自动删除无效的表项。

  3. 自动通告

    动态路由的自动生成和调整依赖的就是自动通告特性,也就是说,相邻的动态路由之间会互相通告路由表,以反映拓扑结构的变化和获知自己原本不具备的路由表项,也就是借此生成动态路由表项。

  4. 自动生成双向路由

    虽然单条动态路由也是单向的,但是在生成路径的时候回程的表项也会被自动生成。

  5. 仅生成网络间路由表

    动态路由仅生成网络/子网间的路由表,并不生成具体到节点或主机的表项,如果需要一条明确到主机的路由,则需要配置静态路由表。

  6. 不同动态路由不兼容

    动态路由有多种算法可采取,不同协议间是无法兼容的,但有互相重发布机制。


路由算法

路由算法(Routing Algorithm)是在给定一组路由器及链路的情况下,找出一条从源节点到目标节点的最佳路径。这也是路由功能的关键,为了实施这项功能,路由器需要收集和保存各种相关信息,如拓扑结构、端口、速率等等,藉以上数据生成一个个路由表(Routing Table)项,以供路由使用。

总的来看,路由算法和路由分类一样也分为两大类,下面详细看看它们有什么。

非自适应路由算法(Nonadaptive Algorithm)

非自适应算法即那些无法根据网络流量和拓扑的变化而及时更新的路由表。

静态路由(Static Routing)

严格来说,静态路由不算一种算法,它是由管理员手动创建的路由表项,自然无法适应网络变化,因此将其归类到此。

手动创建的特点决定了它只适用于规模较小,结构不易变化的网络中使用。

扩散法(Flooding)

当路由器收到报文后,即向其所有端口都发送一份,即扩散。因为有多条可能的路,所以即使网络局部故障也不影响通信。但可见的是,这么做将会使的网络上充斥则不必要的副本,大量浪费网络带宽,加重网络负担。

因为上述特点,这种路由算法只适宜于规模很小,通信负载轻,但要求极高的可靠性场合中使用,如军用通信。

随机走动法(Random Walk)

当路由器收到报文后,随机选择一个端口(节点)转发出去。但可见的是,这样有可能导致分组在网络中随机流窜,虽然大概率上最终还是会正确的到达目的节点,其实施也很简单,但还是严重降低了通信效率,其传输延迟也无法预测,不具备实用价值。

最短路径法(Shortest Path)

通过Dijkstra算法找出本路由到其他节点的最短路径,以此生成路由表并路由数据报。如果每个结点都具备这样的一张表,则网络通信都会在最短路径中进行(注意,在复杂的网络中最短并不意味着最佳)。这种方式的灵活性较差,有时候最短路径堵塞了,也无法选择其他通路路由。

基于流量路由法(Flow-based Routing)

该方式就是上述最短路径的优化,它还基于流量情况来选择路由。使用这个算法需要了解当前网络拓扑结构、节点流量、线路带宽,在这些信息的基础上选择再编写适当的选择算法。一般来说这种算法会使整个网络流量更平衡,平均性能更佳。

自适应路由算法(Adaptive Algorithm)

自适应的特点在于算法本身可以及时反应拓扑结构和流量的变化。它的特点是开销大、健壮、灵活。前面提到的动态路由即自适应路由。

它的实施重点是路由器要获取网络结构信息,因此路由间需要能互相交互,它们之间的交互是通过路由协议来实现的。

动态路由算法又可以分为整体式路由算法分散式路由算法前者是指的是网络中每个路由器都具有其他路由器的所有信息及流量状态,后者指的是每个路由器都只具有相邻路由器的路由信息

距离矢量(DV, Distance Vector)路由法

这是分散式路由算法,其矢量,对应的是路由表项中源和目的站的距离(也叫跳数\Hop度量\Metric),每经过一个路由器或三层交换机,距离就加1。

要注意的,这个距离指的是经过的路由器,并不包含自身。也就是说,连接在同一路由器的网络之间是认为没有距离的。

采用该算法的典型路由协议就是路由信息协议(RIP, Routing Information Protocol)

这是整体式路由算法,它不仅根据距离长度,还按照链路状态来计算最佳路径。它参考的因素有:IP地址、子网掩码、网络类型、端口开销、相邻路由等。端口开销又与接入带宽有关。

总体而言,链路状态路由协议是层次式的,路由器并不向相邻路由器传递路由表,而只通告链路状态。这一类的路由协议会将路由器按区域划分,收集同区域内所有路由器的链路状态信息,然后根据这些信息生成拓扑结构,最后每一个路由器都根据拓扑结构来计算路由路径。

它的典型算法是最短路径优先(OSPF, Open Shortest Path First)

分级路由(Hierarchical Routing)法

前面两种方法,都会随着网络规模的扩大,使路由表规模也相应扩大,最终必然会导致路由器效率下降。该算法就是为了解决这个问题。

顾名思义,该算法将路由器按组和区域划分,每个路由器只负责自己区域的路由信息。在这种情况下,非本区域通信只需要保存一条到其他区域的记录即可。

它的典型算法有OSPF、IS-IS、BGP等,值得注意的是,这里指的是在整个网络而言。并非区域内部。


路由表(Routing Table)

路由表是路由工作的基础,它就是一张存储着从A到B怎么走的表。有时候还会因算法不同存储一些额外信息。

不论是哪种路由类型,都是将其收集生成的信息存储于路由表中。

不同的路由器它们的路由表可能并不完全相同,但总的来说至少会包括以下信息:

  1. 网络ID
  2. 子网掩码
  3. 下一跳地址/端口

如在思科的路由器中,它的Codes有如下定义:C-直连路由、S-静态路由、I-IGRP路由、B-BGP路由、O-OSPF路由、R-RIP路由、S*-默认路由。

路由优先级

不同的路由协议采用的算法不一,如果路由器中同时配置了不同类型但地址相同的路由表项时,则需要一个指标来确定该采用哪个。

思科定义了一个指标叫做管理距离(AD, Administrative Distance)来指示路由器优先级。

管理距离是一个0~255的整数,数值越低,优先级越高。这样我们就可以衡量不同协议来填写该指标来使的路由获得更好的效率了。

注意,不同厂商对路由器优先级的定义并不完全一致,但是这些值都是可以被管理员手动修改的。

你可能感兴趣的:(计算机网络)