APP下载

路由信息协议虚拟仿真系统设计

2019-08-15李冬霞金恒丰

实验室研究与探索 2019年7期
关键词:路由表计时器路由器

李冬霞,陈 佩,金恒丰

(中国民航大学 电子信息与自动化学院,天津 300300)

0 引 言

路由信息协议(Routing Information Protocol,RIP)是Internet的标准协议[1],属于最早应用的分布式域内路由协议。由于其配置简单、兼容性强等优点,在小型网络中一直广泛使用,具有很强的生命力[2-3]。RIP作为典型的动态路由协议,也成为计算机网络类课程教学中的重点,由于所涉及到的路由算法及运行原理过于抽象,同时也是教学中的难点,如何设计能充分展现RIP原理的仿真实验显得尤其重要[4]。

当前,已有多种基于软件或软硬件相结合的RIP仿真实验系统在教学实践中使用[5-9],这些系统大多是在所使用的网络系统仿真软件(如GNS3,Packet Tracer等)环境下,将路由器的工作协议配置为RIP,实验过程强调配置方法以及运行结果验证,并不能动态展示RIP的具体运行过程,不利于学生真正理解RIP工作原理。也有部分实验系统是用户自主开发的网络协议仿真系统[10-11],但是很少涉及到RIP路由协议,软件功能也不够完善。本文设计了专门针对RIP的虚拟仿真系统,直观形象地展示RIP动态运行全过程,并辅以实时的运行状态说明,便于学生深入透彻地理解RIP的动态路由特性和功能;同时也为理解更为复杂的动态路由协议、剖析路由器功能,掌握计算机网络整体运行规律起到积极的作用。

1 系统功能与结构

1.1 系统功能

RIP是以跳数(hop count)作为度量的距离向量路由协议,通过与相邻路由器动态交换路由信息,实现在一个自治系统内部的路由选择;利用更新、失效、垃圾收集和抑制等计时器调节其运行状态。为了防止路由环路的发生以及在网络结构发生变化时缩短网络收敛时间,RIP使用水平切割、毒性逆转、触发更新及抑制计时等稳健机制[1-3]。本文基于RIP v2(RFC2453)标准[12]设计RIP虚拟仿真系统,该系统具备以下关键功能:

(1)基本功能。在RIP各稳健机制条件下,对各类路由信息报文交互过程、计时器工作时间、路由表内容更新等基本功能进行动态仿真,并针对各运行状态进行必要的原理解释与状态说明。

(2)最优路径算法仿真。距离向量算法的基础是Bellman_Ford算法,本文设计了Bellman_Ford最优路径算法仿真子系统,通过选择不同链路代价值,验证最优路径计算结果。该子系统也便于使用者理解使用Bellman_Ford算法的其他路由协议。

(3)路由信息报文内容展示。对RIP路由信息报文内容的解析是理解路由策略和状态变化最直接的方法,本文系统提供捕获正在交互的路由信息报文,查看其封装格式与内容的功能。

(4)RIP缺陷仿真。对RIP缺陷的认识是学习该协议不可缺少的部分。本文系统包含RIP缺陷仿真子系统,通过实例展示其路由缺陷,便于将RIP与其他路由协议进行性能比较。

1.2 整体结构

RIP虚拟仿真系统由协议说明子系统、显示子系统、控制子系统及计时器子系统等4大部分组成,整体框图如图1所示。

图1 RIP虚拟仿真系统组成

图1中,协议说明子系统对仿真系统软件的设计与操作、RIP的稳健机制和计时器功能进行说明,同时也包括Bellman_Ford算法仿真、RIP缺陷仿真调用及其说明等。显示子系统包括路由过程动态演示、报文具体内容显示、路由表内容动态变化显示3部分;显示子系统各部分皆相互关联,即在路由过程动态演示过程中可以同时显示报文具体内容和路由表内容动态变化情况。控制子系统包括仿真进程控制和仿真模式控制,与计时器子系统和显示子系统协调运行,控制路由过程仿真。计时器系子统模拟RIP各计时器功能。

2 关键功能设计与实现

本文选用面向对象语言C#,在Visual Studio编译环境下利用.NET Framework平台开发RIP虚拟仿真系统[13],以下描述系统关键功能设计与实现方法。

2.1 主界面设计与实现

本文系统主界面包括菜单栏、RIP工作进程仿真区、路由表显示区和功能控制区4大部分,各区域分布如图2所示。

主界面菜单栏的设计有两个目的:一是方便用户熟悉系统本身的操作流程;二是方便用户在系统使用过程中随时查阅RIP原理和关键功能描述,更好地理解和验证仿真系统运行结果。

RIP工作进程仿真区是系统软件运行的核心区域,用于展示RIP报文的动态交互过程。以仿真系统结构(6台主机通过3台交换机连到3台路由器)作为背景,右侧使用不同颜色的信封标签标识RIP 4种类型报文,同时提供RIP报文标准格式及网络拓扑说明链接,方便使用者查阅路由器接口配置信息[15]和网段划分情况。

路由表显示区模拟真实的路由表内容,显示每条路由的“编号”“类型”“目的网络”“端口”“下一跳IP地址”及“度量值”。为方便观察各路由表动态状态变化,这里将3台路由器的路由表同时显示,其内容变化完全同步于RIP工作进程。

功能控制区分为上下两部分。上半部分由“激活”“断开端口”“暂停”“复位”按钮控制当前仿真进程,下半部分控制各种稳健机制模式。

RIP虚拟仿真系统启动运行后,首先出现欢迎界面,暂停一段时间(3~5 s)后自行关闭,随之出现图2所示的主界面;在协议功能仿真过程中需要大量可选择性显示的报文及协议说明、状态说明等。以上功能均利用C#中Form窗体类实现[14],设计时通过调用自定义方法来改变新实例化窗体的标题、背景等信息,这样可以使代码简洁明了,亦可大大减少工作量。

2.2 数值产生与比较功能实现

Bellman_Ford算法仿真和RIP缺陷仿真都需要生成链路代价值,并进行数值大小比较。本文在随机数组的生成及显示设计过程中,提供用户自主选择数值和系统自动随机取值两种方式。首先根据所需条件(如:随机数数量,数值的最小值、最大值)生成合适的随机数组,调用C#自带的随机数生成功能,以计算机当前时间生成参数,将生成的随机数依次填入数组,再将数组中的内容转化为字符串形式填入选择框中。数值大小比较之前,需将窗口中输入的字符串类型的数值转换为整型,而后通过数值判断和比较得到所选择的数据。

图2 系统主界面

2.3 显示功能实现

(1)动画效果的实现。RIP报文的产生与交互过程均以动态变化形式展示,动画效果的实现需与计时器配合。先建立一个合适大小的位图控件作为报文的载体模型,再利用计时器逐步改变此位图控件的可视状态、位置等,即可出现动画效果,这里计时器触发间隔设计为120 ms。

(2)路由表信息动态显示。路由表信息的显示使用dataGridView控件[13]实现,每个路由器的路由表对应一个独立dataGridView控件。通过对此控件中的条目进行添加、修改、删除等操作,模拟出路由表信息实时变化的效果。Bellman_Ford算法仿真子系统中路由表信息的动态结果显示采用相同方法设计。

(3)状态说明标签的显示。状态说明标签用于对系统仿真运行过程中所经历的各状态进行辅助说明。为避免代码行过长,在设计时没有采用常规的字符串设计方式,而是将所有仿真过程说明内容存储在一个外部“.txt”文档中,需要使用时创建“写入流(Stream Reader)”,以默认编码方式打开指定的文档,再按文本行采用循环方式进行读取,实现调用。

2.4 控制功能设计与实现

本文系统提供默认仿真与稳健机制仿真两种具体仿真模式,二者所开启的稳健机制数量和路由器的初始状态不同。默认仿真模式下“毒性逆转”没有开启,稳健机制仿真模式可选择4种具体的稳健机制类型。控制功能中的进程控制是指在仿真过程中的任何时刻允许进行“暂停/继续”、“复位”操作,以便查看报文内容和计时器时间等信息;也可以进行“断开端口”操作,模拟某端口断开事件发生后路由动态更新过程。

2.5 计时器系统设计与实现

RIP中各种计时器功能使用计时器控件模拟实现。考虑到为每条路由条目设置多个计时器并不是仿真系统实现的最佳选择,故在功能实现过程中部分计时器存在多重利用现象。RIP规定的周期更新间隔为25.5~30 s之间的某个随机值[3],本仿真系统的路由器数量不多,且报文的模拟传输也不是瞬时完成,设计时将更新时间固定为26 s,并使各路由器发送周期报文的时间相互错开。

3 系统功能验证

限于篇幅,以下仅就RIP虚拟仿真系统默认仿真模式下的部分功能以及Bellman_Ford算法仿真验证结果进行说明。

3.1 Bellman_Ford算法仿真验证

图3所示为Bellman_Ford算法仿真窗口,包括算法说明,操作区域和最下方的结果显示区域3部分。仿真操作分为以下3个步骤。

(1)链路代价设置。各链路的代价值有选择设置与随机设置两种设置方法。图3所示每条链路设有下拉列表,包含8个可选择的链路代价值。当采取随机设置时,点击“随机取值”按钮可自动进行随机链路代价值设置。

图3 Bellman_Ford算法演示窗

(2)获取Bellman_Ford算法结果。点击“获取结果”按钮,将根据所设置的链路代价值计算出最短路径并显示于结果显示区域。以顶点C作为源结点得出的计算过程及结果如图4所示。

hLh(A)PathLh(B)PathLh(D)PathLh(E)PathLh(F)Path0∞//∞//∞//∞//∞//1∞//3C-B∞//1C-E2C-F24C-B-A2C-E-B2C-E-D1C-E2C-F33C-E-B-A2C-E-B2C-E-D1C-E2C-F43C-E-B-A2C-E-B2C-E-D1C-E2C-F53C-E-B-A2C-E-B2C-E-D1C-E2C-F

图4 最短路径计算结果显示

(3)清零操作。若需要再次验证最优路径计算结果,则先进行清零操作,清除上次链路代价设置结果与最短路径计算结果,否则两次计算结果将会重叠,影响查看效果。

3.2 默认仿真模式功能验证

默认情况下,RIP虚拟仿真系统启动后进入默认仿真模式,“水平切割”和“触发更新”机制默认开启。此时可观察到路由器Router0(简称R0)从激活到完全融入网络的报文交互完整过程,以及发生“断开/连接端口”事件时各路由器的路由表状态变化情况。

(1)“激活”功能。点击功能控制区域的“激活”按钮,路由器R0的RIP进程被激活,开始发送RIP“请求报文”到路由器Router1(简称R1),发送过程截图如图5所示;R1随即向R0返回RIP“应答报文”,如图6所示。

图5 R0发送“请求报文”到R1

图6 R1发送“应答报文”到R0

(2)报文内容查看功能。点击“暂停”按钮,再点击图5中R0发出的“请求报文”标签,即可查看其具体内容。如图7所示,此报文的命令域显示为“1”(16进制显示),版本号为“2”,地址标识符为“0”,Metric值为“16”,其余为“0”,可判断此数据包属于RIPv2的请求报文,并请求全部内容。

0x010x020x00000x00000x00000x000000000x000000000x000000000x00000000

图7 R0发送的“请求报文”内容

同理,也可对图6中R1发送的“应答报文”内容进行查看,如图8所示。此报文的命令域为“2”,地址标识符为“2”,可判断其为应答报文,其中包含3条路由信息,内容分别为(16进制显示):

0x020x020x00000x00020x00000xC0A801000xFFFFFF000x000000000x000000010x00020x00000xC0A803000xFFFFFF000x000000000x000000010x00020x00000xC0A804000xFFFFFF000x000000000x00000002

图8 R1发送的“应答报文”内容

● IP:192.168.1.0,跳数1,子网掩码255.255.255.0;

● IP:192.168.3.0,跳数1,子网掩码255.255.255.0;

● IP:192.168.4.0,跳数2,子网掩码255.255.255.0。

(3)路由更新功能。R0接收到R1的应答报文,发现其中含有全新的路由信息,便更新其路由表,如图9所示。与图2所示的初始路由相比,增加了编号为3、4、5的3条RIP路由信息。

图9 R0路由表(更新后)

(4)“断开端口”模拟仿真。点击“断开端口”按钮后,路由器R0下方的端口被断开,端口连接指示灯由绿色变为红色。若此时离R0的周期更新时间较长,R0将会向R1发送一个“触发更新”报文,如图10所示;若此时离R0的周期更新时间较短,即R0的周期更新立即开始,此时R0会向R1发送“周期报文”,触发更新的内容将会包含在周期更新之中,触发更新取消。图11所示为R0向R1发送“周期报文”,同时R1也向R0和R3发送“周期报文”。

“断开端口”后R0路由表发生变化,如图12所示,与断开的端口相连的网络(192.168.2.0)的跳数变成了“16”,若在60s(两个更新周期)之内没有再次连接,则此路由条目将被删除。

图10 端口断开后R0发送“触发更新”报文

图11 端口断开后R0发送“周期更新”报文

图12 R0路由表(断开端口后)

4 结 语

与已有的RIP仿真系统相比,本文设计的RIP虚拟仿真系统可透视RIP内部,对其运行过程进行全面动态展示,对关键的最短路径选择算法和协议缺陷也进行功能仿真。系统人机交互友好,仿真过程完全可控,对于路由表与具体报文信息的查看非常直观便利,在笔者教学实践中得到了学生普遍欢迎。该系统设计方法也可为其他动态路由协议仿真系统的设计提供有价值的参考。

猜你喜欢

路由表计时器路由器
买千兆路由器看接口参数
松鼠的计时器
维持生命
路由器每天都要关
路由器每天都要关
基于OSPF特殊区域和LSA的教学设计与实践
超高精度计时器——原子钟
研究路由表的查找过程
抗缪勒氏管激素:卵巢功能的计时器!
竖向固定电火花打点计时器的技巧