CN118250180A - 一种基于容器的路由仿真系统及方法 - Google Patents

一种基于容器的路由仿真系统及方法 Download PDF

Info

Publication number
CN118250180A
CN118250180A CN202410230696.0A CN202410230696A CN118250180A CN 118250180 A CN118250180 A CN 118250180A CN 202410230696 A CN202410230696 A CN 202410230696A CN 118250180 A CN118250180 A CN 118250180A
Authority
CN
China
Prior art keywords
routing
virtual
virtual network
unit
simulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410230696.0A
Other languages
English (en)
Inventor
陈泽婵
蔡斯亮
张建丰
张大明
李勇
刘臻
谢树山
肖小崖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 7 Research Institute
Original Assignee
CETC 7 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 7 Research Institute filed Critical CETC 7 Research Institute
Priority to CN202410230696.0A priority Critical patent/CN118250180A/zh
Publication of CN118250180A publication Critical patent/CN118250180A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提出一种基于容器的路由仿真系统及方法,涉及网络仿真的技术领域,路由仿真系统由虚拟网络节点构建单元、虚拟拓扑构建单元、软件路由单元、链路模拟单元、半实物互联单元组成,以容器形式创建虚拟网络节点并进行封装,创建虚拟网络节点之间的虚拟链路,构建网络拓扑,并将虚拟网络节点与实物节点互联,虚拟链路上配置链路参数以模拟实际的链路情况,最后在虚拟网络节点上运行路由软件,得到搭建好的路由仿真环境,实现高效、灵活、逼真、成本低且物理资源消耗较低的路由仿真,可仿真设备级代码,按需定制特殊网络设备、场景,并且能够与真实设备互联互通,具备半实物仿真能力。

Description

一种基于容器的路由仿真系统及方法
技术领域
本发明涉及网络仿真的技术领域,更具体地,涉及一种基于容器的路由仿真系统及方法。
背景技术
网络仿真技术是一种通过建立网络设备和网络链路的统计模型,并模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据的仿真技术。通过网络仿真,可以对目前常见的网络设备、网络通信链路、数据包传输等进行模拟,并可以对仿真的流量和数据包进行抓取分析,以满足学习和研究的目的。目前的网络仿真工具主要有EXata、QualNet、OPNET、NS等。然而,上述工具存在一些共性缺点,例如学习门槛高、调试困难,且在仿真软件中运行的代码与实际设备上运行的代码完全不同,无法进行代码层级的调试,也不具备移植性。此外,软件还有各自的缺点,如Qualnet、OPNET、NS不支持半实物仿真;OPNET、NS仿真网络规模和流量很大时,仿真效率会明显降低;OPNET对路由协议的仿真比较适合,但是对链路的仿真则较困难。
发明内容
为解决当前路由仿真技术成本高、消耗大、学习门槛高、无法与真实设备互联互通的问题,本发明提出一种基于容器的路由仿真系统及方法,在网络协议行为层次对真实路由器进行建模与仿真,在同一物理机上搭建由多个虚拟路由器组成的网络环境,灵活逼真、资源消耗较低,能实现代码级仿真,且具备半实物仿真能力。
为了达到上述技术效果,本发明的技术方案如下:
一种基于容器的路由仿真系统,包括:
虚拟网络节点构建单元、虚拟拓扑构建单元、软件路由单元、链路模拟单元和半实物互联单元;
所述虚拟网络节点构建单元用于构建网络设备,例如虚拟路由器、虚拟交换机、虚拟服务器、虚拟终端等虚拟网络节点,在本路由仿真系统中主要用于生成虚拟路由器节点。
所述软件路由单元在虚拟路由器节点中运行,用于通过构建路由管理层,使虚拟网络节点在行为和功能上模拟路由器;
所述虚拟拓扑构建单元用于生成虚拟网络节点之间的虚拟链路,使虚拟网络节点最终呈现用户指定的网络拓扑连接关系;
所述链路模拟单元用于设置虚拟链路的属性,模拟真实环境下的带宽、丢包、时延等特定场景;
所述半实物互联单元用于在虚拟网络节点与实物路由节点互联互通时打通虚拟网络节点与物理节点间的数据流,实现协议报文和业务数据的互相转发。
本技术方案提出由虚拟网络节点构建单元、虚拟拓扑构建单元、软件路由单元、链路模拟单元、半实物互联单元组成的路由仿真系统,能够用于实现轻量化、定制化的路由仿真方法,且可与真实设备互联互通,具备半实物仿真能力。
优选地,所述虚拟网络节点构建单元、虚拟拓扑构建单元、软件路由单元、链路模拟单元和半实物互联单元基于Linux系统实现。
优选地,所述虚拟网络节点构建单元的部署步骤包括:
在主机上安装并启动Docker服务,并拉取对应操作系统版本的Docker镜像;
创建Docker镜像的一个实例,在该实例中安装基本网络工具,并将该实例封装为新镜像,作为虚拟网络节点的基础Docker镜像;
在虚拟网络节点的基础Docker镜像的实例中安装软件路由单元,使该实例具备路由器基本功能。
在此,采用容器技术在单台物理主机上来构建多个虚拟化节点,与传统虚拟化不同的是,Docker只模拟一个程序最核心的运行环境,而不是模拟真实硬件并创建出一台拥有完整功能的逻辑计算机,因而Docker十分轻量、启动更快。
优选地,所述软件路由单元包括转发模块、路由管理模块、路由协议模块和用户控制台;
所述转发模块用于实现对数据包的处理和转发;
所述路由管理模块用于向各个路由协议模块提供统一访问内核路由表的接口,实现对内核路由表的维护和管理;
所述路由协议模块用于实现对具体路由协议的支持,执行路由发现、路由计算等功能;
所述用户控制台用于模拟真实路由器的控制台,为用户提供访问、配置路由器的各种命令,实现对路由器的管理与控制。
优选地,所述转发模块包括内核转发表和软件交换模块,所述软件交换模块根据内核转发表执行不同数据的具体转发行为。
优选地,所述软件路由单元中的路由管理模块、路由协议模块、用户控制台使用基于Zebra的Quagga平台实现,将Linux系统变成一台路由器,具有兼容性好、轻量化、灵活性高、开源等优点;软件路由单元中的转发模块使用Linux内核的fib系统实现。
优选地,所述虚拟拓扑构建单元利用ovs-docker工具创建虚拟网络节点之间的网络拓扑。
优选地,所述链路模拟单元利用Linux内核中的netem模块出模拟复杂的互联网传输性能,实现模拟真实环境下的特定场景,所述特定场景包括但不限于带宽、丢包、时延;其中,通过Linux系统中的tc工具控制netem模块的工作模式。
优选地,所述半实物互联单元基于openvswitch实现,过程包括:
通过宿主机的openvswitch工具创建网桥,将Docker实例中与外部互联的虚拟网卡和宿主机网卡桥接在一起,实现虚拟网卡与真实网卡的物理互联;
下发Docker虚拟网卡与宿主机网卡数据包双向转发流表,实现虚拟网卡与真实网卡的逻辑互通。
在此,在路由软件层级,路由仿真系统与实物路由器并无不同,实物路由器无法区分互联节点是否为虚拟网络节点。
本发明还提出一种基于容器的路由仿真方法,包括:
S1.以容器形式创建虚拟网络节点,并对虚拟网络节点进行封装;
S2.构建网络拓扑,创建虚拟网络节点之间的虚拟链路,并将虚拟网络节点与实物节点互联;
S3.设置虚拟链路的属性,如带宽、时延、抖动、丢包率等,模拟真实环境下的链路情况;
S4.在虚拟网络节点上运行路由软件所述路由软件为软件路由单元中运行的软件,如ospf进程,相应网口使能ospf协议,配置正确的参数,如域号、网络类型等,使虚拟网络节点在行为和功能上模拟路由器。
与现有技术相比,本发明技术方案的有益效果是:
本发明提出一种基于容器的路由仿真系统及方法,所述路由仿真系统由虚拟网络节点构建单元、虚拟拓扑构建单元、软件路由单元、链路模拟单元、半实物互联单元组成,以容器形式创建虚拟网络节点并进行封装,构建网络拓扑,创建虚拟网络节点之间的虚拟链路,并将虚拟网络节点与实物节点互联,在虚拟链路上配置链路参数以模拟实际的链路情况,最后在虚拟网络节点上运行路由软件,得到搭建好的路由仿真环境,实现高效、灵活、逼真、成本低且物理资源消耗较低的路由仿真系统,可仿真设备级代码,按需定制特殊网络设备、场景,并且能够与真实设备互联互通,具备半实物仿真能力。
附图说明
图1表示本发明实施例1中提出的基于容器的路由仿真系统结构示意图;
图2表示本发明实施例2中的软件路由单元结构示意图;
图3表示本发明实施例2中的软件路由单元工具示意图;
图4表示本发明实施例3中的路由仿真环境示意图;
图5表示本发明实施例3中提出的基于容器的路由仿真方法流程示意图;
图6表示本发明实施例3中的虚拟网络节点创建示意图;
图7表示本发明实施例3中的虚拟链路构建示意图;
图8表示本发明实施例3中的虚拟链路配置环境示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好地说明本实施例,附图某些部位会有省略、放大或缩小,并不代表实际尺寸;
对于本领域技术人员来说,附图中某些公知内容说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
附图中描述位置关系的仅用于示例性说明,不能理解为对本专利的限制;
实施例1
如图1所示,本实施例提出一种基于容器的路由仿真系统,包括:虚拟网络节点构建单元、虚拟拓扑构建单元、软件路由单元、链路模拟单元和半实物互联单元;
所述虚拟网络节点构建单元用于构建网络设备,例如虚拟路由器、虚拟交换机、虚拟服务器、虚拟终端等虚拟网络节点,在本路由仿真系统中主要用于生成虚拟路由器节点,也可根据需要构建虚拟终端等设备,模拟更复杂的网络场景;
所述软件路由单元在虚拟路由器节点中运行,用于通过构建路由管理层,使虚拟网络节点在行为和功能上模拟路由器;
所述虚拟拓扑构建单元用于生成虚拟网络节点之间的虚拟链路,使虚拟网络节点最终呈现用户指定的网络拓扑连接关系;
所述链路模拟单元用于设置虚拟链路的属性,模拟真实环境下的特定场景;
所述半实物互联单元用于在虚拟网络节点与实物路由节点互联互通时打通虚拟网络节点与物理节点间的数据流,实现协议报文和业务数据的互相转发。
实施例2
在本实施例中提出的基于容器的路由仿真系统,基于实施例1,所述路由仿真系统基于Linux(Ubuntu)环境实现,其他主机环境同理。
虚拟网络节点采用容器技术在单台物理主机上来构建多个虚拟化节点,其典型代表有Docker、OpenVZ、Solaris Zone等。在本实施例中,本路由仿真系统采用Docker容器技术实现,与传统虚拟化不同的是,Docker只模拟一个程序最核心的运行环境,而不是模拟真实硬件并创建出一台拥有完整功能的逻辑计算机,因而Docker十分轻量、启动更快。
基于此,以ubuntu系统为例,所述虚拟网络节点构建单元的部署步骤包括:
在Linux主机上安装并启动Docker服务,并拉取对应操作系统版本的Docker镜像,如:
sudo docker pull ubuntu:18.04
在构建拓扑时,每个虚拟网络节点均作为Docker镜像的一个实例,为便于在网络仿真环境中使用,在实例中安装基本网络工具,如ifconfig、ping、iproute2、iperf3等,将该实例封装为新镜像,作为虚拟网络节点的基础Docker镜像;
其中,在虚拟网络节点的基础Docker镜像的实例中安装软件路由单元,使该实例具备路由器基本功能。
软件路由单元的常用工具有Quagga、Click、XORP等,在本实施例中,所述软件路由单元基于Zebra的Quagga平台实现,具有兼容性好、轻量化、灵活性高、开源等优点,支持BGP、OSPF、RIP等路由协议,易于对代码进行修改。其中,如图2和图3所示,所述软件路由单元包括转发模块、路由管理模块、路由协议模块和用户控制台;
所述转发模块用于实现对数据包的处理和转发,所述转发模块包括内核转发表和软件交换模块,所述软件交换模块根据内核转发表执行不同数据的具体转发行为;在本实施例中,转发模块由Linux内核的fib系统实现,进入软件路由器的数据包,查找fib并进行处理与转发;
所述路由管理模块用于向各个路由协议模块提供统一访问内核路由表的接口,实现对内核路由表的维护和管理;在本实施例中,路由管理模块使用Quagga架构下的Zebra实现,Zebra与路由协议进程为C/S架构,Zebra作为一个server守护进程,各路由协议进程则作为client。Zebra对下监听内核netlink消息,创建删除接口网卡、ip、路由等信息,设置ipforward参数,对上将内核事件通告给路由协议进程,为路由协议进程提供修改内核路由表的接口,相应命令行配置命令。
所述路由协议模块用于实现对具体路由协议(例如BGP、RIP、OSPF等)的支持,执行路由发现、路由计算等功能;在本实施例中,路由协议模块由Quagga实现,Quagga支持RIPv1、OSPF、BGP、ISIS、RIPng、OSPFv3、BGP-4+等常用路由协议;
所述用户控制台用于模拟真实路由器的控制台,为用户提供访问、配置路由器的各种命令,实现对路由器的管理与控制;在本实施例中,用户控制台模块由VTY实现,VTY是一种类似于Linux Shell的虚拟终端接口,负责对访问的安全验证、数据缓冲、命令解析、模式切换和命令调用,通过实现所需的命令集,提供了配置Quagga平台路由协议和Zebra的命令行接口。
虚拟拓扑构建单元用于生成虚拟网络节点之间的虚拟链路,使虚拟网络节点最终呈现用户指定的网络拓扑连接关系,形成虚拟网络空间。在实际应用中,netns作为linux中提供网络虚拟化的一个项目,可以选择使用netns在本地虚拟化出多个网络环境,通过网络命名空间隔离网络资源,如/proc/net、IP地址、网卡、路由等,netns可在LXC容器中用来为容器提供网络。在工具的选择上,利用Linux ip命令的一个工具ip netns,用来创建网络命名空间、操作虚拟网络环境,包括增改网络设备等,可以用它给Docker容器的网络命名空间中增加网络设备,再通过ip link工具创建veth pair,将两端添加给容器及网桥,即可实现容器拓扑互联。
在本实施例中,由于半实物互联单元需使用openvswitch,因此,所述虚拟拓扑构建单元选择更为便捷的ovs-docker工具,其原理同netns,但是将创建Docker拓扑的过程封装为给Docker增加/删除网卡、设置vlan等基本操作,结合openvswitch使用。
链路模拟单元利用Linux 2.6及以上内核版本提供的网络模拟功能模块netem出模拟复杂的互联网传输性能,实现模拟真实环境下的特定场景,所述特定场景包括但不限于带宽、丢包、时延;其中,通过Linux系统中的tc工具控制netem模块的工作模式。
半实物互联单元基于openvswitch实现,过程包括:
通过宿主机的openvswitch工具创建网桥,将Docker镜像中的实例与外部互联的虚拟网卡和宿主机网卡桥接在一起,实现虚拟网卡与真实网卡的物理互联;
下发Docker虚拟网卡与宿主机网卡数据包双向转发流表,实现虚拟网卡与真实网卡的逻辑互通。
实施例3
本实施例提出一种基于容器的路由仿真方法,以图4所示的拓扑为例,该拓扑包含2个虚拟网络节点和1个实物网络节点,该网络中运行OSPF协议;如图5所示,所述方法包括以下步骤:
S1.如图6所述,以容器形式创建并运行虚拟网络节点R1、R2;
S2.构建网络拓扑,创建虚拟网络节点之间的虚拟链路<R1,R2>,并将虚拟网络节点R2与实物节点D1互联,参见图7;
S3.在虚拟链路上配置链路参数,如带宽、时延、抖动、丢包率等,模拟实际的链路情况,参见图8;
S4.在虚拟网络节点上运行路由软件,所述路由软件为软件路由单元中运行的软件,如ospf进程,相应网口使能ospf协议,配置正确的参数,如域号、网络类型等,得到搭建好的如图4所示的路由仿真环境。
显然,本发明的上述实施例仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (10)

1.一种基于容器的路由仿真系统,其特征在于,包括:虚拟网络节点构建单元、虚拟拓扑构建单元、软件路由单元、链路模拟单元和半实物互联单元;
所述虚拟网络节点构建单元用于构建虚拟网络节点,所述虚拟网络节点包括虚拟路由器节点、虚拟终端;
所述软件路由单元在虚拟路由器节点中运行,用于通过构建路由管理层,使虚拟网络节点在行为和功能上模拟路由器;
所述虚拟拓扑构建单元用于生成虚拟网络节点之间的虚拟链路,使虚拟网络节点最终呈现用户指定的网络拓扑连接关系;
所述链路模拟单元用于设置虚拟链路的属性,模拟真实环境下的特定场景;
所述半实物互联单元用于在虚拟网络节点与实物路由节点互联互通时打通虚拟网络节点与物理节点间的数据流,实现协议报文和业务数据的互相转发。
2.根据权利要求1所述的基于容器的路由仿真系统,其特征在于,所述虚拟网络节点构建单元、虚拟拓扑构建单元、软件路由单元、链路模拟单元和半实物互联单元基于Linux系统实现。
3.根据权利要求2所述的基于容器的路由仿真系统,其特征在于,所述虚拟网络节点构建单元的部署步骤包括:
在主机上安装并启动Docker服务,并拉取对应操作系统版本的Docker镜像;
创建Docker镜像的一个实例,在该实例中安装基本网络工具,并将该实例封装为新镜像,作为虚拟网络节点的基础Docker镜像;
在虚拟网络节点的基础Docker镜像的实例中安装软件路由单元,使该实例具备路由器基本功能。
4.根据权利要求1所述的基于容器的路由仿真系统,其特征在于,所述软件路由单元包括转发模块、路由管理模块、路由协议模块和用户控制台;
所述转发模块用于实现对数据包的处理和转发;
所述路由管理模块用于向各个路由协议模块提供统一访问内核路由表的接口,实现对内核路由表的维护和管理;
所述路由协议模块用于实现对具体路由协议的支持,执行路由发现、路由计算等功能;
所述用户控制台用于模拟真实路由器的控制台,为用户提供访问、配置路由器的各种命令,实现对路由器的管理与控制。
5.根据权利要求4所述的基于容器的路由仿真系统,其特征在于,所述转发模块包括内核转发表和软件交换模块,所述软件交换模块根据内核转发表执行不同数据的具体转发行为。
6.根据权利要求5所述的基于容器的路由仿真系统,其特征在于,所述软件路由单元中的路由管理模块、路由协议模块、用户控制台使用基于Zebra的Quagga平台实现,软件路由单元中的转发模块使用Linux内核的fib系统实现。
7.根据权利要求4所述的基于容器的路由仿真系统,其特征在于,所述虚拟拓扑构建单元利用ovs-docker工具创建虚拟网络节点之间的网络拓扑。
8.根据权利要求2所述的基于容器的路由仿真系统,其特征在于,所述链路模拟单元利用Linux内核中的netem模块出模拟复杂的互联网传输性能,实现模拟真实环境下的特定场景,所述特定场景包括但不限于带宽、丢包、时延;其中,通过Linux系统中的tc工具控制netem模块的工作模式。
9.根据权利要求7所述的基于容器的路由仿真系统,其特征在于,所述半实物互联单元基于openvswitch实现,过程包括:
通过宿主机的openvswitch工具创建网桥,将Docker实例中与外部互联的虚拟网卡和宿主机网卡桥接在一起,实现虚拟网卡与真实网卡的物理互联;
下发Docker虚拟网卡与宿主机网卡数据包双向转发流表,实现虚拟网卡与真实网卡的逻辑互通。
10.一种基于容器的路由仿真方法,其特征在于,包括:
S1.以容器形式创建虚拟网络节点,并对虚拟网络节点进行封装;
S2.构建网络拓扑,创建虚拟网络节点之间的虚拟链路,并将虚拟网络节点与实物节点互联;
S3.设置虚拟链路的属性,模拟真实环境下的链路情况;
S4.在虚拟网络节点上运行路由软件,配置正确的参数,使虚拟网络节点在行为和功能上模拟路由器。
CN202410230696.0A 2024-02-29 2024-02-29 一种基于容器的路由仿真系统及方法 Pending CN118250180A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410230696.0A CN118250180A (zh) 2024-02-29 2024-02-29 一种基于容器的路由仿真系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410230696.0A CN118250180A (zh) 2024-02-29 2024-02-29 一种基于容器的路由仿真系统及方法

Publications (1)

Publication Number Publication Date
CN118250180A true CN118250180A (zh) 2024-06-25

Family

ID=91563376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410230696.0A Pending CN118250180A (zh) 2024-02-29 2024-02-29 一种基于容器的路由仿真系统及方法

Country Status (1)

Country Link
CN (1) CN118250180A (zh)

Similar Documents

Publication Publication Date Title
CN110838954B (zh) 一种轻量级大规模自主网络协议功能测试方法
Wang et al. EstiNet openflow network simulator and emulator
Prete et al. Simulation in an SDN network scenario using the POX Controller
Baumgart et al. OverSim: A scalable and flexible overlay framework for simulation and real network applications
CN114363021B (zh) 网络靶场系统、网络靶场系统的虚拟网络实现方法及装置
CN102195803B (zh) 数据通信方法和数据通信系统
CN113259164B (zh) 基于虚拟化构建真实路由系统实现虚实组网的方法
CN114422010B (zh) 一种基于网络虚拟化的卫星通信仿真平台的协议测试方法
Ivey et al. Comparing a scalable SDN simulation framework built on ns-3 and DCE with existing SDN simulators and emulators
CN113992590A (zh) 基于软件定义网络的链路负载均衡方法
CN110493062A (zh) 一种基于Mininet的电力通信网的仿真平台
Kölsch et al. Hardware-in-the-loop simulation for Internet of Things scenarios
Rahman et al. Nutshell—simulation toolkit for modeling data center networks and cloud computing
Vencioneck et al. FlexForward: Enabling an SDN manageable forwarding engine in Open vSwitch
CN105323109B (zh) 互连网络仿真器及用于仿真互连网络的方法
CN115378822B (zh) 一种dds分布式应用仿真的方法和系统
CN118250180A (zh) 一种基于容器的路由仿真系统及方法
CN110493210A (zh) 一种基于sdn的可配置网络安全实验系统
CN112737815B (zh) 一种动态配置网络模拟器事件队列的方法及系统
Zec et al. Real-time ip network simulation at gigabit data rates
Muhammad et al. Simulating group communication protocols through an object-oriented framework
JP5063726B2 (ja) 仮想ノード装置のコンフィグ制御方法
Latifi et al. Emulating enterprise network environments for fast transition to software-defined networking
Poncea et al. Design and implementation of an Openflow SDN controller in NS-3 discrete-event network simulator
Taher Testing of floodlight controller with mininet in sdn topology

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination