戴 天,李艾静 ,2 , 王 海
(1.中国人民解放军陆军工程大学 通信工程学院,江苏 南京 210007; 2.上海交通大学 电子信息与电气工程学院,上海 200240)
随着无线网络技术的飞速发展,无线通信应用场景也越来越复杂、多样化。其中,移动Ad-hoc网络(Mobile Ad-hoc Networks,MANET)以其自自组织、自寻址和自路由的特性受到人们的青睐[1]。MANET在紧急救援、车辆通信和战场通信等领域有着广泛应用。和节点始终相连的互联网不同,移动自组织网由于自身节点移动或环境条件的变化,频繁地出现网络分区,使得源节点和目标节点可能没有可靠的端到端链路,导致整个自组网性能下降,甚至不能正常工作。
为了解决“可靠性”问题,延迟容忍网络(Delay Tolerant Network,DTN)开始被人们所关注。传统的无线Ad-hoc网络在通信会话正在进行时建立可用的端到端路径,而在延迟容忍网络中,由于网络的稀疏性和低节点密度且节点之间的联系只能通过短暂的通信场景支持。DTN方法允许中间节点以“存储-携带-转发”模式进行异步通信,并且当机会合适的时候将消息传递到目的节点。因此在卫星组网、传感器网络、战场通信等应用领域受到重视。然而,许多DTN路由协议为了保证数据包到达率,创建多个消息副本传送,这会导致拥塞并降低网络性能[2]。
在某些特定场景下,例如无人机组网场景中,很多情况下,用户希望在有路由时采用MANET转发,而在没有路由,网络不具备端到端连通链路时采用DTN协议框架转发,这样在既保证实时性的情况下,又尽可能地提高端到端分组交付率。然而目前已有的混合架构大多在节点网络层添加切换机制或者在源节点设置适配层,根据当前网络环境切换传输方式,但使得DTN与MANET协议栈耦合度较高、灵活性切换较差,不利于DTN与MANET混合协议的有效实现。为了更好地实现MANET与DTN两种传输模式的结合,软件定义网络(Software Defined Network,SDN)以转控分离、开放的可编程接口等特性,引起了相关研究者的关注[3-4]。
本文借助软件定义网络控制平面和数据平面分离的转发处理功能,提出了基于软件定义网络来实现常规路由转发与延迟容忍网络的结合,解决了传统路由协议栈与延迟容忍协议栈不兼容的问题,同时,设计了一个两种传输模式的快速切换策略,可以使节点以较低开销获知数据是否可以通过路由转发,并根据网络路由通断情况动态选择继续使用DTN或切换至路由方式转发数据,是一种轻量级、灵活、易扩展的混合网络架构。
SDN技术是计算机网络领域的一种新的驱动力,它本身诞生于美国斯坦福大学实验室的一个课题,是为了让网络管理员通过集中控制的方式,更方便地对网络通信进行安全控制。经过十多年的发展,SDN的概念由于不同场景的应用而有了不同的标准,目前最普遍接受的定义是由开放网络基金会(Open Networking Foundation,ONF)提出的,也被业内人士称为狭义SDN,通常具有三个基本特征:网络转发和控制平面的明确分离、网络逻辑从硬件实现到软件的抽象和存在协调网络设备转发决定的控制器[5]。
如图1所示,ONF提出的SDN参考模型分为三层架构,由下至上依此为基础设施层、控制层和应用层。应用层与控制层通过北向接口进行交互,但目前还没有统一的规范。控制层和基础设施层通过南向接口进行交互,一般采用ONF提出OpenFolw协议格式[6]。
图1 SDN参考架构模型
基础设施层包括数据平面的交换设备(例如,交换机、路由器等)。这些交换设备的功能大多是双重的。首先,它们负责收集网络状态,暂时将这些状态存储在本地设备中并将其发送到控制器。网络状态可以包括诸如网络拓扑、流量统计和网络使用之类的信息。其次,它们负责根据控制器提供的规则处理数据包。
控制层通过其两个接口桥接应用层和基础设施层,向下与基础设施层(南向接口)交互,它为控制器详细指定了访问和控制交换设备的功能。这些功能可以包括报告网络状态和导入分组转发规则。向上与应用层(北向接口)交互,它以各种形式提供服务接入点,例如,应用程序编程接口(Application Programming Interface,API)。SDN应用程序可以通过此API访问交换设备报告的网络状态信息,根据此信息做出系统调整决策,并通过使用此API将数据包转发规则设置为交换设备来执行这些决策。
应用层包含为满足用户需求而设计的SDN应用程序。通过控制层提供的可编程平台,SDN应用程序能够访问和控制基础设施层的交换设备。SDN应用程序的示例可以包括动态访问控制、无缝移动和迁移、服务器负载平衡和网络虚拟化。
目前,已经提出的MANET与DTN网络混合架构有三种,分别是DTN-over-IP架构、IP-over-DTN架构和IP-cum-DTN架构。但都有着明显的缺陷和不足,虽然DTN-over-IP架构最大程度的支持已有的各种DTN协议,但它仍处于应用层与网络层之间,所以只与专门为捆绑层编写的应用程序兼容,并且还有在只使用端到端路径时会产生额外的开销,DTN路由不与IP路由交互等缺点。IP-over-DTN架构一般用在延迟容忍网络包含于移动无线网络节点(DTN over MANET,DOM)模型上,它将IP包封装在DTN包中,能大大提高原来基于IP的应用程序兼容性,但这种方法有明显的层冲突,并且一旦采用DTN模式,即使网络链路恢复,也不能切换成MANET模式传输,大大增加了网络时延。IP-cum-DTN架构不覆盖协议,它是依赖于节点(一般为网关)中的第三个模块将两种传输模式拼接成一个端到端层,好处是把DTN和MANET传输实现了分离,但架构模型对传统架构改动较为复杂,一般应用在DOM模型的边缘DTN代理节点[7]。
针对已经存在的问题,利用SDN,我们设计的延迟容忍网络和无线移动自组织网络融合方案如图2所示。在这个混合网络架构里,我们将负责DTN转发的延迟容忍模块和常规路由的路由管理模块基本分离,整个架构分为控制器单元(负责路由接收、流表设置、数据处理)、路由管理模块、软交换单元(负责流表配置和数据转发)和延迟容忍模块四大部分。需要指出的是,每个节点都是一个分布式控制器,而不是整个网络的集中控制器,节点的通信服务版可以有多个外部接口,软交换机支持 多接口。
图2 基于SDN的延迟容忍网络和无线移动自组网络的融合架构
软交换单元接收带转发的数据报文后,根据数据报文中的目的地址查找流表,当流表中能够找到相应目的地址所对应的流表数据时,向对应的网络发送数据报文。当流表中找不到相应目的地址所对应的流表数据时,将数据报文发送至延迟容忍模块,由延迟容忍模块通过延迟容忍的方式发送该数据报文。该架构解决了常规路由转发协议栈与延迟容忍转发协议栈不兼容的问题,同时不存在控制器融交互等问题,没有给网络增加额外的开销和负担。混合架构涉及两个重要过程:流表构建过程和数据报文转发过程。
SDN和传统互联网分层有一定区别,但流表的构建仍是可以基于现有协议算法所确定的路由信息,路由管理模块运行自身的路由和组网协议(例如最优链路状态路由协议),根据其他节点反馈回来的消息,确定每个目的子网或目的地址的路由。将得到的路由信息通过北向接口的API,告知或者发送给控制器单元里的路由接收模块。这时,路由接收模块将接收到的路由信息转交给流表设置模块,流表设置模块是将路由信息转化成相应的流表设置指令,并将流表设置指令发送至软交换单元中的流表配置模块。流表配置模块根据控制器单元所发送的流表设置指令,形成相应的流表,流表由流表数据和缺省项信息所组成,流表数据和缺省项信息的一般格式分别如图3和图4所示。
图3 流表数据一般格式
图4 缺省项信息一般格式
需要指出的是,由于路由信息分为可达路由和不可达路由。当路由信息为可达的路由时,流表配置模块则根据流表设置指令在流表中生成相应的流表数据;当路由信息为不可达的路由时,流表配置模块则根据流表设置指令在流表中删除相应的流表数据。
在数据报文转发过程中,当一个携带有目的地址的分组,也就是数据报文,通过物理接口到达软交换单元后,软交换单元的数据转发模块根据数据报文中的目的地址查找流表配置模块生成的流表。当流表中能够找到相应目的地址所对应的流表数据时,向对应的网络发送该数据报文。当流表中找不到相应的目的地址所对应的流表数据时,数据转发模块会将数据报文提交至控制器单元的数据处理模块。然后数据处理模块将接收到的数据报文发送至延迟容忍模块。最后由延迟容忍模块将的数据报文通过延迟容忍的方式进行发送。最终实现有路由分组转发和无路由分组转发的融合。
通过在每个节点设置一个分布式控制器,并通过路由模块、DTN模块与控制器模块的交互实现系统存在路由时采用路由转发分组,系统不存在路由时采用延迟容忍网络转发分组的融合分组转发。本文提出的架构,不存在控制器融合、交互等问题,没有给网络增加额外的开销和负担,对传统路由模块和DTN模块改动也很小。由于控制器是每节点一个,因此在网络分裂时不需要重新选举出控制器,在多网络融合时,不需要多控制器交互关闭其中一个或多个控制器,组网基本上不会给网络引入新的开销,网络效率高。
为了更灵活地切换延迟容忍模式和常规路由两种策略,达到“无路走DTN,有路走MANET”的效果,本文还提出一种路由快速切换机制,根据网络路由通断情况动态选择使用DTN或者MANET。便于描述,把主控单元和软交换单元里的模块隐藏(如 图5所示)。
图5 基于SDN的混合网络架构略图
在该结构图中,路由模块上运行常规路由协议,当流表建立起来后,通过控制器设置软交换机内部的流表,用于软交换机的查表转发。当节点收到来自输入接口的分组时,该分组将被导向查阅流表,确认是否具有到目的节点的路由。快速切换路由机制的流程图如图5所示。
首先节点通过无线信道或者物理网口接收到数据包,用户可以按照需求情况通过扩展流表项区分是否为DTN数据包(例如设置服务类型的优先级),不是DTN数据包,按常规路由转发方式进行。如果是DTN数据包,软交换单元通过主控单元将DTN数据包递交给DTN模块。
DTN模块收到DTN数据包后,继续DTN传输模式,同时构造一个探测分组,探测分组的目的地址设置为目的节点的IP地址,分组的TTL(Time To Live,生存时间)字段设置为1,然后将此探测分组插入到输入接口队列,开启定时器,则此探测分组会被送到软交换机里进行查表。如果流表里有到目的节点的路由,就会根据流表指定的接口转发此探测分组,由于该分组的TTL为1,因此分组在流表转发时,TTL值自动被递减为0,自然会被转发模块丢弃traceroute原理),在转发出接口之前已经被丢弃,从而不会给网络带来额外负担,并且在定时器超时时间内没有收到刚刚发出的探测分组,则认为本节点有到目的节点的路由,因此该数据分组不需要通过DTN模块转发,DTN模块将该数据包恢复成常规数据包格式,插入到外部接口发送队列中。否则,软交换机将没有流表对应项的探测分组送入控制器,再由控制器转交给DTN模块进行发送。DTN模块从控制器处收到刚刚发出的探测分组,说明没有到目的节点的路径,就会继续使用DTN模块进行DTN方式传输。同时开启周期性构建探测分组,判断是否有到目的节点的“端到端”路径,从而进行快速路由切换。
通过此种方式,节点只需要构造一个开销极小的探测分组,在节点内部完成是否进行传输切换的判断,也没有对常规路由协议和DTN协议中的数据格式进行修改。比通过扩展MANET路由协议数据格式有着兼容性更强、扩展度更高等优点,在对网络资源有限的Ad-hoc网络(如战场无人机通信等)中有着更强的参考价值。
验证基于SDN混合网络架构的可行性,本文基于Ubuntu操作系统搭建了SDN环境,利用C++语言实现了DTN模块探测包的发送和接受处理,并对SDN控制器RYU核心代码进行了修改,能够处理我们需要发生的事件。然后通过与传统网络架构(DTN-over-MANET)做实验对比,得出我们提出方案的优势。
考虑到实验的易操作和易实现,本实验的硬件环境考虑使用基于ARM内核的Ubuntu16.04操作系统的树莓派3b,是一款价格便宜并且功能俱全的微型开发板,适合大部分研究人员的测试和应用。
SDN的控制器采用Python语言编写的基于组件的RYU,它是一个开源软件,可以为开发者自定义新的网络管理和控制应用程序,支持各种用于管理网络设备的协议。软交换模块采用高质量、多层的虚拟交换机(OpenVSwitch,OVS),与物理交换设备相比,开销小,可以通过编程方式扩展大型网络,同时能支持许多标准南向接口协议如OpenFlow等,快速切换路由机制流程如图6所示。
DTN模块使用DTN2作为DTN协议实现。DTN2根据网络规范RFC 5050,实现了DTN捆绑协议,允许DTN节点之间利用Bundle层传输数据。由于这个软件只考虑了DTN情况下的传输,本文的探测分组的构造和DTN数据包转换成IP包工作在DTN2基础上完成。为了验证架构的可行性,我们选择了DTN2软件里比较简单的Direct Delivery路由算法。这种算法只允许源节点与目的节点相遇后才发送数据,有利于实验对节点传输方式的判断。
常规路由模块使用目前较为成熟的OLSRd作为协议源码。该源码用于实现路由协议最优状态链 路 协 议(Optimized Link State Routing Protocol,OLSR)。OLSR是链路状态协议(Link State Routing Protocol,LS)的改进,它是基于链路状态的主动路由协议,节点之间通过周期性的交互状态维护整个网络的拓扑信息,与被动协议不同,如果节点传输数据失败,不需要转入链路维护状态,直接丢弃该数据包,降低时延。
图6 快速切换路由机制流程
为了验证基于SDN混合网络架构和切换算法的有效性,本设计了两种场景进行实验。选择4个树莓派作为节点,DTN的ID依此为Pi1~Pi4,对应的IP地址依此192.168.1.1~192.168.1.4。对每个实验场景,分别采用传统网络架构和基于SDN的网络混合架构发送数据包,采用何种网络传输模式可以通过数据包的存入路径判断,然后利用Wireshark抓包工具和目的节点接收情况来对结果进行分析。
场景1。源节点为Pi1,目的节点为Pi4,形成的连通关系如图7所示,首先各节点采用传统架构,源节点Pi1发送数据包,然后查看Pi4的接收和所有节点抓包情况;然后各节点换成设计的SDN混合网络架构进行相同实验,查看结果。
图7 实验场景1拓扑关系
场景2。各节点的连通关系如图8所示,同样先后采用传统结构和SDN混合网络架构的顺序实验。源节点Pi1和节点Pi2为无效链路,发送数据,查看各节点的抓包和接收情况,然后移动源节点Pi1,使其与节点Pi2形成可用链路,但与Pi4不在一跳范围内,再次查看各节点的抓包和接收情况。
图8 实验场景2拓扑关系
场景1。树莓派不管是采用传统架构还是SDN混合网络架构,Pi4接收到数据包,并且以文件形式存入MANET对应的路径,通过Wireshark抓包,发现每个节点都有到目的节点的IP,说明在节点之间链路存在的情况下,两种架构都能采用常规路由模式传输数据。
场景2。当Pi1和Pi2没有可用链路时,树莓派不管采用哪一种网络架构,Pi4都没有接收到数据包,通过Wireshark查看,只有Pi1有到目的节点IP的记录,并且以文件形式缓存在DTN对应的路径,说明两种架构都能在网络断路时切换成DTN模式。当Pi1和Pi2恢复链路后,在采用传统架构的情况下,数据包仍存储在Pi1的bundle层,没有被转发。原因是传统架构采用DTN模式后,即使出现“端到端”链路,由于MANET与DTN架构不兼容,无法切换到MANET模式。而在采用SDN混合网络架构的情况下,目的节点Pi4成功接收数据包,查看各个节点抓包和数据包存储路径情况,发现Pi4以文件形式存入MANET对应的路径,传输成功。说明Pi1通过快速路由切换机制,检测到了有到目的节点Pi4的“端到端”链路,自动切换成了常规路由发送,验证了本文提出的基于SDN的混合网络架构,以采用内部发送较低开销的探测分组的方式,使用DTN与MANET两种传输模式在低耦合度情况下也达到了灵活的切换。
本文根据SDN架构,考虑了两种传输方式的特点,且结合实际应用的需要,提出了一种基于SDN的混合网络架构设计。该模型利用SDN可编程性、转控分离等特点,通过在应用层“挂件”的方式,使DTN和MANET两个模块能独自运行的同时,设计了一种低开销的路由快速切换机制,使得节点能根据当前网络环境的通断情况,动态地选择传输方式。最后,利用现有的资源对该架构进行了实现,并和传统网络架构(DTN-over-MANET)做对比,验证了该架构的有效性和灵活性。
从现在来,纯MANET或DTN路由技术已经趋于成熟,但在应对受限网络领域如战场通信,无人机通信等方面,都有所不足。本文结合SDN技术,充分发挥了两种路由模式的优点,为混合架构的研究提供了新思路,有较大的实用价值。