一、实验环境

1、在Windows10系统下用Dynamips软件进行实验

2、实验拓扑图:

ospf 引入 非激活路由 ospf引入rip路由_封装

 

二、实验目的

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

ospf 引入 非激活路由 ospf引入rip路由_网络_02

2、在上级目录中生成.cmd文件,作为控制台使用,在bin目录的script下的copyright生成,后使用dynagen生成可执行文件,具体内容是第一步生成的bupt_RT1.net文件。

ospf 引入 非激活路由 ospf引入rip路由_封装_03

ospf 引入 非激活路由 ospf引入rip路由_ospf 引入 非激活路由_04

3、启动虚拟服务win10.启动bupt_RT1,使用list指令查看设备数量及状态,使用start指令分别启动路由器,再次使用list指令查看设备状态,发现都是运行中,接着进行下面的操作

ospf 引入 非激活路由 ospf引入rip路由_链路_05

4、使用telnet指令分别对路由器参数进行配置

5、对R1进行端口配置,其中包括s端和f端,并注意每次配置完端口都要使用no shutdown指令来激活端口,对端口配置设置ip号时,ip地址的第二位需保留为学号%255,我的学号尾号为297,因此ip地址的第二位为297%255=42

ospf 引入 非激活路由 ospf引入rip路由_ip协议_06

6、对R2进行端口配置,其中包括s端和f端,并注意每次配置完端口都要使用no shutdown指令来激活端口

ospf 引入 非激活路由 ospf引入rip路由_链路_07

7、对R3进行端口配置,其中包括s端和f端,并注意每次配置完端口都要使用no shutdown指令来激活端口

ospf 引入 非激活路由 ospf引入rip路由_ospf 引入 非激活路由_08

8、对R4进行端口配置,其中包括s端和f端,并注意每次配置完端口都要使用no shutdown指令来激活端口

ospf 引入 非激活路由 ospf引入rip路由_链路_09

9、对PC1端口进行配置,以及默认静态路由配置。此处匹配IP地址时,0表示wildcard, 任何值都可以。所以0.0.0.0和任何目的地址匹配都会成功,造成默认路由要求的效果,因此两个ip段均为0.0.0.0

ospf 引入 非激活路由 ospf引入rip路由_ip协议_10

10、对PC2端口进行配置,以及默认静态路由配置

ospf 引入 非激活路由 ospf引入rip路由_封装_11

11、对PC3端口进行配置,以及默认静态路由配置

ospf 引入 非激活路由 ospf引入rip路由_网络_12

12、对R1的rip协议配置

ospf 引入 非激活路由 ospf引入rip路由_ip协议_13

13、对R2的rip协议配置

ospf 引入 非激活路由 ospf引入rip路由_链路_14

14、对R3的rip协议配置

ospf 引入 非激活路由 ospf引入rip路由_ip协议_15

15、对R4的rip协议配置

ospf 引入 非激活路由 ospf引入rip路由_ospf 引入 非激活路由_16

16、路由器R1的show ip route信息:

ospf 引入 非激活路由 ospf引入rip路由_ip协议_17

17、R1的debug信息:

ospf 引入 非激活路由 ospf引入rip路由_封装_18

18、结束当前debug,关闭R2的s1/0水平分割后的debug信息:

ospf 引入 非激活路由 ospf引入rip路由_链路_19

ospf 引入 非激活路由 ospf引入rip路由_ospf 引入 非激活路由_20

rip协议减少路由环路以及加快收敛速度的方法可以通过水平分割实现,即从某接口学习来的路由信息不能再从该接口发送出去,可以避免两个路由器间的路由环路问题。但通过关闭R2后查看debug的信息,每次都会接收到1.0.0.0的信息并发送出去,造成了路由环路,久而久之会造成资源的消耗

19、关闭rip协议,对R1进行ospf配置:

ospf 引入 非激活路由 ospf引入rip路由_链路_21

20、关闭rip协议,对R2进行ospf配置:

ospf 引入 非激活路由 ospf引入rip路由_链路_22

21、关闭rip协议,对R3进行ospf配置:

ospf 引入 非激活路由 ospf引入rip路由_ip协议_23

22、关闭rip协议,对R4进行ospf配置:

ospf 引入 非激活路由 ospf引入rip路由_网络_24

23、配置成功后显示R2的ospf邻居信息:

ospf 引入 非激活路由 ospf引入rip路由_ospf 引入 非激活路由_25

24、R2的debug信息:

ospf 引入 非激活路由 ospf引入rip路由_封装_26

由debug信息可以看出,ospf协议工作时,通过组播hello包来发现邻居,左右的邻居都有可能跟自己交换链路状态信息,建立邻接关系,然后传递链路状态信息,在网络稳定后,信息就不再更新就只有hello包的传递,如果链路发生变化,路由器广播改变的信息给其他的路由器

四、实验结果

rip:

1、PC1通过ping指令连接到PC2和PC3,看数据是否可以在通路中传输,发现五个包均可以正常传输:

ospf 引入 非激活路由 ospf引入rip路由_ip协议_27

2、PC2通过ping指令连接到PC1和PC3,看数据是否可以在通路中传输,发现五个包均可以正常传输:

ospf 引入 非激活路由 ospf引入rip路由_ip协议_28

3、PC2通过ping指令连接到PC1和PC3,看数据是否可以在通路中传输,发现五个包均可以正常传输:

ospf 引入 非激活路由 ospf引入rip路由_链路_29

ospf:

通过ping指令发现数据形成通路

ospf 引入 非激活路由 ospf引入rip路由_ip协议_30

五、实验中的问题及心得

本次试验收获颇多,起初最大的问题就是如何设计拓扑图并对各个路由器、网络取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图:

ospf 引入 非激活路由 ospf引入rip路由_ip协议_31

rip

ospf 引入 非激活路由 ospf引入rip路由_ip协议_32

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通信完成