基于Python的mininet流表下发系统的设计与实现
1. 引言
1.1 网络发展历史
1.1.1 分组交换概念的出现
- 1962年,Leonard Kleinrock在麻省理工学院的博士论文中提出分组交换概念,该技术后来成为互联网的标准通信方式。
1.1.2 ARPANET的启动
- 在20世纪60年代的特定历史背景下,美国国防部于1969年开始启动计算机网络开发计划“ARPANET”,ARPANET的成功运行使计算机网络的概念发生了根本变化,同时标志着现代互联网的诞生。
1.1.3 OSI参考模型的提出
- 1974年,国际标准化组织发布了著名的ISO/IEC 7498标准,首次提出OSI (Open System Interconnection,开放式系统互连)7层参考模型,同年12月,斯坦福大学的Vint Cerf和Robert E.Kahn提出了著名的TCP/IP (Transmission Control Protocol/Internet Protocol),实现计算机网络互联的思想,以互连具有不同协议的网络。
1.1.4 NCP的过渡
- 1983年,ARPANET宣布将过去的通信协议——NCP(Network Control Protocol)向TCP/IP过渡。
1.1.5 WWW技术的诞生
- 1991年,欧洲粒子物理研究实验室(CERN)的Tim Berners Lee利用HTML、HTTP成功编制了第一个局部存取浏览器Enguire,从这时开始,Web应用开始起飞,随后通过不断演进最终形成了著名的万维网(World Wide Web,WWW)技术。
1.1.6 互联网的普及
- 1996年,随着万维网的大规模应用,Internet(互联网)一词广泛流传,之后10年,互联网成功容纳了各种不同的底层网络技术和丰富的上层应用,迅速风靡全世界。
1.2 选题动机
- 技术挑战与学习机会
- SDN可以改变传统网络下应用与网络紧耦合的烟囱式架构,提升网络资源池化的水平。
- SDN网络与云平台对接,实现自动化部署配置,支持业务快速上线和灵活拓展。
- 通过软件代替手工编排,实现网络服务自动化。
- 网络架构的重塑
- 我们利用SDN技术对金融行业的网络架构进行重塑,逐步形成以金融云为核心、以省级节点为枢纽、以营业网点为边缘的云网融合的金融网络架构。
- 金融SDN网络可分为网络控制层,网络转发层,计算接入层三层。
- 网络控制层有AC控制器和F智能分析器,这一层对上与云平台对接,提供服务化接口,对下控制网络设备,将业务部署和网络运维的诉求都抽象为网络服务。
- 网络转发层由交换机和路由器等网络设备构成,其中包括云端网络、管道网络和终端网络三个区域,分别满足服务器和存储接入的数据中心网络、连接分支的广域网络和终端接入的网点和办公网络。比如数据中心网络就是由spine-leaf架构和VXLAN技术构成的Fabric网络,通过虚拟化技术承载多业务网络数据的转发。
2. SDN背景与基础知识
2.1 SDN发展起源
- 从2006年开始,斯坦福大学研究生Martin Casado参与了Clean Slate项目,并着手领导了一个叫作Ethane的项目。
- 2007年的SIGCOMM会议上,Martin Casado发表了一篇名为“Ethane: Taking Control of the Enterprise”的论文,该论文引起了学术界的广泛关注。
- 2007年,Martin Casado联合Nick McKeown、Scott Shenker等人共同创建了一个致力于网络虚拟化技术创新的公司——Nicira。
- 2008年,Nick McKeown在SIGCOMM会议上发表文章“OpenFlow: Enabling Innovation in Campus Networks”,首次提出了将OpenFlow协议用于校园网络的试验创新。OpenFlow开始正式进入人们的视野,SDN呼之欲出。
- 2011年初,Google等企业共同成立了开放网络基金会(Open Networking Foundation,ONF)并正式提出了SDN的概念。
- 2013年4月,由Cisco、Juniper、Broadcom、IBM等公司主导的SDN开源控制器平台项目——OpenDaylight,引发了IT界一次巨大的轰动。OpenDaylight项目的成立对SDN技术的发展具有里程碑式的意义,它代表了传统网络芯片、设备“巨头”对网络领域开源技术方向的认可。
- 在2013年8月的SIGCOMM会议上,Google公司首次将其如何利用SDN技术解决数据中心之间流量问题的方案通过论文公之于众——“B4: Experience with a Globally-Deployed Software Defined WAN”。
- 2014年4月,中国电信与华为联合宣布双方合作完成了全球首个运营商SDN商用部署,将SDN技术成功应用于数据中心网络。
- 2014年8月,中国移动与华为合作利用SDN技术完成了政企专线业务在分组传送网(Packet Transport Network,PTN)中的改造,大幅提升了运维效率及带宽利用率。同年,中国联通首次成功实现了SDN IPRAN的商用,初步实现了运维精简、业务可视、快速创新的目标。
- 2015年9月,中国联通发布了新一代网络架构CUBE-Net 2.0白皮书,目标是基于SDN/NFV、云和超宽带技术实现网络重构。
2.2 SDN的定义
- SDN (Software Defined Network) ,中文译为软件定义网络,是由美国斯坦福大学cleanslate研究组提出的一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。
2.3 SDN的架构
- 数据平面:数据平面由若干网元(Net Element)构成,每个网元可以包含一个或多个SDN数据路径SDNDatapath),是一个被管理的资源在逻辑上的抽象集合。
- 控制平面:控制平面为SDN控制器,SDN控制器是一个逻辑上集中的实体,它主要承担两个任务:一是将SDN应用层请求转换到SDN数据路径,二是为SDN应用提供底层网络的抽象模型。
- 应用平面:应用平面由若干用户需要的SDN应用(SDNApplication)构成,它可以通过北向接口与SDN控制器进行交互,即这些应用能够通过可编程方式把需要请求的网络行为提交给控制器。
- 管理平面:管理平面主要负责一系列静态的工作,这些工作比较适合在应用、控制、数据平面外实现。
2.4 SDN特征--数据控制分离
- 传统网络设备的数据和控制平面都是分布式的。控制平面由于要完成更多更灵活的功能,经常运行在可编程性良好的通用处理器上,而数据平面需要保证高速的交换能力,通常运行在具备高速硬件转发能力的线卡上,两者之间一般通过高速总线或专门的光纤互连。数据控制分离是SDN的主要特征之一。SDN提出将各个设备的管理系统(控制平面)从设备中抽取出来,通过软件统一地进行定义,而网络设备专门地进行数据通信工作(转发平面)。
2.5 SDN特征--网络可编程
- 网络可编程性是SDN的另一个重要属性,他通过为开发者们提供强大的编程接口,从而使网络有了还好的编程能力。
2.6 SDN网络可编程优势
- SDN应用多集中在对控制平面的编程上、上层应用通过北向接口与控制器交互,然后控制器再通过南向接口与底层硬件交互,这样降低了程序与硬件的耦合度,只需实现不同的南向协议就可以在不同的硬件环境上执行相同的功能。
2.7 SDN网络可编程问题
- SDN所提供的强大的可编程能力需要数据平面的转发设备来支撑,只有转发设备提供了丰富的功能,SDN才能真正提供强大的编程能力。但目前主流的设备厂商都有自己的交换芯片,转发设备数据模型的设计也各不相同,这就导致SDN功能实现起来越来越复杂。
3. SDN仿真环境
3.1 Mininet介绍
- Mininet是由斯坦福大学基于Linux Container架构开发的一个进程虚拟化网络仿真工具,可以创建一个含有主机、交换机、控制器和链路的虚拟网络,其交换机支持OpenFlow,具有高度灵活的自定义软件定义网络。
3.2 Mininet命令图谱
- Mininet提供了丰富的命令,可以实现网络的创建、配置、启动、停止、查询等功能。
3.3 Mininet可视化
- Miniedit可视化,直接在界面上编辑任意拓扑,生成python自定义拓扑脚本,简单方便。Mininet 2.2.0+内置miniedit。在mininet/examples下提供miniedit.py脚本,执行脚本后显示可视化界面,可自定义拓扑及配置属性。
4. SDN数据平面和控制平面
4.1 SDN交换设备架构
- SDN中交换设备不再有二层交换机、路由器、三层交换机之分。SDN交换设备架构如下图所示,SDN交换设备的基本功能仍然包括转发决策、背板转发、输出链路调度,但在功能的具体实现上与传统网络的交换设备有所不同。
4.2 SDN交换设备基本功能
- SDN交换设备的基本功能仍然包括转发决策、背板转发、输出链路调度,但在功能的具体实现上与传统网络的交换设备有所不同。
4.3 开源交换机Open vSwitch
4.3.1 Open vSwitch的典型组网
- Open vSwitch是一种开源的虚拟交换机软件,它可以在物理或虚拟环境中运行,支持标准的OpenFlow协议。
4.3.2 Open vSwitch系统架构
- Open vSwitch由多个模块组成,包括核心模块、数据库模块、外部接口模块、虚拟端口模块等。
4.3.3 Open vSwitch各模块简要介绍
- 核心模块:负责处理数据包的转发和处理。
- 数据库模块:负责维护交换机的配置和状态信息。
- 外部接口模块:负责与外部系统进行交互,如通过REST API进行配置和管理。
- 虚拟端口模块:负责创建和管理虚拟端口,支持虚拟机的网络连接。
4.4 Open vSwitch实验
4.4.1 OVS的安装部署
- OVS的安装可以通过包管理器或源码编译方式进行。
4.4.2 OVS的网桥管理
- OVS支持通过命令行工具或API对网桥进行配置和管理。
4.4.3 OVS的流表管理
- OVS流表管理是通过OpenFlow协议实现的,可以灵活地控制数据包的转发路径。
4.4.4 OVS的Qos设置及端口映射
- OVS支持Qos设置和端口映射功能,可以实现对数据包的优先级处理和端口映射。
4.5 控制平面简介
- 控制平面主要负责对网络设备进行管理和控制,实现网络流量的灵活调度和优化。
4.6 SDN控制器业务编排
- SDN控制器业务编排是指通过控制平面的编程接口,实现对网络设备的管理和控制,从而实现业务部署和网络运维的自动化。
4.7 开源控制器OpenDayLight
4.7.1 OpenDayLight总体架构
- OpenDayLight是一个开源的SDN控制器平台,由多个模块组成,包括核心模块、北向接口模块、南向接口模块、东西向接口模块等。
4.7.2 OpenDayLight主要模块功能
- 核心模块:负责处理网络流量的控制和转发。
- 北向接口模块:负责与上层应用进行交互,提供API接口。
- 南向接口模块:负责与底层网络设备进行交互,实现控制平面与数据平面的通信。
- 东西向接口模块:负责控制平面之间的通信,实现多域间控制信息的交互。
4.7.3 OpenDayLight代码结构
- OpenDayLight的代码结构包括核心代码、API接口、插件开发等。
4.7.4 OpenDayLight系统架构
- OpenDayLight的系统架构包括控制平面、数据平面、应用平面和管理平面。
4.7.5 OpenDayLight代码解析
- OpenDayLight的代码实现包括核心功能模块、北向接口模块、南向接口模块、东西向接口模块等。
4.8 基于OpenFlow下发流表
- 基于OpenFlow的流表下发是指通过OpenFlow协议,将流表规则下发到SDN交换设备,实现对数据包的灵活控制。
5. 实验与评估
5.1 功能测试结果分析
- 通过对基于Python的mininet流表下发系统进行功能测试,验证了系统的稳定性和可靠性。
6. 结论与展望
6.1 结论总结
- 通过本研究,成功实现了基于Python的mininet流表下发系统的设计与实现,为SDN技术在实际应用中提供了有效的支持。
- SDN技术具有广阔的应用前景,可以实现网络的灵活控制和自动化运维。
- 未来可以进一步优化和扩展系统功能,提高系统的性能和可靠性。
参考文献
- [1] Martin Casado, Nick McKeown, Scott Shenker. The Virtual Network Switch. SIGCOMM'09.
- [2] Nick McKeown, et al. OpenFlow: Enabling Innovation in Campus Networks. SIGCOMM'08.
- [3] OpenDayLight Project. OpenDayLight Documentation. http://www.opendaylight.org/
致谢
- 感谢我的导师蒋精华老师对我的指导和支持,使我能够在毕业设计中取得优异的成绩。




