BGP路由协议(通用3篇)
BGP路由协议 篇1
1、引言
在网络工程中,由于可能存在使用多个ISP提供的线路进行接入或其他情况,常常需要在出口网关上对不同目的网络的数据包进行策略路由。即发往不同网络的数据使用不同的发送端口或下一跳地址,此时就需要一张策略路由表对目的网络进行区分。策略路由表根据不同地区、不同ISP、不同网络给出详细的路由条目供路由器使用。因此,策略路由表的正确与否是实现策略路由的关键。
现存的策略路由表获取方法大致分为三种:通过运营商,向第三方购买和网络收集。运营商往往出于安全等因素不予提供路由表;第三方提供的路由表较为精确,但价格较为昂贵;网络收集的路由表错误较多,且实时性较差。
本文提出了一种通过分析BGP路由协议AS_PATH字段值与APNIC Whois数据库,获取一份较为详细的、实时的、精确的策略路由表的方法。
2、BGP简介
BGP (Border Gateway Protocol,边界网关协议)是用来连接网络中各自治系统(Autonomous Systen, AS)的路由选择协议。分为i BGP和e BGP两类,目前最新的版本为版本4。
BGP协议在路由时所使用的最小计量单位不同于IGP的IP地址,而是AS域。对每一条BGP路由条目,都会包含多条属性,其中一条为AS_PATH属性。AS_PATH属性定义了BGP路由更新所穿过的自治系统的一个列表,即去往该AS域所要经过的其他AS域编号。
3、方法概述
通过以上介绍,可以得知IP路由网络地址
与其所属于的AS域是一一对应的。因此在得到所有网络与AS的映射表之后,只要以AS编号为中心,得到该AS号的国家、ISP、地区等相关信息,再建立相应联系就能获得一份完整精确的策略路由表。
BGP路由表包含了全球路由信息,且在发生路由抖动的情况下在很短时间内收敛。因此可以认为通过此方法获得的策略路由表是实时的。
4、获取地区级策略路由表
以下以获取我国台湾地区策略路由表为例,阐述具体实现方法。
为了获取台湾策略路由表,我们首先要得到台湾所拥有的全部AS编号,再通过查找BGP全球路由表,确定去往台湾的所有路由条目。
4.1、AS编号分析
台湾地区的网络资源,是由APNIC统一分配的。APNIC提供亚太区网络资源分配情况,其中包括AS编号的分配。
从APNIC FTP获得的网络资源分配表的格式示例如下:
从左往右依次为:分配者APNIC;日本地区缩写JP;资源属性为AS编号 (AS Number) ;分配起始值;分配数量;分配日期;资源状态;扩展。
对所有资源属性为asn的记录,匹配地区缩写为台湾缩写TW,并通过分配起始值和分配数量计算分配的AS编号,最后将其加入台湾的AS集合。
完成对每一条记录的分析之后,我们就具有了包含APNIC分配给台湾的全部AS编号集合。
4.2、从BGP路由表中提取策略路由表
只有在骨干网络中运行BGP协议的路由器才具有BGP路由表。我们获得BGP路由表的方法是通过美国俄勒冈大学的全球路由监视项目Route Views。该项目每两小时提供一份实时的MRT或'show ip bgp'格式BGP全球路由表。
在思科(Cisco)路由器上执行show ip bgp命令查看BGP路由表的的显示结果如下:
以上面的结果为例,我们可以看出去往2.0.0.0/16网络的BGP路由在经过了AS 14608、174、6453之后,最终到达AS12654。由此我们可以知道,网络2.0.0.0/16属于AS 12654。
通过判断BGP路由表内一条路由条目的目地AS编号是否属于上一步中获得的台湾地区AS编号集合,就能确定该路由是否指向台湾地区,即属于台湾地区策略路由表的一个条目。
在BGP路由表中,去往同一AS可能存在不同路径,因此获取的策略路由表内可能存在重复条目。在对该表进行去重操作之后,就获得了最终的台湾地区策略路由表。
5、获取ISP策略路由表
同一地区可能存在不同服务运营商,例如我国的ISP主要包括中国电信、中国联通和中国移动。对去往不同ISP网络的数据进行策略路由,
5.1、获取AS域的ISP信息能够减少网络延迟。
从地区策略路由表中提取ISP策略路由表,
首先要确定AS属于哪一个ISP所有。可以采用查询AP-NIC Whois数据库,匹配每个AS的维护者信息中特定关键字的方式获得。
例如,在Linux平台下使用Whois命令向APNIC查询AS4809相关信息的命令格式如下:
返回的信息中有一行为:
代表该AS的维护者是MAINT-CHINANET,而MAINT-CHINANET是中国电信在APNIC注册的维护者名称。
通过对AS集合中每个AS编号进行查询匹配,我们就得到了一张从AS到ISP的映射表
5.2、与路由-AS表关联
因为某一AS不可能同时属于多个ISP所有,因此AS到ISP的映射是多对一的;在4.2小节中,我们获得了一张路由到AS域的映射表,该表同样是多对一的。
通过对这两张表进行关联操作,就能获得一张路由到ISP的映射表,对该表根据不同ISP进行拆分后,就获得了每个ISP的策略路由表。
6、方法实现
最终我们采用Perl脚本对该方法进行了实现,使用正则表达式对获取的数据进行匹配分析。由于数据量较大,这里就不予列出。
摘要:介绍了BGP路由协议的基本内容, 提出了一种结合分析BGP全球路由表的ASPATH属性与APNICWhois数据库, 获得实时精确的地区级策略路由表的方法, 最后对该方法进行实现。
关键词:BGP,AS,策略路由表
参考文献
[1]RandyZhang MicahBartell.BGP设计与实现.人民邮电出版社.2008
[2]APNIC.APNIC-Whois-Manua.2009
[3]Route Views Project.University of Oregon.http://www.routeviews.org/
BGP路由协议 篇2
卫星通信技术发展至今, 传输的业务类型从单一的话音发展成为音视频、数据等多种综合业务。尤其是卫星通信网与地面IP网络的相互融合接入, 传统有线网络上传输的IP视频会议、IP电话、IP数据等多种业务需要通过卫星通信链路进行传输, 卫星通信网各地球站之间需要通过路由器, 实现TCP/I P协议在不同的异构网络之间在I P网络层的互联、互通。
传统的卫星通信网多业务通信常使用静态路由来实现。静态路由是固定的或显示的非适应性路由, 源与目标之间的路由是源节点事先决定的, 不需要协议交互最新的网络状况, 所有路由器中的路由表必须由手工配置。此算法一旦确定, 可保持一段时间不变, 不再对网络流量和拓扑变化作出反应, 故也叫非适应性路由算法。静态路由的特点决定了使用时显得不够灵活, 不易于管理、扩展及维护。动态路由技术可以较好地解决静态路由的缺陷, 动态路由是路由器根据网络系统的运行状况, 选用路由协议提供的功能, 自动学习和记忆网络运行情况, 智能地自动调整路由表。本文以卫星通信中地球站I P业务互联互通模型基础, 论述了典型的BGP动态路由协议在卫星通信IP业务中的应用。
2 动态路由协议的简述
因特网将整个互联网划分为许多较小的自治系统 (AS) , 使用路由器实现它们之间的互联互通。因特网的动态路由协议分为内部网关协议IGP和外部网关协议EGP两大类。内部网关协议是在一个自治系统内部使用的动态路由协议, 典型的有RIP和OSPF协议;外部网关协议是在不同的自治系统之间使用的动态路由协议, 典型的是BGP协议。
所有路由器都支持RIP, OSPF, BGP这三种最典型的动态路由协议, 此外, 还有如IS-IS, IGRP, EI RGP等多种动态路由协议, 本文具体介绍典型的动态路由BGP协议。
BGP (边界网关协议) 是自治系统之间基于距离向量的动态路由协议, 它能够妥善处理好不相关路由域间的多路连接协议。在BGP网络中, 可以将一个网络分成多个自治系统, 自治系统间使用e BGP广播路由, 自治系统内使用i BGP在自己的网络内广播路由。BGP系统的主要功能是和其他BGP系统交换网络可达信息, 这些信息有效地构造了AS互联的拓朴图并由此清除了路由环路, 同时在AS级别上可实施策略决策。BGP使用TCP的179端口用于面向连接的通信 (会话) , 触发Update和Keepalive信息到它的邻居, 以传播和更新BGP路由表。BGP协议具有以下特点:
⊙BGP是一种外部路由协议, 与RIP和OSPF不同, 其着眼点不在于发现和计算路由, 而在于控制路由的传播和选择最好的路由。
⊙BGP使用TCP作为其传输层协议, 提高了协议的可靠性。
⊙BGP支持CIDR (无类别域间选路) , CIDR的引入简化了路由聚合, 减化了路由表。
⊙BGP更新时只发送增量路由, 减少了BGP传播路由占用的带宽。
⊙BGP提供了丰富的路由策略。
3 IP业务互联互通模型
利用一对两点 (点对点) 卫星通信传输链路, 使用带网络功能的宽带信道 (工作在物理层) 、IP加速器及Cisco Series路由器 (选用2800系列的2801型) , 在Cisco路由器实施BPG动态路由协议, 实现卫星地球站之间在IP网络层间的互联互通, 在此基础上, 实现同时传输音视频、数据等多种业务。
卫星地球站IP业务的互联互通模型结构如图1所示, 图中关键设备宽带信道实现信息的调制和解调功能;IP加速器对空间传输链路上的IP报文进行加速, 提高了网络吞吐量;路由器实现IP网络层的互联和互通;以太网交换机实现报文的二层交换;Video视频网络提供视音频网络的接入;Vo I P网络提供IP电话 (传真) 网络的接入;局域网 (IP数据业务为主) 提供以太网的接入。
图1中的宽带信道、IP加速器、以太网交换机都工作在TCP/IP协议族的物理层或数据链路层, 在IP业务传输过程中只做比特流的透明传输或者简单的差错控制, 不具备IP报文的具体寻路工作, 因此, 可以将图1的互联互通模型进行简化经过简化, 如图2所示。
图2中, 路由器之间通过两个网络互联WA N口提供双链路冗余备份的功能。系统启动后, 双链路正常工作, 共同分载传输I P业务的信息流量。只要双链路不同时失效, 不会影响I P业务的传输, 路由器WAN口之间运行动态路由协议 (Dynamic Route Protocol) 。
4 模型规划
参照图1的模型连接设备, 建立卫星通信链路, 参照图2的模型规划配置如下:
(1) 卫星地球站1配置
V L A N1为v i d e o视频网络, 分配19 2.16 8.11.0网段;VLAN2为IP电话网络, 分配192.168.12.0网段;VLAN3为IP数据业务为主的局域网, 分配192.168.13.0网段;路由器为ROU T E R A, 具有两个网络互联口和多个本地互联口 (案例中使用3个分别与VLAN1, VLAN2, VLAN3相连) , 所有互联口都分属于不同的网段, 网络互联口用来实现与对端卫星地球站在空间链路上的WAN互联, 本地互联口用来实现与本地球站网络之间的互联。
(2) 卫星地球站2配置
V L A N1为v id e o视频网络, 分配19 2.16 8.21.0网段;VLAN2为IP电话网络, 分配192.168.22.0网段;VLAN3为IP数据业务为主的局域网, 分配192.168.23.0网段;路由器为ROU T ER B的功能同卫星地球站1的ROUTER A。
5 动态路由协议的应用
卫星通信中BGP动态路由协议应用模型如图3所示。在卫星地球站各自的路由器中分别启动BGP协议, 将模型连接关系划分成两个自治系统。卫星地球站1所在的区域为自治系统100, 卫星地球站2所在的区域为自治系统200, 两个自治系统通过空间通信链路进行连接。
同R IP和OSPF路由表类似, ROUTER A和ROU T ER B除了直连的五个网段外, 还同时由网络互联口FA0/0和FA0/1 (双备份冗余链路) 通过BGP协议得知了与对方路由器直连的三个具体的网段。通过动态路由BGP的配置, 从路由表中得出, 卫星地球站1和2的所有网络之间互相联通, 可以实现IP业务的传输。
6 结束语
动态路由BGP协议完全能够满足当前及今后卫星通信IP业务的需求。目前动态路由已经在某些重点研制型号中得到应用。随着下一代卫星通信网与I P网络的融合、接入, 动态路由协议将在下一代卫星通信地面应用通信系统中得到更加广泛的应用, 具有很强实用性及经济性。
参考文献
[1]魏大新, 李育龙.Cisco网络技术教程.北京:机械工业出版社, 2007
[2]黄传河.网络规划设计师教程.北京:清华大学出版社, 2009
[3]丹尼斯·罗迪.卫星通信.北京:人民邮电出版社, 2002
[4]Jeff Doyle, Jennifer Carrol."Routing TCP/IP"Volume I, Second Edition.北京:人民邮电出版社, 2008
BGP路由协议 篇3
随着网络技术和嵌入式技术的不断发展,嵌入式系统在各个行业内得到越来越广泛的应用。嵌入式Linux是一种开放源码、多任务、免费的操作系统,是在标准Linux 基础上针对嵌入式系统进行优化和裁剪后形成的,因此,具有Linux 的基本性质。它适用于多种处理器和硬件平台,方便基于硬件平台的软件开发。
BGP(边界网关协议)是一个用于自治系统之间的路由协议,综合了向量-距离算法和链路-状态算法[1],主要功能是在各个实现了BGP协议的系统之间交换网络可达性信息。BGP技术作为一种广泛使用的路由策略方法,对路由的性能有着很高的要求。
本文提出的边界网关协议的移植方案是以嵌入式Linux 和FPGA为软硬件平台,通过对BGP参数的特定配置,使其能稳定地运行在基于Linux的FPGA硬件平台上。经对最终方案的测试,表明其具有良好的性能和稳定性,为BGP的进一步研究和开发提供了一种有价值的技术平台。
1 定制Linux内核
要在FPGA开发板上实现Linux系统,需要实现所有的软硬件部分,总体而言,内核在开发板上的移植主要分为三个部分,即为:建立硬件系统(创建xps工程);移植Linux内核;对内核性能进行测试。
首先建立硬件系统,为了便于同时开发FPGA硬件系统(Windows操作系统)和Linux内核及软件移植(Linux操作系统),在一台PC主机上安装Windows操作系统用于安装硬件开发平台,然后在另一台PC主机里面安装Linux操作系统用于Linux内核的编译和移植。目标板和开发PC机之间的硬件连接如图1所示。
Linux内核移植主要分为三个步骤:交叉编译环境建立;编译Linux内核;建立根文件系统。由于具体实现比较复杂和繁琐,以下对整个过程的主要步骤进行介绍:首先建立交叉编译环境[2], 所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码;接着编译Linux内核,主要是进行内核配置和建立内核源码树文件之间的依赖关系;然后是建立根文件系统,其包含两个步骤:下载并编译busybox和下载并使用mkrootfs[3]。
最后对移植到硬件开发板上的系统内核进行测试:写一个测试程序并用交叉编译工具进行编译;将测试程序和生成的可执行文件复制到文件系统rootfs里,将文件系统压缩并复制到内核中;编译内核,生成新的镜像文件,再将生成的镜像文件加载至硬件系统中;最后运行最新的Linux内核,并执行可执行文件,执行结果如果显示文件执行正常,则表明Linux内核移植成功。
2 路由软件移植
Quagga是一个开源路由软件包,可以在Linux平台上提供实现OSPFv2、OSPFv3、RIP v1 和 v2、 RIPng and BGP-4等路由协议。Quagga为每个路由协议提供一个交互式用户界面,并支持常见路由器的客户端命令[4]。由于这种设计,可以容易地给Quagga添加新的协议守护进程。
通过对其软件源代码的分析和理解,对Quagga的代码实现有了更深入的理解。作为在Linux通用平台上运行的路由软件,其源代码完全使用标准C语言实现,与硬件平台没有关系。软件的实现只使用了C函数库中一些最基本的函数,大部分能够通过软件自身的源文件和头文件来实现。整个软件代码不依赖于Linux上的其它软件的支持,也只调用了一些特定函数库,其中大部分在所定制的Linux内核中已经包括,这为软件移植带来了很大便利。
首先要做的是对路由软件及基于shell的用户交互界面程序进行交叉编译。由于硬件资源的有限性,嵌入式Linux系统通常都比较精简,在交叉编译时经常会缺少一些链接库。常见的缺省动态库包括:libreadline库,是一个提供命令行编辑和历史记录功能的库集合,能够让应用软件存储,记忆并且编辑命令行;libncurses库,提供字符终端处理的库,能够让应用软件具有处理表格、菜单、面板等功能。
然后将交叉编译好的路由软件移植到硬件平台上。开发板的硬件空间有限,在安装了内核和文件系统后,所剩资源已不多。为了能够移植路由协议软件,做了一个网络文件系统(NFS)[5]。它是一种支持应用程序在客户端通过网络访问位于服务器磁盘中数据的文件系统协议,其最大的功能就是可以通过网络,让不同操作系统的计算机可以共享数据。在设计中将一台Linux操作系统的PC做成一个NFS文件服务器,再通过网络将远端的NFS服务器共享出来的文件挂载到硬件开发板的系统中,从硬件平台看来使用NFS的远端文件就象是在使用本地文件一样。
移植好路由软件后,还必须在开发平台上对路由软件进行验证。在软件运行时,需要调用一些动态链接库[6]。根据调试信息和软件源代码,将需要的库文件移植到开发板上。
3 测试结果分析
为了验证本文设计完成的系统性能,设计了多个测试用例对系统进行测试[7]。下面给出其中的一个测试用例的结果。
首先进入zebra对路由器的名称和IP进行设置:
实验结果如图2所示。
4 结束语
由图2的测试结果可见,设计的嵌入式路由协议系统能够方便地对路由软件进行配置。配置好的路由协议软件工作状态良好,可以利用设计的系统对BGP路由协议进行更进一步的研究和完善。
另外,由于篇幅所限,只以常用路由器设置为例,介绍了配置后的实验结果。实际上,根据路由协议的标准,本系统也可以进行更详细的路由协议的功能实现。
参考文献
[1]Sam.Haibi,Danny McPherson.Internet Routing Architectures[M].Cisco-Press.2000.
[2]李超,肖键.嵌入式Linux开发技术与应用[M].北京:电子工业出版社,2008.
[3]Dianel P.Bovet Marco Cesate.Understanding the Linux Kernel[M].O'Reilly Media,Inc.2003.
[4]卢泽新,白建军,等.IP路由协议疑难解析[M].北京:人民邮电出版社,2008.
[5]葛建立,吴剑章.TCP/IP路由技术[M].北京:人民邮电出版社,2007.
[6]白建军.核心路由器边界网关协议BGP-4实现技术的研究[D].长沙:国防科学技术大学,2002.
【BGP路由协议】推荐阅读:
动态路由协议06-25
安全路由协议节点05-27
AdHoc路由协议08-25
多播路由协议论文09-02
OSPF路由协议分析10-29
DSR路由协议的改进05-16
有关路由选择协议的学习笔记08-21
华为路由器动态路由协议与线路是否支持广播和RIP的自动路由聚合08-23
bgp协议工作原理05-24
路由交换07-17