一种支持Ipv6的边界网关协议一致性测试的实现方法和***
技术领域
本发明涉及一种在互联网络中边界网关协议(Border gatewayprotocol)(以下简称BGP)一致性测试的实现方法和***,特别是涉及一种在互联网协议第六版(以下简称IPv6)网络中支持域间路由交换的BGP4+协议一致性测试实现方法和***。
背景技术
我国已经启动了中国下一代互联网(以下简称CNGI)项目,大力建设基于IPv6的下一代互连网络。在网络建设过程中不同厂家设备之间的协议互通是一个亟待解决的问题,特别是网络的控制信令路由协议,如BGP4+、OSPFv3、ISISv6之间的互通格外重要。BGP4+是基于BGP4的扩展协议,它是用于交换IPv6路由信息的域间路由协议,继承了BGP4协议的基本原理。BGP4是用于学习自治***之间路由信息的动态路由协议,它的主要功能是在各实现BGP4协议的***之间交换网络的可达信息,这些信息包括一个路由所穿越的自治***的列表,它们足以建立一个表示连接状态的图。BGP4是一个综合了距离向量算法和链路状态算法的协议,其运行在可靠的传输协议之上,采用传输控制协议(以下简称TCP)作为其底层协议。请求注解(Request For Comments)(以下简称RFC)包含了关于Internet的几乎所有重要的文字资料。绝大部分网络标准的指定都是以RFC的形式开始,经过大量的论证和修改过程,由主要的标准化组织所指定的。RFC1771中规定了四种BGP消息类型:open消息,update消息、notification消息和keep-alive消息。open消息旨在对等路由器间打开一个BGP通信会话;update消息用于在BGP对等体之间发布路由信息,使得运行BGP的路由器可以建立网络拓扑的一致视图;notification消息是在检测到有错误时发送的通知消息,用于关闭一个活动的BGP会话,并通告其它路由器关闭该会话的原因;keep-alive消息用于通知对等BGP路由器该设备仍然是活跃状态;此外还定义了BGP的六个状态,通过有限状态机来描述BGP连接的建立和维持。
目前BGP4+一致性测试主要是通过国外厂家的测试仪表来进行,如思博伦通信(Spirent Communications)公司的Ax4000。该一致性测试仪表需要运行在百兆或者是千兆接口板上,其实现机理是:首先按照协议要求在测试接口与被测设备之间建立邻接关系,然后根据测试要求构造相应的测试报文,发送到被测试设备,再通过将接收到的响应报文与预期的结果进行比较,从而判定设备协议实现的完备性。但是目前厂家提供的测试用例主要是针对协议新增扩展字段,对RFC文献规定的测试项目实现不完全,而且该协议测试套件需要特殊的硬件平台支持,价格昂贵,不便于推广使用。
发明内容
为克服已有技术中实现BGP4+协议一致性测试项目的不完全问题,本发明提出了一种支持Ipv6的边界网关协议(BGP4+)一致性测试的实现方法,实现扩充BGP4+协议一致性测试的测试内容涵盖面,更完备地验证被测设备BGP实现与相应标准之间的一致性,为相同标准不同实现之间的互通提供检测依据。
本发明的另一目的是克服已有技术中对设备要求高、不便于推广使用的不足,提供一种简便易行的支持Ipv6的边界网关协议(BGP4+)一致性测试的实现***。
本发明的实现方法及***的基本原理是:
1)本发明完全符合RFC1771,RFC1997,RFC2796,RFC2858,RFC3065等相关国际规定。在具体实现中通过定义宏来构造和解析报文字段域,并且定义相应的宏操作来访问不同的字段域,从而减少报文字段域的处理差错,达到与RFC国际规定相一致。
2)本发明是基于支持IPv6协议栈的windows操作***平台,采用了面向对象方法(封装了通信套接字类和对等体类,为用户提供图形化的配置界面)和多线程技术(主线程负责初始化和人机交互,辅助线程完成BGP有限状态机和每一个测试例的实现),各个线程之间的通信采用消息机制,事件通告或者是同步、互斥信号量来实现。此套件可以运行在普通的安装Windows***PC机上。
3)本发明可以在单个网卡上绑定多个IPv6地址,通过集线器连接与被测试设备的多个接口建立BGP会话,软件为每个BGP会话创建一个线程来维护其会话状态。
4)本发明是在基于IPv6的TCP套接字通信层上实现的,封装了socket、bind、connect、recv、send、select等操作,在软件实现中定义了两个重要的类:套接字通信类(以下简称Cwsocket)和BGP对等体类(以下简称CBgpPeer)。其中CWsocket类负责实现IPv6的TCP连接建立与维护以及通过套接字向对等体发送协议报文,提供连接建立、释放、读数据、写数据等操作,CBgpPeer类负责BGP会话的建立与维护,记录BGP实体当前的状态,提供接收和发送协议报文的操作。
5)本发明输入输出队列的处理线程,采用共享缓存的机制,所有接收和发送的协议报文都分别排在输入和输出队列统一处理,对于接收和发送的二进制协议报文都解析成可阅读的格式输出到用户界面。
本发明的支持IPv6的边界网关协议(BGP4+)一致性测试的实现方法,包括在测试端进行下列步骤:
步骤1.配置用户参数及创建与被测设备TCP连接的套接字;
步骤2.通过套接字接收边界网关协议报文及向被测设备发送该边界网关协议报文;
步骤3.通过套接字将被测设备反馈的响应报文作为输入,并依据当时的状态迁移到新的状态;
步骤4.对步骤2中收到的边界网关协议报文进行正确性检查和分析,依据测试项目,按照测试要求构造测试报文,并且向被测设备发送该测试报文;
步骤5.分析被测设备反馈的响应报文,即被测设备的实际输出,与预期输出的异同,判定被测设备在多大程度上与预期输出描述一致,并给出测试通过或者测试不通过的结论;
步骤6.关闭与被测设备TCP连接的套接字。
本发明的实现方法还包括在单个网卡上绑定多个IPv6地址,通过集线器(Hub)连接与被测试设备的多个接口建立边界网关协议会话。
本发明的实现方法还包括边界网关协议报文、测试报文与响应报文的接收和发送,采用共享缓存的机制,所有接收和发送的报文都分别排在输入和输出队列统一处理,对于接收和发送的二进制报文解析成可阅读的格式输出到用户界面。
本发明的实现方法为用户提供图形化的配置界面,其中上述步骤1进一步包括:
步骤101.封装套接字通信类,实现IPv6的TCP连接建立与维护以及通过TCP套接字通信层向被测设备发送协议报文,提供连接建立、释放、读数据、写数据等操作;
步骤102.封装边界网关协议对等体类,与被测设备边界网关协议会话的建立与维护,记录边界网关协议实体当前的状态,提供接收和发送协议报文。
上述步骤1还包括:
步骤103.设立主线程,用于初始化和人机交互;
步骤104.设立辅助线程,完成边界网关协议有限状态机以及每一个测试项目的实现。
上述各线程之间的通信采用消息机制,事件通告或者是同步、互斥信号量来实现。
本发明的支持IPv6的边界网关协议(BGP4+)一致性测试的实现***,包括被测设备与测试端,其中测试端包括:
基于支持IPv6协议栈并安装有windows操作***的计算机;以及
运行在上述计算机内的测试套件,该测试套件至少包括:
——用户配置界面模块:通过提供友好的用户界面,完成用户参数配置;
——TCP套接字通信层模块:用以创建和关闭与被侧设备TCP连接的套接字;
——协议报文的接收和发送模块:用以从TCP套接字通信层接受和发送边界网关协议报文;
——边界网关协议有限状态机模块:将从TCP层接收的被测设备反馈的响应报文作为输入,依据当时的状态迁移到新的状态,并且调用协议报文处理模块生成相应的协议报文;
——协议报文处理模块:对收到的边界网关协议报文进行正确性性检查和分析;依据具体的测试项目,按照测试要求构造测试报文,并且调用协议报文的接收和发送模块向被测设备发送测试报文;
——结果分析模块:分析被测设备的实际输出与预期输出的异同,来判定被测设备在多大程度上与预期输出描述一致,给出通过或者不通过的结论。
上述***还包括在测试端设置有为单个网卡绑定多个IPv6地址的集线器,通过集线器连接与被测试设备的多个接口建立边界网关协议会话。
本发明的有益效果是,可以通过在普通PC机上运行本发明的BGP4+协议一致性测试套件,测试的实现方法及***完全符合RFC1771,RFC1997,RFC2796,RFC2858,RFC3065等相关国际规定,其测试的完备性,包括了消息格式一致性检测、Update消息处理、路由处理、差错处理、路由反射和团体属性处理等功能。由于不需要专业的仪表,而且可以在单个网卡上绑定多个IPv6地址建立多个BGP会话,所以利用这种测试实现方法及***建立的测试环境成本低廉,简单方便。
为让本发明之上述和其它目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合附图,作详细说明如下。
附图说明
图1为本发明方法测试步骤示意图;
图2为用本发明方法进行双测试端口的测试拓扑;
图3为用本发明方法进行多测试端口的测试拓扑;
图4为本发明方法的具体测试步骤流程图。
具体实施方式
以下结合附图对本发明一较佳实施例作进一步详细说明:
如图1所示,本发明的支持IPv6的边界网关协议(BGP4+)一致性测试的实现方法,包括在测试端执行下列步骤:
步骤1.在“用户配置界面”和“TCP套接字通信层”配置用户参数及创建与被测设备TCP连接的套接字。配置用户参数:通过提供友好的用户界面,完成用户参数配置,如Socket的连接模式,测试接口模式以及测试接口参数,测试项选择列表等。创建与被测设备TCP连接的套接字:封装套接字通信类,实现IPv6的TCP连接建立与维护以及通过TCP套接字通信层向被测设备发送协议报文,提供连接建立、释放、读数据、写数据等操作;封装边界网关协议对等体类,与被测设备边界网关协议会话的建立与维护,记录边界网关协议实体当前的状态,提供接收和发送协议报文;此外步骤1还包括设立主线程,用于初始化和人机交互,设立辅助线程,如输入输出队列的处理线程等,完成边界网关协议有限状态机以及每一个测试项目的实现。各线程之间的通信采用消息机制,事件通告或者是同步、互斥信号量来实现。
步骤2.通过套接字接收边界网关协议报文及向被测设备发送该边界网关协议报文,即对应图1中的“协议报文接收/发送”步骤;
步骤3.通过套接字将被测设备反馈的响应报文作为输入,并依据当时的状态迁移到新的状态,即对应图1中的“BGP有限状态机”步骤;
步骤4.对步骤2中收到的边界网关协议报文进行正确性检查和分析,依据测试项目,按照测试要求构造测试报文,并且向被测设备发送该测试报文,即对应图1中的“协议报文处理”步骤;
步骤5.分析被测设备反馈的响应报文,即被测设备的实际输出,与预期输出的异同,判定被测设备在多大程度上与预期输出描述一致,并给出通过或者不通过的结论,即对应图1中的“结果分析”步骤;
步骤6.关闭与被测设备TCP连接的套接字。
如图2、图3所示,本发明还可以在在单个网卡上绑定多个IPv6地址,通过集线器连接与被测试设备的多个接口建立BGP会话,还为每个BGP会话创建一个线程来维护其会话状态的步骤。图2所示,为在单个网卡上绑定两个Ipv6地址,通过集线器连接与被测设备的两个测试端口建立BGP会话的测试拓扑。图3所示,为在单个网卡上绑定三个Ipv6地址,通过集线器连接与被测设备的三个测试端口建立BGP会话的测试拓扑。
如图2所示,构建双端口的测试拓扑,主要测试不同邻接关系,如内部BGP对等体(intemal BGP peer)(以下简称IBGP)之间,即:IBGP-IBGP;IBGP与外部BGP对等体(external BGP peer)(以下简称EBGP)之间,即:IBGP-EBGP;EBGP-EBGP下,设备处理各类BGP报文的正确性。图2中,如果测试IBGP-IBGP邻接关系,那么自治***(Autonomous System)(以下简称AS)-a、AS-b及AS-c同属于一个自治***;如果测试IBGP-EBGP邻接关系,那么AS-a与AS-b同属于一个自治***;AS-a与AS-c不属于同一个自治***;如果测试EBGP-EBGP邻接关系,那么AS-a与AS-b不属于同一个自治***;AS-a与AS-c也不属于同一个自治***。该测试拓扑主要用于测试如下功能:与被测设备能否建立BGP会话;被测设备能否正确处理异常的BGP报文,如不正确的Marker字段,消息类型,报文长度,版本信息,AS号,路由器标识符,协商属性及认证字段等;被测设备能否正确处理Update报文中的Origin,AS_PATH,NEXT_HOP,LOCAL_REF等属性;被测设备能否正确的计算和转发路由信息。
如图3所示,构建多端口的测试拓扑;主要用于测试设备进行路由聚合、路由反射以及团体属性处理等功能特性。该拓扑主要用于被测设备能否正确处理路由聚合,路由反射和Community团体属性。可以根据不同的测试需求配置自治***号,配置客户与非客户关系,联盟关系。
图4为本发明方法的具体测试步骤流程图。其具体操作步骤如下:
步骤1:在基于支持IPv6协议栈的windows操作***内,安装测试套件,执行步骤2;
步骤2:用户参数配置及初始化,执行步骤3;
步骤3:在TCP套接字通信层创建一个TCP套接字,如果创建成功,则执行步骤4或者7,否则结束本次测试;
步骤4:BGP会话模式为被动监听模式,执行步骤5;,
步骤5:是否收到被测设备的Open消息,是则执行步骤8,否则执行步骤6;
步骤6:判断计时器是否超时,如果计时器超时,关闭TCP套接字,结束本次测试;如果计时器未超时,则执行步骤5;
步骤7:BGP会话模式为主动创建模式,执行步骤8;
步骤8:有限状态机,将从TCP套接字通信层接收的协议报文作为输入,依据当时的状态迁移到新的状态,执行步骤9;
步骤9:对等体建立,即与被测设备建立邻接关系,如果成功,执行步骤10,否则执行步骤16;
步骤10:按照测试要求构造测试报文,执行步骤11;
步骤11:向被测设备(对等体)发送该测试报文,执行步骤12;
步骤12:是否收到被测设备的响应报文,是则执行步骤13,否则执行步骤18;
步骤13:解析从被测设备接收到的响应报文,执行步骤14
步骤14:与预期的结果相比较,如果相符,执行步骤15;如果不相符,执行步骤17;;
步骤15:给出判定为正确,执行步骤16;
步骤16:关闭TCP套接字,结束本次测试;
步骤17:给出判定为不正确,执行步骤16;
步骤18:是否是预期结果,如果是预期结果,执行步骤19;否则执行步骤17;
步骤19:给出判定为正确,执行步骤16
本发明的实现***,包括被测设备与测试端,以及基于支持IPv6协议栈并安装windows操作***的计算机;和运行在上述计算机内的测试套件,该测试套件至少包括:
——用户配置界面模块:通过提供友好的用户界面,完成用户参数配置;
——TCP套接字通信层模块:用以创建和关闭与被侧设备TCP连接的套接字;
——协议报文的接收和发送模块:用以通过套接字接收边界网关协议报文及向被测设备发送该边界网关协议报文;——边界网关协议有限状态机模块:通过套接字将被测设备反馈的响应报文作为输入,并依据当时的状态迁移到新的状态;并且调用协议报文处理模块生成相应的协议报文;
——协议报文处理模块:对收到的边界网关协议报文进行一致性性检查和分析;依据具体的测试项目,按照测试要求构造测试报文,并且调用协议报文的接收和发送模块向被测设备发送协议报文;
——结果分析模块:分析被测设备反馈的响应报文,即被测设备的实际输出,与预期输出的异同,判定被测设备在多大程度上与预期输出描述一致,并给出通过或者不通过的结论;
本发明***还包括在测试端单个网卡上绑定多个IPv6地址,通过集线器连接与被测试设备的多个接口建立边界网关协议会话。
按照本发明所述的支持Ipv6的边界网关协议一致性测试的实现方法和***,根据测试项目的要求构建相应的测试拓扑,上述测试套件即可主要实现以下功能:
a.被测设备能否主动或者是被动建立BGP会话;
b.被测设备能否正确处理异常的BGP报文,如不正确的Marker字段,消息类型,报文长度,版本信息,AS号,路由器标识符,协商属性及认证字段等;
c.被测设备能否正确处理在IBGP、EBGP邻接关系下,Update报文的Origin,AS_PATH,NEXT_HOP,LOCAL_PREF等属性;
d.被测设备能否正确处理路由聚合属性;
e.被测设备能否正确处理路由反射属性;
f.被测设备能否够正确处理Community团体属性。
以上详细说明了本发明的实现方法和***,但这只是为了便于理解而列举的较佳实施例,不应被视为是对本发明范围的限制。同样,任何所属技术领域的技术人员均可根据本发明的技术方案及其较佳实施例的描述,做出各种可能的等同改变或替换,但所有这些改变或替换都应属于本发明的权利要求的保护范围。