路由是数据通信网络中最基本的要素。
路由信息是指导报文转发的路径信息,路由过程就是报文转发的过程。
1、概念
不同网络之间想要实现数据的转发,则需要存在三层设备。
三层设备需要存在达到目的地的路由信息。
每一个三层设备都会存在一张路由表项,包含所有的路由信息。
[AR3]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
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
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
1、Destination/Mask:目标网络 + 掩码,描述了目标网段。
2、NextHop:下一跳,去往目标网段所经过的下一台设备。
3、Interface:出接口,将目标数据发送出的接口。
“1、2、3”这三者唯一的确定了一条路由条目。
4、Protocol:协议,表明路由生成的方式。
5、Preference:优先级,不同方式生成路由的优先级值。
6、Cost:开销,根据路由条目转发数据所需要花费的代价。
7、Flags:标志字段,R代表是否进行路由迭代,D代表下载到FIB表中。
2、路由的生成方式
2.1、直连路由
Direct,设备默认自动生成四条。
管理员通过配置接口IP地址后会自动生成:
1、如果配置的地址掩码 小于等于 30,则生成3条直连路由;
2、如果配置的地址掩码 等于 31,则生成2条直连路由;
3、如果配置的地址掩码 等于 32,则生成1条直连路由。
只能通过虚拟环回口LoopBack来作32位的掩码。
只能完成同设备互联之间的通信,无法完成跨设备的不同网段通信。
2.2、静态路由
[AR2]ip route-static 192.168.4.0 24 GigabitEthernet 0/0/1 10.1.23.3
[AR3]ip route-static 192.168.3.0 24 GigabitEthernet 0/0/1 10.1.23.2
在以太网(广播型网络中)配置静态路由,可以省略出接口的配置。
Static,由管理员手工配置。
2.2.1、缺省路由
缺省路由也叫默认路由,用于直到去往未知网络的报文转发。
0.0.0.0/0 代表所有未知的网段,即路由表中没有的路由信息,按缺省指导报文转发。
比如给电脑IPv4地址配网关,就是在给电脑写下一跳。
比如企业有一个路由器的出口需要连到互联网,可能需要上万条静态路由,此时可以缺省路由来实现。
- 环路(静态路由没有防环协议):
当网络中出现彼此回址时,就有出现环路的风险。
环路将带宽消耗完时,可能造成整个网络的瘫痪。
当两台路由器接口彼此设置缺省时,就会造成环路,当TTL=0时环路才会解开。
2.3、动态路由
根据路由协议自动计算且生成路由条目的。
可以自动计算最优的路由条目。
2.4、路由的比较规则
- 当不同的路由生成方式,生成相同的路由条目,如何选择?
根据路由的优先级值来判断,先选优先级值小的方式生成的路由。(升序)
→ A路由 1(选A)
B路由 66
- 如果路由生成方式相同,对应的路由条目有多个下一跳,如何选择?
根据路由的开销值来判断,优先选择开销值小的。
如果开销值相等,则等价负载。
2.5、数据转发
- PC设备如何判断数据需要跨网段转发?
1、PC将自身的地址和网络掩码做运算,得到第一个网络地址;
2、PC将目标的地址和网络掩码做运算,得到第二个网络地址;
3、将两个网络地址做对比,如果相同则同网段转发,不同则跨网段转发。
- 数据转发的方式:
当路由表中存在多条可以到达目的地的路由条目,在数据转发时,使用哪一条路由条目?
- 根据最长掩码匹配的规则来选择
以下有3个目标IP,先在路由表中选择能够覆盖目标IP的路由,再从中选择最精确的。
目标IP | 选择 | 路由表 | 理由 |
192.168.1.240 | → | 192.168.1.0/24 | |
192.168.2.240 | → | 192.168.0.0/16 | |
192.168.1.24 | → | 192.168.1.0/25 | |
172.16.1.0/24 |
- 三层设备在转发数据时,需要存在路由信息;终端在转发数据时,是否需要存在路由信息?
终端也存在路由表项,并且当终端配置网关地址后,会自动生成一条缺省路由。
(默认路由)缺省路由:0.0.0.0/0 下一跳:网关地址
也可以通过静态手工配置缺省路由:
1、一般用于企业网络的出口;
2、末节网络的使用。(边缘网络)
2.6、静态路由的 路由递归/路由迭代
路由递归:路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由递归。路由递归也被称为路由迭代。
递归:根据非直连的下一跳地址,查路由表是否存在去往非直连下一条地址的路由,有则可以完成递归,没有该路由无法出现在路由表中。缺省路由不能作为递归路由去使用。
2.7、等价路由
路由表中存在等价路由之后,前往该目的网段的IP报文路由器会通过所有有效的接口、下一跳转发,这种转发行为被称为负载分担。
必须是相同的来源,开销则是相同的协议。
路由的负载分担算法:
基于“流”实现负载分担,属于同一个“流”的包走同一条路径。
“流”:
TCP/UDP报文的内容,SIP+DIP+SPORT+DPORT+TCP/UDP相同时,则视为一个“流”。
对于非TCP/UDP的IP报文,SIP+DIP相同的报文认为是同一个流。
匹配同一条路由的不同流在多条等价路径上执行转发。
一般来讲,负载分担是轮询分派的,可以避免拥塞,但其不能根据包的大小来均衡的分担负载,所以它是负载分担而不是负载均衡。
2.8、浮动路由
静态路由支持配置时手动指定优先级,可以通过配置目的地址/掩码相同、优先级不同、下一跳不同的静态路由,实现转发路径的备份。
浮动路由是主用路由的备份,保证链路故障时提供备份路由。主用路由下一跳可达时该备份路由不会出现在路由表。
主链路正常时RTA上路由表
目的网络 | 下一跳 | 优先级 |
20.0.0.0 | 10.1.1.2 | 60 |
↓↓↓
主链路故障时RTA上路由表
目的网络 | 下一跳 | 优先级 |
20.0.0.0 | 10.1.2.2 | 70 |
- 同一个目的网络使用相同路由协议实现浮动路由:
1、静态路由通过路由优先级实现主备备份,因为静态路由无法配置cost;
2、动态路由通过设置cost实现主备备份,Cost小的优先,大的备份,相同则为负载分担。
- 同一个目的网络使用不同路由协议实现浮动路由:
1、优选优先级高的路径,优先级高的失效,选择优先级低的路径。
2.9、CIDR
CIDR(classless inter-domain routing,无类别域间路由)采用IP地址加掩码长度来标识网络和子网,而不是按照传统A、B、C等类型对网络地址进行划分。
CIDR容许任意长度的掩码长度,将IP地址看成连续的地址空间,可以使用任意长度的前缀分配,多个连续的前缀可以聚合成一个网络,该特性可以有效减少路由表条目数量。
通过掩码的算法,尽量找到相同的比特位,不精确但只能做到这样了:
2.10、路由汇总需求
做子网规划时,要满足2的幂次方才能做到精确划分:
2 4 8 16 32 64 128 256
例 2²:
192.168.0.0/24
192.168.1.0/24
↓↓↓
192.168.0.0/23
那么,我们能不能一刀切直接用192.168.0.0/16笼统的规划呢?
不建议!为什么?
汇总引发的问题
打偏:
引起环路:
解决方法:手动添加指向汇总路由空接口的黑洞路由
在RTB上增加一条指向Null0的路由(黑洞路由),即可解决上述问题。因此,在部署路由汇总的时候要格外注意,要规避环路问题。
精确进行路由汇总:
为了让RTA能够到达RTB上的172.16.1.0/24-172.16.31.0/24网段,配置了一条静态的汇总路由,这条网段虽然优化了网络配置,但是汇总的范围太广,将RTC上的网段也包括在内,导致前往RTC上网段的流量到达RTA之后会被发往RTB,造成数据包的丢失,这种路由为不精确的路由。为此配置汇总路由时要尽量精确,刚好包括所有明细路由。
一般中小型和园区网络都不太用汇总了,除非是运营商的大型网络。
-
路由相关知识复习:
路由是一个动词,将数据包从一个网段转发至另外一个网段的过程。
路由器:是用于实现路由功能的网络设备,而具备路由功能的网络设备,如防火墙、三层交换机都是路由设备。
路由器通过什么来实现路由功能?
通过路由表查表转发报文来实现路由功能。
路由器中的路由表是如何得到的?
1、直连路由,接口配置IP地址和掩码之后,自动生成。若接口失效,直连路由也会失效。
2、静态路由,管理员手动添加的非直连的路由信息,缺点如下:
2.1、静态路由不适合大型或者拓扑结构复杂的网络;
2.2、静态路由没有动态恢复路径的能力。
3、动态路由,由路由器之间运行动态路由协议,互相交换非直连的路由信息:
3.1、动态路由适合大型网络,拓扑复杂的网络;
3.2、动态路由有路径选择能力和路径恢复能力;
3.3、动态路由对设备性能要求相对较高。
网络要全通,要求网络中的每台路由器都要拥有全网的非直连的路由信息。
Loopback:
虚拟接口,可以理解成无法连接设备的借口,但它不会down。
可以和物理接口一样进行配置和使用,配置独立网段地址,只要路由通了就和物理接口的地址没有区别。
路由的本质:
只要有这三个信息就能把报文转发出去,路由的工作就完成了。
1、目的网络号;
2、本地出接口;
3、下一跳。
网络是分布式工作的模式,各司其职、合作分工。即使报文转发了,也不一定能够到达目标网段。
路由不能只是单方面的,要目的地有回馈才能通。
-
思考题:
1、路由器如何优选路由条目?
- 当不同的路由生成方式,生成相同的路由条目,如何选择?
根据路由的优先级值来判断,先选优先级值小的方式生成的路由。(升序)
路由 优先级
→ A路由 60(选A)
B路由 70
- 如果路由生成方式相同,对应的路由条目有多个下一跳,如何选择?
根据路由的开销值来判断,优先选择开销值小的。
如果开销值相等,则等价负载。
2、如何配置实现浮动路由?
已在HCIA的路由实验中配置实现。
HCIA-实验1-1.IPv4编制及IPv4路由基础实验-CSDN博客
3、将10.1.1.0/24、10.1.3.0/24、10.1.9.0/24汇总之后的网段是?
掩码:二进制后进行判断,掩码为20位。
10.1.1.0:0000 1010 0000 0001 0000 0001 0000 0000
10.1.3.0:0000 1010 0000 0001 0000 0011 0000 0000
10.1.9.0:0000 1010 0000 0001 0000 1001 0000 0000
使用10.1.0.0/20是可以的。但是如果要避免路由打偏和环路,我们可以将网段更精细化。
做子网规划时,要满足2的幂次方才能做到精确划分:
2 4 8 16 32 64 128 256,题目中最大的第三位是9,所以得出最佳汇总网段:
10.1.16.0/20