一种基于虚拟化技术的自治域级网络模拟方法与流程

文档序号:15777881发布日期:2018-10-30 15:46阅读:290来源:国知局
一种基于虚拟化技术的自治域级网络模拟方法与流程

本发明涉及网络模拟和算法设计领域;特别地,本发明涉及一种根据自治域级邻接关系为bgp路由器分配ip地址的方法,以及在物理机上利用虚拟化等一系列技术模拟bgp路由器构建拓扑的方法。



背景技术:

目前,internet和较大的网络服务提供者(isp)被分成大量的自治域系统(autonomoussystem,as),自治域系统定义管理区域和作用于自治域系统范围的路由策略。internet级的路由结构一般被划分为域内路由和域间路由两种结构。对于域内路由,有多中域内路由协议,包括开放最短路径有限(ospf)协议、路由信息协议(rip),中间系统到中间系统协议(is-is)和内部网关路由协议(igrp)等等,自治域系统内的路由功能由运行上述域内路由协议的路由器来实现。对于域间路由,边界网关协议(bordergatewayprotocol,bgp)是目前的事实标准,bgp路由的定义和同步由自治域系统的边界路由器,即bgp路由器相互交换as级的路由可达性信息来完成。

在自治域系统中,自治域间的路由不只是选择到达目标的最短路径,还需要符合特定的一些路由策略。目前,自治域间存在着一种商业策略模型,将自治域之间的关系划分为两类:供应商-客户关系(provider-customer,p2c)和对等关系(peer-peer,p2p)。供应商-客户关系指的是客户向供应商付费,供应商为客户提供接入internet的服务,而供应商向客户传递流量无需付费。对等关系指的是自治域之间相互传递流量,互相之间不收费。为了经济利益,一个自治域会在目标的所有可达路径中,优先选择下一跳自治域为其客户的路径,其次是下一跳自治域为对等关系的路径,最次是下一跳自治域为供应商的路径。与此同时,一个自治域在构建路由可达性信息时,通常向他的供应商和对等自治域隐藏自己的供应商路由和对等路由,来保证:(1)自己不为供应商之间传递流量,和(2)自己不为对等自治域向供应商和其他对等自治域传递流量。而自治域会向其客户自治域传递所有路由可达性信息。

网络拓扑是指网络元素之间的一种连接性信息,as级网络路由拓扑使之网络中自制系统之间的路由连接性信息。在计算机网络研究中,模拟是一种快速而经济的重要研究手段。网络模拟的通常手段往往是通过网络模拟工具软件来模拟网络协议栈和链路的特性,这类方法具有针对性,但是缺点是该方法往往只模拟每个节点的网络协议栈,无法真实展现网络中每个节点的真实主机的特性,从而也影响许多网络测量工具在这类网络模拟中正常使用的问题。

网络模拟常常采用虚拟化技术。虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。



技术实现要素:

本发明的目的是提供一种基于虚拟化技术的自治域级网络模拟方法,以实现利用服务器集群和虚拟化技术,创建和模拟网络中主机来构建自治域级网络路由拓扑,并能够进行批量测量和管理。

本发明为解决上述技术问题采取的技术方案是:

一种基于虚拟化技术的自治域级网络模拟方法,所述方法的实现过程包括以下步骤:

步骤1.获取已知网络中自治域的基本信息(包括自治域号、自治域名称、自治域声明的网络前缀)和自治域之间的邻接关系信息(包括互连的邻接自治域号、链路带宽和商业关系),得到自治域级的路由拓扑信息,根据上述信息确定物理机的数量,以及每个物理机上分布的模拟bgp路由器信息;将确定数量的一个或多个物理机布设在同一局域网中(可以是一个或多个物理机与同一交换机连接);

步骤2.利用每个自治域声明的网络前缀,采用ip地址分配算法,为每个自治域的bgp路由器的一个或多个网络接口分配对应的ip地址;并根据自治域之间的邻接关系确定网络接口(即ip地址之间)的邻接关系;从而得到每个模拟bgp路由器的各个网络接口信息及模拟bgp路由器之间的邻接信息;

所述ip地址分配算法是自治域级网络拓扑向模拟bgp路由器网络拓扑的映射,从步骤1获得的自治域级的路由拓扑信息所包括的自治域声明的网络前缀中,选择互不重叠的网段,分配互不冲突的、模拟bgp路由器的各个网络接口的ip地址;

每个模拟bgp路由器被分配对应的ip地址后,相当于为模拟bgp路由器之间建立物理连接;当模拟bgp路由器生成时按照分配的ip地址去配置各个网络接口,使同网段的模拟bgp路由器相互连通,不同网段的模拟bgp路由器之间不通(因为没有配置路由);

步骤3.生成所有模拟bgp路由器的路由软件配置信息,并以每个路由器的ip地址为标识来区分每段路由软件配置信息所属的模拟bgp路由器,当需要使用这些配置信息时,则只需根据标识读入对应的模拟bgp路由器的路由配置信息;

所述bgp路由软件配置信息用于配置路由,建立bgp会话,实现bgp路由器通路的全网可达;

每个模拟bgp路由器的路由软件配置信息的生成过程为:利用步骤2得到的每个模拟bgp路由器的各个网络接口信息及模拟bgp路由器之间的邻接信息,向每一个模拟bgp路由器的路由软件中按照bgp路由模拟软件配置信息的格式将每一个字段的信息写入,写入的信息包括本自治域号、本自治域声明的网络前缀、邻接自治域号和邻接模拟bgp路由器的ip地址,从而得到每个模拟bgp路由器的路由软件配置信息;

步骤4、应用服务器集群化和虚拟化技术生成模拟bgp路由器,建立模拟bgp路由器之间的链接,并启动bgp路由服务,实现自治域级网络模拟。

进一步地,在步骤2中,所述的ip地址分配算法采用非子网模式,所述非子网模式为每一条邻接链路都分配互不重叠的网段。

进一步地,所述非子网模式的分配步骤如下:

设定所述自治域之间的邻接关系信息中包含一条从自治域a到自治域b的链接,分配模拟bgp路由器接口ip地址时,从自治域a声明的网络前缀中选择一段未使用的网段,为自治域a对应的模拟bgp路由器、自治域b对应的模拟bgp路由器,分别创建一个网络接口,并分配一个所选择网段的ip地址。

进一步地,在步骤2中,所述的ip地址分配算法采用强子网模式,所述强子网模式为每个模拟bgp路由器及其邻接的所有未分配ip地址的模拟bgp路由器分配同一网段的ip地址。

进一步地,所述强子网模式的分配步骤如下:

设定所述自治域之间的邻接关系信息中包括自治域a、自治域b和自治域c,三者两两邻接,在任意一个所述自治域声明的网络前缀中选择一段未使用的网段,然后给自治域a、自治域b和自治域c分别仅分配一个ip地址;自治域a、自治域b和自治域c之间的bgp会话将仅通过各自的唯一ip地址来进行。

进一步地,在步骤2中,所述的ip地址分配算法采用弱子网模式,所述弱子网模式首先为每个模拟bgp路由器及其邻接的所有未分配ip地址的模拟bgp路由器分配同一网段的ip地址;若其邻接的模拟bgp路由器之间有邻接关系,则再次为它们分配ip地址。

进一步地,所述弱子网模式的分配步骤如下:

设定所述自治域之间的邻接关系信息中包括自治域a、自治域b和自治域c,三者两两邻接,设定当前预分配的ip地址的对象是自治域a及其邻接自治域;

在自治域a声明的网络前缀中选择一段未使用的网段,然后给自治域a、自治域b和自治域c分别仅分配一个ip地址,该组ip地址为公用ip地址组;

最后再从自治域b或自治域c声明的网络前缀中选择一段未使用的网段中的ip地址作为二者通信的ip地址,该组ip地址为私用ip地址组;

自治域a与自治域b或自治域c通信时使用公用ip地址组中的ip地址,自治域b与自治域c通信时使用私用ip地址组中的ip地址。

进一步地,在步骤4中,所述应用服务器集群化和虚拟化技术生成模拟bgp路由器的过程为:单物理机的模拟bgp路由器生成和跨物理机链接的生成两个步骤;

对于单物理机的生成,根据模拟bgp路由器的分布信息,在本物理机上生成分布信息属于本物理机的模拟bgp路由器;再根据已经分配好的ip地址信息为每个bgp路由器创建网络接口并连入到ip地址对应的网段内;

对于两端路由器分别分布在两台不同物理机上的链路,采用适当的服务器集群化技术,在两个跨物理机分布的模拟bgp路由器之间的链接搭建起来。

本发明的有益效果是:

本发明提供一种模拟自治域级的网络路由拓扑的方法。本发明在一个或多个物理机上利用虚拟化手段为每个自治域模拟一台bgp路由器,并构建bgp路由器间的bgp会话,形成模拟的网络拓扑。

本方法能够根据采集的自治域信息(自治域号、自治域声明的前缀、自治域邻接关系、自治域商业关系),利用提出的一系列构建和模拟的方法,在有限数量的物理机上模拟一定规模的bgp路由器形成的自治域级网络路由拓扑。此模拟方法具有以下特点:提供了一种自治域级拓扑到ip地址级拓扑的映射方法,模拟的bgp路由器拓扑能够真实反映采集所得的自治域邻接关系和自治域间链路的属性,因此与互联网真实结构在自治域级上是一致的;在功能上,每个模拟bgp路由器依据bgp路由协议进行路由选择,其路由行为和真实bgp路由器行为一致。

附图说明

图1是本发明的整体原理结构图,图2是利用本发明模拟的自治域级网络拓扑示意图,图3是采集的已有的自治域信息可视化图,图4是各物理机ip地址分配图,图5是物理机内ip地址分配图(非子网模式),图6是物理机内ip地址分配图(强子网模式),图7是物理机内ip地址分配图(弱子网模式),图8是bgp路由配置生成结果图,图9是单物理机拓扑生成流程框图,图10是利用本发明模拟的自治域级网络拓扑状态图(与图2对应),图11是本发明的自动化部署流程框图(与图1对应)。

具体实施方式

具体实施方式一:如图1和2所示,发明总览图如图1,发明内容概念图如图2。本实施方式所述的一种基于虚拟化技术的自治域级网络模拟方法,是基于已知的自治域级拓扑形态而提出一种基于虚拟化技术的自治域级网络拓扑模拟方法。该方法的步骤主要包括:

1.获取系统输入,得到自治域级的拓扑信息、每个物理机上分布的模拟bgp路由器信息等,使自治域级拓扑形态已知。本模拟方法需要已知网络中自治域的基本信息和自治域之间的邻接关系信息。

2.从得到的上述信息中,我们可以描述某个路由拓扑的所有自治域级信息。我们的目标是依据这些信息(包括自治域号、自治域声明的网络前缀、自治域的邻接自治域号等),利用虚拟化技术,为每个自治域模拟一台bgp路由器,并构建bgp路由器间的bgp会话,形成模拟的网络拓扑。首先,本发明利用每个自治域声明的网络前缀,采用一种ip地址分配的算法,为每个自治域的bgp路由器分配其各个接口的ip地址;并根据自治域之间的邻接关系确定网络接口(即ip地址之间)的邻接关系。此步骤的输出为每个模拟bgp路由器的各个网络接口信息及模拟bgp路由器之间的邻接信息。

3.对于步骤2,进一步地有三种不同的ip地址分配方法,称这三种ip地址分配方法为“非子网模式”、“强子网模式”和“弱子网模式”。每个方法均是从自治域级拓扑信息及自治域在物理机上的分布信息,从自治域声明的网络前缀中选择合适的网段,为模拟bgp路由器分配各个网络接口的ip地址。“非子网模式”为每一条邻接链路都分配互不重叠的网段;而另外两种子网模式的使用目的在于节省网段,提高网段利用率,环境网络模拟过程中因生成子网过多导致的物理机负载过重的问题。

4.当每个模拟bgp路由器被分配了ip地址,相当于为模拟bgp路由器之间建立的了物理的连接。也就是说,只要当模拟bgp路由器生成时按照分配的ip地址去配置各个网络接口,即可使同网段的bgp路由器相互连通,不同网段的bgp路由器之间不通(因为没有配置路由)。

5.接着,生成bgp路由软件配置信息。这些信息用于配置路由,建立bgp会话,实现bgp路由器通路的全网可达。本步骤生成所有模拟bgp路由器的路由软件配置,并以每个路由器的ip地址为标识来区分,当需要使用这些配置信息时,则只需根据标识读入对应的bgp路由器的路由配置。对于某一个bgp路由器的路由软件配置的生成,本方法首先读入上面生成的模拟bgp路由器的ip地址级信息,从中可以获得模拟bgp路由器的所有的相邻的自治域信息,然后向每一个模拟bgp路由器的路由软件中按照bgp路由模拟软件配置信息的格式将每一个字段的信息写入,包括本自治域号、本自治域声明的前缀、邻接自治域号和邻接bgp路由器的ip地址等,从而得到每个模拟bgp路由器的路由软件配置。

6.最后,应用服务器集群化和虚拟化技术,生成模拟bgp路由器,建立模拟bgp路由器之间的链接,并启动bgp路由服务,实现网络拓扑模拟。

7.对于步骤6,进一步地分为单物理机的模拟bgp路由器生成和跨物理机链接的生成两个步骤。对于单物理机的生成,本方法根据模拟bgp路由器的分布信息,在本物理机上生成分布信息属于本物理机的模拟bgp路由器;再根据已经分配好的ip地址信息为每个bgp路由器创建网络接口并连入到ip地址对应的网段内。对于那些两端路由器分别分布在两台不同物理机上的链路,采用适当的服务器集群化技术,在两个跨物理机分布的模拟bgp路由器之间的链接搭建起来。

8.启动所有模拟bgp路由器的bgp路由服务。

实施例

为了解决自治域系统级的网络构建和模拟的问题,本发明提出了一种基于路由器ip地址分配算法的自动化网络路由拓扑模拟方法。本发明提出的方法本质上是利用一定数量的高性能服务器模拟大规模bgp路由器构建的自治域系统级的网络路由拓扑。

步骤如下:

1.模拟条件

假设自治域系统级信息由node-list和link-list两个文件给出(亦可以用其它形式给出)。其中node-list文件为自治域个体信息,包括自治域号,自治域名称,自治域声明的网络前缀。link-list文件内容为自治域之间两两的邻接信息,link-list的每一行表示一条链路,包括链路一侧的自治域号,链路另一侧的自治域号,链路带宽,链路两侧自治域的商业关系。文件样例如示例(1)、(2)所示。

假设模拟拓扑过程可用的物理机ip地址由hostip-hostid.txt文件给出,该文件样例如示例(3)所示,文件每一行有两个字段,字段1为物理机ip地址,字段2为物理机逻辑id:

假设模拟拓扑过程中,每个物理机上分布的模拟自治域情况由hostid-as.txt文件给出,文件每一行有两个字段,字段1为物理机逻辑id,字段2为该物理机上分布的自治域的自治域号,说明字段2自治域对应的bgp路由器被分配到字段1对应的物理机上。该文件样例如示例(4)所示。

(1)node-list文件格式样例:

1001#as-name-1001#1.1.0.0/16

1002#as-name-1002#1.2.0.0/16

1003#as-name-1003#1.3.0.0/16

1004#as-name-1004#1.4.0.0/16

(2)link-list文件格式样例:

1001#1002#50m#p2c

1001#1003#50m#p2c

1002#1003#50m#c2p

1002#1004#25m#p2c

(3)hostip-hostid.txt文件格式样例:

10.10.11.131#1

10.10.11.132#2

10.10.11.133#3

(4)hostid-as.txt文件格式样例:

1#1001

1#1002

2#1003

3#1004

上述信息能够描述出某个路由拓扑的所有自治域级信息,根据这些信息可以很容易了解该拓扑自治域级形态和属性。如下图3所示(有向边表示商业关系):

2.ip地址分配

接着,我们提出了根据自治域级拓扑信息构建ip地址级拓扑信息的方法。目的是给每个模拟bgp路由器自动分配ip地址,得到每个bgp路由器的ip地址级信息后,为模拟搭建过程提供路由器信息配置。ip地址分配过程总的分三步:1.给每个模拟bgp路由器分配lo:0接口ip地址;2.分配bgp链路两侧都在同一台物理机上的bgp路由器接口的ip地址;3.分配跨物理机邻接的bgp路由器接口的ip地址。

该方法涉及的步骤将以上述四个说明自治域级拓扑的文件为输入,输出为每个模拟bgp路由器的ip地址级信息,包括接口ip、邻接关系及跨物理机的邻接信息。输出信息用以下三个输出文件node-list.ip_level、link-list.ip_level和inter-link.txt来说明,但形式不唯一,也可以以其它可说明的形式表示这些信息。通过node-list.ip_level、link-list.ip_level和inter-link.txt所提供的信息,可以绘制bgp路由器构建的拓扑图,也达到了拓扑模拟的基本准备条件。

2.1分配ip地址前准备

建立一个以自治域号为键的字典ip_dict,字典的值为空列表,将保存每个自治域对应的bgp路由器的被分配的ip地址列表。

建立一个列表ip_link_list,保存ip地址之间的邻接,即保存由link-list中自治域的邻接映射到的对应的接口ip地址之间的邻接信息。

建立一个列表inter_link_list,保存跨物理机自治域的ip地址之间的邻接信息。

2.2分配bgp路由器lo:0接口的ip地址

由于模拟自治域路由拓扑时,每个自治域内只有一台主机,即bgp路由器。由于bgp路由器有时会被分配邻居自治域声明的ip地址,若某个bgp路由器所有接口ip地址都是邻居自治域的前缀下的ip地址,则无法路由到该bgp路由器对应的自治域。因此为了保证路由目的自治域与bgp路由器声明的网络前缀保持一致,我们在每个模拟bgp路由器的lo:0虚拟接口上分配了一个ip地址。

2.3分配跨物理机链路两侧接口ip地址

跨物理机链路指的是,该链路两侧的自治域根据hostid-as.txt被分布在两台物理机上,这样的链路在模拟时通过隧道技术建立跨物理机的连接,使得被分配的ip地址能够跨物理机相通。本发明中对跨物理机链路的ip地址分配做单独处理,分配过程如下:

(1)遍历拓扑文件(link-list)中所有链接,以hostid-as.txt文件为参照,如果链接两侧自治域在不同物理机上,提取这样的链接,我们称这些链接的集合为inter-link。

(2)inter-link的每一行包含一条从自治域a到自治域b的链接,分配接口ip地址时,从自治域a声明的网络前缀中选择一段未使用的足够大的网段,为自治域a对应的bgp路由器、自治域b对应的bgp路由器,分别创建一个接口,并分配一个刚刚选择的网段的ip地址,分别追加到ip_dict中。同时,把分配的ip地址对作为一个邻接追加到ip_link_list中,也要追加到inter_link_list中。

图4为分配过lo:0接口ip地址和跨物理机链路两侧接口ip地址后的信息示意图,如4图可知,我们已经已知了模拟bgp路由器的一些接口ip地址信息。

2.4分配同物理机链路两侧接口ip地址

同物理机链路指的是,该链路两端的自治域在模拟时对应的bgp路由器分布在同一台物理机上。对于分配同物理机链路两侧接口ip地址,本发明提出三种ip地址自动分配方法,分别命名为“非子网模式”、“强子网模式”和“弱子网模式”。

2.4.1非子网模式

非子网模式为每一条邻接链路都分配互不重叠的网段。分配步骤如下:

(1)从link-list中取出两侧自治域分布于同一物理机的链路,我们称这些链路构成的集合为inner-link。

(2)inner-link的每一行包含一条从自治域a到自治域b的链接,分配接口ip地址时,从自治域a声明的网络前缀中选择一段未使用的足够大的网段,为自治域a对应的bgp路由器、自治域b对应的bgp路由器,分别创建一个接口,并分配一个刚刚选择的网段的ip地址,分别追加到ip_dict中。同时,把分配的ip地址对作为一个邻接追加到ip_link_list中。

形成的ip地址级拓扑如图5所示。假设这4个自治域位于同一台物理机上,则使用非子网模式自动分配的ip地址信息如下。

2.4.2强子网模式

这种ip地址分配方式的使用目的在于节省网段,提高网段利用率,缓解网络模拟过程中因生成子网过多导致的物理机负载过重的问题。假设自治域a、自治域b和自治域c全连接,则该分配方式在描述它们之间邻接关系时,只在其中一个自治域的声明的网络前缀中选择一个网段,然后给自治域a、自治域b和自治域c都仅仅分配一个ip地址。自治域a、自治域b和自治域c之间的bgp会话将仅通过它们各自的唯一接口ip地址来进行。具体的ip地址分配步骤如下:

(1)从link-list中取出两侧自治域分布于同一物理机的链路,我们称这些链路构成的集合为inner-link。

(2)构造一个子网字典subnet_dict,字典的键是自治域号,字典的值是一个自治域号的列表。

(3)循环遍历inner-link的每一行,直到inner-link为空。每次遍历时执行步骤4,5,6。

(4)从inner-link中取出一行,假设该行表示自治域a和自治域b的邻接。则以自治域a的自治域号为subnet_dic的键,将a和b的自治域号追加到subnet_dict[a]的值中。从inner-link中删除这一行。

(5)遍历直到inner-link最后一行,将所有与自治域a邻接的自治域追加到subnet_dict[a]中,并从inner-link中删除这一行。

(6)再次遍历inner-link,将已经在subnet_dict[a]中的自治域之间的邻接从inner-link中也删除。

(7)计数subnet_dict[a],从自治域a声明的网络前缀中选出一个足够大小的未被使用的网段,给subnet_dict[a]中的自治域分配一个同网段的ip地址,并把各自的ip地址追加到ip_dict中各自的键对应的值中。

(8)遍历link-list,如果找到邻接的两个自治域都在subnet_dict[a]中,则用它们刚刚被分配的ip地址表示这个邻接关系,并追加到ip_link_list中。

形成的ip地址级拓扑如图6所示。假设这4个自治域位于同一台物理机上,则使用强子网模式自动分配的ip地址信息如下,示意图上侧的三个模拟bgp路由器的连接相当于通过一个虚拟交换设备连接在同一网段,每个路由器使用同一个ip地址同其它两个路由器通信。

2.4.3弱子网模式

这种ip地址分配方式和强子网模拟很相似,也能达到节省网段的目的。假设自治域a、自治域b和自治域c全连接。遍历是有顺序的,如果先遍历到自治域a,则用a的网络前缀为a、b、c都分配一个ip地址。当描述a和b、a和c之间的邻接关系时,用被分配的ip地址的邻接来表示。而b和c之间的邻接,则当遍历到b(或c)时,用b(或c)声明的网络前缀为b和c分配一个ip地址,并用该ip地址的邻接表示这两个自治域之间的邻接关系。具体的ip地址分配步骤如下:

(1)从link-list中取出两侧自治域分布于同一物理机的链路,我们称这些链路构成的集合为inner-link。

(2)构造一个子网字典subnet_dict,字典的键是自治域号,字典的值是一个自治域号的列表。

(3)循环遍历inner-link的每一行,直到inner-link为空。每次遍历时执行步骤4,5,6。

(4)从inner-link中取出一行,假设该行表示自治域a和自治域b的邻接。则以自治域a的自治域号为subnet_dic的键,将a和b的自治域号追加到subnet_dict[a]的值中。从inner-link中删除这一行。

(5)遍历直到inner-link最后一行,将所有与自治域a邻接的自治域追加到subnet_dict[a]中,并从inner-link中删除这一行。

(6)计数subnet_dict[a],从自治域a声明的网络前缀中选出一个足够大小的未被使用的网段,给subnet_dict[a]中的自治域分配一个同网段的ip地址,并把各自的ip地址追加到ip_dict中各自的键对应的值中。

(7)遍历link-list,如果某邻接关系中包含自治域a,则用它们刚刚被分配的ip地址表示这个邻接关系,并追加到ip_link_list中。

形成的ip地址级拓扑如下图7所示。假设这4个自治域位于同一台物理机上,则使用弱子网模式自动分配的ip地址信息如下,示意图中路由器1.1.0.2和1.2.0.2、1.1.0.2和1.3.0.2的通信通过子网1.1.0.8/29;而路由器1.2.0.2和1.3.0.2、1.2.0.2和1.4.0.2的通信通过子网1.2.0.8/29。

2.5写入文件

(1)已知ip_dict字典中的自治域号及ip地址列表,结合node-list,hostid-as.txt及hostip-hostid.txt文件中的信息,以一定的格式将每个bgp路由器的全部信息形成node-list.ip_level文件。

(2)以ip_link_list列表中的ip地址邻接信息,以一定的格式形成link-list.ip_level文件。

(3)将inter_link_list列表中的ip地址邻接,以一定的格式写入形成inter-link.txt文件。

3.生成bgp路由软件配置

如果说为bgp路由器配置ip地址实现了自治域邻居之间的可达性,那么生成bgp路由软件配置则是使bgp路由器“知道”谁是自己的邻接自治域,并可建立bgp会话。

为了启动模拟bgp路由器的路由功能,必须要向模拟bgp路由器的路由软件中写入静态的邻接配置,bgp路由软件将会以此来发现邻接自治域并建立路由表。本发明采用的方法是在模拟bgp路由器生成之前,将所有模拟bgp路由器的配置写好。生成所有模拟bgp路由器时,读入自己的bgp路由配置并启动bgp服务,即可建立自治域邻居之间的bgp会话并生成各自的bgp路由表。

常用的bgp路由软件如quagga、bird等,均可运行在虚拟主机上并模拟bgp路由器的行为,在实际的模拟系统实现时,这些路由软件均可被使用,且配置方法类似。本发明以quagga配置文件格式为例说明配置过程。

总的来说,配置bgp路由软件的方法是将配置写入zebra.conf和bgpd.conf文件中,并启动zebra和bgpd服务。具体步骤为:

(1)遍历node-list.ip_level的每一行,得到bgp路由器信息,假设当前遍历到的bgp路由器对应的自治域为a,则对于这一行对应的自治域,依次执行步骤2,3。

(2)从bgp路由器信息中,获得自治域bgp路由器的各个接口的ip地址,在zebra.conf中声明所有的接口名和接口ip地址。

(3)从bgp路由器信息中,获得主机名(以lo:0接口的ip地址作为主机名),自治域号,声明的网络前缀,分别填写到bgpd.conf配置的hostname字段,routerbgp字段和network字段。遍历link-list.ip_level,找到与该bgp路由器邻接的ip地址,用这些ip地址填写bgpd.conf的neighbor字段;根据link-list.ip_level邻接信息中的商业关系,填写bgpd.conf中本自治域同邻接自治域的商业关系。

(3)bgp路由软件配置信息以hostname字段为标识。在生成模拟bgp路由器时,bgp路由器根据自己的hostname读入自己的配置信息到路由软件配置文件的位置,并启动路由服务,即可建立自治域邻居之间的会话,建立bgp拓扑。

bgp路由软件配置生成后,提供了模拟所需的信息,目前的状态如图8:

4.模拟bgp路由器生成

4.1单物理机拓扑生成(参见图9)

用于模拟拓扑的所需信息生成后,分发到每一台实验用物理机机上。启动每一台物理机上的生成拓扑程序,该程序首先从“ip地址分配”步骤输出得到每个模拟bgp路由器ip地址级的信息,包括每个bgp路由器各个接口的ip地址、应该被分配到的物理机、声明的网络前缀、邻接的bgp路由器的一个接口ip地址等。单物理机上的拓扑生成方法如下:

(1)首先遍历每一个bgp路由器的ip地址级信息,判断该模拟bgp路由器是否应该分布在本物理机上,如果分布在本机上,则使用虚拟化技术,在本物理机上模拟出一台bgp路由器。

(2)对于同子网的ip地址的连接,本发明采用创建网段的方式。遍历该bgp路由器的各个ip地址信息,对于非跨主机链接(链接两侧的bgp路由器分布在同一台物理机上)的ip地址,如果该ip地址所属的网段已经建立,则直接为该模拟bgp路由器创建网卡,配置该ip地址。如果该网段未建立,则先创建网段,再配置ip地址,使该模拟bgp路由器连接到该子网中,使其同任何也连到该子网中的bgp路由器在逻辑上相通。

(3)读入该模拟bgp路由器的路由软件配置,启动bgp路由服务。

4.2跨物理机链接生成

由于模拟bgp路由器分布在多台物理机上,为了模拟完整的拓扑,必须将跨物理机的自治域之间的邻居关系建立,且保证在模拟bgp路由器层次上是透明的,即一台物理机上的模拟bgp路由器不能分辨它的某个邻居是否分布在另一台物理机上。

建立跨物理机的链接,即使得两个物理机上的虚拟设备能够直接通过自身的ip地址相连。采用的方法可以是隧道技术、或者给虚拟设备配置桥接模式使之直接链接到物理网络。以下以隧道方案为例,并利用openvswitch和pipework工具建立跨物理机链接来说明该步骤。

(1)将实验用物理机连接到同一台交换机上,保证相互能够ping通。

(2)在每台物理机上安装openvswitch服务,创建openvswitch接口ovs0,两个桥接口br0,br1分别用于桥接ovs0和docker容器的网络接口。

(3)利用gre隧道将各个物理机上的ovs0接口顺序练成环状,配置openvswitch使用生成树协议(stp)。

(4)从inter-link.txt中读取跨主机的bgp路由器的链接,分别登陆到相应主机上使用pipework为这条链接两端的模拟bgp路由器添加相应接口的ip地址。

(5)更新路由软件配置,重启bgp路由服务。

至此,使用模拟bgp路由器模拟的自治域级路由拓扑完成,各个路由器的状态如图10:

5.自动化拓扑构建模拟过程(参见图11)

本发明提出自动化拓扑构建模拟过程的方法,将整个上述过程通过脚本集中控制和部署。自动化过程的总体分为以下步骤:

(1)将自治域级拓扑信息映射到ip地址级拓扑信息,即给模拟bgp路由器分配ip地址,同时得到ip地址级的自治域邻接关系和跨物理机的ip地址邻接;

(2)生成bgp路由软件配置信息;

(3)在每一台物理机上应用虚拟化技术创建模拟bgp路由器,根据分配的ip地址创建网络接口并配置ip地址,建立不跨物理机的模拟bgp路由器之间的链接;

(4)令模拟bgp路由器读入路由软件配置;

(5)在物理机间通过隧道技术等建立模拟bgp路由器之间的连接,连接跨物理机的链接;

(6)重启所有模拟bgp路由器的路由服务,拓扑建立。

本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1