一、实验环境
1、在Windows10系统下用Dynamips软件进行实验
2、实验拓扑图:
二、实验目的
1、在上一次实验的基础上实现RIP和OSPF路由协议
2、自己设计网络物理拓扑和逻辑网段,并在其上实现RIP和OSPF协议(不能少于4台路由器,要求IP地址第二位是学号后三位%255)
3、通过debug信息详细描述RIP和OSPF协议的工作过程,包括初始信息交互、路由计算、链路故障处理等部分。(要修改部分链路,观察工作过程)
4、RIP协议中观察没有配置水平分割和配置水平分割后协议的工作流程,和路由消息传递方式;(要修改部分链路,观察区别,默认有水平分割)
5、 OSPF中数据库同步信息的格式和同步对象?链路改变信息如何发送,具体格式(要修改部分链路,观察消息传递过程)
三、实验内容及步骤(包括主要配置流程,重要部分需要截图)
1、在记事本中根据拓扑图改写路由器配置,并生成.net文件,路由器R1-R4端口号分别为3001-3004,PC1-PC3端口号分别为3005-3007
autostart = false
[localhost]
port = 7200
udp = 10000
workingdir = ..\tmp\
[[router R1]]
image = ..\ios\unzip-c7200-is-mz.122-37.bin
model = 7200
console = 3001
npe = npe-400
ram = 64
confreg = 0x2102
exec_area = 64
mmap = false
slot0 = PA-C7200-IO-FE
slot1 = PA-4T
f0/0 = PC1 f0/0
s1/1 = R2 s1/0
[[router R2]]
image = ..\ios\unzip-c7200-is-mz.122-37.bin
model = 7200
console = 3002
npe = npe-400
ram = 64
confreg = 0x2102
exec_area = 64
mmap = false
slot0 = PA-C7200-IO-FE
slot1 = PA-4T
s1/2 = R3 s1/1
s1/3 = R4 s1/1
[[router R3]]
image = ..\ios\unzip-c7200-is-mz.122-37.bin
model = 7200
console = 3003
npe = npe-400
ram = 64
confreg = 0x2102
exec_area = 64
mmap = false
slot0 = PA-C7200-IO-FE
slot1 = PA-4T
f0/0 = PC2 f0/0
[[router R4]]
image = ..\ios\unzip-c7200-is-mz.122-37.bin
model = 7200
console = 3004
npe = npe-400
ram = 64
confreg = 0x2102
exec_area = 64
mmap = false
slot0 = PA-C7200-IO-FE
slot1 = PA-4T
f0/0 = PC3 f0/0
[[router PC1]]
model = 2621
ram = 20
image = ..\ios\unzip-c2600-i-mz.121-3.T.bin
mmap = False
confreg = 0x2102
console = 3005
[[router PC2]]
model = 2621
ram = 20
image = ..\ios\unzip-c2600-i-mz.121-3.T.bin
mmap = False
confreg = 0x2102
console = 3006
[[router PC3]]
model = 2621
ram = 20
image = ..\ios\unzip-c2600-i-mz.121-3.T.bin
mmap = False
confreg = 0x2102
console = 3007
2、在上级目录中生成.cmd文件,作为控制台使用,在bin目录的script下的copyright生成,后使用dynagen生成可执行文件,具体内容是第一步生成的bupt_RT1.net文件。
3、启动虚拟服务win10.启动bupt_RT1,使用list指令查看设备数量及状态,使用start指令分别启动路由器,再次使用list指令查看设备状态,发现都是运行中,接着进行下面的操作
4、使用telnet指令分别对路由器参数进行配置
5、对R1进行端口配置,其中包括s端和f端,并注意每次配置完端口都要使用no shutdown指令来激活端口,对端口配置设置ip号时,ip地址的第二位需保留为学号%255,我的学号尾号为297,因此ip地址的第二位为297%255=42
6、对R2进行端口配置,其中包括s端和f端,并注意每次配置完端口都要使用no shutdown指令来激活端口
7、对R3进行端口配置,其中包括s端和f端,并注意每次配置完端口都要使用no shutdown指令来激活端口
8、对R4进行端口配置,其中包括s端和f端,并注意每次配置完端口都要使用no shutdown指令来激活端口
9、对PC1端口进行配置,以及默认静态路由配置。此处匹配IP地址时,0表示wildcard, 任何值都可以。所以0.0.0.0和任何目的地址匹配都会成功,造成默认路由要求的效果,因此两个ip段均为0.0.0.0
10、对PC2端口进行配置,以及默认静态路由配置
11、对PC3端口进行配置,以及默认静态路由配置
12、对R1的rip协议配置
13、对R2的rip协议配置
14、对R3的rip协议配置
15、对R4的rip协议配置
16、路由器R1的show ip route信息:
17、R1的debug信息:
18、结束当前debug,关闭R2的s1/0水平分割后的debug信息:
rip协议减少路由环路以及加快收敛速度的方法可以通过水平分割实现,即从某接口学习来的路由信息不能再从该接口发送出去,可以避免两个路由器间的路由环路问题。但通过关闭R2后查看debug的信息,每次都会接收到1.0.0.0的信息并发送出去,造成了路由环路,久而久之会造成资源的消耗
19、关闭rip协议,对R1进行ospf配置:
20、关闭rip协议,对R2进行ospf配置:
21、关闭rip协议,对R3进行ospf配置:
22、关闭rip协议,对R4进行ospf配置:
23、配置成功后显示R2的ospf邻居信息:
24、R2的debug信息:
由debug信息可以看出,ospf协议工作时,通过组播hello包来发现邻居,左右的邻居都有可能跟自己交换链路状态信息,建立邻接关系,然后传递链路状态信息,在网络稳定后,信息就不再更新就只有hello包的传递,如果链路发生变化,路由器广播改变的信息给其他的路由器
四、实验结果
rip:
1、PC1通过ping指令连接到PC2和PC3,看数据是否可以在通路中传输,发现五个包均可以正常传输:
2、PC2通过ping指令连接到PC1和PC3,看数据是否可以在通路中传输,发现五个包均可以正常传输:
3、PC2通过ping指令连接到PC1和PC3,看数据是否可以在通路中传输,发现五个包均可以正常传输:
ospf:
通过ping指令发现数据形成通路
五、实验中的问题及心得
本次试验收获颇多,起初最大的问题就是如何设计拓扑图并对各个路由器、网络取ip地址,然后需要自己修改.net文件,在记事本中自己生成了.net文件后通过查询bupt_RT的方法改写了属于自己的bupt_RT1进行实验,通过查看bupt_RT的代码对于.cmd可执行文件在dynamips中的生成有了更深的认识,对于路由器的参数配置等等都是基本功了,不必多说。
在对于三个PC的静态路由配置时,由于连接到多个网络,便使用了万能的0.0.0.0。通过关闭水平分割查看debug对于rip协议有了更深的理解,也明白了rip协议的网络环路的产生以及rip协议自身的一些小缺陷,比如不能完全避免网络环路以及只适用于小型网络,以跳数作为最优路径的选取也颇为欠妥,同时超过十六跳便默认为无穷远,带来颇多不便。这时使用ospf协议,虽然它适合于大型网络,可以动态更新路由器的状态,但是更新周期长也算是一个存在的问题了。
在puppy中进行路由器端口、状态的配置也对于我的耐力进行了一定的提升,有时候配置路由器信息时忘记exit返回上级目录直接在接口中做,当反应过来时为时已晚,也不知道如何进行调试,只好关闭窗口重来,但是关闭puppy窗口再次进入时就会报错,所以不得不把所有的puppy窗口和两个初始命令窗口都关闭再重新配置,导致实验周期过长,浪费在了大量时间在配置上,所以尽管完全做出实验还是有一些难过,希望下次可以多一些耐心和细心,争取一次性完成配置以及调试功能
六、实验思考
1、路由表显示方式会有差别,但管理距离相同,带送出接口的静态路由条目后面直接跟送出接口,路由器只需要一次路由表查找,便能将数据包转发到送出接口,从这点来看查找路由表效率比带下一跳地址要高,但如果开启CEF,则不存在此问题,对于用送出接口的静态路由,如果出站接口为以太网,且关闭了ARP代理,如果在默认情况下以太网接口启用了ARP代理会造成数据包封装失败,所以最好使用下一跳来配置
2、rip属于距离向量协议,使用距离(一般用跳数)作为度量rip来决定“最佳”路径(rip规定metric最大跳数为15高于此的都不可达,为无穷远,因此适合中小型网络,同时rip具有易配置的优点,在没有多重路径的网络中被广泛使用,但是收敛(Convergence)时间长、适用的网络规模小,在具有易配置的优点在没有多重路径的网络中被广泛使用。OSPF属于开放最短路径优先协议,是由IETF所属的IGP工作组负责开发的一种基于SPF(最短路径优先)算法的路由协议,OSPF的路由选择基于网络中物理链路的状态的变化,并且
该变化能够被立即广播到网络中的每一个路由器,能够实现快速适应网络拓扑变化的功能,OSPF更加适合于大型的互联网络,但是OSPF仍然存在路由计算量大、交互信息多的缺陷,详见debug图:
rip
ospf
3、
(1)PC1与PC2通信时,在PC1应用层产生数据交给传输层;传输层进行数据的分段,使数据的大小适合在网络上传递,根据应用层不同软件产生的数据,选择不同协议栈进行封装TCP或UDP,再进行不同服务端口号的封装,再传递给网络层;网络层在数据包头部进行封装源IP:10.42.0.2、目的IP:20.42.0.1,根据上层协议栈标识不同协议号,继续传递给数据链路层;数据链路层在数据包头部进 行帧的封装,封装源MAC、目的MAC,由于不知道目的MAC地址,会发送ARP的广播包。
(2)路由器R1收到PC1发来的ARP广播,进行解封,查看到数据包中的类型字段为ARP的广播包,进行回复,源MAC为路由器R1的MAC,目的MAC为PC1的MAC,封装后发送给PC1
(3)PC1接收数据包后进行解封,学习到路由器(网关)的MAC,在数据链路层将目的MAC封装为路由器R1的MAC,并在数据帧尾部封装FCS,来校验数据的完整性,然后向下层传递给物理层,发送给路由器R1
(4)路由器R1接收到数据包后进行解封装,在数据包头部发现目的ip:20.42.0.1,便 查找路由表条目中对应的端口,便对数据进行重写,由于不知道目的主机的MAC地址,路由器会发送ARP广播,R2收到数据包进行解封,发现是ARP广播,然后对其进行封装回复,源MAC为R2的MAC,目的MAC为R1的MAC,路由器R1收到后把R2对应的MAC地址和端口记录在MAC表中,R1接受到信息,便对数据进行解封装,发现目的ip不是给自己的,进行和R1相同的动作,直到将数据包发给PC2
(5)PC2解封装后发现目的ip是给自己的,然后继续解封装,然后把数据传送给应用程序。然后对路由回复。在网络层将源ip设为20.42.0.1,目的ip设为10.42.0.2,在数据链路层设置源mac,封装FCS,然后经物理层将数据转为bit流传给路由器,路由器再查找路由表,并对数据进行重写,查找mac表,再对数据进行封装,传送给PC1通信完成