温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于Docker的网络仿真平台设计与实现_黄俊
1
基于
Docker
网络
仿真
平台
设计
实现
2023 年 2 月 25 日第 7 卷第 4 期现代信息科技Modern Information Technology Feb.2023 Vol.7 No.401012023.022023.02收稿日期:2022-10-08基金项目:国家重点研发计划课题(2019YFB1802805);中国博士后科学基金(2018M643448);四川省重点研发计划项目(2022YFG0208,2022YFG0161);中央高校基本科研业务费专项资金(2021NYYXS53)基于 Docker 的网络仿真平台设计与实现黄俊1,陈曦1,2,吴涛3(1.西南民族大学 计算机科学与工程学院,四川 成都 610041;2.电子科技大学 信息与通信工程学院,四川 成都 611731;3.成都信息工程大学 计算机学院,四川 成都 610225)摘 要:网络模拟仿真类软件是计算机网络体系结构、协议、算法研究和教学的关键支撑,研发此类软件对于网络强国战略具有重要意义。目前市面上此类软件存在保真度较低、部署不便等问题,需要一款高保真、易编程的网络模拟仿真软件。针对上述问题,在 SDN 理念及框架下,采用 Docker 等轻量级技术,搭建容器化网络仿真平台,一体化提供虚拟网络的拓扑部署、流量注入等功能,用于观察、验证、分析、优化网络,能够广泛支持计算机网络的研究与教学。关键词:网络仿真;Docker;高保真;计算机网络中图分类号:TP311.5 文献标识码:A 文章编号:2096-4706(2023)04-0001-06Design and Implementation of Network Simulation Platform Based on DockerHUANG Jun1,CHEN Xi1,2,WU Tao3(1.School of Computer Science and Engineering,Southwest Minzu University,Chengdu 610041,China;2.School of Information and Communication Engineering,University of Electronic Science and Technology of China,Chengdu 611731,China;3.School of Computer Science,Chengdu University of Information Technology,Chengdu 610225,China)Abstract:The software of network simulation is the key support of computer network system architecture,protocol,algorithm research and teaching.The development of such software is of great significance for network power strategy.At present,there are many problems in such software on the market,such as low fidelity and inconvenient deployment.A high fidelity and easy programming network simulation software is urgently needed.To solve these problems,under the SDN concept and framework,this paper adopts Docker and other lightweight technologies,builds a containerized network simulation platform.It provides the topology deployment,traffic injection and other functions of the virtual network for observation,verification,analysis,and optimization of the network to widely support the research and teaching of computer network.Keywords:network simulation;Docker;high fidelity;computer network0 引 言当今世界互联网正处于飞速发展阶段,大数据、云计算和人工智能等 IT 领域相继兴起,这些行业的正常运作必须基于网络基础设施和网络技术,网络模拟仿真1就成了计算机网络体系结构、协议、算法研究的关键支撑。网络模拟仿真可以根据用户的需求自主设计和部署网络模型2,在消耗相对较少的费用成本和时间成本的情况下,了解网络在不同条件下的各种特性3,同时获取网络研究的海量高效的数据,提供了一个便捷、高效的观察、验证、分析、优化网络的手段,在现代互联网的设计和研究中的作用正变得越来越大。然而现有网络仿真和模拟软件还存在着多方面的问题4,主要集中在协议配置验证困难、用户流量注入困难、海量资源供应困难等5,若能在网络协议、算法的设计和验证中,DOI:10.19850/ki.2096-4706.2023.04.001充分融合网络仿真的易编程性和网络模拟的高保真特性,这对于快速、便捷、准确、真实地实施网络验证,具有重要价值。针对上述问题,本文提出基于 Docker6的网络仿真平台,采用 Docker、Open vSwitch7等轻量级虚拟化技术,配合 SDN控制器和 Docker 容器集群框架,利用 PyQt58开发前端操作界面,提供虚拟网络拓扑的设计部署、海量用户流量的灵活注入等关键功能,支撑网络仿真、网络协议验证,助力网络研发。1 相关技术1.1 DockerDocker 是一种开源容器引擎,其部署于宿主机中具有更高的启动效率和更少的性能开销。本平台以 Docker 容器为核心构建虚拟网络中的各虚拟节点,配合虚拟链路技术形成虚拟网络在物理宿主机上进行仿真。同时 Docker 具有完整的网络协议栈,结合 Quagga 创建支持多种路由协议的路由器,能够更加真实准确地再现网络,极大提高网络的保真度,方便对网络协议的监控和研究。1.2 PyQt5PyQt5 是一个跨平台的 Python 开发库,包含一组 Python02022023.022023.02第 4 期现代信息科技模块,主要用于开发图形用户界面。本平台主要使用 PyQt5中的 QtCore、QtWidgets、QtGui 模块开发前端界面,利用其信号槽特性与界面中的各功能按钮绑定,完成与平台后端各函数的交互,以实现平台各项功能。1.3 OpenvSwitchOpenvSwitch 简称 OVS,是一种开源的、支持多种协议的虚拟交换机,其作为虚拟端口灵活性更高,与传统交换机相比具有良好的编程可扩展性,同时也具备网络隔离和数据转发功能,本平台使用 OVS 技术并结合虚拟路由器实现不同局域网络中主机的数据转发。1.4 veth-pairveth-pair 是 Linux 系统底下一种成对出现的虚拟网络设备,用于连接两个虚拟网络设备,本文平台中的网元与网元之间即通过 veth-pair 技术连接,其一端与网络协议栈连接,一端在网元之间彼此相连,以实现虚拟网络中的节点连通。2 平台设计2.1 框架设计本文利用轻量级虚拟化技术,实现网络设备控制平面和数据平面的模拟,结合网络模拟的高保真性和网络仿真的易编程性,充分融合发挥两者技术优势,提出高保真、一体化的网络仿真平台,能够对网络协议进行监控,对网络流量进行统计,对网络配置进行验证,从而达到观察、分析、优化网络的目的。结合以上对平台的描述,本平台架构如图 1 所示,根据前后端到计算机底层划分为 4 个层次,依次为用户界面层、网络实验层、虚拟网络层、基础设施层。下面对各层次进行详细介绍。网络实验层用户界面层PyQt主界面Matplotlib实验结果绘制工具 实验内容定制工具SDN技术支撑存储资源网络资源计算资源资源支撑链路规格仓库节点镜像仓库镜像支撑基础设施层虚拟网络层TCP/IP实验包SDN实验包网络安全实验包自定义实验包用于实验的虚拟网络运行实验定制实验部署运行实例化按需一键生成虚拟网络Terminal命令行工具X Server远程登录工具图 1 平台架构2.1.1 用户界面层本平台利用 PyQt5 提供用户界面,呈现实验列表、实验手册、拓扑结构板块,利用 X Server 图形接口服务器提供进入节点内部的图形化UI,如Wireshark、packETH、Firefox等,Terminal 终端提供进入节点内部的命令行 UI。2.1.2 网络实验层呈现平台包含的实验,分为 SDN 实验、TCP/IP 实验、路由与交换实验、网络安全实验等。2.1.3 虚拟网络层OVS 虚拟交换机能够连接网络设备(如虚拟路由器、防火墙等)和终端设备(如虚拟计算机、服务器等),使网络可编程扩展,Docker 容器可通过 veth-pair 与 OVS 交换机直连,实现容器间的通信。2.1.4 基础设施层平台所用到的 Docker 镜像存储在本地镜像仓库里,包括主机、路由器、服务器等镜像,所有镜像均可使用提供的Dockerfile 通过 Docker build 命令构建。本平台部署在 Linux系统上,在 Python 环境下运行。2.2 功能设计2.2.1 前后端设计本平台采用前后端分离的方式开发,前端呈现用户操作界面,提供一键式部署拓扑结构、节点呈现、操控节点等功能,构成交互式网络模拟环境,同时界面提供显示拓扑结构的窗口,用于反应网络中各节点间连接情况,界面呈现虚拟网络中各节点操作台供用户调用节点功能。后端则为前端提供实现各功能实现、接口设计等,具体实现见 3.1 节前后端实现。2.2.2 拓扑部署后 端 部 署 拓 扑 设 计 阶 段 生 成 的 shell 文 件,利 用Docker、OVS等轻量级虚拟化技术,实现低开销的网络设备、拓扑结构模拟,生成虚拟网络并部署在底层宿主机(物理机、虚拟机均可)之上,各节点配置虚拟网络设备接口,实现节点之间的相互通信,具体实现见 3.2 节部署功能实现。2.2.3 流量注入一 方 面,Docker 提 供 各 主 流 编 程 语 言 的 API 支 持(Python、Java、Go 等),用于与容器交互,无须人工操作容器,同时利用 Docker API 可以方便地启停容器、调用容03032023.022023.02第 4 期器内部功能,直接运行逻辑脚本即实现用户流量的灵活注入。另一方面,用户可通过进入容器内部的方式,执行输入命令或调用 packETH、浏览器等图形化应用的形式向网络注入流量。与传统网络仿真工具通过编程对协议行为、时序、语义进行模仿不同,本平台搭建的整个虚拟网络运行的是真实的协议。本节具体实现见 3.3 节流量注入功能实现。2.2.4 网络监控采用非侵入式设计对部署的整个虚拟网络进行监控,监控模块和实验部署模块互不影响,实现高内聚低耦合,同时对 Wireshark、Pyshark 等抓包工具进行封装,利用 X Server 技术和 Docker 自带命令行工具实现容器级别的实时监控,对节点中抓取的流量进行预处理并用 Python 作图工具 matplotlib 作图,用户在需要的时候平台可准确直观地呈现网络中的流量,具体实现见 3.4 节网络监控功能实现。3 平台实现与应用本节首先对 2.2 节各功能实现作具体阐述,之后展示本文设计并实现的网络仿真平台并作详细介绍,最后补充说明本平台投入实际应用的情况。3.1 前后端实现针对 2.2