基于SDN网络的IPv6自动初始化机制

2017-04-23 10:19秦华谷宇驰
电子技术与软件工程 2017年5期
关键词:软件定义网络

秦华+谷宇驰

摘 要 为了实现SDN网络环境下入网主机自动获取初始化配置,并对该过程进行细粒度的管控,提出了将IPv6协议自动初始化机制与SDN网络相结合的设计方法。同时,为了减少自动初始化过程中的信道开销,提出利用SDN网络集中管控的特点对IPv6自动初始化机制进行优化的思想。首先研究了IPv6主机入网初始化过程,然后结合SDN网络的特点对该初始化过程进行优化,从而提出适用于SDN网络的自动初始化整体机制,最后基于ONOS控制器设计并实现了自动初始化机制。

【关键词】软件定义网络 IPv6 自动初始化 ONOS

随着互联网规模日渐增大,如何高效灵活地控制和管理网络成为非常重要的问题。软件定义网络SDN是一个新的解决方案。在IPv6网络中引入SDN将在一定程度上提高整体组网的灵活性和管控粒度。一方面IPv6网络自动配置机制可使SDN网络中的主机拥有即插即用能力,提高SDN网络组网的灵活性和主机网络参数的配置效率。另一方面,利用SDN网络控制与转发解耦和可编程性强的特点,对IPv6协议的自动配置过程进行优化,不仅可进一步提升主机入网自动初始化过程的效率,并降低源于该过程的信道开销,而且利用SDN集中控制的特性,使得自动初始化过程可控,实现对接入主机进行细粒度的入网管理。

本文主要研究SDN环境下IPv6主机入网的初始化过程,以不改变主机IPv6协议栈为前提,综合利用IPv6协议和SDN网络的特点,研究SDN网络自动初始化整体机制,实现基于SDN的IPv6网络的自动配置,优化自动初始化过程。

1 相关工作

在SDN网络的研究中,针对主机入网自动初始化的研究还很少。而SDN网络中主机入网方式和效率是一个不可忽视的问题。不同于传统网络控制与转发紧密耦合的关系,SDN具有数据平面与控制平面分离的设计思路。随着IPv6协议的推广应用,将IPv6的即插即用特性和SDN的管控分离相结合,实现SDN网络的快速组网很有意义。Broadband网络实验室的Tseng等人提出了一种SDNv6的网络。在这个架构中,他们加入了用来提供网络参数的设备(Network Provisioning Device),以实现IPv6网络中的自动初始化过程。SDNv6网络中的Network Provisioning Device等同于传统路由器,仅为链路本地内的接入设备提供IP地址及网络参数,并没有体现出SDN网络的组网灵活性和细粒度管理的特点。

中国人民解放军理工大学蒋培成等人提出了一种基于OpenFlow的多功能DHCP(VDHCP),在地址自动配置协议机制与SDN机制之间协同工作为用户自动配置地址方面进行了尝试。该功能作为SDN控制器中的一个应用层组件为接入主机提供有状态地址自动分配服务。在地址配置的基础上,VDHCP还添加了多IP子网服务、防止对DHCP的恶意攻击和提高IP地址利用率等功能,其中多子网服务解决了DHCP在为多子网主机服务时的复杂配置问题。但VDHCP实现的是IPv4地址自动配置的过程,不适合IPv6网络的自动配置。

在传统IPv6网络中,主机的即插即用特性依赖于IPv6协议的自动初始化功能,即主机自动配置,包括有状态和无状态两种方式。主机获取地址与参数自动配置过程以邻节点发现协议(NDP)为基础进行实现。其过程主要涉及了链路本地地址生成、重复地址检测(DAD)、路由器发现以及DHCPv6有状态地址分配。IPv6协议的自动初始化过程提高了组网的效率和灵活性,与SDN网络控制器的全局管控能力相结合能够得到进一步的优化。

(1)在传统IPv6网络中需要对参与自动初始化的组件分别进行配置,如网络中存在的每一台路由器及DHCPv6服务器,而在SDN网络中只需对控制器及少量DHCPv6服务器进行配置,就可实现网络配置。

(2)传统IPv6网络的自动配置依赖于主机和路由器的物理鏈路连接特性,难以做到对主机的个性化参数配置,SDN网络控制器可以利用所掌握的全局网络视图,实现对每台主机实现个性化的参数配置。

(3)在传统IPv6网络中,为避免自动配置出现重复地址,需要主机进行重复地址检测,在地址配置过程中,主机将要发起多次重复地址检测过程,而这些检测消息将会发送到整个链路本地内的所有节点。当网络变化较频繁时,重复地址检测过程将会造成很大的信道开销。而在SDN网络利用全局网络视图进行地址自动配置,将不会出现重复地址配置问题。

2 基于SDN网络的IPv6自动初始化机制

2.1 自动初始化的整体设计

在SDN网络中,为了实现自动配置,控制器需有能力对入网主机的地址与网络参数请求进行正确的应答。同时结合SDN网络的特点,利用控制器对全局网络信息的掌握,可对在初始化配置过程中由主机发起的重复地址检测流程进行优化,从而减少不必要的信道开销。为了对每一台入网主机的地址与参数分配方式进行的集中和个性化的管理,本文提出(如图1)基于SDN网络的IPv6自动初始化整体设计。在SDN控制器中,加入地址分配管理与IPv6自动初始化两个功能,分别对有状态与无状态地址分配过程进行实现及管理。在转发平面,加入DHCPv6服务器,与控制器协同工作完成有状态地址及参数分配。

地址分配管理:利用流表可管控到交换机端口的特点,对接入主机的IP地址、网络参数以及其地址配置方式(采用无状态地址配置或有状态地址配置)进行细粒度的控制与管理。上述的配置过程将在控制器中进行统一操作,避免了传统网络中对网络设备逐一配置所造成的效率降低。

IPv6自动初始化:根据地址分配管理中的设置,对接入主机进行相应的地址与网络参数应答,从而为其按设置要求对入网主机进行初始化配置。同时,IPv6自动初始化将对重复地址检测过程进行优化,提高配置效率的同时减少信道开销。

DHCPv6服务器:在本文提出的初始化机制中,为了减小控制器的系统开销,有状态地址配置过程是控制器与DHCPv6服务器协同完成的,而不是將DHCPv6服务器的功能集成在控制器中。控制器为有状态地址自动配置过程提供中继转发服务。

IPv6接入主机:传统的IPv6接入主机,不改变原有的协议栈。

2.2 自动初始化机制的详细设计

为实现SDN网络下的IPv6自动初始化,需实现无状态地址自动分配及有状态地址自动分配机制。为了实现两种分配方式,SDN网络需有能力正确处理和应答地址配置过程中的各类报文。同时需有能力对整体初始化过程进行管控。

根据以上要求,在本文提出的自动初始化机制中包含以下功能的设计:地址分配管理功能、地址与网络参数应答功能以及重复地址检测功能。

2.2.1 流程整体设计

主机在入网时会首先生成链路本地地址,并发起重复地址检测过程。在控制器端会首先收到该报文并进行处理。在上述自动初始化机制中(如图2所示),主要包括以下三个机制:地址分配管理机制、地址与网络参数应答机制、重复地址检测机制。

2.2.1.1 地址分配管理

根据网络管理员的设置,确定对该入网主机采用有状态地址自动配置或无状态地址自动配置,并且管理可分配的地址前缀,供地址与网络参数应答机制使用。

2.2.1.2 地址与网络参数应答机制

控制器依据地址分配管理机制中的设置,构造路由器公告报文(RA报文)对主机的地址与网络参数请求进行应答。

2.2.1.3 重复地址检测机制

该机制在地址分配过程中进行分配地址的唯一性检测,并对由主机发起的对相同地址的检测报文进行丢弃处理。

下文将对上述提出的机制进行详细介绍。

2.2.2 地址分配管理机制

地址分配管理机制在控制器上为网络管理员提供入口对网络的地址分配方式进行统一的管理和控制。由于入网主机使用传统IPv6协议栈,故其入网配置方式由接收到的RA报文中前缀信息选项、管理地址配置标记(M)、其他状态化配置标记(O)决定。由于主机的这一特性,本文提出的地址分配管理机制需在控制器内设置地址分配管理信息表,对管理员输入的以上信息进行记录。同时,该机制将地址分配管理的相关信息传递至后文提出的地址与网络参数应答机制使用,构造可供入网主机正确处理的RA报文进行下发。

2.2.2.1 地址分配管理信息表

如表1所示(表1),该表记录了交换机ID、交换机端口、M标记、O标记以及前缀信息。其中,交换机ID与交换机端口共同决定了表中的地址分配设置供接入在哪一个位置的主机使用;M与O标记根据管理员的设置,值为0或1;前缀信息则为供分配的地址前缀。

(1)当M标签与O标签都设置为0,则前缀信息是必须设置的。其意义为接入主机使用无状态方式进行地址获取,同时使用非有状态方式进行网络参数获取(如手动配置)。

(2)当M标签设置为0、O标签设置为1,则前缀信息是必须设置的。其意义为接入主机使用无状态方式进行地址获取。其他网络参数由DHCPv6服务器提供。

(3)当M标签与O标签都设置为1,则前缀信息可为空。其意义为入网主机使用有状态方式获取地址及网络参数,几使用DHCPv6服务器。

(4)当M标签设置为1、O标签设置为0,则前缀信息可为空。其意义为入网主机使用DHCPv6服务器获取地址,但使用其他方式获取网络参数(如手动配置)。

2.2.2.2 地址分配管理信息的使用

在组网前,网络管理员将上述表中信息在控制器中进行设置。当接收到入网主机发送的路由器请求报文(RS报文)时,控制器会根据接收该消息的交换机ID及端口在地址分配管理信息表中查询到适用于该主机的地址分配方式,并将M标记、O标记以及前缀信息传递到下文提出的地址与网络参数机制中使用,构造RA报文并按照接收的交换机端口发送给主机。同时,根据其有状态或无状态的地址分配方式,进行后续的报文转发工作。

2.2.3 地址与网络参数应答机制

在SDN网络中,由于控制层对于主机时透明的,主机为了获取IP地址与网络参数,仍向上层网络发送RS等报文。这些报文会由于在SDN交换机中无匹配项而被封装至packet-in消息中转发至控制器。故为了能够在控制器中对RS等报文进行应答,从而完成主机入网初始化过程(如图3所示,其中1、2为初始化请求报文,3、4为应答报文),本文提出在控制器中添加地址与网络参数应答机制。

2.2.3.1 无状态地址自动分配

如下图所示(图4),当主机入网时,向上层网络发送RS报文进行路由器请求。交换机将该报文封装至packet-in消息中上传至控制器中。此时控制器调用地址与网络参数应答组件,该组件解析该数据包,获得其接入交换机ID及端口,随后利用这两个参数在地址分配管理信息表中查询到相应的地址配置方式及前缀信息。当表中设置M标签为0、O标签为0或1,使用从表中获取的参数构造RA报文,并封装至packet-out消息中由SDN交换机转发至入网主机。消息格式如图5所示。

在报文中,OF报头中type字段为13,即OFPT_PACKET_OUT报文;buffer ID字段为-1,表示其缓冲区为packet-out消息的data字段;actions字段为该报文所执行的动作,在本文中,该消息的动作为OFPAT_OUTPUT,即执行将该报文转发,端口为RS报文的入端口。

在data字段中将封装构造好的RA报文,其中M标签、O标签以及前缀信息选项将依据地址分配管理信息表中的设置填入。由于是无状态地址自动分配,前缀信息选项中的on_link标签与自治标签将设为1,使主机将该前缀添加址前缀列表并使用它生成无状态地址。

当主机接收到该RA报文时,将会依据自身的IPv6协议栈进行地址初始化操作。若O标签为1,则会继续发起与DHCPv6服务器的通信,获取网络参数。由于在无状态地址分配中,入网主机仅需利用接收到的RA报文进行无状态地址的获取,故该过程到此已完成。主机以有状态方式获取网络参数的过程将与有状态地址自动分配过程中进行设计。

2.2.3.2 有状态地址自动分配

在有状态地址自动分配的设计中,入网主机获取RA报文应答方式与无状态地址自动分配过程相同。当RA报文的M标签设置为1;或M标签设置为0,O标签设置为1时,主机会发起与DHCPv6服务器的通信。此时控制器需充当中继代理的角色,对主机与DHCPv6服务器的报文进行转发。由于此类报文属于数量极小的报文,且只发生在地址配置过程。故本文设计由控制器使用packet-out消息直接控制交换机转发(消息格式如图6所示),不下发多余的流表。通信过程如下图所示(图7)。

2.2.4 重复地址检测机制

在SDN网络下,控制器掌握全局网络拓扑,即控制器可通过全局网络视图对网络中的一切设备进行信息查询。在这种机制下,从控制器层面来说,若地址自动分配的过程以控制器为载体进行实现,那么一切被分配的IP地址,在分配前可由控制器在全局拓扑中进行比对,当为全局唯一地址时,才进行后续分配操作。因此,理论上在地址自动分配过程中,SDN网络下不会存在地址重复的可能。在IP地址手动分配时,由于人为的误操作,还是有地址重复的可能性的,此时控制器无法通过自身机制来避免这种情况的发生。在主机层面上,上层网络对于主机来说是透明的。主机只会依据传统IPv6协议的要求进行各类操作。所以,主机在接入网络或获取新的地址时,仍会对自身的IP地址进行重复地址检测,根据检测结果选择初始化该地址或将其从端口删除。

因此,虽然在SDN网络下进行地址自动分配时,控制器无需通过IPv6重复地址检测机制来保证全局网络设备的地址唯一性。本文提出,在地址与网络参数应答组件中,加入重复地址检测机制。控制器在地址分配过程中,从交互报文中提取待分配的IP地址作为测试地址,在分配前将该地址与全局视图中的IP地址进行比对,由此确定该地址是否为全局唯一。

(1)无状态地址分配过程:在该过程中,控制器从接收到的RS报文中可获得入网主机的MAC地址。同时,在地址分配管理信息表中可获取即将为该主机分配的地址前缀。利用EUI-64算法,将主机MAC地址与地址前缀生成待分配的测试地址,完成地址分配前的重复地址检测。

(2)有状态分配过程:在这一过程中,控制器可接收到DHCPv6服务器发送的reply报文,可从中获取待分配给主机的地址。将其提取并进行分配前的重复地址分配。

通过这种前置的重复地址检测,控制器可以不处理来自于主机对于该地址的重复地址检测报文,从而杜绝了多余的报文转发操作,降低信道开销。

对于由主机发起的重复地址检测,以及由于人为手动配置地址时发生的错误而导致的地址重复,控制器仍需遵循IPv6重复地址检测机制对主机进行报文应答,由此本文提出在非地址分配过程中,控制器将接收来自于主机的重复地址检测报文,并将该检测地址与全局视图进行比对,由此判断其是否全局唯一,并作出相应回复,无需将该报文在本地链路内多播至所有节点。这也将在很大程度上降低信道开销。

3 自动初始化机制的实现

本文基于ONOS控制器,设计并实现了IPv6自动初始化机制。在ONOS控制器的现阶段版本中,对于NDP协议的地址解析功能与IPv4协议的ARP机制进行了统一实现。故本文将提出的针对地址与参数自动配置的功能作为独立的组件进行实现。系统架构图如图8所示。

在ONOS控制器的核心层,扩展了地址分配管理组件(AddressAssignmentManager)和IPv6自动初始化管理组件(IPv6AutoConfigManager)。AddressAssignmentManager 组件主要作用是储存网络管理员对于地址分配方式的设置信息以及用于地址分配的前缀信息,并在执行自动初始化的过程中将相应的配置提供给自动初始化管理组件。IPv6AutoConfigManager组件主要实现对主机初始化过程中的各类数据包的处理方法。根据IPv6AutoConfigManager组件中的设置,对接收到的相关报文依据前文提出的自动初始化机制进行处理。如对于路由器请求报文的处理、路由器公告报文的构造及转发、用于重复地址检测的邻节点请求报文的处理、DHCPv6协议相关报文的处理与转发。同时,该组件还向上层应用提供接口,以供上层应用对数据包的处理方法进行调用。

在ONOS控制器的应用层,扩展了IPv6自动初始化(IPv6AutoConfig)以及地址分配设置(AddressAssignmentConfig)应用程序。IPv6AutoConfig应用的主要功能在于当应用程序启动时,向控制器中的processor容器中加入IPv6AutoCofigprocessor以便后续对接收的数据包进行处理。同时,该应用发起对数据包的请求,并对数据包进行一系列判断,从而启动自动初始化过程。该应用通过核心层组件IPv6AutoConfigManager提供的接口对其进行调用,从而处理请求到的数据包。AddressAssignmentConfig应用主要为网络管理员提供相关配置的入口,管理员通过输入命令达到对网络中各个接入端口的地址配置方式及前缀分配设置,并将相应参数传到核心层组件进行存储。当主机从某一个端口接入到网络中时,它的自动初始化过程将依据管理员对于该端口的设置进行。

4 结论

本文将传统IPv6网络中的地址与参数自动配置机制结合SDN网络的特点进行重新整合,提出适用于SDN网络的IPv6自动初始化机制。在该机制中,主要利用SDN控制器对全局网络信息的掌握,来精简传统IPv6自动配置过程中的报文交互,从而达到对网络拥塞问题的预防。同时利用SDN控制器可编程性强的特点,通过对应用层的设计,实现对网络中主机入网过程的个性化配置,由此提升了组网的灵活性,进行细粒度的集中管理。论文的思想在以ONOS为控制器的IPv6网络中进行了设计与实现,取得了预期的效果,后续还需要对自动初始化机制进行进一步优化以提高效率。

参考文献

[1]左青云,陈鸣,赵广松等.基于OpenFlow的SDN技术研究[J].软件学报,2013(05):1078-1097.

[2]Tseng C W,Chen S J,Yang Y T,et al.IPv6 operations and deployment scenarios over SDN[C]// Network Operations and Management Symposium. IEEE,2014:1-6.

[3]Sezer S,Scott-Hayward S,Chouhan P K,et al.Are we ready for SDN? Implementation challenges for software-defined networks[J].Communications Magazine IEEE,2013,51(07):36-43.

[4]林闖,贾子骁,孟坤.自适应的未来网络体系架构[J].计算机学报,2012,35(06):1077-1093.

[5]Tseng C W,Yang Y T,Chou L D. An IPv6-enabled Software-Defined Networking architecture[C]// Network Operations and Management Symposium.IEEE,2013:1-3.

[6]Jiang P C,Chen M,Xing C Y,et al. VDHCP:A versatile DHCP service based on OpenFlow[J].Journal of System Simulation,2013,25(07):1617-1621.

[7]陈志宾.单DHCP服务器跨子网的应用研究[J].河北省科学院学报,2006,23(03):64-67.

[8]深入解析IPV 6(第3版)[M].人民邮电出版社,2014.

猜你喜欢
软件定义网络
中国联通SDN的思考和应用实例
业务功能链技术及其应用探析
针对大规模软件定义网络的子域划分及控制器部署方法
一种新的SDN架构下端到端网络主动测量机制