曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3427|回复: 0
打印 上一主题 下一主题

[华为] [路由]静态路由的下一跳问题

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2016-6-3 22:57:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
静态路由的配置命令如下所示:

如指令说明所示,参数中可以带下一跳,也可以带出接口,那么什么时候应该把下一跳和出接口写上,什么时候可以不写呢? 可以依据下面的几点总结:

1. 对于点对点链路:至少要写上出接口,但也可以写上下一跳的 IP 地址。

2. 对于以太网链路:至少写上下一跳的 IP 地址,也可以写上出接口。

3. 下一跳 IP 地址可以不直连,但这样会发生递归。

点对点链路和以太网链路有什么区别?简单的说,如果两端只能各接一台设备,那这就是点对点。它有一个特点,就是从一端发出来的数据包只能被另一端收到,而不会被其他人收到。以太网就不一样了,它属于广播型网络,发出来的数据包可以被多人接收到。

为了进一步说明问题,引用下面的网络拓扑图(《静态路由的基本配置》):


现在打算配置使得 AR1 能够 ping 通 AR4

那么在 AR1 上先添加一条路由:

  1. ip route-static 192.168.34.0 24 s1/0/0 192.168.12.2
复制代码


根据上面的 3 点总结,由于这是一条串行链路,上面命令如果不写下一跳的 IP 地址(比如:ip route-static 192.168.34.0 24 s1/0/0),那么会如何?


查看一下路由的当前配置,可以看到:

可见,第 2 条有下一跳,第 3 条并没有下一跳。现在来考察一下它们的区别


使用 disp ip routing-table 命令查看路由表,可以看到:

像 192.168.23.0 这一条,在添加路由表时,明确书写了下一跳的地址,那么它在路由表上也会如实反应。但是对于 192.168.34.0 这一条,在路由表中的下一跳地址是 192.168.12.1 ,为它自己 Serial 1/0/0 上的地址。由于 AR1 和 AR2 是点对点链路,因此即使这里的下一跳地址是自身 IP,那么数据包仍然会发到 AR2 上,如果 AR2 上没有正确的静态路由,那我们就需要转到 AR2 上进行添加:

  1. ip route-static 192.168.34.0 24 192.168.23.3
复制代码

其中 192.168.23.3 是 AR3 在 GE 0/0/0 上的 IP 地址。

也看一下配置:
  1. disp current-configuration
复制代码

看到:

上面配置命令后面并没有输出接口。

再来看一下 AR2 的路由表,可以看到:

注意观察上面这条路由表信息,虽然指令中没有书写接口,但在路由表里却显示出来了,此外还有一点,就是 Flags 这一栏,值为 RD,即多了一个 R ;看路由表上面的注释,R 为 relay 之意,中文可以理解为“传递”,事实上这个便是一个递归的过程。D 这个标志,根据注释是 "download to fib" 之意,也就是说这个路由表信息已经被放到了 FIB 表 ,那什么又是 FIB 表呢? FIB 是 Forward information base ,中文意思是转发信息数据库。可以使用命令 disp fib 来显示 FIB 表,这表里头的信息也就是来自路由表中的内容;事实上,路由器转发数据包最终使用的还是 FIB 。

现在返回到 AR2 的路由表中来,为什么在配置时不指定接口,而它自己却如何知道的呢?
很简单,虽然没有直接被告知从哪个接口输出,但是告知了下一跳的 IP 地址,即 192.168.23.3 。要到达 192.168.23.3,那么还得去查一下路由表,并找到:

注意,这条路由表信息上就注明了接口,即 G0/0/0 ,于是乎,目的地址为 192.168.34.0/24 这条路由表自然也是从 G0/0/0 这里出去了。

由上述可知,这里总共查询了 2 次路由表,这个查询过程就称之为递归查询,如同编写程序的递归一个意思,查询的过程就是对自己进行“剥壳”,因此路由表中的 Flags 一栏,就多了一个 R 标识。

这样一来,就知道,如果在添加路由表时,一次性将下一跳地址和出接口一并写上,那么就无需上述的递归过程,也就意味着标识 R 不会被打上。 因此建议,我们在做配置时,还是勤快点,一并将下一跳和接口信息都写上。

经过上面的折腾后,AR1 到 AR4 的通道是畅通了,那么反过来也类似的,在 AR4 配上两条信息:
  1. ip route-static 192.168.12.0 24 s1/0/0
复制代码

和以太网链路不同的是,对于串行链路来说,你写不写下一跳都没什么区别的。

在 AR3 上配置:
  1. ip route-static 192.168.12.0 24 g0/0/0 192.168.23.2
复制代码

根据上面讨论已经知道,出接口是以太网接口,因此我们最好把下一跳和出接口都写上。




再来验证一个问题:在以太网接口上,不告知下一跳,而只是设置出接口,那么会如何?

在 AR2 上,先删除掉之前的路由表配置:
  1. undo ip route-static 192.168.34.0 255.255.255.0 192.168.23.3
复制代码

添加下面的一条:
  1. ip route-static 192.168.34.0 255.255.255.0 g0/0/0
复制代码

这么做之后,你会发现再从 AR2 上 ping AR4,已经不能 ping 通了。

道理很简单,你只是让数据从指定接口送出,但你没有说明送去哪,因此数据包不知道下一跳时(假设在交换机 LSW3 上又接了好几个路由器),必然无法成功送达目的地。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-5 01:34 , Processed in 0.065836 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表