2.1 路由器的工作原理
在因特网中,网络连接设备用来控制网络流量和保证网络数据传输质量。常见的网络连接设备有集线器(Hub)、网桥(Bridge)、交换机(Switch)和路由器(Router)。这些设备的基本原理类似,下面就以路由器为例来介绍一下设备的基本原理。
路由器是一种典型的网络连接设备,用来进行路由选择和报文转发。路由器根据收到报文的目的地址选择一条合适的路径(包含一个或多个路由器的网络),然后将报文传送到下一个路由器,路径终端的路由器负责将报文送交目的主机。
路由就是报文从源端到目的端的路径。当报文从路由器到目的网段有多条路由可达时,路由器可以根据路由表中最佳路由进行转发。最佳路由的选取与发现此路由的路由协议的优先级、路由的度量有关。当多条路由的协议优先级与路由度量都相同时,可以实现负载分担,缓解网络压力;当多条路由的协议优先级与路由度量不同时,可以构成路由备份,提高网络的可靠性。
2.1.1路由器根据路由表转发数据
一个数据包到达路由器以后,路由器根据数据包的目的IP地址查找路由表,如果有就根据路由表转发,如果没有就丢弃,下面我们来举两个例子:
举例1:如图2-1所示,在R1上访问12.1.1.2,数据转发流程如下:

图2-1 路由器根据路由表转发数据
第一步:数据包的源IP为12.1.1.1 目的IP为12.1.1.2,R1查看路由表看没有去12.1.1.0/24位的路由,R1的路由表如图5-2所示,通过查看路由表数据包从出接口g0/0/0发送出去。
<R1>display ip routing-table //查看路由表
Route Flags: R - relay, D - download to fib
Routing Tables: Public
Destinations : 4 Routes : 4
Destination/Mask Proto Pre Cost Flags NextHop Interface
12.1.1.0/24 Direct 0 0 D 12.1.1.1 GigabitEthernet0/0/0
12.1.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
路由表中包含了如下参数:
- Destination:表示此路由的目的地址。用来标识IP包的目的地址或目的网络。
- Mask:表示此目的地址的子网掩码长度。与目的地址一起来标识目的主机或路由器所在的网段的地址。
将目的地址和子网掩码"逻辑与"后可得到目的主机或路由器所在网段的地址。例如:目的地址为12.1.1.0,掩码为255.255.255.0的主机或路由器所在网段的地址为12.1.1.0。 掩码由若干个连续"1"构成,既可以用点分十进制表示,也可以用掩码中连续"1"的个数来表示。例如掩码255.255.255.0长度为24,即可以表示为24。
- Proto:表示学习此路由的路由协议。
- Pre:表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级高(数值小)者将成为当前的最优路由。各协议路由优先级请参见路由协议的优先级。
- Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。
- Preference用于不同路由协议间路由优先级的比较,Cost用于同一种路由协议内部不同路由的优先级的比较。
- NextHop:表示此路由的下一跳地址。指明数据转发的下一个设备。
- Interface:表示此路由的出接口。指明数据将从本地路由器哪个接口转发出去。
第二步:数据从R2的G0/0/1到达路由器R2,路由器查看目的IP为12.1.1.2,为自己g0/0/1口的IP地址,发现是发给自己的,所以要给R1一个回应,源IP为12.1.1.2,目的IP为12.1.1.1,R2也要查看路由表,R2的路由表如图5-3所示,R2把数据包从G0/0/1口发送出去,到达R1,所以网络是通的。
<R2>display ip routing-table //查看R2的路由表
Route Flags: R - relay, D - download to fib
Routing Tables: Public
Destinations : 6 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
12.1.1.0/24 Direct 0 0 D 12.1.1.2 GigabitEthernet0/0/1
12.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
23.1.1.0/24 Direct 0 0 D 23.1.1.2 GigabitEthernet0/0/0
23.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
举例2:如图2-1所示,在R1上访问23.1.1.3,数据转发流程如下:
数据包的源IP为12.1.1.1 目的IP为23.1.1.3,R1查看路由表看没有去23.1.1.0/24位的路由,R1的路由表如图5-2所示,发现路由表没去23.1.1.0路由,直接把数据包丢弃,所以网络不通
<R1>display ip routing-table //查看路由表
Route Flags: R - relay, D - download to fib
Routing Tables: Public
Destinations : 4 Routes : 4
Destination/Mask Proto Pre Cost Flags NextHop Interface
12.1.1.0/24 Direct 0 0 D 12.1.1.1 GigabitEthernet0/0/0
12.1.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
2.1.2 路由信息获取的方式
路由器依据路由表进行路由转发,为实现路由转发,路由器需要发现路由,路由获取有以下三种方式。
- 通过链路层协议发现的路由称为直连路由。
- 通过网络管理员手动配置的路由称为静态路由。
- 通过动态路由协议发现的路由称为动态路由。
- 直连路由
直连路由是路由器直连接口所在网段的路由,由设备自动生成。如图2-2所示,路由器R的g0/0/0接口所在的网段为10.1.1.0/24,g0/0/1接口所在的网段为20.1.1.0/24,只要路由器R的g0/0/1和g0/0/0的物理状态、协议状态都为UP,那么路由器R就会产生两条直连路由。

图2-2 直连路由
- 静态路由
路由静态是由管理员手式配置的路由条目,如图2-3所示,路由R不知道怎么去30.1.1.0/24这个网段,所以管理员在路由器R的路由表中手动添加一条去往30.1.1.0/24的路由。具体配置我们在静态路由会详细介绍,静态路由配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预。

2-3 静态路由
- 动态路由
动态路由是路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由,如图2-4所示,路由器R没有40.1.1.0/24的路由,它通过动态路由协议OSPF来学习40.1.1.0/24的路由,动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络。缺点是配置对用户要求比较高,对系统的要求高于静态路由,并将占用一定的网络资源和系统资源。

图2-4 动态路由
2.2路由选路原则
路由就是报文从源端到目的端的路径。当报文从路由器到目的网段有多条路由可达时,路由器可以根据路由表中最佳路由进行转发。最佳路由的选取与发现此路由的路由协议的优先级、路由的度量有关。当多条路由的协议优先级与路由度量都相同时,可以实现负载分担,缓解网络压力;当多条路由的协议优先级与路由度量不同时,可以构成路由备份,提高网络的可靠性。
2.2.1最长匹配原则
当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的所有路由表项进行逐位(Bit-By-Bit)比对,直到找到匹配度最长的条目,这就是最长前缀匹配机制。如图2-5所示,一个数据包的目的IP为172.16.2.1,路由条目1没有匹配,路由条目3匹配了,但是不是最长的,路由条目2不但匹配了还是最长的。

图2-5 最长匹配原则
2.2.2路由优先级
当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,路由器会比较这些路由的优先级,优选优先级值最小的路由。常见路由类型的默认优先级见表2-1
表2-1 常见路由类型的默认优先级
|-------------|--------------|
| 路由协议的类型 | 路由协议的优先级 |
| Direct | 0 |
| OSPF | 10 |
| IS-IS | 15 |
| Static | 60 |
| RIP | 100 |
如图2-6所示,RTA通过动态路由协议OSPF和手动配置的方式都发现了到达10.0.0.0/30的路由,静态路由的优先级为60,OSPF的优先级为10,所以会把OSPF学习到的路由加入到路由表中。

图2-6 路由优先级
2.2.3路由度量值
- 路由的度量标示出了这条路由到达指定的目的地址的代价,通常以下因素会影响到路由的度量。
- 路径长度
路径长度是最常见的影响路由度量的因素。链路状态路由协议可以为每一条链路设置一个链路开销来标示此链路的路径长度。在这种情况下,路径长度是指经过的所有链路的链路开销的总和。距离矢量路由协议使用跳数来标示路径长度。跳数是指数据从源端到目的端所经过的设备数量。例如,路由器到与它直接相连网络的跳数为0,通过一台路由器可达的网络的跳数为1,其余以此类推。
- 网络带宽
网络带宽是一个链路实际的传输能力。例如,一个10千兆的链路要比1千兆的链路更优越。虽然带宽是指一个链路能达到的最大传输速率,但这不能说明在高带宽链路上路由要比低带宽链路上更优越。比如说,一个高带宽的链路正处于拥塞的状态下,那报文在这条链路上转发时将会花费更多的时间。
- 负载
负载是一个网络资源的使用程度。计算负载方法包括CPU的利用率和它每秒处理数据包的数量。持续监测这些参数可以及时了解网络的使用情况。
- 通信开销
通信开销衡量了一条链路的运营成本。尤其是只注重运营成本而不在乎网络性能的时候,通信开销则就成了一个重要的指标。
- 度量值的比较过程
如图2-7所示,RTA通过动态路由协议OSPF学习到了两条目的地为10.0.0.0/30的路由,学习自同一路由协议、优先级相同,因此需要继续比较度量值。两条路由拥有不同的度量值,下一跳为30.1.1.2的OSPF的路由条目拥有更小的度量值,因此被加入到路由表中。

图2-7 度量值
2.3练习题
- 以下关于直连路由说法正确的是?( )
A、直连路由优先级低于动态路由 B、直连路由优先级低于静态路由
C、直连路由优先级最高 D、直连路由需要管理员手工配置目的网络和下一跳地址
- 下列哪个属性不能作为衡量Cost的参数?( )
A、带宽 B、Sysname C、时延 D、跳数
- 下列关于华为设备中静态路由的说法错误的是?( )
A、静态路由的开销值(Cost)不可以被修改 B、静态路由优先级的缺省值为60
C、静态路由优先级值的范围为1-255 D、静态路由的优先级为0时,则该路由一定会被优选
- VRP操作平台、以下哪条命令可以只查看静态路由?( )
A、display ip routing-table protocol static B、display ip routing-table
C、display ip routing-table verbose D、display ip routing-table statistics
- 下面关于静态与动态路由描述错误的是?( )
A、管理员在企业网络中部署动态路由协议后,后期维护和扩展能够更加方便
B、动态路由协议比静态路由要占用更多的系统资源
C、链路产生故障后,静态路由能够自动完成网络收敛
D、静态路由在企业中应用时配置简单,管理方便