实验 16:路由信息协议 RIP
# 160.实验 16:路由信息协议 RIP
下面我们来进行一个仿真实验,本仿真实验的目的在于验证路由信息协议,也就是 RIP 协议的作用。
我们先来构建一个网络拓扑选择路由器,我们需要使用 2911 型号,我们拖动三台 2911 路由器到逻辑工作空间,然后再选择主机,我们选择通用的主机就可以,我们需要两台,再拖一台到逻辑工作空间。然后我们选择自动连线,将主机连接到这台路由器,将上面这台主机连接到这台路由器,然后再将这两个路由器互联,再将这两个路由器互联
我们还需要给左边和上边这两台路由器各自添加一块串行接口卡,先来给路由器添加,我们选择这里,这是一个串行接口卡,那么我们需要把它添加到路由器的背板后面的插槽里面。
那么我们点击这个接口卡,然后按住鼠标组件不动,把它拖放到这个插槽上。现在提示我们电源打开的时候,是不能添加模块的,
因此我们需要把它的电源给它关闭掉,那电源在这个位置,我们可以把这个图放大一点,我们把这个电源给它关闭掉,然后我们找到插槽,然后把这个模块拖动到插槽里面,不要忘记了再把电源打开。
之后我们需要将两个路由器连接起来,那么也就是通过刚才我们添加的串口接口卡把它们连接起来,那么这里面我们要选择这种连线的类型,我们点击路由器,那么我们刚才添加的模块,它上面有两个接口,两个串口接口,那么我们使用接口 0 进行连接。那么当点路由器的时候,我们也选择它的接口 0 进行连接,这样做的目的是为了更好的体现出 RIP 协议仅以距离也就是所经过路由器的数量作为衡量一条路由好坏的标准,这条红色的串行链路比通用的这条链路和这条链路的带宽要小很多
之后我们需要将两个路由器连接起来,那么也就是通过刚才我们添加的串口接口卡把它们连接起来,那么这里面我们要选择这种连线的类型,我们点击路由器,那么我们刚才添加的模块,它上面有两个接口,两个串口接口,那么我们使用接口 0 进行连接。那么当点路由器的时候,我们也选择它的接口 0 进行连接,这样做的目的是为了更好的体现出 RIP 协议仅以距离也就是所经过路由器的数量作为衡量一条路由好坏的标准,这条红色的串行链路比通用的这条链路和这条链路的带宽要小很多 那么左下网络上的数据包如果要去往上边的网络,那么通过这个路由器转发给这个路由器,然后这个路由器再转发给路由器,那么这样的一个路由才是好的路由,但 RIP 协议却认为应该走这一条串行链路,因为这样的话从网络到网络,它的路由器数量最少,也就是距离最小。
我们调整一下网络拓扑,以方便我们之后在各个设备旁边标注 IP 地址等信息,接下来需要给各个设备配置 IP 地址,为了我们配置时的方便,我们应该先把所规划好的 IP 地址标注在各个网段上以及各个设备的旁边。由于本实验采用 RIP 协议的版本一,因此这里我们使用主类 IP 地址,也就是使用默认子网掩码的分类 IP 地址,例如这个网段我们可以给它配置成 10.0.0.0 网络,而这个网段配置成 20.0.0.0,而这个网段配置成 30.0.0.0,这个网段我们给它比如配置成 192.168.0.0,而这个网段我们给它配置成 192.168.1.0。那么下面我们先把这个信息标注在他们的旁边,那么选择这个地方的放置注释,然后我们先给这个网段标注一下,标注在它的旁边 10.0.0.0,然后再给这个网段标注 20.0.0.0。那么这个网段 30.0.0.0,而这个网段是 192.168.0.0,而这个网段呢是 192.168.1.0
接下来就是给这两台主机分配 IP 地址,以及给每一个路由器的每一个接口分配 IP 地址,例如主机它处在 192.168.0.0 这个网段里面,因此可以给它分配一个 IP 地址为 192.168.0.1,而路由器的接口也处在这个网段里面,所以那么这个接口我们也可以给它指定一个 IP 地址,是 192.168.0.2,我已经将这两台主机需要配置的 IP 地址以及这三台路由器,每个接口所需配置的 IP 地址都标注在了他们的旁边,接下来我们就需要按我们所标注的这些信息进行配置:
接下来我们需要给路由器的各个接口配置 IP 地址,我们以这台路由器为例,那么我们首先应该知道路由器的这三个接口的接口号,那么我们等会才能相应的给它配置 IP 地址。
然后我们点击这个路由器,然后这儿选择配置选项卡,先看这儿,这是串口零,那么在这里点击串口零,然后先把它的状态给它,也就是把这个接口先给它开启。下面是相应的开启的命令,也就是如果你在命令行里面,在这个界面里操作呢啊也是一样的,但是我们这里对于初学者来说,为了方便不用去记那些命令的话,那么我们可以在界面上直接操作,然后这个地方我们分配的 IP 地址是 30.0.0.1,那么我们在这里输入 30.0.0.1,然后回车,它会自动帮我们填一个子网掩码,那么这个是 30,所以这个 IP 地址是一个 A 类 IP 地址,那么这里面它自动帮我们填入的是一个 A 类的默认的子网页码,也就是一个 255 三个 0,当然这些输入的命令也是输入在界面上操作也有相应的行的命令。
那么接下来我们再给这个接口,刚才我们查看了这个接口是接口 0,给接口 0 再配置它的 IP 地址,那么我们也把它的接口状态也就把这接口把它打开,然后它的 IP 地址是 192.168.0.2,192 就可以看出这是一个 C 类的 ID 地址,它的默认子网源码就是三个 255 一个 0。
然后这个接口是接口一,我们选择这个接口一,然后我们把这个接口给它打开,它的 IP 地址是 20.0.0.1,同理它也是一个通过 20 的,我们就知道这是一个 A 类的 IP 地址,所以它的默认的子网掩码就是一个 255 三个 0。这样的话路由器的三个接口的 IP 地址我们就已经配置完成了,其剩下这两个路由器我就不再做演示了,请您自行配置一下。
在我们给路由器的各个接口配置了 IP 地址之后,路由器就可以自行得出它与哪些网络是直接相连的。那么我们可以查看一下我们点击这个地方的查看按钮,然后我们点击路由器,查看它的路由表,那么这个地方标志着 C 的就表明是它的直连网络,例如这个地方它和 10.0.0.0 网络是直连的,就这个地方这一条是代表它和网络,也就是 20.0.0.0 网络是直连的,那么这两条标记为 L 的是标注着它的这两个接口的 IP 地址。
请您思考一下这两台主机现在是否可以相互通信?答案是不行的,因为这个路由器它现在并不知道网络的存在,这个路由器也不知道这个网络的存在、如果要想让这两台主机能够相互通信,我们可以按照以前有关静态路由的仿真实验当中,我们给路由器添加静态路由的方法,例如给路由器添加一条路,由告诉他要到达这个目的网络,下一跳应该跳给路由器,也就是下一跳的 IP 地址,应为这个 IP
同理还要给这个路由器添加一条静态路由,告诉他这个目的网络要去往这个目的网络下一跳应该跳给路由器,具体的下一跳,IP 地址是路由器的接口的 IP 地址之后,这两台主机就可以相互通信了。
但是本实验我们并不是讲解静态路由的配置,而是希望路由器呢能够通过路由选择协议自行得出到达所有网络的具体的路由。
下面我们就来给这三个路由器的各个接口启动 RIP 协议,那么我们首先把鼠标从查看状态给它切换到选择状态,然后从实时模式切换到仿帧模式,那么我们这里面不需要仿帧软件帮我们监听这么多的协议,我们把它们全部隐藏掉,然后我们选择 ICMP 协议和 RIP 协议就可以了。那么下面我们就以右边路由器为例来看一下如何使能它这两个接口,也就是如何让它这两个接口去启动 R 协议。那么我们点击这个路由器,那么在它的配置选项卡里面有一个 RIP 选项,启动协议的方法非常简单,你只要通道接口所连接的网络就启动了他的 RIP 协议,也就是先将各个路由器的接口都打开。
当然他的相应的命令,首先你点 RIP 我们可以看到他的相应的命令是这样一条命令,也就是我要进行 RIP 的启动,然后我们就把这个网络给它通报出去,这里面 20.0.0.0,然后我们点添加这个地方就是相应的行的命令。
我们同时可以看到,一旦我们启动了 RIP 协议,路由器它就会发送一个我们理论课中已经讲过的 RIP 请求,也就是 RIP 请求它是一个广播的:
我们可以看到那么它在 UDP 的封装的时候的源端口和目的端口都是 520,然后在网络层封装的时候,目的 IP 地址是广播地址,当然在以太网的帧的封装的时候,它目的 MAC 地址是一个广播地址。
那么除了使能接口的 RIP 协议,我们还要使能或者说启动接口的 RIP 协议。那么我们再通告一下 10.0.0.0 好添加,那么我们就可以看到这里面它还会发送 RIP 请求,当然这个里面还有这是仿真软件给我们仿真出来的,那么这些是什么东西?这些是它之后要周期性发送的,每 30 秒要发送的 RIP 的更新。
那么这样的话,路由器的这两个接口的 RIP 协议我们就已经给他启动完成了,那么这两个路由器我就要不再做演示了,请您自己尝试的去启动它各个接口的 RIP 协议:
我已经给这两个路由器的各接口也启动了 RIP 协议。下面我们进行一下单步仿真,那么我们点击这里捕获前进。我们可以看到对于主机而言的,那么这里面他并不接收路由器发来的 RIP 请求,因为在主机里面我们并没有启动 RIP 协议,也没有监听 520 端口的相应的进程。那么我们再进行单步的仿真,那么我们再继续之后我们每进行一次单步仿真,我们就可以看到这些路由器他们在周期性的发送 RIP 的更新报文。
经过几个轮次的这样的周期性的邻居路由器之间相互发送 RIP 更新以后,我们可以看一下路由器的路由表会发生什么样的变化。那么我们选择这儿的查看按钮,然后我们来看一下右边路由器的路由表,那么这个很显然它的路由表里面添加了很多的东西,那么这两条标志为 C 的是它的这两个直连网络,而其他的这 4 条这儿标记的是 R 也就是它通过 RIP 协议学习来的到达目的网络的路由。
那么这里面比如说这条 30.0.0.0/8 就是到它到达 30 网络的这条路由。那么这里面还有一条也是到达 30 网络,我们可以看到它的下一跳这个地方写的是不一样的,上面这一条是通过 20.0.1 也就是通过这个地方,也就是右边路由器要到达 30 网络,它可以通过上面这个路由器去就到达,那么也可以通过 10.0.0.1 这个上面看到的应该是左边路由器,这两条都可以到达这个 30 目的网络,并且他们是等价的。
那么比如说这一条的话,192.168.0.0,也就是路由器要到达上面目的网络,他下一跳跳给 20.0.1,也就是要跳给这个上面路由器,他并没有说要跳给左边路由器,这是因为跳给上面路由器才是最短的距离,也就是路由器数量最少。
那么同理到达 192.168.1.0 网络,它下一跳这儿显示的要跳给 10.0.0.1,也就是左边路由器,而不是给上面这个路由器。那么另外还要说明一下,那么在这个里面的度量的话,我们可以看到到达这几个网络的话,它的度量值距离都是一,而前面 120 是它的管理距离,管理距离是区分不同的路由选择协议的,思科的 RIP 协议他默认为他的协议就是 120。
这样的话我们各个路由器就可以得出到达这些目的网络去,那么它的最短的这样的一个路由是什么样子。
我们把鼠标状态切换回选择状态,那么下面我们再从仿真模式切换到实时模式,然后我们用下面这台主机来 ping 一下上面这台主机,用下面这个主机来 ping 一下上面这个主机,我们来看一下是否能够 ping 通。PING 然后上面主机的 IP 地址是 192.168.0.1,。那么 ping 是连续发 4 个 ICMP 的请求报文,我们可以看到第一次超时了,然后之后就收到了来自 192.168.0.1,也就这台主机的响应。那么我们再 ping 一次应该是发 4 个请求收到 4 个响应。那么第一次请求超时,我们在以前的仿真实验中经常见到,那么就是因为 ARP 协议它在后台进行的 ARP 协议,也就是寻找目的 IP 地址和 MAC 地址的对应关系,造成的路由器直接把带转发的数据包给它丢掉。
C:\>ping 192.168.0.1
Pinging 192.168.0.1 with 32 bytes of data:
Request timed out.
Reply from 192.168.0.1: bytes=32 time=5ms TTL=126
Reply from 192.168.0.1: bytes=32 time=5ms TTL=126
Reply from 192.168.0.1: bytes=32 time=5ms TTL=126
Ping statistics for 192.168.0.1:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 5ms, Maximum = 5ms, Average = 5ms
2
3
4
5
6
7
8
9
10
11
12
13
那么这样的话这两台主机就 ping 通了,也就是说 RIP 协议它自动找到的路由,使得我们两个主机可以通信。我们把这个窗口给它关掉。那么我们再来具体看一下,这两台主机相互通信他们是走的哪一条路由?是这一条红色的这一条,也就是低速链路这一条路由,还是说从左边路由器到右边这个路由器,然后再到上面路由器,最终到这个目的网络是这样一条路由。那么我们切换到仿真模式,然后我们让主机给上面主机发送一个 ICMP 的请求报文,看看他到底走哪一条路由。点击这个地方的添加简单的 PDU 然后指定源主机是下面这台主机,然后指定目的主机是上面这台主机,然后我们就进行单步仿真。
我们可以看到主机把 ICMP 的报文先发给他的默认网关,也就路由器,然后我们看一下它是转发给上面这个路由器,还是它右边这个路由器,转发给上面路由器,然后最终 ICMP 报文被转发给上面这台主机,这也就要验证了内部协议他认为好的路由是经过的路由器数量越少越也就是距离越短越好。
下面请您思考这样一个问题,如果在右边这个路由器里面有一系列的数据包要到达这个 IP 地址,也就是要去往上面路由器的接口 30.0.0.1,那么会走怎样的路由呢?是走上面这条低链路路由到这个接口,还是走下面这条路由到接口?实际上这两条路由是等价的,因为从上面路由来看,到达 IP 地址所在的网络,它的距离应该是中间只通过这一个路由器,也就是距离为一,如果走下面这条路由到达这个地方到达 IP 地址所在网络,仍然是中间只经过一台路由器,也就是这个路由器,所以说这两个路由是等价的。那么 RIP 协议的话对于等价的路由来说的话,它会做负载均衡。
接下来我们就来验证一下,用路由器我们去 ping 一下这个 IP 地址,那么我们可以看一下 ping 的 ICMP 的报文,他是不是一会走这个路由,一会走下面这个路由,那么我们先切换到仿真模式。然后我们看一下之前的场景,现在已经没有了,那么我们点击这个路由器,然后我们进入到它的命令行界面,然后我们回车,好输入 EN,然后我们进入到特权模式,然后我们来 ping 30.0.0.1。我们回车,这个时候我们就可以看到路由器准备发送 ICMP 的报文,我们看第一个报文走哪一条路径?那么我们把这个地方制定然后我们单击单步仿真,好我们可以看到它走了上面的这段路由,然后路由器呢的这个接口给我们路由器发回来了响应。
那么接下来我们再看路由器准备发第二个 ICMP 的报文,那么我们会发现它走了下面这条路由然后再传递给上面路由器的接口。这个接口然后再把发回来,它并没有按照这一条路由发回来,它是按照上面的这一条路由把它发回来。那么我们接着再来看,当这个路由器再去发送第三个 ICMP 的报文,它应该走上面路由,我们看一下是不是这样?是的,然后上面路由器再发送响应回来,那么当我们再次让他发送第 4 个的时候,应该是走下面路由。这样我们就验证了 RIP 的负载均衡。
本实验就进行到这里,相信您已经体会到 RIP 协议的作用,以及 RIP 协议衡量好路由的标准。