基于GNS3的多自治系统路由仿真

2019-05-24 00:46孙光懿贾英霞
实验室研究与探索 2019年4期
关键词:路由表汇总路由器

孙光懿, 贾英霞

(1. 天津音乐学院 图书与信息中心, 天津 300171;2. 商丘经济贸易学校 教务科, 河南 商丘 476000)

0 引 言

当今,互联网已成为全世界重要的信息基础设施,且对人们的学习、生活、工作产生了深远的影响。现实中的Internet并不是一个单一的网络,而是由多个自治系统(Autonomous System, AS)互联互通所构成的巨大网络。在这一过程中路由器等3层网络设备起到了至关重要的作用,通过其上运行的路由协议将非直连网段的路由信息加入到路由表中(与路由器直连网段的路由信息会自动加入到路由表中),为每个通过的数据包去往目的地址提供最佳传输路径。通常路由协议分为静态与动态路由协议,静态路由协议可信度与稳定性最高且配置过程简单,但是需要人工手动进行配置,因此只适用于网络结构稳定的小型网络中。而动态路由协议则可以实时适应大型复杂网络结构的变化,通过重新计算路由来对路由表中的路由条目进行更新,美中不足的是动态路由协议会占用一定的网络带宽与路由器CPU资源。另外,动态路由协议如按照应用范围进行划分,可分为内部网关协议(Interior Gateway Protocol, IGP)与外部网关协议(Exterior Gateway Protocol, EGP)两类[1-3]。在AS内部运行的OSPF、IGRP、EIGRP、RIP、IS-IS[4-6]等路由协议均属于内部网关协议,在AS之间运行的路由协议如BGP协议则属于外部网关协议。本文根据GNS3网络仿真软件设计了多自治系统路由仿真实验,并对实验过程进行了详细分析。

1 相关技术

1.1 OSPF路由协议

开放式最短路径优先协议(Open Shortes Path First Protocol, OSPF)是一种在IGP中广泛应用的链路状态路由选择协议(工作在IP层,协议号为89),具有收敛用时短、高扩展性、支持区域划分、支持CIDR与VLSM、支持SHA及MD5认证等特点。它的诞生有效地解决了在大型、可扩展网络上部署路由协议的难题,与运行距离矢量路由协议的路由器相比,运行OSPF路由协议的路由器不需要周期性的广播部分或全部路由表,只有当网络中的链路状态发生变化时,才会使用组播或单播向自治系统内的所有路由器发送与自身相邻路由器的链路状态通告(Link-State Advertisement, LSA)。需要说明的是,运行OSPF协议的路由器之间首先要建立邻居关系,才可以相互交换LSA。另外,在应用OSPF协议的大型网络中,为了缓解OSPF的计算压力与计算难度,同时降低路由器的工作负担,往往将网络划分为若干区域(根据路由器接口进行区域划分)。同一区域内的路由器则拥有相同的链路状态数据库,并据此数据库计算出OSPF路由表。其中Area 0 称之为骨干区域是必须存在的,其他区域称之为常规区域例如Area 1、Area 2等。通常常规区域和区域0直接相连,且可以和区域0直接进行LSA交换,但是两个常规区域之间想要直接进行LSA交换则是不被允许的(常规区域之间只能通过骨干区域进行LSA交换)。OSPF协议中共有11种类型的LSA[7],其中LSA1~LSA5为最常使用的类型。LSA1由区域内的每台路由器所产生,洪泛范围被限制在本区域内;LSA2由广播多路访问网络中的指定路由器所产生,且只能在产生这条LSA的区域内洪泛;LSA3始发于区域边界路由器,用于通告本区域外其他区域的网络情况;LSA4由ABR生成,存在的前提条件是区域中存在ASBR,主要用于为区域内的路由器提供到达自治系统边界路由器的路由。LSA5始发于自治系统边界路由器,用于向自治系统内的路由器通告到达自治系统外部网络的路由。目前OSPF路由协议已知有OSPFV1、OSPFV2、OSPFV3 3个版本: 其中OSPFV2版本主要应用在IPV4网络路由中,OSPFV3版本主要应用在IPV6网络路由中。

1.2 BGP路由协议

边界网协议(Border Gateway Protocol, BGP)属于外部网关协议(运行在TCP上,端口号为179),又称之为路径矢量协议,其主要任务就是在不同自治域系统间传递路由,并确保不产生路由环路。它是在EGP协议的基础上逐步发展而来的(目前最新的版本为BGP-4),拥有EBGP和IBGP两种会话类型。EBGP主要应用于自治系统间的路由选择,而IBGP主要应用于自治系统内部的路由选择,但其默认管理距离数值为200(管理距离主要用来决定路由协议的可信度,取值范围从0~255),比任何IGP协议都低。由于BGP协议吸收了链路状态路由协议和距离矢量路由协议的优点,因此具有高可靠性、高扩展性、支持CIDR和路由汇总、支持应用MD5加密算法验证邻居身份的合法性、避免路由环路、采用增量更新路由等特性。另外,在应用BGP协议时有一点需要特别注意,网络管理者应最少选择一个路由器作为该自治系统的BGP发言人。现实中,大型网络的边界路由器通常采用BGP协议实现与Internet的互连互通。

2 仿真实验

本次仿真实验基于GNS3网络仿真软件搭建,通过8台思科3640路由器(IOS镜像文件为c3640-ik9o3-mz[1].124-25c.bin)及1台思科2950二层交换机,虚拟构建出一个拥有2个自治系统的(AS100和AS200)大型网络。网络结构如图1所示。从图1中可以清楚地看到,AS100由路由器R2、R3所构成(R3为AS100的边界路由器),二者之间通过EIGRP协议实现AS100内部网络互联互通;而对于AS200来说网络结构则相对复杂,它由路由器R1、R4、R5、R6、R7、R8和2层交换机SW1所构成(R4为AS200的边界路由器)。其中路由器R1与R8之间运行RIP动态路由协议,路由器R4、R5、R6、R7、R8之间运行OSPF动态路由协议,且被划分为AREA0、AREA1、AREA3 3个不同区域(路由器R6与R7为区域边界路由器,以上区域的划分有助于减轻路由器及OSPF协议的工作压力)。需要指出的是:AREA0(由路由器R6、R7构成)和AREA2(由路由器R7、R8构成)均为点到点的网络,而AREA1(由路由器R4、R5、R6构成)为广播多路访问的网络。由于在AS200内同时运行着RIP和OSPF两种动态路由协议,因此需要借助路由重分布技术(将RIP和OSPF各自的路由信息分别引入到对方的路由域中)以实现AS200内部网络互连互通。另外,自治系统(AS100与AS200)之间运行BGP路由协议,以此来传递各自的内部路由,最终实现全网的互连互通,从而确保AS100中的终端计算机C1能够与AS200中的终端计算机C2正常通信。

图1 网络结构

3 网络设备IP地址分配

AS100中的终端计算机C1与路由器R2的f0/0接口相连,C1的网关地址为192.168.75.1即路由器R2的f0/0接口地址。AS200中的终端计算机C2与路由器R1的f0/0接口相连,C2的网关地址为192.168.71.1即路由器R1的f0/0接口地址。路由器R3与R5上建立回环接口,用于模拟各自所连接的内部网络。本次仿真实验所用网络设备接口及IP地址规划方案如图2所示。

图2 网络设备接口及IP地址规划方案

4 实验配置

4.1 AS200中OSPF的配置

为了使读者更加清楚直观地了解AS200中OSPF的配置过程,给出了路由器R4详细配置并加以解析。路由器R5、R6、R7、R8的配置类似,故省略。

(1) 路由器R4的配置

R4(config)#int f0/0 //进入接口f0/0

R4(config-if)#ip add 192.168.40.1 255.255.255.0 //设置此接口IP地址

R4(config)#router ospf 3

R4(config-router)# router-id 4.4.4.4 //设置路由器ID

R4(config-router)# network 192.168.40.0 0.0.0.255 area 1 //设置直连网段及区域编号

4.2 选举DR与BDR [8]

由于AS200中运行OSPF协议的路由器被划分为3个区域,其中普通区域AREA1为广播多路访问的网络并由多个路由器所构成。为了最大限度的降低路由更新而产生的数据流,并保持网络中链路状态数据库的同步,因此需要在AREA1中进行指定路由器(Designated Router, DR)与备用指定路由器(Back Designated Router, BDR)的选举。选举工作基于路由器的优先级来决定(路由器的优先级如为0,那么意味着这台路由器没有参与DR与BDR选举的资格),拥有最高优先级的路由器成为DR,拥有次高优先级的路由器成为BDR。一旦遇到路由器优先级相同的情况,则通过比较路由器ID的大小来进行DR与BDR的选举(路由器ID通常手动设定,如未设定则以路由器回环接口IP地址作为路由器ID ,如路由器不存在回环接口,则以路由器活动接口中最大IP地址作为路由器ID)。拥有最高RID的路由器成为DR,次之的路由器成为BDR。 在正常情况下,BDR只负责接收网络中的信息,转发LSA及同步链路状态数据库的工作均由DR来完成。即使有优先级更高的路由器加入到网络中,也不会发生抢占DR的情况。只有当DR发生故障时,BDR才会接替DR的工作。选举完成后,区域中的其他OSPF路由器之间不再建立邻接关系,它们只和DR与BDR建立邻接关系。与此同时,DR与BDR成为网络中LSA更新的核心节点。另外,需要说明的是,点到点的网络无需进行DR与BDR的选举,它们之间的邻接关系会自动协商完成。例如骨干区域AREA0与常规区域AREA2。在这里使用sh ip ospf nei命令查看路由器R4、R5、R6的相关邻居信息。

(1) 路由器R4的邻居信息

R4#sh ip ospf nei

(2) 路由器R5的邻居信息

R5#sh ip ospf nei

(3) 路由器R6的邻居信息

R6#sh ip ospf nei

其中Neighbor ID为相邻路由器的RID, Pri表示本台路由器的优先级,State为相邻路由器的状态情况(FULL标志着已经完成LSDB交换),Dead Time 为死亡时间,通常在广播多路访问网络中默认为40 s,Interface为相邻路由器的接口,Address为相邻路由器的接口IP地址。从中我们不难看出在192.168.40.0/24网段中:路由器R4、R5、R6的优先级均为1,R6的路由器ID(6.6.6.6)为最高,R5的路由器ID(5.5.5.5)为次之,因此路由器R6成为此网段中的指定路由器即DR,R5成为此网段中的备份指定路由器即BDR,而路由器R4则为DROTHER。

4.3 OSPF路由汇总配置[9]

进行路由汇总可以有效的避免常规区域中的每一条路由通告都传播到OSPF骨干区域中,对于控制骨干区域路由表的规模,增加网络的稳定性,减少自治系统中不必要的LSA传播起到了至关重要的作用。通常路由汇总有2种方式:① 在ABR上进行的区域间路由汇总,面向对象为与之相连区域中的路由;(需要说明的是:路由汇总功能一旦在ABR上启用,OSPF骨干区域将收到一条描述此路由汇总的LSA3。)② 在ASBR上进行的外部路由汇总,面向对象为通过路由重分布导入到OSPF中的外部路由。在本仿真实验中,OSPF AREA1中的路由器R5连接了多个网段,因此有必要在AREA1的边界路由器R6上进行区域间路由汇总。相关的配置命令如下:

R6(config-router)#no auto-summary //关闭自动汇总

R6(config-router)#area 1 range 192.168.0.0 255.255.252.0

4.4 AS200中RIP的配置[10]

在AS200中路由器R1与R8之间通过运行RIP协议,来实现各自所连网段的互连互通。RIP协议属于距离矢量路由协议,其最大的优势就是配置过程简单便捷、网络开销相对较小。但是其缺点也是不容忽视的:首先RIP协议最多只支持15跳,这对于大型网络来说远远不够;其次路由器之间的路由学习需要交换完整的路由表,导致网络更新时收敛时间过长,因此RIP协议只适用于在小型网络中应用。下面给出路由器R1 中RIP协议的详细配置命令,路由器R8的配置命令类似故省略。

路由器R1的配置:

R1(config)#router rip

R1(config-router)# version 2 //ripv2为无类路由协议,支持VLSM

R1(config-router)#network 192.168.70.0 //宣告网络

R1(config-router)#network 192.168.71.0

R1(config-router)#no auto-summary

4.5 AS200中路由重分布的配置[11]

在AS200中路由器R8同时运行着OSPF与RIP两种路由协议,为了使两种路由协议互联的网络能够相互交换路由信息,在路由器R8中实施双向路由重分布技术(即把RIP路由通告到OSPF域中,又把OSPF路由通告到RIP域中),确保AS200内部网络的互联互通。在这一过程中,路由器R1作为接收OSPF重分布路由的路由器,路由表中会增加学习到的OSPF路由。需要注意的是:

执行路由重分布的路由器,只传播路由表中已有的路由信息,且路由表不会发生改变。另外,网络管理人员在设置初始度量值时,应把此值设置为比接受域中最大度量更大的值,避免次优路由的产生。下面给出在路由器R8 中实施路由重分布的详细配置命令。

路由器R8路由重分布的配置:

R8(config)#router rip

R8(config-router)# redistribute ospf 3 metric 10 //将OSPF路由宣告到RIP域中,初始度量值设定为10,如果采用默认初始度量值,则OSPF路由将不会被重分布到RIP域中

R8(config)#router ospf 3

R8(config-router)#redistribute rip subnets metic 190//将RIP路由通告到OSPF域中,并设置重分布路由的度量值,初始度量值默认值为20。如不加上参数subnets,只能对有类网络进行重分布

在这里使用sh ip route命令分别查看路由器R7及R1的路由信息,以验证路由重分布的效果。

路由器R7、R1的路由信息分别如图3、4所示。

图3 路由器R7的路由信息

图4 路由器R1的路由信息

从图3中可见,路由器R7的路由表中存在两条路由指示符为O E2,开销值为190的外部路由,它们即为在路由器R8中实施路由重分布,通告到OSPF域中的RIP路由。从图4中可见,路由器R1的路由表中存在4条路由指示符为R,开销值为10的路由,它们即为通告到RIP域中的OSPF路由。因此可以得出以下结论:RIP路由及OSPF路由已成功的重分布对方的路由域中。

4.6 AS100与AS200之间BGP路由的配置[[12-13]

为了使两个自治系统内部网络之间能够互联互通,在AS100边界路由器R3与AS200边界路由器R4之间实施BGP路由协议,以此来确保顺利的传递各自治系统内部路由。两台路由器会首先完成TCP 3层握手,随之二者之间会建立EBGP会话,进而交换BGP路由更新。下面给出在路由器R3、R4中实施BGP协议的详细配置命令。AS100与AS200之间进行BGP路由过程中,在R4-R3链路上捕获的BGP报文见图5。

图5 R4-R3链路上捕获的BGP报文

路由器R3的配置:

R3(config)#router bgp 100 //启用BGP动态路由协议

R3(config-router)#neighbor 192.168.72.2 remote-as 200 //此命令中的IP地址,必须为可达。

R3(config-router)#network 192.168.72.0 //宣告网络

R3(config-router)#network 192.168.73.0 //宣告网络

R3(config-router)#redistribute eigrp 100 metic 5 //将EIGRP路由重分布到BGP域中,并设置重分布路由的度量值。

R3(config-router)#no auto-summary //关闭自动汇总

R3(config)#router eigrp 100

R3(config)#redistribute bgp 100 metric 10000 100 255 1 1400 // 将BGP路由重分布到EIGRP域中,并设置重分布路由的度量值。EIGRP协议计算度量值时使用带宽、 延迟、可靠性、负载、 MTU 5个参数。

路由器R4的配置:

R4(config)#router bgp 200 //启用BGP动态路由协议

R4(config-router)#neighbor 192.168.72.1 remote-as 100

R4(config-router)#no auto-summary //关闭自动汇总

R4(config-router)#redistribute ospf 3 match inter external 2 //将OSPF内部与外部路由重分布到BGP域中

R4(config)#router ospf 3

R4(config)#redist conn sub //重分布直连路由,在这里我们将192.168.72.0网段重分布进OSPF域

R4(config)#redistribute bgp 200 sub //将BGP路由重分布进OSPF域

编号为1的报文是路由器R3发往R4的TCP第1次握手报文[14-15],其中源地址与目的地址分别为192.168.72.1和192.168.72.2, 源端口与目的端口分别为25579和179, Flags (标志位) 为SYN,Sequence number(序号)为0。编号为6的报文是路由器R4发往R3的 TCP第2次握手报文,其中源地址与目的地址分别为192.168.72.2和192.168.72.1, 源端口与目的端口分别为179和25579, Flags (标志位) 为SYN与ACK, Sequence number(序号)依旧为0,Acknowledgment number(确认序号)为1。编号为7的报文是路由器R3发往R4的 TCP第3次握手报文,其中源地址与目的地址分别为192.168.72.1和192.168.72.2, 源端口与目的端口分别为25579和179, Flags (标志位) 为ACK,序号与确认序号均为1。至此TCP的3次握手完成,路由器R3、R4之间的连接成功建立。紧随其后的编号8报文是路由器R3发出的BGP OPEN报文,主要用来与路由器R4建立关系。另外,编号为10的报文是BGP Keepalive报文,默认情况下每60 s发送1次,主要用来保持BGP邻居关系。从中不难发现,BGP协议报文是在TCP完成3次握手后才出现的,这充分说明BGP协议确实是建立在TCP连接之上的。

4.7 仿真实验测试

为了验证此次仿真实验是否达到预期目标,使用ping命令测试AS100中的终端计算机C1与AS200中的终端计算机C2的连通性,并以路由器R1、R2为例,使用sh ip route命令查看它们的路由信息。

测试终端计算机C1与C2的连通性。

VPCS[1]> ping 192.168.71.6

192.168.71.6 icmp_seq=1 ttl=254 time=84.012 ms

192.168.71.6 icmp_seq=2 ttl=254 time=74.103 ms

路由器R1的路由信息如图6所示;路由器R2的路由信息如图7所示。

图6 路由器R1的路由信息

图7 路由器R2的路由信息

通过测试可以清楚地看到,不仅终端计算机C1与C2之间可以正常通信,而且路由器R1、R2均学习到了全网的路由信息。在路由器R1的路由信息中,路由指示符为R代表着重分布到RIP域中的外部路由信息,方括号内的120代表RIP的管理距离,10代表跳数。在路由器R2的路由信息中,路由指示符为DEX代表着重分布到EIGRP域中的外部路由信息,方括号内的170代表外部EIGRP的管理距离,2565376000代表EIGRP度量值。

5 结 语

本文利用GNS3网络仿真软件设计了多自治系统路由仿真实验,分析了多种动态路由协议的工作原理并给出了详尽的配置方法,最终实现了全网的互联互通。通过此次仿真实验即可以使学生对OSPF、RIP、

EIGRP、BGP等常见动态路由协议的工作原理有一个全新的认识,又可以使其更好的掌握以上动态路由协议的配置方法。

猜你喜欢
路由表汇总路由器
买千兆路由器看接口参数
常用缩略语汇总
维持生命
路由器每天都要关
路由器每天都要关
系统抽样的非常规题汇总
基于OSPF特殊区域和LSA的教学设计与实践
研究路由表的查找过程
供应商汇总
供应商汇总