路由协议实验:RIP

2015年11月26日

一、实验目的

通过简单实验来了解RIP动态路由协议

二、RIP简介

  • 百度百科

  • RIP V1数据报格式
    • 命令:1表示RIP请求,2表示RIP应答
    • 度量:度量为16,AFI为0时,表示RIP请求,用于请求整个路由表信息;RIP响应度量为16,表示路由不可达
  • RIP的主要缺点
    • 最大跳数为15,限制网络规模
    • 交换信息为整个路由表信息,开销更大
    • 坏消息传播得慢,收敛速度慢
    • 跳数为单一度量

图片失效

三、实验环境

  • 网络拓扑图

图片失效

  • 初始路由表
表1 路由表信息
Type Network Next Hop Metric From
CentOS_ROUTER_V1路由表
Connected 192.168.0.0/24 0.0.0.0 1 self
Connected 192.168.1.0/24 0.0.0.0 1 self
CentOS_ROUTER_V2路由表
Connected 192.168.1.0/24 0.0.0.0 1 self
Connected 192.168.2.0/24 0.0.0.0 1 self
CentOS_ROUTER_V3路由表
Connected 192.168.2.0/24 0.0.0.0 1 self
Connected 192.168.3.0/24 0.0.0.0 1 self

四、实验步骤

  • 在CentOS_ROUTER_V1上监听子网192.168.1.0/24上的数据报、在CentOS_ROUTER_V3上监听子网192.168.2.0/24上的数据报
1
2
3
4
5
# 命令 on CentOS_ROUTER_V1
tcpdump -vexnn -i eth1 not igmp and not arp and net 192.168.1.0/24

# 命令 on CentOS_ROUTER_V3
tcpdump -vexnn -i eth1 not igmp and not arp and net 192.168.2.0/24
  • 分别启动RIP路由协议
1
systemctl start ripd.service # 具体的路由器配置请参考《CentOS 7的路由器功能配置》
  • 子网192.168.1.0/24上监听到的数据报
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# CentOS_Router_V1向子网192.168.1.0/24广播RIP请求,AFI为0,度量为16,表示请求完整的路由表信息
04:27:11.275656 00:0c:29:23:1a:0b > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 66: (tos 0xc0, ttl 64, id 54267, offset 0, flags [DF], proto UDP (17), length 52)
    192.168.1.1.520 > 192.168.1.255.520: 
	RIPv1, Request, length: 24, routes: 1
	  AFI 0, 0.0.0.0, metric: 16
	0x0000:  45c0 0034 d3fb 4000 4011 e1ac c0a8 0101
	0x0010:  c0a8 01ff 0208 0208 0020 8482 0101 0000
	0x0020:  0000 0000 0000 0000 0000 0000 0000 0000
	0x0030:  0000 0010
# CentOS_Router_V2向子网192.168.1.0/24广播RIP请求,AFI为0,度量为16,表示请求完整的路由表信息
04:27:13.954645 00:0c:29:ad:d3:58 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 66: (tos 0xc0, ttl 64, id 20291, offset 0, flags [DF], proto UDP (17), length 52)
    192.168.1.2.520 > 192.168.1.255.520: 
	RIPv1, Request, length: 24, routes: 1
	  AFI 0, 0.0.0.0, metric: 16
	0x0000:  45c0 0034 4f43 4000 4011 6664 c0a8 0102
	0x0010:  c0a8 01ff 0208 0208 0020 763b 0101 0000
	0x0020:  0000 0000 0000 0000 0000 0000 0000 0000
	0x0030:  0000 0010
# CentOS_Router_V1收到CentOS_Router_V2广播的RIP请求后,向CentOS_Router_V2发送RIP响应,返回相关路由信息
04:27:13.961053 00:0c:29:23:1a:0b > 00:0c:29:ad:d3:58, ethertype IPv4 (0x0800), length 66: (tos 0xc0, ttl 64, id 32637, offset 0, flags [DF], proto UDP (17), length 52)
    192.168.1.1.520 > 192.168.1.2.520: 
	RIPv1, Response, length: 24, routes: 1
	  192.168.0.0, metric: 1
	0x0000:  45c0 0034 7f7d 4000 4011 3728 c0a8 0101
	0x0010:  c0a8 0102 0208 0208 0020 8385 0201 0000
	0x0020:  0002 0000 c0a8 0000 0000 0000 0000 0000
	0x0030:  0000 0001
# CentOS_Router_V1向子网192.168.1.0/24广播RIP响应,携带自身的相关路由信息
04:27:14.534440 00:0c:29:23:1a:0b > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 66: (tos 0xc0, ttl 64, id 54268, offset 0, flags [DF], proto UDP (17), length 52)
    192.168.1.1.520 > 192.168.1.255.520: 
	RIPv1, Response, length: 24, routes: 1
	  192.168.0.0, metric: 1
	0x0000:  45c0 0034 d3fc 4000 4011 e1ab c0a8 0101
	0x0010:  c0a8 01ff 0208 0208 0020 8482 0201 0000
	0x0020:  0002 0000 c0a8 0000 0000 0000 0000 0000
	0x0030:  0000 0001
# CentOS_Router_V2向子网192.168.1.0/24广播RIP响应,携带自身的相关路由信息(增加了一条关于192.168.3.0的路由信息)
04:27:14.943540 00:0c:29:ad:d3:58 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 86: (tos 0xc0, ttl 64, id 20292, offset 0, flags [DF], proto UDP (17), length 72)
    192.168.1.2.520 > 192.168.1.255.520: 
	RIPv1, Response, length: 44, routes: 2
	  192.168.2.0, metric: 1
	  192.168.3.0, metric: 2
	0x0000:  45c0 0048 4f44 4000 4011 664f c0a8 0102
	0x0010:  c0a8 01ff 0208 0208 0034 eeca 0201 0000
	0x0020:  0002 0000 c0a8 0200 0000 0000 0000 0000
	0x0030:  0000 0001 0002 0000 c0a8 0300 0000 0000
	0x0040:  0000 0000 0000 0002
  • 子网192.168.2.0/24上监听到的数据报
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# CentOS_Router_V3向子网192.168.2.0/24广播RIP请求,AFI为0,度量为16,表示请求完整的路由表信息
04:27:12.308889 00:0c:29:b8:39:ee > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 66: (tos 0xc0, ttl 64, id 21543, offset 0, flags [DF], proto UDP (17), length 52)
    192.168.2.2.520 > 192.168.2.255.520: 
	RIPv1, Request, length: 24, routes: 1
	  AFI 0, 0.0.0.0, metric: 16
	0x0000:  45c0 0034 5427 4000 4011 5f80 c0a8 0202
	0x0010:  c0a8 02ff 0208 0208 0020 8683 0101 0000
	0x0020:  0000 0000 0000 0000 0000 0000 0000 0000
	0x0030:  0000 0010
# CentOS_Router_V2向子网192.168.2.0/24广播RIP请求,AFI为0,度量为16,表示请求完整的路由表信息
04:27:13.952466 00:0c:29:ad:d3:4e > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 66: (tos 0xc0, ttl 64, id 8760, offset 0, flags [DF], proto UDP (17), length 52)
    192.168.2.1.520 > 192.168.2.255.520: 
	RIPv1, Request, length: 24, routes: 1
	  AFI 0, 0.0.0.0, metric: 16
	0x0000:  45c0 0034 2238 4000 4011 9170 c0a8 0201
	0x0010:  c0a8 02ff 0208 0208 0020 743c 0101 0000
	0x0020:  0000 0000 0000 0000 0000 0000 0000 0000
	0x0030:  0000 0010
# CentOS_Router_V2向子网192.168.2.0/24广播RIP响应,携带自身的相关路由信息
04:27:13.952993 00:0c:29:ad:d3:4e > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 66: (tos 0xc0, ttl 64, id 8761, offset 0, flags [DF], proto UDP (17), length 52)
    192.168.2.1.520 > 192.168.2.255.520: 
	RIPv1, Response, length: 24, routes: 1
	  192.168.1.0, metric: 1
	0x0000:  45c0 0034 2239 4000 4011 916f c0a8 0201
	0x0010:  c0a8 02ff 0208 0208 0020 b1a0 0201 0000
	0x0020:  0002 0000 c0a8 0100 0000 0000 0000 0000
	0x0030:  0000 0001
# CentOS_Router_V3收到CentOS_Router_V2广播的RIP请求后,向CentOS_Router_V2发送RIP响应,返回相关路由信息
04:27:13.955278 00:0c:29:b8:39:ee > 00:0c:29:ad:d3:4e, ethertype IPv4 (0x0800), length 66: (tos 0xc0, ttl 64, id 18063, offset 0, flags [DF], proto UDP (17), length 52)
    192.168.2.2.520 > 192.168.2.1.520: 
	RIPv1, Response, length: 24, routes: 1
	  192.168.3.0, metric: 1
	0x0000:  45c0 0034 468f 4000 4011 6e16 c0a8 0202
	0x0010:  c0a8 0201 0208 0208 0020 8585 0201 0000
	0x0020:  0002 0000 c0a8 0300 0000 0000 0000 0000
	0x0030:  0000 0001
# CentOS_Router_V2向子网192.168.2.0/24广播RIP响应,携带自身的相关路由信息(增加了一条关于192.168.0.0的路由信息)
04:27:14.943362 00:0c:29:ad:d3:4e > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 86: (tos 0xc0, ttl 64, id 8762, offset 0, flags [DF], proto UDP (17), length 72)
    192.168.2.1.520 > 192.168.2.255.520: 
	RIPv1, Response, length: 44, routes: 2
	  192.168.0.0, metric: 2
	  192.168.1.0, metric: 1
	0x0000:  45c0 0048 223a 4000 4011 915a c0a8 0201
	0x0010:  c0a8 02ff 0208 0208 0034 f0cb 0201 0000
	0x0020:  0002 0000 c0a8 0000 0000 0000 0000 0000
	0x0030:  0000 0002 0002 0000 c0a8 0100 0000 0000
	0x0040:  0000 0000 0000 0001

五、实验结果分析

  • 结合上述的数据报分析,分析CentOS_Router_V2的路由表的建立过程
    1. 启动时,CentOS_Router_V2在子网192.168.1.0/24和 192.168.2.0/24上广播RIP请求数据报,请求子网上路由器的所有路由表信息
    2. CentOS_Router_V1在子网192.168.1.0/24上,CentOS_Router_V3在子网192.168.2.0/24上,都会向CentOS_Router_V2发送RIP响应报文,告诉CentOS_Router_V2自己本身的路由表信息
    3. CentOS_Router_V1依据收到RIP响应以及自身的路由表记录,选择性地更新自身路由表的信息
      • 若原来没有到达目的网络的路由,添加到路由表
      • 若路由表存在这样的路由记录:下一跳就是发送RIP响应的路由器,那么以最后收到的RIP响应为准
      • 如果上述两条都不满足,且收到的RIP响应的度量+1后小于原先在路由表中的度量,更新
      • 否则,不需要任何动作
    4. CentOS_Router_V2也会选择随机时间向接口所在的局域网上发送RIP响应数据报,将自身的路由表信息通知到其他路由器
  • 最终路由表
表1 路由表信息
Type Network Next Hop Metric From
CentOS_ROUTER_V1路由表
Connected 192.168.0.0/24 0.0.0.0 1 self
Connected 192.168.1.0/24 0.0.0.0 1 self
RIP 192.168.2.0/24 192.168.1.2 2 192.168.1.2
RIP 192.168.3.0/24 192.168.1.2 3 192.168.1.2
CentOS_ROUTER_V2路由表
RIP 192.168.0.0/24 192.168.1.1 2 192.168.1.1
Connected 192.168.1.0/24 0.0.0.0 1 self
Connected 192.168.2.0/24 0.0.0.0 1 self
RIP 192.168.3.0/24 192.168.2.2 2 192.168.2.2
CentOS_ROUTER_V3路由表
RIP 192.168.0.0/24 192.168.2.1 3 192.168.2.1
RIP 192.168.1.0/24 192.168.2.1 2 192.168.2.1
Connected 192.168.2.0/24 0.0.0.0 1 self
Connected 192.168.3.0/24 0.0.0.0 1 self

六、参考内容