有时候,我们需要为路由器配置一些静态路由来指导转发,配置的语法为: ip route <destination_network> <destination_mask> <next hop>,这里介绍两种典型的静态路由使用场景:递归静态路由和直连静态路由。
以如下的拓扑为例:
配置端口 ip 信息:
R1-f0/0-10.0.0.1/24
R1-f0/1-1.0.0.1/24
R2-f0/0-1.0.0.2/24
R2-loop1-100.0.0.1/24
R2-loop2-200.0.0.1/24
我们为R1配置一条去往100.0.0.0/24网段的静态路由:ip route 100.0.0.0 255.255.255.0 1.0.0.2
路由器转发ip数据包需要知道出端口和下一跳ip地址,现在R1的路由表如下(C - connected, S - static):
C 10.0.0.0/24 f0/0
C 1.0.0.0/24 f0/1
S 100.0.0.0/24 1.0.0.2
现在如果要转发一个去往100.0.0.1目的网络的数据包,路由器将会做如下查询:
lookup1:如何到达100.0.0.1 ?通过最长匹配,静态路由告诉路由器要想到达100.0.0.0/24网段,要先到下一跳ip 1.0.0.2
lookup2:如何到达1.0.0.2 ?通过最长匹配,第二条直连路由告诉路由器要想到达1.0.0.0/24网段,只需要从f0/1端口发送出去
像这种需要经过2次及以上查询路由表的,可以称为递归查询,路由器足够智能,能够通过ARP协议识别其直连网络的ip,在实际的路由器将会是这样:
C 10.0.0.0/24 f0/0
C 1.0.0.0/24 f0/1
S 100.0.0.0/24 f0/1 1.0.0.2
接下来,我们为 R1 配置第二条静态路由: ip route 200.0.0.0 255.255.255.0 100.0.0.1
为了转发去往200.0.0.1目的网络的数据包,路由器将会做如下查询:
lookup1:要到达 200.0.0.1所在的网段 200.0.0.0/24 ,先到达其下一跳ip 100.0.0.1
lookup2:要到达 100.0.0.1所在的网段 100.0.0.0/24, 先到达其下一条ip 1.0.0.2
lookup3:要到达 1.0.0.2所在的网段 1.0.0.0/24,直接从其 f0/1端口转发出去
总结:如果路由器为了找到直接的出端口和下一跳ip,需要查找其路由表超过一次,就可以看作是递归路由查询,这样的静态路由被称为递归静态路由。递归路由查询过程比较耗费计算资源,在大规模网络中应避免。