IP路由基础

一、概述

在IP网络当中,IP地址唯一标识了网络中的一个节点可能是一个终端可能是一个接口,每个IP地址都拥有自己的网段,各个网段可能分布在网络的不同区域。

如果想要实现不同网段之间的通信就需要路由,路由可以理解为"指导IP数据包转发的路径"。

举个例子:

我们在现实生活当中到了一个陌生的环境,我们想要到达一个指定地点,比如上海去地铁站,我们就需要打开地图导航,跟着导航我们就可以找到不同的地铁站乘坐地铁。

那么路由就类似于网络当中的地图导航,指导我们的数据包去往不同的目的地。

二、路由表

路由设备在对报文进行路由转发时不是凭空进行的,所依据的就是与路由密切相关的两种表-路由表(Routing Table)和FIB(Forwarding Information Base,转发信息库)表。路由器通过路由表选择用于报文转发的路由,然后再通过FIB表中的对应转发表项指导报文的转发。

路由设备会将通过不同协议学习到的所有路由汇集到一张表上,这张表就是路由表,可以理解为路由表就是地图,这张地图当中记录了多条到达不同目的地的路径。

每台路由设备中至少都有一张"路由表",即保存了所有最优路由表项的本地核心路由表(即通常说的IP路由表),还可能有保存对应运行的路由协议的协议路由表,如RIP路由表、BGP路由表等。

1、本地核心路由表

"本地核心路由表"又称IP路由表,是用来保存本地路由器到达网络中各目的地当前各种最优协议路由(依据到达同一目的地的各种协议路由的优先级和度量值来选择),只有到达某一目的地的最优路由才会进入本地核心路由表中,并负责把这些最优路由下发到FIB表当中,生成对应的FIB表项,指导报文的转发。也就是说,尽管某协议路由表中可能有许多路由表项,但实际上在当前可能都是无效的,不能用于指导报文的转发,因为这些路由与到达相同目的地的其他协议路由相比不是最优的。

2、协议路由表

协议路由表中存放着该协议已发现的所有路由信息,但就所有路由表来说,协议路由表中的路由不一定是最优路由,不一定会进入本地核心路由表中,也就是说不一定会最终用来进行指导数据报文。路由协议还可以引入并发布其他协议生成的路由。例如,在路由器上运行OSPF,需要使用OSPF通告直连路由、静态路由或者IS-IS路由时,则要先将这些路由引入到OSPF的路由表中。

在路由器中执行display ip routeing-table命令时可查看路由器的IP路由表信息(均为有效的最优路由,非有效、非最优路由不会再IP路由表中显示)

路由表中主要包含以下信息

  • Destination:表示此路由的目的地址,用来标识IP数据包要转发的最终目的地址或目的网络。
  • Mask:表示目的地址的子网掩码长度,与目的地址一起来标识目的主机或目的网络所在的网段地址。
  • Proto:表示学习此路由的路由协议,包括静态路由(Static)、直连路由(Direct)和各种动态路由等。
  • Pre:即Preference,表示此路由的路由协议优先级。这是用来比较不同协议类型、相同目的地址的多条路由的优先级。同一目的地可能存在不同的下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级高(数值小)者将称为当前的最优路由,才会再IP路由表中显示。
  • Cost:路由开销,这是用来比较同一种协议类型、相同目的地址的多条路由的优先级。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将称为当前的最优路由,才会在IP路由表中显示。但不同类型路由的开销类型不同,如距离矢量类型采用的是"距离",即将"跳数"作为路由开销,而链路状态类型协议采用的是"链路状态"(由链路带宽、网络传输性能等参数共同决定)作为路由开销,所以不能直接依据不同协议类型路由的开销值来比较不同路由的优先级。
  • Flags:显示路由标记,即路由表头的Route Flags。其中R为relay(中级)的意思,表明该路由是迭代路由,需要根据路由的下一跳IP地址获取出接口。配置静态路由时,如果只指定下一跳IP地址,而不指定出接口,那么就是迭代路由,需要根据下一跳IP地址的路由获取出接口。D是download to fib的意思,表示该路由表项已成功下发到FIB表中了。
  • NextHop:表示此路由的下一跳IP地址。指明数据转发路径中的下一个三层设备。
  • Interface:表示此路由从本地设备发出的出接口。

这些信息标识了目的网段、明确了转发IP报文的路径

三、FIB表

1、FIB的形成

路由表是控制平面的表项,而FIB表是转发平面的表项,最终指导数据包转发的表是FIB表,那么FIB表是怎么形成的呢?

在IP路由表中的路由表项将下发到FIB表中,以生成对应的FIB表项(所以FIB表中的表项是与IP路由表中的表项有一一对应的关系)。当对应的目的地址的报文到达路由器时,会通过查找FIB表中的对应表项进行转发,如果在FIB表中找不到对应的转发表项,则不能转发。FIB表中每条表项都指明到达某网段或某主机的报文应通过路由器的哪个物理接口或逻辑接口发送,这样就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。

当然如果存在多条同一目的地的路由的协议优先级与路由度量值(COST)都相同的话(均为最优路由)时,这些路由之间可以实现负载分担,反之,这些路由之间可以构成路由备份(优先级最后,或者度量值最小的路由为主路由,其他都为备份路由),以提高网络的可靠性。

2、FIB的组成

可用display fib命令查看FIB表信息

从中可以看出,在FIB表中包括Destination、Mask、Nexthop、Flag、TimeStamp、Interface和TunnelID字段,其中Destination、Mask、Nexthop、Interface字段与IP路由表中的对应字段一样,没有IP路由表中的Proto、Pre、Cost和Flags这4个字段,因为在进行报文转发时只需要获知转发路径,至于路由中的这4个字段的取值对报文转发没有直接意义。

FIB表中的其他3个字段说明如下:

1、Flag:转发表项的标志,这与IP路由表中的Flags字段是不一样的。在FIB表中,FIB表项中的Flag可能是G、H、U、S、D、B、L中一个或多字母的组合。

  • G(Gateway网关路由):表示下一跳是网关。
  • H(Host主机路由):表示该路由为主机路由。
  • U(Up可用路由):表示该路由状态是Up。
  • S(Static静态路由):表示该路由为手动配置路由。
  • D(Dynamic动态路由):表示该路由为根据路由算法自动生成的路由。
  • B(Black Hole黑洞路由):表示下一跳是空接口。
  • L(Vlink Route):表示Vlink类型路由。

2、TimeStamp:转发表项的时间戳,表示该表项已存在的时间,单位是s。

3、TunnelID:表示转发表项索引。该值不为0时,表示匹配该项的报文通过对应的隧道进行转发,即采用MPLS转发。该值为0时,表示报文不通过隧道抓饭,即采用普通的IP转发。

3、FIB表的最长掩码匹配原则

因为在IPv4封装中,IPv4报头只封装了源IP地址和目的IP地址,没有封装对应的子 网掩码,所以这时如果在FIB表中有多条同时到达同一目的地,但处于相同自然网段的子 网转发项时,就涉及最终选择哪条转发表的问题了。这就是FIB表中的"最长掩码"匹配原 则,也即最精细路由匹配原则。具体方法是,在查找FIB表时,先将报文的目的地址与 FIB中各表项的掩码按位进行"逻辑与"运算,得到与之匹配的目的网络地址(可能有多 个),然后在这些对应的FIB表项中选择一个最长掩码的FIB表项进行报文转发。

例如,假设路由器上当前的FIB表如前所示,一个目的地址是10.9.1.2的报文进入路由 器,查找对应的FIB表。首先,目的地址10.9.1.2与FIB表中各表项的掩码"0、16、24"进 行"逻辑与"运算,得到下面的网段地址:0.0.0.0/0、10.9.0.0/16、10.9.1.0/24。这3个结果可 以匹配到FIB表中对应的3个表项。最终,路由器会选择最长匹配10.9.1.0/24表项,从接口 GE2/0/0转发这条目的地址是10.9.1.2的报文。

四、路由的分类

因为路由协议的种类比较多,开发的目的及特点又各不相同,所以路由的分类标准也有多种。

1、根据路由目的地类型的不同,路由可划分为以下两类

  • 网段路由:路由目的地为一个网段,IPv4地址子网掩码长度为32位,或IPv6地址前缀长度小于128位。
  • 主机路由:路由目的地为一台主机或一个接口,IPv4地址子网掩码长度为32位,或IPv6地址前缀长度为128位。

2、根据目的地与该路由器是否直接相连,路由又可划分为以下两类

  • 直连路由:路由目的地所在网络与本地路由器设备直接相连,不需要配置,只需要链路状态为Up,则一直存在。直连路由不会传播,也仅可用于本地设备指导报文进行单跳转发,但可以引入到其他协议路由表中,在网络中进行传播。
  • 间接路由:路由目的地所在网络与本地路由器不是直接相连。

3、根据目的地址类型的不同,路由还可以分为以下两类

  • 单播路由:表示将报文转发的目的地址是一个单播IPv4或IPv6地址
  • 组播路由:表示将报文转发的目的地址是一个组播IPv4或IPv6地址

4、根据生成的方式,路由还可以分为以下两类

  • 静态路由:通过网络管理员手动配置生成的路由

  • AR1
    ip ip route-static 192.168.2.0 24 192.168.1.2

  • 静态路由配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预,当然我们也可以将静态路由与一些协议进行绑定实现静态路由也可以感知到网络拓扑的变化,不过这种感知是有限的大大不如动态路由。

  • 动态路由:通过动态路由协议自动发现并生成的路由,可生成动态路由的协议又包括RIP、OSPF、IS-IS、BGP等多种。

  • 动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络。缺点是对系统的要求高于静态路由,配置比较复杂,并将占用一定的网络资源和系统资源。这里的配置复杂是相较于较小的网络,如果是较大的网络环境动态路由协议的配置是大大小于静态路由的。

5、根据作用范围的不同,以上动态路由协议又可分为以下两类。

  • IGP(Interior Gateway Protocol,内部网关协议):在一个AS自治系统内运行的路由协议。常见的IGP协议包括RIP、OSPF和IS-IS。
  • EGP(Exterior Gateway Protocol,外部网关协议):运行于不同AS自治系统之间。目前常见的EGP就是BGP。

6、根据使用的路由算法不同,以上这些动态路由协议又可分为以下两类。

  • 距离矢量协议(Distance-Vector Protocol):包括RIP和BGP。其中,RIP的距离度量是路径中所经过的跳(Hop)数,BGP也被称为路径矢量协议(Path-Vector Protocol),其度量为路径中所经过的AS数。
  • 链路状态状态(Link-State Protocol):包括OSPF和IS-IS

以上两种算法的主要区别在于发现路由和计算路由的机制不同,具体在OSPF,BGP等不同文章中均有介绍。

五、路由协议的优先级

对于相同的目的地,不同的路由协议(包括静态路由)可能会发现不同的路由,但这 些路由并不都是最优的。事实上,在某一时刻,到某一目的地的当前路由仅能由唯一的 路由协议来决定。为了判断最优路由,各路由协议都被赋予了一个优先级,当存在多个 路由信息源时,具有较高优先级(取值较小)的路由协议发现的路由将成为最优路由, 并将最优路由放入IP路由表中。

路由协议的优先级又分"外部优先级"和"内部优先级"两种。选择路由时先比较路由的 外部优先级,当不同的路由协议配置了相同的外部优先级时,系统才会通过内部优先级 决定哪个路由协议发现的路由(内部优先级最高的)将成为最优路由。

外部优先级是指用户可以手动为各路由协议配置的优先级,我们通常所说的路由协议 优先级就是指外部优先级。缺省情况下各路由协议的外部优先级见表,数值越小,优 先级越高。其中,0表示直接连接的路由,优先级最高,255表示任何来自不可信源端的路 由,静态路由的优先级比OSPF、IS-IS中的路由优先级要低(这点与Cisco中的不一样)。 除直连路由(DIRECT)外,各种路由协议的优先级都可由用户手动进行配置,每条静态路由的优先级都可以不同。

注意:直连路由的外部优先级最高,且不可修改,而其他协议路由的外部优 先级虽然可改,但优先级的最低值也只能为1,不能配置为直连路由的优先级值0,所以 如果某网段是直接连接在本地路由上,则在其IP路由表中不可能出现该网段的其他类型 路由表项,仅会存在该网段的直连路由表项,但在其他协议路由表中可能存在该网段的 对应协议路由表项。 选择路由时先比较路由的外部优先级,当不同的路由协议配置了相同的外部优先级 值后(如可以把静态路由和OSPF路由的外部优先级值均设为10),系统会通过内部优先 级决定哪个路由协议发现的路由将成为最优路由。路由协议的内部优先级则不能被用户 手动修改,各路由协议的内部优先级见表

例如,现有到达同一目的地10.1.1.0/24的两条路由可供选择,一条是静态路由,另一 条是OSPF路由,且这两条路由的外部优先级值都被配置成5。根据前面介绍的路由选择规 则,这时路由器系统将会根据内部优先级进行判断。因为OSPF的内部优先级是10,高于 静态路由的内部优先级60,所以系统选择OSPF发现的这条路由作为最终的优先路由,进 行报文转发,尽管到达同一目的的静态路由与这条OSPF路由具有相同的外部优先级。

六、路由的度量值

路由的度量标示出了这条路由到达指定的目的地址的代价,但不同协议路由的代价标 识方法不一样,通常受以下因素的影响。

1、路径长度

路径长度是最常见的影响路由度量的因素,但不同类型路由协议标识路径长度的方法 也不一样。链路状态路由协议可以为每一条链路设置一个链路开销来标示此链路的路径长 度,此时路径长度就是指路由路径中经过的所有链路的链路开销的总和,链路开销总和越 小越优先。

距离矢量路由协议(如RIP)使用跳数来标示路径长度。跳数是指数据从源端到目的 端所经过的三层设备数量,跳数越少越优先。例如,路由器到与它直接相连网络的跳数为 0,通过一台路由器可达的网络的跳数为1,其余以此类推。

BGP路由也是距离矢量协议,它的度量是AS,即路由路径中所经过的AS数,经过的 AS越少优先级越高。

2、网络带宽

网络带宽是指一条链路的最大传输能力,与传输速率是不同的概念,传输速率是即时 的,是要小于等于带宽的。理论上讲,网络带宽越高,传输能力也越强。例如,一个10 Gbit/s的链路要比1 Gbit/s的链路更优越,传输能力更强。虽然带宽是指一个链路能达到的 最大传输速率,但这不能说明在高带宽链路上的路由就一定要比低带宽链路上的更优越, 因为此时还要考虑到链路的拥塞程度。比如说,一个高带宽的链路正处于拥塞的状态下, 那报文在这条链路上转发时将会花费更多的时间。

3、负载

负载是一个网络资源的使用程度。计算负载的方法包括CPU的利用率和它每秒处理数 据包的数量。持续监测这些参数可以及时了解网络的使用情况。

4、通信开销

通信开销衡量了一条链路的运营成本。尤其是只注重运营成本而不在乎网络性能的时 候,通信开销就成了一个重要的指标。

七、负载分担与路由备份

当多条到达同一目的地的路由协议和路由度量都相同时,这几条路由就称之为等价路 由,多条等价路由就可以实现负载分担。而当几条到达同一目的地的路由为非等价路由 时,就只能实现路由备份。

注意:因为路由协议优先级有内、外之分,且当到达同一目的地的多个路由 具有相同的外部优先级时,还需要比较它们的内部优先级,而不同协议的内部优先级是不 可能相同的,也不可能更改,所以要最终成为等价路由,只能是到达相同目的地,且由相 同路由发现的路由,不可能是不同协议路由。

1、负载分担

路由器支持多路由模式,即允许配置多条目的地相同,且优先级也相同的路由。当 到达同一目的地存在同一路由协议发现的多条路由时,且这几条路由的开销值也相同, 那么就满足负载分担的条件。当实现负载分担时,路由器根据报文中的五元组(源IP地 址、目的IP地址、源端口、目的端口、协议)进行报文转发。当五元组相同时,路由器 总是选择与上一次相同的下一跳IP地址进行报文转发;而当五元组不同时,路由器会选 取相对空闲的路径进行转发。

如图所示,RouterA已经通过接口GE1/0/0转发到目的地址10.1.1.0/24的第1个报文 P1,随后又需要分别转发报文到目的地址10.1.1.0/24和10.2.1.0/24。其转发过程如下。

  • 当转发到达10.1.1.0/24的第两个报文P2时,发现此报文与到达10.1.1.0/24的第1个报 文P1的五元组一致,所以之后到达该目的地的报文都从GE1/0/0转发。
  • 当转发到达10.2.1.0/24的第1个报文P1时,发现此报文与到达10.1.1.0/24的第1个报 文P1的五元组不一致,所以选取从GE2/0/0转发,并且之后到达该目的地的报文都从 GE2/0/0转发。

2、路由备份

为了提高网络的可靠性,用户可以根据实际情况,配置到同一目的地的多条路由,其中一条路由的优先级最高,作为主路由,其余的作为备份路由。正常情况下,路由器采用 主路由转发数据。当主链路出现故障时,主路由变为非激活状态,路由器选择备份路由中 优先级最高的路由转发数据,这样就实现了主路由到备份路由的切换。而当主链路恢复正 常时,由于主路由的优先级最高,路由器重新选择主路由来发送数据,这样就实现了从备 份路由回切到主路由。

实现路由备份的多条路由可以是相同,或者不同路由协议发现的,但必须是到达相同 的目的地,这些路由间至少存在路由协议或者路由度量上的不同。

八、路由的收敛与路由迭代

不管是何种路由,都存在收敛性能的问题,即当网络拓扑发生变化时,依靠路由协议 自身重新计算网络拓扑的能力,这就是路由收敛能力。另外,针对不同业务的路由,收敛 的先后次序还可以区分对待,这就是路由收敛优先级。路由迭代是指路由的下一跳不是与 本地设备直接连接的,这时就要通过其他路由(不包括直连路由)来到达下一跳,否则该 路由就是无效的。

1、路由收敛

路由收敛是指网络拓扑变化引起的通过重新计算路由而发生替代路由的行为。随着网 络的融合,区分服务的需求越来越强烈。某些路由可能指导关键业务(如VoIP、视频会 议、组播等)转发,而这些关键的业务路由需要尽快收敛,而非关键路由可以相对慢一点 收敛。因此,系统需要对不同路由按不同的收敛优先级处理,来提高网络的可靠性。

按优先级收敛是指系统为路由设置不同的收敛优先级,从高到低分为critical(临 界)、high(高)、medium(中)、low(低)4种。系统根据这些路由的收敛优先级采 用相对的优先收敛原则,即按照一定的调度比例进行路由收敛,指导业务的转发。

缺省情况下,公网路由收敛优先级见表。对于私网路由,除了OSPF和IS-IS的32位 主机路由标识为medium外,其余路由统一标识为low。

如图所示,网络上运行OSPF和IS-IS协议,组播接收者在RouterA端,组播源服务 器10.10.10.10/32在RouterB端【有关IP组播请参见配套图书《华为交换机学习指南》(第 二版)】,要求到组播服务器的路由优先于其他路由(例如12.10.10.0/24)收敛。这时可 以配置路由10.10.10.10/32的收敛优先级高于路由12.10.10.0/24的收敛优先级,这样当网络 路由重新收敛时,就能确保到组播源的路由10.10.10.10/32优先收敛,保证组播业务的转 发。

至于路由的收敛能力,静态路由收敛能力最差,因为静态路由表项不能自动生成,也 不能自动传播,必须由管理员手动配置,只能根据当前的静态路由配置来进行拓扑收敛。 而各种动态路由协议的收敛能力也各不相同,还与特定的网络拓扑结构有关,具体将在本 书后面的对应章节中体现。

2、路由迭代

每条路由都必须有直连的下一跳才能够指导转发,但是在路由生成时,下一跳可能不 是直连的,此时就需要计算出一个直连的下一跳和本地对应的出接口,这个过程就叫作路 由迭代。BGP路由、静态路由和UNR路由的下一跳都有可能不是直连的,都需要进行路 由迭代。

例如,BGP路由的下一跳一般是非直连的对端loopback地址,不能指导转发,需要进 行迭代。即以BGP学习到的下一跳为目的IP地址在IP路由表中查找,当找到一条具有直连 的下一跳、出接口信息的路由后(一般为一条IGP路由),将其下一跳、出接口信息填入 这条BGP路由的IP路由表中并生成对应的FIB表项。

对于BGP私网路由,需要隧道进行转发,路由的下一跳一般是远端PE的Loopback地 址,也不能指导转发,此时也需要进行路由迭代,即在隧道列表中查找到达该Loopback地 址的隧道,将该隧道信息填入路由表中并生成对应的FIB表项。

以上就是本章的全部内容了,感谢大家的浏览观看!文章若有错误或疑问可联系博主删除更改

相关推荐
国际云,接待32 分钟前
从CentOS迁移到TencentOS:9%成功率的一键替换实操
服务器·网络·人工智能·腾讯云
西岭千秋雪_1 小时前
计算机网络学习笔记:TCP流控、拥塞控制
网络·笔记·学习·tcp/ip·计算机网络
XiaoCCCcCCccCcccC1 小时前
网络层协议 IP 协议介绍 -- IP 协议,网段划分,私有 IP 和 公网 IP,路由
服务器·网络·tcp/ip
Mrdaliang5 小时前
【无标题】
linux·运维·服务器·网络
Code季风5 小时前
跨语言RPC:使用Java客户端调用Go服务端的JSON-RPC服务
java·网络协议·rpc·golang·json
物联网嵌入式小冉学长6 小时前
12.UDP客户端
网络·单片机·网络协议·udp·嵌入式
LPH31196 小时前
DHCP服务器脚本
linux·运维·网络
盒子69107 小时前
网络NAT是什么
网络·智能路由器
芊言芊语8 小时前
汽车 ODX开发工具分析
网络