静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器 人工配置路由表 \color{red}人工配置路由表 人工配置路由表。
-
这种人工配置方式简单、开销小。 但不能及时适应网络状态(流量、拓扑等)的变化。 \color{red}但不能及时适应网络状态(流量、拓扑等)的变化。 但不能及时适应网络状态(流量、拓扑等)的变化。
-
一般只在小规模网络中采用。
使用静态路由配置可能出现以下 导致 \color{red}导致 导致产生 路由环路 \color{red}路由环路 路由环路的错误口
-
配置错误
-
聚合了不存在的网络
-
网络故障
1、静态路由配置
采用如下所示的网络拓扑和相应的 IP
地址配置
路由器 R1
通过自己的接口
0
0
0 所配置的 IP
地址和地址掩码, 可以自动得出接口
0
0
0 所在的网络
- 由于接口
0
0
0 与该网络直连,则下一跳不是路由器地址,而是通过接口
0
0
0 转发
IP
数据报给该网络中的某个主机,这属于直接交付 - 这条自动得出的路由条目的类型属于
直连路由
其他同理
假设 R1
要转发一个 IP
数据报给该网络中的某个主机,R1
应该将该 IP
数据报转发给路由器 R2
的接口
0
0
0
但是 R1
的路由表中并没有关于该目的网络的路由条目(R1
并不知道目的网络的存在)
因此我们可以使用路由器相关配置命令,给 R1
添加一条到达该目的网络的路由条目
-
该目的网络的地址: 192.168.2.0 / 24 192.168.2.0/24 192.168.2.0/24
-
下一跳为路由器
R2
的接口 0 0 0 的地址: 10.0.0.2 10.0.0.2 10.0.0.2
该路由条目是我们人工配置的静态路由
R2
同理
2、默认路由
假设路由器 R2
的接口
2
2
2 连接到了因特网
假设 R1
要转发一个 IP
数据报给因特网中某个网络中的某个主机
可以看出 R1
应该将该 IP
数据报转发给路由器 R2
的接口
0
0
0
由于因特网中包含了众多的网络
- 若我们给
R1
添加针对这些网络的每一条路由条目,则会给人工配置带来巨大的工作量,并且使R1
的路由表变得非常大,降低了查表转发的速度。 - 实际上,对于具有相同下一跳的不同目的网络的路由条目,我们可以用一条默认路由条目来替代
默认路由条目中的网络地址: 0.0.0.0 0.0.0.0 0.0.0.0,地址掩码也为: 0.0.0.0 0.0.0.0 0.0.0.0
CIDR
形式: 0.0.0.0 / 0 0.0.0.0/0 0.0.0.0/0
对于上述,默认路由 R2
的接口
0
0
0 的地址
由于默认路由也是由我们人工配置的,因此其类型也是静态
3、特定主机路由
有时候,我们可以给路由器添加针对某个主机的特定主机路由条目
- 一般用于网络管理人员对网络的管理和测试
- 另外,在需要考虑某种安全问题时也可以采用特定主机路由
特定主机路由的目的网络网络前缀最长,路由最具体(直接把目的路由抽象成一个网络号)
默认路由的目的网络网络前缀最短,路由最模糊
当有路由表查表转发 IP
数据报时,当有多条路由条目可选,则采用 “最长前缀匹配
” 的原则
4、静态路由配置错误导致路由环路问题
如下所示各路由器自动得出的直连网络,以及人工配置的静态路由
R2
要转发该 IP
数据报到网络
192.168.1.0
/
24
192.168.1.0/24
192.168.1.0/24,正确的配置
假设我们将下一跳错误地配置成了该地址:
10.0.1.2
10.0.1.2
10.0.1.2,也就是错误地指向了 R3
的接口
0
0
0
则当 R2
要转发 IP
数据报到该网络时,下一跳会错误地转发给路由器 R3
地接口
0
0
0
R3
收到该 IP
数据报后,查表转发,找到了匹配地路由条目,下一跳应该转发给该地址
- 也就是转发给
R2
的接口 1 1 1
5、聚合了不存在的网络而导致路由环路
假设 R2
转发 IP
数据报到该网络:
192.168.2.0
/
24
192.168.2.0/24
192.168.2.0/24
R2
进行查表转发,找到了匹配的路由条目,下一跳应该转发给该地址,也就是转发给 R1
的接口
1
1
1
R1
收到该 IP
数据报后,进行查表转发,找到了匹配的路由条目,下一跳是通过接口
2
2
2 直接交付
192
192
192 是 C
类地址,但聚合路由的网络地址只有
22
22
22 位,还剩
2
2
2 位就可以表示
4
4
4 各网络
若 R2
要转发 IP
数据报到这个不存在的网络时(
192.168.3.0
/
24
192.168.3.0/24
192.168.3.0/24)
进行查表转发,找到了匹配的路由条目,下一跳应该转发给该地址:
10.0.0.1
10.0.0.1
10.0.0.1,也就是转发给 R1
的接口
1
1
1
但对于这个不存在的网络,路由器 R2
应该不予转发,却错把它转发给了 路由器 R1
R1
收到该 IP
数据报后进行查表转发,只能走默认路由
- 下一跳应该转发给该地址: 10.0.0.2 10.0.0.2 10.0.0.2
- 也就是转发给
R2
的接口 0 0 0
很显然,R1
和 R2
之间产生了路由环路
我们可以在 R2
的路由表中添加针对所聚合的、不存在的网络的黑洞路由
黑洞路由的下一跳为 null0
,这是路由器内部的虚拟接口
IP
数据报进入其后就有去无回了- 也就是路由器丢弃了该
IP
数据报
假设 R2
要转发 IP
数据报到这个不存在的网络
进行查表转发,找到了两条可选择的路由条目,根据 “最长前缀匹配
” 的原则
将会选择这条到达不存在网络的黑洞路由,下一跳为虚拟接口 null0
6、网络故障而导致路由环路
假设路由器 R1
检测到接口
0
0
0 所直连的网络出现了故障而不可达
- 就会自动在其路由表中删除该直连网络的路由条目
R2
要转发 IP
数据报到该故障的网络
可以在 R1
的路由表中添加针对该直连网络的黑洞路由
这样,R2
要转发 IP
数据报到该故障的网络
假设一段时间后,该故障消失了
- 则
R1
又自动地得出了其接口 0 0 0 的直连网络的路由条目 - 并将我们之前人工配置的针对该直连网络的黑洞路由条目设置为失效状态
假设 R1
再次检测到其接口
0
0
0 所直连的网络出现了故障而不可达
- 则会自动在其路由表中删除该直连网络的路由条目
- 并将我们之前人工配置的针对该直连网络的黑洞路由条目设置为生效状态