有时候,网络故障,网络不通,有部分原因是路由信息不正确导致的。为了排查路由信息的错误导致网络不通,我们就需要学会查看路由表上的信息。在华为交换机,linux服务器和windows服务器上,路由表的查看和显示不是相同的

路由基本概念

路由就是报文从源端到目的端的路径。当报文从路由器到目的网段有多条路由可达时,路由器可以根据路由表中最佳路由进行转发。最佳路由的选取与发现此路由的路由协议的优先级、路由的度量有关。当多条路由的协议优先级与路由度量都相同时,可以实现负载分担,缓解网络压力;当多条路由的协议优先级与路由度量不同时,可以构成路由备份,提高网络的可靠性

路由协议的优先级

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

路由的度量

路由的度量标示出了这条路由到达指定的目的地址的代价,通常以下因素会影响到路由的度量。

路径长度

路径长度是最常见的影响路由度量的因素。链路状态路由协议可以为每一条链路设置一个链路开销来标示此链路的路径长度。在这种情况下,路径长度是指经过的所有链路的链路开销的总和。距离矢量路由协议使用跳数来标示路径长度。跳数是指数据从源端到目的端所经过的设备数量。例如,路由器到与它直接相连网络的跳数为0,通过一台路由器可达的网络的跳数为1,其余以此类推。

网络带宽

网络带宽是一个链路实际的传输能力。例如,一个10千兆的链路要比1千兆的链路更优越。虽然带宽是指一个链路能达到的最大传输速率,但这不能说明在高带宽链路上路由要比低带宽链路上更优越。比如说,一个高带宽的链路正处于拥塞的状态下,那报文在这条链路上转发时将会花费更多的时间。

负载

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

通信开销

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

直接路由

直接路由是指路由器各网络接口所直连的网络之间进行通信所使用的路由。直接路由是在配置完路由器网络接口的IP地址后自动生成的,因此,如果没有对这些接口进行特殊的限制,这些接口所直连的网络之间就可以直接通信。

缺省路由

缺省路由是另外一种特殊的路由。简单来说,缺省路由是没有在路由表中找到匹配的路由表项时才使用的路由。如果报文的目的地址不能与路由表的任何目的地址相匹配,那么该报文将选取缺省路由进行转发。如果没有缺省路由且报文的目的地址不在路由表中,那么该报文将被丢弃,并向源端返回一个ICMP(Internet Control Message Protocol)报文,报告该目的地址或网络不可达。

在路由表中,缺省路由以到网络0.0.0.0(掩码也为0.0.0.0)的路由形式出现。可通过命令display ip routing-table查看当前是否设置了缺省路由。通常情况下,管理员可以通过手工方式配置缺省静态路由;但有些时候,也可以使动态路由协议生成缺省路由,如OSPF和IS-IS。

静态路由

路由器根据路由转发数据包,路由可通过手动配置和使用动态路由算法计算产生,其中手动配置产生的路由就是静态路由。

静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。静态路由有5个主要的参数:目的地址和掩码、出接口和下一跳、优先级。

目的地址和掩码
IPv4的目的地址为点分十进制格式,掩码可以用点分十进制表示,也可用掩码长度(即掩码中连续‘1’的位数)表示。IPv6的目的地址和掩码请参见《特性描述-IP业务》中的“IPv6-原理描述-IPv6地址”。当目的地址和掩码都为零时,表示静态缺省路由。静态缺省路由具体应用参见“静态缺省路由的应用”。

出接口和下一跳地址
根据不同的出接口类型,在配置静态路由时,可指定出接口,也可指定下一跳地址,还可以同时指定出接口和下一跳地址。

对于点到点类型的接口,只需指定出接口。因为指定发送接口即隐含指定了下一跳地址,这时认为与该接口相连的对端接口地址就是路由的下一跳地址。如10GE封装PPP(Point-to-Point Protocol)协议,通过PPP协商获取对端的IP地址,这时可以不指定下一跳地址。

对于NBMA(Non Broadcast Multiple Access)类型的接口(如ATM接口),只需配置下一跳。因为除了配置IP路由外,还需在链路层建立IP地址到链路层地址的映射。

对于广播类型的接口(如以太网接口)和VT(Virtual-template)接口,必须指定通过该接口发送时对应的下一跳地址。因为以太网接口是广播类型的接口,而VT接口下可以关联多个虚拟访问接口(Virtual Access Interface),这都会导致出现多个下一跳,无法唯一确定下一跳。

静态路由优先级
对于不同的静态路由,可以为它们配置不同的优先级,优先级数字越小优先级越高。配置到达相同目的地的多条静态路由,如果指定相同优先级,则可实现负载分担;如果指定不同优先级,则可实现路由备份。具体应用参见“负载分担与路由备份”。

交换机上查看路由表

查看routing-table

在华为交换机上使用display ip routing-table ,查看路由表
交换机,linux主机及windwos主机上路由表查看

Route Flags

路由标记:

  • R:表示该路由是迭代路由
  • D:表示该路由下发到FIB表

Routing Tables:Public

表示此路由表是公网路由表,如果是私网路由表,则显示私网的名称,如Routing Tables: ABC

Destinations

显示目的网络/主机的总数

Routes

显示路由的总数

Destination/Mask

显示目的网络/主机的地址和掩码长度

Proto

  • 显示学习此路由的路由协议:
  • Direct:表示直连路由。
  • Static:表示静态路由。
  • EBGP:表示EBGP路由。
  • IBGP:表示IBGP路由。
  • ISIS:表示IS-IS路由。
  • OSPF:表示OSPF路由。
  • RIP:表示RIP路由。
  • UNR:表示用户网络路由(User Network Routes)。

Pre

显示此路由的优先级

Cost

显示此路由的路由开销值

Flags

显示路由标记,即路由表头的Route Flags

NextHop

显示此路由的下一跳地址

Interface

显示此路由下一跳可达的出接口

查看routing-table verbose

使用display routing-table verbose,查看详细路由表
交换机,linux主机及windwos主机上路由表查看
Route Flags

路由标记:

  • R:表示该路由是迭代路由
  • D:表示该路由下发到FIB表

Destinations

显示目的网络/主机的总数

Routes

显示激活路由和非激活路由的总数

Destination

显示此路由的目的网络/主机的地址和掩码长度

Protocol

显示此路由的路由协议

Process ID

显示此路由的路由协议的进程号

Preference

显示此路由的优先级

Cost

显示此路由的路由开销值

NextHop

显示此路由的下一跳地址

Neighbour

显示此路由的邻居的地址

State

显示路由的状态:

  • Active:表示此路由为激活路由
  • Invalid:表示此路由为无效路由
  • Inactive:表示此路由为非激活路由
  • NoAdv:表示此路由为不允许发布的路由
  • Adv:表示此路由为可以发布的路由
  • Del:表示此路由为即将被删除的路由
  • Relied:表示此路由为迭代到下一跳及出接口的路由,或者迭代到隧道的路由
  • Stale:表示此路由为带Stale标记的路由,在GR中使用
  • Age

显示路由的存活时间

Tag

显示路由管理标识。整数形式,取值范围是0~4294967295

Priority

显示路由的收敛优先级:

low:表示低路由收敛优先级

medium:表示中等路由收敛优先级

high:表示高路由收敛优先级

critical:表示紧要路由收敛优先级

Label

显示MPLS分配的标签

QoSInfo

显示QoS信息,其中0x0表示QoS信息为空

IndirectID

显示下一跳分离关键字

RelayNextHop

显示迭代下一跳地址

Interface

显示出接口

Tunnel ID

显示隧道ID

Flags

显示路由标记,即路由表头的Route Flags

linux上查看路由表

在linux主机上,使用route -n 查看当前路由表
交换机,linux主机及windwos主机上路由表查看

route 命令的输出项说明

输出项 说明
Destination 目标网段或者主机
Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码
Flags 标记。一些可能的标记如下:
U — 路由是活动的
H — 目标是一个主机
G — 路由指向网关
R — 恢复动态路由产生的表项
D — 由路由的后台程序动态地安装
M — 由路由的后台程序修改
! — 拒绝路由
Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
Ref 路由项引用次数(linux 内核中没有使用)
Use 此路由项被路由软件查找的次数
Iface 该路由表项对应的输出接口

windows上查看路由表

在cmd中,输入route print -4查看ipv4路由表
交换机,linux主机及windwos主机上路由表查看
路由表信息解释
名词解释:
Active Routes:活动的路由
Network destination :目的网段
Netmask:子网掩码
Gateway:网关,又称下一跳路由器。在发送IP数据包时,网关定义了针对特定的网络目的地址,数据包发送到的下一跳服务器。如果是本地计算机直接连接到的网络,网关通常是本地计算机对应的网络接口,但是此时接口必须和网关一致;如果是远程网络或默认路由,网关通常是本地计算机所连接到的网络上的某个服务器或路由器。
Interface:接口,接口定义了针对特定的网络目的地址,本地计算机用于发送数据包的网络接口。网关必须位于和接口相同的子网(默认网关除外),否则造成在使用此路由项时需调用其他路由项,从而可能会导致路由死锁。
Metric:跳数,跳数用于指出路由的成本,通常情况下代表到达目标地址所需要经过的跳跃数量,一个跳数代表经过一个路由器。跳数越低,代表路由成本越低,优先级越高。
Persistent Routes:手动配置的静态固化路由
第一条路由信息:缺省路由
当系统接收到一个目的地址不在路由表中的数据包时,系统会将该数据包通过192.168.99.8这个接口发送到缺省网关192.168.99.1。
第二条路由信息:本地环路
当系统接收到一个发往目标网段127.0.0.0的数据包时,系统将接收发送给该网段的所有数据包。
第三条路由信息:直连网段的路由记录
当系统接收到一个发往目的网段192.168.99.0/24的数据包时,系统会将该数据包通过192.168.99.8这个接口发送出去。
第四条路由信息:本地主机路由
当系统接收到一个目标ip地址为本地网卡ip地址的数据包时,系统会将该数据包收下。
第五条路由信息:本地广播路由
当系统接收到一个发给直连网段的本地广播数据包时,系统会将该数据包从192.168.99.8这个接口以广播的形式发送出去。
第六条路由信息:组播路由
当系统接收到一个组播数据包时,系统会将该数据包从192.168.99.8这个接口以组播的形式发送出去。
第七条路由信息:广播路由
在系统接收到一个绝对广播数据包时,系统会将该数据包通过192.168.99.8这个接口发送出去。
Default Gateway(缺省网关)