1、 哈尔滨师范大学学 年 论 文题 目 基于 Dynamips 环境下的 BGP 协议研究与应用学 生 叶巨岩年 级 2011 级专 业 光电信息工程系 别 物理系学 院 物理与电子工程学院哈尔滨师范大学20144 年 4 月题目 基于 Dynamips 环境下的 BGP 协议研究与应用 论 文 摘 要以随着 Intemet 应用的快速发展,高性能核心路由器已经成为当前网络领域研究的热点和重点。核心路由器可能应用于各种环境,它必须提供多种路由协议,包括 R 于、OSPF、 IS 一 IS 以及 BGP 等内部和外部网关路由协议。其中 BGP 协议是为 TCP/IP 网络设计的边界网关路由协议,目
2、前其版本为 4。 BGP 协议是一种路由协议,用于交换因特网自治域系统间的路由信息。它已经成为因特网路由体系的重要组成部分,国际和国内许多的网络和电信设备供应商已经实现和配置BGP 协议,用于支撑因特网运行,减少交换和路由设备的运行负荷。 本文主要介绍了在 Dynamips 环境下进行网络拓扑环境设计,对 BGP 协议进行分析研究以及实现,并在此基础上实现 BGP 后门链路(Backdoor) 。最后对 BGP 路由同步进行了研究分析。 关键词 Dynamips BGP (边界网关协议) 后门链路 路由模拟器1 .课题背景 因特网在上世纪六十年代,是由美国国防部的高级研究计划局(ARPA)建设
3、了一个军用网“阿帕网” (ARPAnet)发展、演变而来。因特网的联网概念是利用装有联网协议的路由器进行对等对话来选择路由,使得信息到达最后的目的地。而近年来因特网的网络规模和业务量一直遵循每 6-9 个月翻一番的新摩尔定律在爆炸式增长。因特网的迅猛发展正在引发着整个电信领域的一场极其深刻的变革,一个以因特网为中心的电信市场新格局正在形成和发展。而思科系统公司称成为了行业的领导者。 Cisco Systems 是一个数据通信整体解决方案公司,于 1984 年由斯坦福大学的两位学者创立。今天,Cisco 科技已成为全球各电信服务业者、大型银行、企业、大学和政府机关数以千计的数据通信网络的核心,不
4、分何时、何地、何种通信协议,随时为人们提供高效率的多媒体通信。Internet 是这些网络中最著名的一个,它绝大部分的基础也是采用 Cisco科技,事实上,全球 Internet 上约 88%的路由器均来自 Cisco。 由于 Cisco System 在全球的广泛应用,思科系统(Cisco System)的网络工程师也享有了黄金网络工程师之称,因为拥有 Cisco Router 技术的工程师广受业界欢迎而且待遇相当不错,所以越来越多的人,选择了这个行业,从而产生了许多培训机构和在业内很有名的Dynamips Cisco 模拟器。 Dynamips 是一个基于虚拟化技术的模拟器(emulato
5、r) ,用于模拟思科(Cisco)的路由器,其作者是法国 UTC 大学 (University of Technology of Compiegne, France)的Christophe Fillot。作者的目的是使用真实的 Cisco IOS 操作系统构建一个学习和培训的平台,让人们更加熟悉 Cisco 的设备,以及领略 Cisco 作为全世界计算机网络技术的领跑者的风采,测试和实验 Cisco IOS 操作系统中数量众多、功能强大的特性,迅速地构建路由器的配置。 BGP(Border Gateway Protocol,边界网关协议)是用来连接 Internet 上的独立系统的路由选择协议
6、。它是 Internet 工程任务组制定的一个加强的、完善的、可伸缩的协议。BGP4 支持 CIDR 寻址方案,该方案增加了 Internet 上的可用 IP 地址数量。BGP 是为取代最初的外部网关协议 EGP 设计的。它也被认为是一个路径矢量协议。2 .课题研究的目的和意义 课题目的在熟练掌握 Dynamips 的应用及网络拓扑图的设计的基础上,在 Dynamips 环境下进行网络拓扑环境设计、分析研究并实现 BGP 协议、实现 BGP 后门链路(Backdoor)以及对 BGP 路由同步进行研究分析。 Dynamips 是一款直接运行 IOS 来模拟 Cisco 路由器的网络模拟工具,具
7、有强大的设备接口支持、网络拓扑定制等功能。它能够在传统的 PC 机上模拟( emulate)Cisco 的 7200路由器。发展到现在,该模拟器已经能够支持 Cisco 的 3600 系列(包括3620,3640,3660) ,3700 系列(包括 3725,3745)和 2600 系列(包括 2610 到2650XM,2691)路由器平台。这使得构建满足局域网拓扑结构的多台路由器、交换机或防火墙并实现相互通信成为可能。 BGP 协议的主要功能是主要功能是在系统之间交换网络可达信息,它已经成为因特网路由体系的重要组成部分。例如:中国互联网长期以来存在电信网通南北“割据” ,虽然互联却不互通的状
8、况。这种情况在网站上的表现,即是用网通接入的网站,使用电信线路的网民访问速度极慢,使用电信线路接入的网站,使用网通线路的网民访问速度极慢。利用BGP 多线接入技术就能很好解决上述问题,比如 BGP 双线,使用 BGP 技术配合中国网络带宽出口最优秀的北京电信、北京网通,确保全国南北互联互通,彻底解决了南电信北网通的互连问题。目前国际和国内许多的网络和电信设备供应商已经实现和配置 BGP 协议,用于支撑因特网运行,减少交换和路由设备的运行负荷。 为了避免在现实的网络设计、配置中产生不必要的错误,造成经济损失和资源浪费,可以借用 Dynamips 进行模拟,这种先虚拟测试再真实部署的方法,帮助人们
9、更顺利解决所遇到困难,也可以保证科研成果的科学性、严谨性和正确性。3. 本文的研究内容 本课题主要是分析研究 BGP 协议,并在 Dynamips 模拟器的环境下设计网络拓扑,实现 BGP 的应用。 BGP 协议是用来连接 Internet 上的独立系统的路由选择协议,本课题内容具体包括以下几个方面: 1. 在思科路由仿真器 Dynamips 环境下进行网络拓扑环境设计; 2. 分析研究 BGP 协议,并在 Dynamips 环境下加以实现; 3. BGP 后门链路(Backdoor)实现; 4. BGP 路由同步研究分析; 5. IP 路由故障恢复的研究分析。4. BGP 的概述 BGP(B
10、order Gateway Protocol,边界网关协议)是一种用于自治系统AS(Autonomous System)之间的动态路由协议。 AS 是拥有同一选路策略,在同一技术管理部门下运行的一组路由器。 BGP 是一种外部网关协议(EGP) ,与 OSPF、RIP、 IS-IS 等内部网关协议(IGP)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。BGP 与OSPF 和 RIP 的不同之处在于 BGP 使用 TCP 作为其传输层协议。用一条 TCP 连接两个正在运行 BGP 的系统,然后交换整个 BGP 路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。
11、 BGP 把 Internet 划分成许多自治系统,在 RFC1711 上这样定义了 AS: 过去的自治系统定义是:单一技术管理下的一系列路由器集合,在 AS 内部使用公用度量值路由报文和内部网关协议,在与其他 AS 互通时使用外部网关协议路由信息报文。随着这个传统定义的不断演变,如今,一个 AS 内也可使用多种内部网关协议,有时也可以有几套度量值。在这我们就是要强调一个事实:即使使用了多个度量值和可多种 IGP,在其他自治系统看来一个自治系统的管理有一个连贯的内部路由计划,并展现了通过该自治系统可到达目的地的一致布局。 BGP 是一个距离向量协议,但是与(通告到目的地址跳数的)RIP 不同的
12、是,BGP 列举了到每个目的地址的路由(自治系统到达目的地址的序列号) 。这样就排除了一些距离向量协议的问题。采用 16bit 数字表示自治系统标识。5. BGP 的历史 外部网关协议(Exterior Gateway Protocol,EGP)是 BGP 的前身,最初始于 1982 年在 RFC827 中提出的,于 1984 年在 RFC904 中正式化。 EGP 的产生是由于当每个管理员可以管理自己域内的路由器,选择自己的路由协议,但是当需要在几个域之间进行路由时就需要有另外一种办法,而 EGP 就是由此而生,它提供了在管理域之间管理路由的方法。人们也逐渐的意识到要把互联网划分成多个管理域
13、或自治系统,也确实把其中某些自治系统实际上作为在不同 AS 间传输流量的传送器使用。为了给这些中转自治系统的管理员更多的访问权这就是 EGP 产生的主要原因。 随着因特网的不断发展与进步,BGP 也经历了不同的发展阶段,1989、1990 和 1993年公布了 BGP 协议的版本一(BGP-1)、版本二(BGP-2)和版本三(BGP-3),从 1993 年开始研发的当前版本 BGP-4,建议号 RFC1771。如今 BGP-4 已经广泛应用于网络中,它提供了一套新的机制以支持无类域间路由。这些机制包括支持网络如今 BGP-4 已经广泛应用于网络中,它提供了一套新的机制以支持无类域间路由。这些机
14、制包括支持网络前缀的通告、取消 BGP 网络中 “类”的概念。 BGP-4 也引入机制支持路由聚合,包括 AS 路径的集合。这些改变为提议的超网方案提供了支持6.开始实施为了实施 BGP 我们首先要搭建好一个网络拓扑,在这里我选择用两个路由器搭建网络。 图 1 基本 BGP 配置 首先按照以下代码配置路由器名称及接口,然后给各接口分配 IP 地址。 Router1 接口配置如下: RouterenRouter#conf tEnter configuration commands, one per line. End with CNTL/Z. Router(config)#ho r1 r1(co
15、nfig)#int s0/0r1(config-if)#ip address 192.168.12.1 255.255.255.252 r1(config-if)#no sh r1(config-if)#exitr1(config)#int e1/0r1(config-if)#ip address 192.168.0.1 255.255.255.0 r1(config-if)#no sh r1(config-if)#exit 1(config)#int e1/1r1(config-if)#ip address 192.168.1.1 255.255.255.0 r1(config-if)#no
16、 sh r1(config-if)#exit r1(config)#exitRouter2 接口配置如下:RouterenRouter#conf tEnter configuration commands, one per line. End with CNTL/Z.Router(config)#ho r2r2(config)#int s0/0r2(config-if)#ip address 192.168.12.2 255.255.255.252r2(config-if)#no shr2(config-if)#exitr2(config)#int e1/0r2(config-if)#ip a
17、ddress 192.168.2.1 255.255.255.0r2(config-if)#no shr2(config-if)#int e1/1r2(config-if)#ip address 192.168.3.1 255.255.255.0r2(config-if)#no shr2(config-if)#exitr2(config)#exit配置路由器后,需要先确认检查各接口都已激活,再进行下一步的 BGP 配置。 可以在特权模式下使用 show ip interface brief 来查看要认证的接口是否有效。r1#show ip interface brief Interface I
18、P-Address OK? Method Status ProtocolSerial0/0 192.168.12.1 YES manual up up Serial0/1 unassigned YES unset administratively down down Serial0/2 unassigned YES unset administratively down down Serial0/3 unassigned YES unset administratively down down Ethernet1/0 192.168.0.1 YES manual up up Ethernet1
19、/1 192.168.1.1 YES manual up up Ethernet1/2 unassigned YES unset administratively down down Ethernet1/3 unassigned YES unset administratively down down r1# 从数据结果中我们可以看出,所有配置好的接口都是启动并运行的,这样就为下一步建立 BGP 连接做好了准备。7. BGP 路由聚集概念 为了减小 IP 路由表的的大小,可能会想到把几个网络聚合成一个超网,前提是倒着几个网络的路径有相同的下一跳。把聚合加到路由表中有两种方法,一种方法是把来自
20、IGP或静态路由的经过聚合的路由再分配到 BGP 中,另一种方法是使用 Cisco IOS 提供的aggregate-address 命令。如果路由表中已经存在一个更加特定的条目,那么利用后一种方法可以把聚合地址加到 BGP 表中。 聚合是把几条路由组成一个大的路由,使用聚合可以减少 Internet 路由表的前缀个数,增加网络稳定性。它能增加稳定性的原因是因为即使路由表中有许多指定路由时(或出现) ,只要有一条指定路由存在,聚合都可以进行。 8. BGP 路由聚集配置 先搭建好一个网络拓扑,在这里选择用四个路由器搭建网络,如图 4-2,Router1、Router3、Router4 分别与
21、Router2 连接,并最终在 Router2 上实现路由聚集。 图 4-2 路由聚集 Router1 配置如下:r1(config)#int l0 r1(config-if)#ip add 1.1.1.1 255.255.255.0 r1(config-if)#exitr1(config)#int l1 r1(config-if)#ip add 192.1.24.1 255.255.255.0 r1(config-if)#exitr1(config-if)#exit r1(config)#int l2 r1(config-if)#ip add 192.1.25.1 255.255.255.0
22、r1(config-if)#exitr1(config)#int s0/0 r1(config-if)#ip add 192.1.1.1 255.255.255.0r1(config-if)#no shr1(config-if)#no fair-queuer1(config-if)#exit r1(config)#router bgp 100 r1(config-router)#network 192.1.24.0r1(config-router)#network 192.1.25.0 r1(config-router)#neighbor 192.1.1.2 remote-as 200r1(c
23、onfig-router)#end Router2 配置如下:r2(config)#int l0r2(config-if)#ip add 2.2.2.2 255.255.255.0r2(config-if)#exitr2(config)#int e1/0r2(config-if)#ip add 193.1.1.1 255.255.255.0r2(config-if)#no shr2(config-if)#exitr2(config)#int s0/0r2(config-if)#ip add 192.1.1.2 255.255.255.0r2(config-if)#no shr2(config-
24、if)#exitr2(config)#int s0/1r2(config-if)#ip add 194.1.1.2 255.255.255.0r2(config-if)#no shr2(config-if)#exit r2(config)#router bgp 200 r2(config-router)#neighbor 192.1.1.1 remote-as 100 r2(config-router)#neighbor 193.1.1.2 remote-as 200 r2(config-router)#neighbor 194.1.1.1 remote-as 300r2(config-rou
25、ter)#endRouter3 配置如下: r3(config)#int l0 r3(config-if)#ip address 3.3.3.3 255.255.255.0r3(config-if)#exit r3(config)#int e1/0 r3(config-if)#ip address 193.1.1.2 255.255.255.0r3(config-if)#no shr3(config-if)#exit r3(config)#router bgp 200 r3(config-router)#neighbor 193.1.1.1 remote-as 200 r3(config-ro
26、uter)#end Router4 配置如下:r4(config)#int l0 r4(config-if)#ip add 4.4.4.4 255.255.255.0 r4(config-if)#exit r4(config)#int l1 r4(config-if)#ip add 192.1.26.1 255.255.255.0 r4(config-if)#exit r4(config)#int l2 r4(config-if)#ip add 192.1.27.1 255.255.255.0 r4(config-if)#exitr4(config)#int s0/1 r4(config-if
27、)#ip add 194.1.1.1 255.255.255.0 r4(config-if)#no shr4(config-if)#exit r4(config)#router bgp 300 r4(config-router)#network 192.1.26.0r4(config-router)#network 192.1.27.0 r4(config-router)#neighbor 194.1.1.2 remote-as 200r4(config-router)#end9. 可能出现的问题 在进行 BGP 实验的过程中,遇到的问题是:show ip int brief 的时候,两台路有
28、器的串口都是 line protocol down,而且路由器连自己的串口都无法 ping 通。路由器自己的 s 口,no shut 的时候起来了,一会又自动 down 了。我总觉得是模拟器的问题。但又不知道是哪的配置出了问题。尝试着换了几个 IOS 使用,修改端口号,都不成功!后来在家里的台式机上可以运行。做了一个 3 台路由器最简单的 RIP,完全 OK。 排除了模拟器的问题后,开始检查电脑,很有可能是某个后台的功能没有起来。我用的win7 系统,可在之前的 vista 也一切正常。最后找到原因,我们上校园网需要一种客户端,叫 Dr.COM 宽带认证客户端 。我在裸机的时候运行 route
29、r 什么的一切正常,在安装了该软件之后,提示,驱动已更新,重新启动,重新启动后,在运行 router 就 ping 不通了。原因就是该软件运行也需要 winpcap,他自带一个 winpcap 3.0。.处理 OSPF 故障 OSPF 是链路状态协议,维护 3 个数据库:相邻数据库、拓扑结构数据库、路由表。OSPF 相关的 show 命令: Show running-config Show ip route Show ip route ospf ;仅显示 OSPF 路由Show ip ospf process-id ;显示与特定进程 ID 相关的信息 Show ip ospf ;显示 OSPF
30、 相关信息Show ip ospf border-routers ;显示边界路由器 Show ip ospf database ;显示 OSPF 的归纳数据库 Show ip ospf interface ;显示指定接口上的 OSPF 信息 Show ip ospf neighbor ;显示 OSPF 相邻信息 Show ip ospf request-list ;显示链路状态请求列Show ip ospf summary-address ;显示归纳路由的再发布信息 Show ip ospf virtual-links ;显示虚拟链路信息 Show ip interface ;显示接口的 IP
31、 设置 OSPF 相关的 debug 命令:Debug ip ospf adj ; Debug ip ospf events Debug ip ospf flood Debug ip ospf lsa-generation Debug ip ospf packet Debug ip ospf retransmission Debug ip ospf spf Debug ip ospf tree 常见的 OSPF 故障:OSPF 的每个 area 不超过 100 台路由器,整个网络不超过 700 台路由器;通配符掩码配置不当; .处理 BGP 故障 BGP(包括 IBGP 和 EBGP)的关键配
32、置是邻居关系,BGP 使用 TCP 建立相邻关系。BGP 相关的 show 命令: Show ip bgp ;显示 BGP 所学习到的路由 Show ip bgp network ;显示特定网络的BGP 信息 Show ip neighbors ;显示 BGP 邻居信息 Show ip bgp peer-group ;显示 BGP对待组信息 Show ip bgp summary ;显示所有 BGP 连接的归纳 Show ip route bgp ;显示 BGP 路由表 BGP 相关的 debug 命令:Debug ip bgp 192.1.1.1 updates Debug ip bgp d
33、ampening Debug ip bgp events Debug ip bgp keepalives Debug ip bgp updates .TCP/IP 症状和原因 本地主机不能与远程主机通讯:DNS 工作不正常;没有到远程主机的路由;缺少缺省网关;管理拒绝(ACL) 。 某个应用程序不能正常工作:管理拒绝(ACL) ;网络没有正常配置以处理该应用程序。 启动失败:BootP 服务器没有 MAC 地址的实体;缺少 IP helper-address;修改 NIC或 MAC 地址;重复的 IP 地址;不正常的 IP 配置。 不能 ping 远程主机:ACL ;没有到远程主机的路由;没有
34、设置缺省网关;远程主机down。 缺少路由:没有正确配置路由协议;发布列表;被动接口;没有通告路由的邻居;路由协议版本不一致;邻居关系没有建立。 相邻关系没有建立:不正确的路由协议配置;不正确的 IP 配置;没有配置 network 或neighbor 语句; hello 间隔不一致;不一致的 area ID。 高的 CPU 利用率:不稳定的路由更新;没有关闭 debug;进程过重。 路由触发活跃模式:不一致的间隔;硬件问题;不稳定的链路。 .TCP/IP 症状和行动计划 问题 行动计划 DNS 工作不正常:配置 DNS 主机的配置和 DNS 服务器,可以使用 nslookup 校验DNS 服
35、务器的工作。 没有到远程主机的路由:用 ipconfig /all 检查缺省网关;用 show ip route 查看是否相应路由;如果没有该路由,用 show ip route 查看是否有缺省网关;如有网关,检查到目标的下一跳;如无网关,修正问题。 ACL 有分离的问题与 ACL 相关,必须分析 ACL、或重写 ACL 并应用。 网络没有配置以处理应用程序 查看路由器配置 Booting 失败:查看 DHCP 或 BootP 服务器,并查看是否存在故障机的 MAC 实体;使用 debug ip udp 校验从主机接收的包;校验 helper-address 正确配置;查看 ACL 是否禁用包
36、。缺少路由:在第 1 台路由器上用 show ip route 查看所学到的路由;校验相邻路由器;有正确的路由 network 和 neighbor 语句;对 OSPF,校验通配符掩码;检查应用到接口上的distribute list;验证邻居的 IP 配置;如果路由被再发布,验证度量值;验证路由被正常的再发布。 没有构成相邻关系:用 show ip protocol neighbors 列表已构成的相邻关系;查看没有构成相邻关系的协议配置;检查路由配置中的 network 语句;用 show ip protocol/interface 查看特定的接口信息,如 Hello 间隔 结论 BGP
37、系统与其他 BGP 系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统 AS 中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。 BGP 适用于大型的网络(如 Internet,据了解在国内的某些企业的全国性大型网络(非 ISP)中也有使用 BGP 的) 。BGP 支持 VLSM、CIDR 和路由汇聚(这里叫Aggregation) 。BGP 是可靠的,基于 TCP(Port Numer 179)进行连接。BGP 使用复杂的度(BGP 里叫 Attribute属性)来评价一条路径的好坏。 BGP 它允许定义策略和规则,可以控制数据如何通过一个 AS。 那何时用 BGP 啥时不用 BGP 呢? 何时可以使用:允许数据穿越一个 AS 到另一个 AS; 一个 AS 有多个连接到其它的AS;有数据进入或离开 AS 时需要进行(策略)控制。 何时不使用:连接到互联网或其它 AS 只有一个出口;路由器等网络设备的内存容量有限、CPU 速度不快、带宽很窄;技术人员(网络管理者)了解 BGP 但不了解 BGP 路由如何过滤、路径如何选择;AS 之间带宽比较低(窄)时。 BGP 解决了 EGP 中的严重问题并更有效率地与因特网的增长相适应。BGP 已在当今因特网的路由器上得到广泛应用。