`

域间路由协议,域间路由协议的内容有哪些

 
阅读更多

当前Internet被划分为多个自治系统,自治系统是一个实体,一般是指隶属于一个管理机构的路由器集合。每个自治系统可以制定自己的路由策略。自治系统内部的路由器通过域内路由协议彼此交换路由信息,一般域内路由协议分为距离向量协议和链路状态协议,前者以RIP代表,后者常用的有OSPF、IS-IS协议;自治系统边界路由器通过域间路由协议交换路由信息,目前Internet上的域间路由协议事实标准是BGP-4协议。

BGP-4协议软件的总体设计

如图1所示,作者从功能上把协议软件分为Init,Event Generator,FSM,Message Parser,Routing Information Processor,Protocol Messager和I/O等7个模块,还有Config和RIB两个数据库.为了提高处理效率,减轻系统负担,整个软件设计为单进程结构,各个模块之间的交互采用函数调用和数据交换的方式.下面简单叙述各个模块的功能.

image: bk073932_1f.gif

图1 BGP-4协议实现总体结构图

Init:对用户配置文件或控制台输入进行分析,从中读取BGP-4协议软件运行时所需的各项参数,同时进行语法和语义检查,把正确的参数写入Config数据库中,供其他模块在运行时检索引用;之后初始化全局数据结构(如事件队列、时钟链等),并为某些结构分配空间;最后向FSM发送Start事件,启动FSM模块,进而使整个协议软件开始运行.

Event Generator:生成事件,从而驱动FSM模块.这些事件包括通过I/O模块收到BGP报文以及检测到TCP连接成功或失败,通过检查时钟链得到时钟超时事件.本模块还负责维护事件队列和时钟链,提供对这些数据结构进行操作的函数接口.

FSM:接收模块Init和Event Generator送来的事件,作为有限状态机的输入,产生状态变迁及相应动作,控制Message Parser模块的运行.本模块还通过I/O模块负责TCP连接的建立,同时还通过Event Generator产生新的事件.

Message Parser:对收到的4种BGP-4报文进行正确性检查和分析.如果是UPDATE报文,还要通过调用模块Routing Information Processor更新路由信息数据库RIB,调用模块Protocol Messager向相邻的内部BGP网关发送协议报文.本模块还在FSM的控制下,周期性地扫描路由器中的全局路由表,向相邻的外部BGP网关广播本地路由表的变化情况.

Routing Information Processor:从Message Parser模块中得到要撤销的和声明为有效的路由,更新路由信息库RIB.为了减小RIB的规模,提高处理效率,这里还对RIB中的路由进行合并和压缩.另外,本模块还提供了对RIB中的数据结构进行操作的所有函数.

Protocol Messager:对4种BGP报文进行格式化,并调用I/O模块将其发出.

I/O:直接调用操作系统提供的TCP服务接口,完成TCP连接的建立和释放;接收相邻BGP网关送来的报文,提交给上层模块;接收上层模块发来的格式化为字节流的BGP报文,发送给相应的BGP网关.此外,对这些操作中产生的相应事件,本模块还通过Event Generator发送给FSM.

Config:存放BGP协议软件运行时所需的各项配置参数.这些参数可能来自配置文件,也可以由用户通过控制台输入.

RIB:存放所有协议软件所产生和要利用的路由信息的数据库.实际上分为3个相互独立的数据结构:Adj-RIBs-In存放从其他BGP网关收到的路由信息,Loc-RIB存放路由器中本地路由表的映射,Adj-RIBs-Out存放向相邻BGP网关广播过的路由信息.

由于BGP-4协议是一个比较复杂的动态路由协议,因此在实现中遇到了许多难点.主要有:如何在连接数比较多的情况下保证系统的效率,如何保证路由信息的及时交换,如何支持可变长地址掩码和如何保证I/O的效率等.

BGP-4协议软件的实现策略和优化

(1) 单进程体系结构

在高性能路由器中要同时运行多个路由协议软件并且要维护很大的路由表.如果BGP-4在设计时采用传统的多进程体系结构,那么当连接数比较多时,进程数会很多,势必影响整个路由器系统的效率.为了提高系统效率,BGP-4软件设计时没有采用多进程结构,而是采用了单进程结构.这样虽然提高了效率,但是也增加了实现的难度.为了在一个进程中实现本来需要多个进程完成的工作,我们把整个软件设计成事件驱动方式,所有的系统操作和收发帧都通过向软件发送事件来进行.而软件的FSM模块则不停的轮询事件队列,如果有事件则处理,如果没有事件,软件自动休眠2秒,这也是为了提高系统的效率.

(2) 基于二叉树的支持可变长掩码的路由表

为了便于路由的查找、更新及合并,同时支持可变长掩码,作者把BGP-4协议软件中的3种路由表(Adj_RIBs_In,bgpIGP,Adj_RIBs_Out)都设计为二叉数结构.这3种二叉数的结构和意义都大体相同.每个有效节点表示一条路由,从根到该节点的路径表示此路由可达的目的网络,其中左右子树表示“0”或“1”,路径长度表示子网掩码的长度.这样可以方便地表示变长掩码的网络,同时还可以大大加快路由表的查找速度,因为无论路由表的规模有多大,最多32次比较就可以找到某路由(通常情况下比较次数要少得多).此外,路由的插入、删除和合并操作也可以高效地实现.

(3) 基于静态数组的时钟队列

时钟链是一个按照超时顺序由近到远排序的时钟链表,各模块启动的时钟都按序插入到此表中.判断是否有时钟超时,只要从链表头节点(最先超时的时钟)开始,把当前时刻与此节点超时时刻比较,小于则说明此时钟已超时,发送超时事件.为了加快处理速度和减轻插入负担,作者把时钟链设计为静态链表的结构.如下所示:

typedef struct_timerItem {

bgpTime timeout_val;

bgpPeer×peer;

int ev;

int next;   int last;

} timerItem;

typedef struct_bgpTimerChain {

int av_head;

timerItem timer[BGPMAXTIMER];

} bgpTimerChain;

每个时钟用一个timerItem结构表示,其中timeout_val记录超时时刻,peer记录此时钟对应哪个网关,ev是超时后要发送的事件,last和next分别指向链表中的前后节点.时钟链结构bgpTimerChain中av_head指向当前未分配时钟构成的空闲链表的头节点.初始时,所有未分配时钟构成一个大的空闲链表.启动时钟时只要把此节点摘下,插入时钟链的相应位置,并返回时钟号.因为时钟在数组timer中的位置不会变化,所以关闭时钟时可以通过时钟号把此节点直接摘下,放入到空闲链表中.

(4) 基于单进程体系结构的I/O模块设计

BGP-4协议建立在TCP层之上,利用TCP协议软件提供的服务接口完成建立连接和发送报文的工作.I/O模块便是协议软件中与TCP服务接口进行交互的部分.为了尽量减少系统开销,作者把整个BGP-4协议软件设计为单进程结构,这样就加大了I/O模块的设计难度.因为通常的设计思路是为每个BGP连接生成一个独立进程,TCP调用采用阻塞模式,调用后等待,直到成功或失败而返回,各进程之间互不影响;但是在单进程结构中,与所有相邻网关的交互都在同一进程内执行,如果仍用阻塞模式,就会由于一个连接的等待而使其他连接的交互挂起,从而使协议失败.因此,所有TCP调用必须立即返回,不管其运行状态如何.之后再定期轮询检查各个连接的当前运行状态,如有变化则通过Event Generator向FSM发送相应事件.这也是采用事件驱动机制的原因之一.

为了在轮询时检查哪些连接在等待哪些状态,需要设立一些集合以记录等待某状态的连接.这里共有3种集合:

A、 等待建连响应的集合.这里记录那些已经发出连接请求,正在等待对方响应的连接号.判断连接是否建立好实际上是通过检测此连接是否可写完成的;

B、 等待主动连接的集合.这里记录已经bind成功,正在等待对方发起主动连接请求的连接号.因为利用TCP服务可以监听来自所有地址的连接请求,所以这个集合中实际上只有一个连接号,即bind调用成功后返回的连接号.判断是否有主动连接请求到来是通过检测此连接是否可读(readable)完成的;

C、 等待数据到来的集合.这里记录连接已正常建立且进入Established状态,等待接收对方报文的连接号.判断是否有数据到来也是通过检测此连接是否可读完成的.

为了在检查到状态变化时向某状态机发送事件,还需要设置一个连接号到bgpPeer结构指针的映射表.实际上,轮询检查和发送事件是在Event Generator模块中实现的.下面着重讲一下TCP连接建立和数据发送的实现.

(5) TCP连接的建立

这里采用了与BSD Socket兼容的一系列TCP调用来完成连接的建立.实际上,这里并不等待连接建立的完成,而只是在调用结束后把返回的连接号置入相应的集合中待以后轮询事件时检测.

(6) 数据的发送

由于数据发送也采用了无阻塞方式,而且没有设立等待发送完成的连接集合,因此,要在发送过程中累计实际发送的字节数,直到全部发送完为止.通常TCP协议软件在实现时,先把待发送数据拷入系统缓冲区中,然后再逐步发送给远端.因此,提供给用户的数据发送接口不会发生阻塞.这样,采用“全部发送完为止”的方式便不会影响协议软件对其他TCP连接的响应.另外,在发送数据的过程中也会检测到TCP连接失败或关闭等事件,这时要通过Event Generator发送给相应的FSM.

分享到:
评论

相关推荐

    论文研究-一种基于SDN的域间路由协议 .pdf

    一种基于SDN的域间路由协议,施仁立,李伟,由于网络路由协议BGP存在分布式部署,控制机制缺乏等特点,域间路由面临着路由配置错误,策略表达困难以及稳定性差等问题。软件定

    域间路由协议BGP安全性研究.

    BGP协议安全是域间路由安全的核心问题之一,其关键问题就是如何确保每个AS发布BGP路由信息的正确性和完整性.当前已提出多个BGP安全机制,然而没有一个能够得到有效的部署.本文建立了完整的BGP威胁模型,对当前提出的BGP...

    学习IS-IS路由协议

    IS-IS路由协议与OSPF路由协议都是链路状 态路由协议,他们不但适合应用于LAN的环境,而且更多使用在城域网的环境中,目前城域网技术的发展有三个主流方向,即IP城域网技术、城域以太网技术、 光城域网技术。在IP城域...

    论文研究-基于关键节点的域间路由安全机制.pdf

    BGP作为Internet域间路由的基本协议, 其安全问题一直受到学界的关注, 特别是安全性与实现难度之间的折中。针对传统解决方案S-BGP(secure BGP)的不足, 在定义关键节点KN(key node)的基础上, 利用KN对路由信息安全验证...

    改进型DTN网络路由协议

    采用理论分析和实验仿真相结合的方法,提出了发送域、链路可靠度的概念及一种基于位置信息的改进型路由协议,并对改进型路由协议和Epidemic路由协议在到达率,平均时延及路由开销等性能进行了对比分析.研究结果表明:...

    论文研究-一种消除域间路由不一致路径的控制机制 .pdf

    一种消除域间路由不一致路径的控制机制,吴一娜,李伟,BGP作为一种域间路由协议,并没有任何机制来确保通告路由路径与实际转发路径的一致性。因此,这种情况下,路由策略是无意义的而且

    论文研究-基于RIB表的域间路径特性分析 .pdf

    基于RIB表的域间路径特性分析,杨家海,焦亮,BGP(Border Gateway Protocol)是互联网事实上的标准域间路由协议,对维护自治系统(Autonomous System, AS)间路由连通性有重要的作用。除了用�

    Internet域间路由振荡问题分析与研究

    边界网关协议(BGP)是Internet域间路由的事实标准,它允许各自治系统独立配置路由选择和播发策略,但这种局部配置可能导致全局策略配置冲突和低效,从而引起路由振荡的问题。文章分析了域间路由振荡问题,并综述了...

    论文研究-域间路由系统安全的分析与探讨 .pdf

    域间路由系统安全的分析与探讨,王洪芬,,域间路由系统作为整个互联网的支柱,其安全性正面临严峻考验。协议设计的脆弱性导致数据信息真实性和完整性得不到保证;配置故障

    OSPF路由协议的区域防环机制.doc

    为了避免区域间的环路,ospf规定不允许两个非骨干区域之间直接传递路由信息,只允许在一个区域内部或者骨干区域和非骨干区域之间发布路由信息。因此,每个区域边界路由器都必须连接到骨干区域。

    域间多路径路由协议

    边界网关协议(border gateway ...提出路径多样性、控制平面和数据平面开销、无环路特性等8项主要路由系统性能指标,并比较、分析了域间多路径路由协议.最后,指出域间多路径路由协议面临的主要挑战和未来的研究方向.

    简述动态路由协议OSPF的特点及工作原理

     根据是否在一个自治域内部使用,动态路由协议分为内部网关协议(IGP)和外部网关协议(EGP)。这里的自治域指一个具有统一管理机构、统一路由策略的网络。自治域内部采用的路由选择协议称为内部网关协议,常用的有...

    自治系统间的路由协议

    随着近年来互联网的进步和增长,它也不得不面对一些严重的规模问题,包括:B类网络... BGP-4对BGP-3做了扩展,支持路由信息的聚合及基于无类别域间路由体系(CIDR)的路由减少。本备忘录论述了BGP-4在互联网中的应用。

    RIP路由协议

    动态路由协议有三种,距离矢量类路由协议、链路状态类路由协议和混合型路由协议。 rip为代表的距离矢量类路由协议在选路的时候仅以跳数(hop)为唯一参考,也就是那条路径短,就选择哪条路径;而距离矢量类的路由...

    域内距离矢量路由协议rip介绍

    RIP(Routing Information ... RIP系统的开发是XEROX Palo Alto 研究中心(PARC)所进行的研究和XEROX的PDU和XNC路由选择协议为基础的。但是RIP的广泛应用却得益于它加利福尼亚大学伯克利分校的许多局域网中的实现。

    双核心星形结构IP城域网路由规划与配置

    多核心,尤其是双核心的星形(以下简称...对于双星形结构的城域网络来说,BGP4协议是整个城域网的外部路由协议,它担负着与骨干BGP4协议的互通,广播城域网路由,学习外网路由,路由过滤,流量控制,路由广播等功能。

    关于OSPF动态路由协议一致性测试简介

    其中广域网 的域内路由协议大多数使用OSPF协议转发路由信息,且OSPF协议主要位于域内的路由器上,它是现有TCP/IP网络中继系统的核心协议。本文介绍协议 一致性测试原理和抽象测试方法,重点研究OSPF协议的一致性...

    各种路由协议很详细是CISCO

    1. 路由协议 3 1.1. 静态的与动态的内部路由 3 1.2. 选路信息协议(RIP) 5 1.2.1. 慢收敛问题的解决 7 1.2.2. RIP报文格式 8 1.2.3. RIP编址约定 9 1.2.4. RIP报文的发送 10 1.3. OSPF 10 1.3.1. 概述 10 1.3.2. ...

    IPv4单播路由配置

    本手册主要介绍如何使用几种主流的路由协议实现IPv4网络互联。 路由协议主要分为内部网关协议(IGP)和外部网关协议(EGP)两大类。我们一般会将整个大的路由域分割成多个自治区域(AS),区域内部的路由学习通过...

    基于GA遗传优化的OSPF协议网络最优路由matlab仿真,含仿真操作录像

    3.内容:基于GA遗传优化的OSPF协议网络最优路由matlab仿真 step1. 当有连接请求时,算法开始,考察源节点S是否为域的边界节点,不是的话在域内使用最短跳算法路由至此域的边界节点 域的边界节点用U表示(图中A, B...

Global site tag (gtag.js) - Google Analytics