刘思远,杜海燕,李 丽,彭丽娟,方欣欣
(北方自动控制技术研究所,太原 030006)
现如今网络的规模、结构和负载等变得日益庞大和繁重,传统的网络架构已经不能满足通信网络的需求,尤其是对于那些复杂的通信环境,因此,迫切需要新的网络技术实现对现有的网络进行优化和改造,这将是一个富有挑战性的课题。以SDN 为代表的网络技术得到了业内人士的广泛认可和热议,SDN 作为崭新的网络技术已经成为计算机网络发展的驱动力。SDN 技术大大提高了业务的响应时间,并且可以定制特定网络参数;SDN 网络由软件实现各种控制,软件的配置决定了网络设备的功能、性能和种类等;服务器可以充当网络操作系统完成对网络的控制;能够实现硬件平台的统一化,各厂家的硬件设备可以相互替代,便于维护,硬件与上层的业务解耦,只需关注存储和转发能力。上述优势决定了SDN 技术是未来网络发展的重要研究方向。应用SDN 技术可以很好地解决传统网络架构存在的诸多问题。
本文提出了一种新型网络架构,将SDN 技术与传统的路由协议相结合。该架构先由传统路由预先收集网络拓扑信息完成网络初始联通状态的建立,在此基础上再利用SDN 架构技术优势,对上实现对应用业务类型统计、分析和感知,对下通信网络资源进行收集、计算和评估。该架构将网络资源的虚拟化,利用开放可编程模式,实现网络自动化控制,实现不用类型业务QoS 精确保障的和快速转发,从而提高网络性能。
SDN 作为一种崭新的技术思想,成为促进计算机网络领域发展的一种新的驱动力。2006 年,SDN技术诞生于斯坦福大学的一个试验室,研究其根本目的是为了让网络管理员以集中的方式实现对网络通信的安全控制,方便操控管理。随着时间的推移,SDN 标准由于实际应用场景的不同也愈发的多样性,由开放网络基金会(open networking foundation,ONF)的白皮书中提到的SDN 技术成为了业内人士普遍接受的标准。已经有许多的运营商、云技术中心进行了SDN 实践。
图1 展示了ONF 所定义的SDN 参考模型,从图1 中可以看出,SDN 可以分为应用层、控制层和基础设施层三层结构。它们之间通过南北向接口进行交互。
图1 SDN 架构模型
应用层的SDN 应用程序主要是为了满足用户的需求而设计的。SDN 应用程序通过控制层提供的可编程平台控制和访问基础设施层的网络设备。
控制层通过南向和北向两个接口连接应用层和基础设施层。与应用层通过北向接口交互,北向接口接收用户或服务的网络需求,用户可按需进行网络资源预约、业务转发路径下发。SDN 控制器通过北向接口向上提供网络侧链路、拓扑、流量资源,提供全局化的网络资源视图。与基础设施层通过南向接口交互,为控制器制定控制和访问网络设备的功能。
基础设施层主要由底层网络设备组成,如交换机、路由器等。网络设备有两个主要功能。第1 个功能是负责收集网络状态,并将网络状态(如网络拓扑、网络使用信息、流量统计等)存储在本设备上然后将其发送到控制器;第2 个功能是根据控制器所提供的规则处理数据包。
设计的主要思路为采用软件定义网络(SDN)与传统路由相结合的组网控制体制,并且将网络功能虚拟化。先由传统路由预先收集网络拓扑信息完成网络初始联通状态的建立,在此基础上再利用SDN架构技术优势,对上实现对应用业务类型统计、分析和感知,对下通信网络资源进行收集、计算和评估,通过对大数据综合分析,能够针对不同的应用业务产生相应数据转发规则和转发策略,最后利用SDN 硬件交换进行大容量数据高速转发。从而实现不用类型业务QoS 精确保障的和快速转发。总体的框架如图2 所示。
图2 网络总体架构
整个架构的主要优势有:
1)网络控制更加灵活,SDN 支持控制功能的集中式与转发功能的分布部署,能够实现网络资源的统一分配和部署,并且提供面向业务开放接口。SDN 通过对基础网络设施与上层应用解耦实现底层物理资源的虚拟化和抽象化,从全局的视图实现对网络的统一管控。
2)可靠性更高,通过北向接口接收用户需求,将需求转换为网络侧转发动作,再通过南向接口协议下发至转发面,可形成面向需求、面向任务的专用网络,从而保证业务的可靠传输。
3)通用性更强,影响通用性的主要因素有拓扑的获取、控制平面的南向接口和北向接口、动态互联网协议地址分配。在拓扑获取方面,由控制器统一获取,设备无需参与;南向接口和北向接口均采用业界通用的接口,遵循业界统一的标准。
控制器是网络架构的核心部分。通过北向接口,上层应用向控制器下发决策;通过南向接口,对通信网络资源进行收集、计算和评估;控制器对应用的决策模块化处理,翻译成基础设施能处理的消息,并发给底层的设备。控制器的架构如图3 所示,包括:核心控制模块、网络功能抽象、资源池等功能模块。
图3 控制器的架构
核心控制模块为应用程序提供可靠的运行环境。资源采集和流量识别通过南向接口完成转发面链路状态信息、流量信息、链路健康状态等信息汇总,为策略管理和资源计算提供依据;资源计算、策略管理及虚拟任务网通过北向接口接收用户需求,将需求转换为网络侧转发动作,再通过南向接口协议下发至转发面。形成面向需求、面向任务的专用网络,保证特殊业务的可靠传输;路由表转换负责将传统分布式路由协议形成路由表,按照南向接口协议注入转发面,动态维护转发面中的转发规则,以实现包转发规则的快速匹配。
资源池模块实现物理网络的资源化。维护单元主要保证资源池读和写的逻辑相同;本地网络信息库和共享网络信息库分别存储本地数据和分布式数据。
南向协议服务有南向协议、设备性能监视和日志管理等部分。主要完成SDN 控制按照特定的交互协议完成对IP 交换转发规则的控制和传输状态的监控。
目前,OpenFlow 基本成为SDN 公认的南向接口,北向接口的设计成为了SDN 技术的关键。
控制器南向接口使用公认的OpenFlow。最重要的部分是OpenFlow 交换机,由流表、协议、安全通道3 部分组成。OpenFlow 协议描述的是交换机和控制器之间的接口标准和流表格式等;交换机根据流表来处理数据包;安全通道是控制器和交换机通信的通道。流表结构如图4 所示。
图4 OpenFlow 交换机的流表结构
流表一般由图4 所示的6 部分组成。匹配域用来匹配具体的包;优先级是流表项匹配的优先级;计数器当表项匹配时自动加一;指令能改变流水线的过程;Cookie 是SDN 控制器使用的一些数据。OpenFlow 流表流水线处理包的过程如图5 所示。
图5 OpenFlow 流表处理包的过程
控制器和openflow 交换机建立通信连接的过程为:
1)交换机向所有的控制器发送hello 的消息。
2)当其中的某个控制器收到hello 消息后,立刻向交换机回复一个hello 的消息,同时发送一个请求功能(features_request)。
3)当交换机收到请求消息后,立即给控制器回复features_reply 消息。并且将交换机的各个端口启动,并向控制器报告端口改变的事件。
4)如果收到包的交换机的流表为空,就向控制器发送packet_in 消息。
5)控制器向交换机发送设备配置(set_config)、障碍请求(barrier_request)、获取配置请求(get_config_request)等消息构成的包。交换机收到后回复barrier_reply,et_config_reply 等消息。
6)控制器向交换机发送desc_atats_request,交换机收到后回复desc_stats_reply 消息。
7)控制器依次向交换机发送controller_role_request 消息,交换机收到后回复。
北向接口使用Restful API 协议。该协议是目前使用最广泛的一种协议,具有高效性和简洁性等特性。控制器北向接口Restful API 实现用户对控制器的功能调度。
控制器北向接口接收信息的流程为:
1)用户向网络web 服务器发送超文本传输协议业务请求信息;网络服务器将消息转发给Restful Web 服务模块。
2)根据Restful API,Restful Web 模块将消息发送到北向接口层。
2018年彩电行业的经历可谓一波三折,既有彩电面板价格回升的利好,也有宏观政策调控、企业转型带来的阵痛。
3)北向接口层的各个业务模块调用相应的模块API 处理业务。
控制器北向接口发送信息的流程为:
1)控制器处理完信息成后将数据返回给北向接口层。
2)北向接口层将数据返回给Restful web 模块。
3)Restful Web 模块将数据返回给网络服务器。
4)网络服务器通过超文本传输协议将数据发送给用户。
传统的路由协议将路RIP、LSR 和MGP3 种协议相结合。RIP(routing information protocol)主要实现不同网络的路由表转换,实现内外网的互联互通;基于优化的链路状态路由协议LSR(link state routing)针对无网络路由功能的子网,实现子网内各个通信节点的数据通信;动态多网关协议MGP(multi-gateway routing)针对具备路由功能的子网,解决子网内节点和子网外节点的通信。按照路由数据的处理流程,可将模块划分为消息收发、业务处理以及路由表操作等3 大部分。如图6 所示。
图6 传统路由协议模块
消息收发部分包括发送部分和接收部分。发送部分从业务处理模块接收需要发送的信息,根据要求打包成协议消息格式,从相应的socket 端口发送。接收部分从socket 接收数据,进行消息解码,根据消息类型调用相应的业务模块处理。
业务处理部分包括RIP 协议处理、LSR 协议处理和MGP 协议处理。
硬件平台选用飞腾1500A、龙芯3A3000 等国产硬件平台,操作系统选用中标麒麟、银河麒麟等国产操作系统。软件的运行要基于自主可控平台,软件开发采用C++语言进行编程。
通过以上分析设计,完成SDN 组网控制软件。该软件是在传统路由的基础上采用SDN 架构引入策略组网控制服务,改善通信服务质量。该软件将SDN 控制器、路由器和交换机等设备功能软件化,能够部署在各种硬件设备上面。软件的设计可以实现通信网络设备的减型增效。交换机的部分采用虚拟交换机(openvswitch,OVS)实现,该交换机质量高、扩展性和兼容性强,与物理交换设备相比开销小,同时能够支持标准的南向接口协议OpenFlow,而且可以通过编程的方式扩展网络。
SDN 组网控制软件的主要功能模块有:SDN 控制模块、路由模块、组网控制模块、南向协议服务模块、北向资源管理接口模块、配置管理模块、web 视图模块等。各个模块同时又保护了大大小小的子模块。能够实现的功能有:设备接入和组网控制、路由功能、数据交换功能、网络感知和状态管理功能等。
其中,组网控制模块相当于是对传统路由的调优,传统的路由根据某一权值计算出的路径相对唯一,业务经传统路由的最佳路径转发时容易在某一公共路径产生拥塞,组网控制则通过策略流表的方式对路径进行全局调优规划,但是传统的路由在此架构中起到了非常关键的作用。
为了验证网络架构的有效性,设计了以下场景:
如图7 所示,采用3 点链状或者环状进行拓扑连接(节点1~节点3),图7 中虚线代表可以随时拆除连接,这样可以随时改变拓扑结构,拆除时为3点链状,连接时为3 点环状,备用节点的作用是用来随时增加和删除节点。每一个节点都是装有银河麒麟操作系统的计算机,各个节点之间采用有线连接。节点1 到3 对应的IP 地址依次为172.168.1.1-172.168.1.3,备用节点的IP 地址为172.168.1.4。采用图7 的拓扑结构,分别对新设计SDN 架构和传统的架构进行对比测试。每个计算机上安装有设计好的SDN 组网控制软件。
图7 实验场景拓扑图
首先测试在新型SDN 架构下,各个节点的路由表信息是否正确,在拓扑结构变化的情况下,是否可以迅速增加、删除路由表项。测试方法为在shell中检查各个节点路由表的变化情况,SDN 组网控制软件检查路由表的命令为rtshow,经检查发现各个节点的路由表显示信息正确。将备用节点与节点3进行连接,路由表项中出现了备用节点的路由,并且各个节点都能互相ping 通,网络的连通性非常好;断开备用节点与节点3 的连接,各个节点的路由表均删除了备用节点的路由。
对比SDN 新架构和传统架构的网络性能,分别测试两种架构的丢包率、时延、吞吐量和收敛时间,测试方法为节点1 向节点3 发送一定数量的数据包,在各个节点用抓包工具进行抓包和ping 包。
经过反复测试,对测试结构进行分析。图8 显示的是随时间变化的吞吐量,可以看出,传统架构的吞吐量在开始时抖动较大,稳定性比较差;而SDN 新架构相对而言具有良好的稳定性,吞吐量波动小,而且SDN 架构的吞吐量较高,网络性能比较好。图9表示收敛时间的累计概率统计图,相比于SDN 新架构,传统架构有较长的链路收敛时间,而SDN 新架构的链路收敛时间较短,SDN 新架构的收敛时间≤1 600 ms。同时测得新架构的丢包率≤0.5%,时延平均为35 ms 左右,而传统架构的丢包率为1.5 %左右,时延为60 ms 左右。SDN 新架构的网络性能明显优于传统架构。由此可验证基于SDN 与传统路由协议相结合的网络新架构具有明显的优越性。
图8 随时间变化的吞吐量
图9 收敛时间的概率统计
SDN 网络具有可编程性、网络虚拟化、逻辑集中控制等诸多优势,该技术在现如今正飞速发展,在民用和军事领域都得到了广泛的重视。本文根据ONF 提出的SDN 架构,并结合传统的路由协议,设计出了一种全新的网络架构。该架构采用SDN 技术与传统路由协议相结合的设计思想,该架构利用开放的可编程的软件模式,实现网络的自动化控制,实现不用类型业务QoS 精确保障和快速转发,从而提高网络性能。最后,对此架构进行了验证。事实证明此架构,具有重要的应用和参考价值。