一种软件定义网络操作系统及其实现方法

文档序号:7863177阅读:298来源:国知局
专利名称:一种软件定义网络操作系统及其实现方法
技术领域
本发明涉及软件定义网络(SDN, Software Defined Network)领域,尤其涉及一种SDN 操作系统(NOS, Network Operating System)及其实现方法。
背景技术
SDN是一种新兴的控制与转发分离并直接可编程的网络架构,SDN主要有四个特征:一是控制与转发分离,即支持第三方控制面设备通过OpenFlow等开放式的协议远程控制通用硬件的交换/路由功能;二是控制平面集中化;三是转发平面通用化;四是可通过软件编程方式满足客户化定制需求。SDN作为一种控制与转发分离、集中控制的网络架构,其面临的一个很大的挑战就是SDN控制平面NOS如何将网络路由、策略映射到不同厂家的多种转发面设备上,实现真正的网络可编程。由于有多种硬件以及转发优化方法的存在,NOS很难用统一的模型去描述底层硬件,也就很难采用标准化手段有效地对转发面进行编程。另外,部分转发面设备提供厂商也未必完全愿意向NOS厂商公开自己的硬件流水线模型,这使得NOS直接对硬件进行流水线级别的编程更加不现实。

发明内容
有鉴于此,本发明的主要目的在于提供一种SDN操作系统及其实现方法,使NOS在不知晓转发面硬件流水线设计细节的情况下,也能实现对转发面设备的最优化控制。为达到上述目的,本发明的技术方案是这样实现的:本发明提供了一种软件定义网络SDN操作系统,包括:N0S内核、控制接口、应用;所述系统还包括:转发抽象层、一个以上对应转发面设备的驱动模块;其中,所述转发抽象层,设置于NOS内核与转发面设备的驱动模块之间,用于管理驱动模块;将应用或NOS内核的转发表操作请求转换成统一标准的与硬件无关的功能接口 ;调用对应转发面设备的驱动模块提供的接口;所述驱动模块,用于NOS内核与对应转发面设备之间的连接;根据所述转发抽象层的调用,将所述标准操作转换成硬件流水线特定的转发表操作。上述方案中,所述转发面设备为交换机、或为路由器;所述转发面设备具有唯一的设备类型标识符。上述方案中,所述转发抽象层,还用于根据收集到的转发面设备类型标识符,加载对应的驱动模块,并将具体的转发面实例和驱动模块建立对应关系。上述方案中,所述驱动模块,还用于记录所述转发面设备的实例号和设备类型标识符,初始化硬件特性数据。上述方案中,所述控制接口为转发面设备管理协议接口、控制协议接口 ;所述控制协议包括OpenFlow协议;所述管理协议包括命令行、简单网络管理协议、网络配置协议。
上述方案中,所述转发抽象层和驱动模块之间的接口为NOS规范接口。本发明还提供了一种SDN操作系统实现方法,在NOS内核与转发面设备的驱动模块之间设置转发抽象层;所述方法还包括:转发抽象层将应用或NOS内核的转发表操作请求转换成统一标准的与硬件无关的接口 ;转发抽象层调用对应转发面设备的驱动模块提供的接口 ;所述驱动模块根据所述转发抽象层的调用,将所述标准操作转换成硬件流水线特定的转发表操作。上述方案中,所述转发面设备为交换机、或为路由器;所述转发面设备具有唯一的设备类型标识符;所述转发抽象层调用对应转发面设备的驱动模块提供的接口为:转发抽象层根据转发面设备的设备类型标识符找到对应的转发面驱动,并调用所述驱动模块提供的接口。上述方案中,所述方法还包括:所述转发抽象层根据收集到的转发面设备类型标识符,加载对应的驱动模块,并将具体的转发面实例和驱动模块建立对应关系。上述方案中,所述方法还包括:转发面设备首次与SDN NOS建立连接关系时,主动上报自身的设备类型标识符,SDN NOS根据所述设备类型标识符查找到对应的驱动模块实例,由所述驱动模块记录所述转发面设备的实例号和设备类型标识符,并初始化硬件特性数据。上述方案中,所述驱动模块为任何与转发面设备相对应的驱动程序;所述驱动程序在NOS上安装时,注册自身与一种或几种设备类型标识符之间的绑定关系。上述方案中,所述转发抽象层和驱动模块之间的接口为NOS规范接口。本发明所提供的SDN操作系统及其实现方法,通过引入转发抽象层和驱动模块,使得NOS可以很容易地控制各种厂家的转发面设备硬件,并且可以依赖厂商特定驱动模块来生成最优化的转发表;对于将来可能引入的新转发面设备硬件,只需在NOS上安装针对新转发面设备的新驱动模块即可,无需要求NOS提供商升级整个N0S,这使得新的网络硬件、功能的部署周期大大缩短。另外,本发明使得转发面硬件厂家无需公开自身详细的硬件内部细节就可以与其它厂家的NOS进行对接,改善了 SDN互通的可行性。


图1为NOS控制不同转发面硬件的示意图;图2为本发明实施例NOS架构的组成结构示意图;图3为本发明NOS控制转发面设备方法的实现流程示意图;图4为本发明转发面设备驱动加载实施例的实现流程示意图;图5为本发明转发表管理流程实施例的实现流程示意图。
具体实施例方式本发明的基本思想为:为NOS引入独立的转发抽象层(FAL,ForwardingAbstraction Layer),各种SDN的转发面设备和NOS对接时,安装相应的驱动模块,所有驱动模块由NOS的FAL管理,FAL将应用或NOS内核的转发表操作请求转换成统一标准的与硬件无关的功能接口,然后调用对应转发面设备的驱动模块,由对应转发面设备驱动将标准操作转换成硬件流水线特定的转发表操作。其中,所述转发面设备为交换机、或为路由器。本发明中,实现本发明方案的前提包括:I)每种SDN系统的转发面设备具有唯一的设备类型标识符,比如,一个字符串形式的设备规格描述符:厂商名设备品牌规格型号版本号;2)转发面厂商驱动的实现遵循NOS厂商的接口规范,也就是FAL和驱动模块之间的接口规范;3)转发面驱动在NOS上安装时,需要注册自身与某一种或某几种设备类型标识符之间的绑定关系,以便于相应转发面设备连接到NOS时,NOS可以根据设备类型标识符查找到相应的驱动程序入口。图1为NOS控制不同转发面硬件的示意图,如图1所示,在图1中,一个NOS控制了两个转发面设备,显然,图1中这两个转发面设备具有不同的流水线级数,并且也有不同的流水线跳转关系。其中,Packet_in表示到达设备的报文,Packet_out表示设备处理后转发出去的报文;Table k表示有k个流水线级数,Table η表示有η个流水线级数,流水线环节之间的箭头指向表明不同的跳转关系。实际应用中,转发面硬件差异性比图1所示更大,同时各个厂商也未必愿意完全向NOS公布自身转发面模型的细节,这样NOS想将转发面设备看成白盒直观地去控制的难度很大。所以,本发明就是要解决在NOS不知晓转发面硬件流水线设计细节的情况下,如何能实现对转发面设备最优化控制的问题。通常一个转发面设备,如常用的交换机和路由器,都包括至少一个本地CPU和一个转发面报文处理器,CPU用于处理各类协议和网管接口,在SDN框架下,转发面的控制接口协议也是由转发面设备的本地CPU处理的。而转发面报文处理器通常都是由多条流水线组成,每条流水线又由多个处理环节构成,每个处理环节可以认为是一个并发的硬件线程;一个报文到达转发面入口时首先被分配到某个报文处理流水线上,从流水线的第一个处理环节开始,直到最后一个处理环节处理完毕,然后通过转发面报文处理器的某个端口发送出去。这里,每个流水线环节报文处理的主要工作是:取出报文头部的值作为关键词查表,命中某条表记录后根据表中的结果对报文进行处理。本发明后续为简化表达,通常用一张表表示流水线中的一个环节,而多条流水线之间是同构的,相同的流水线环节都查询相同的转发表。图2为本发明实施例NOS架构的组成结构示意图,如图2所示,该NOS系统架构由最基本的NOS内核、控制接口、应用构成,关键是,本发明引入了转发抽象层和一个以上对应转发面设备的驱动模块;其中,所述转发抽象层,设置于NOS内核与转发面设备的驱动模块之间,用于管理驱动模块,将应用或NOS内核的转发表操作请求转换成统一标准的与硬件无关的功能接口 ;调用对应转发面设备的驱动模块提供的接口;具体的,所述转发抽象层调用对应转发面设备的驱动模块提供的接口为:所述转发抽象层根据转发面设备标识符找到对应的转发面驱动,并调用所述驱动模块提供的接π ;进一步的,所述转发抽象层,还用于根据收集到的转发面设备类型标识符,加载对应的驱动模块,并将具体的转发面实例和驱动模块建立对应关系,以便后续对所述转发面实例进行控制。具体的,所述将转发表操作请求转换成统一标准的与硬件无关的功能接口,只需要在转发抽象层和驱动模块之间定义标准接口即可。比如:定义二层转发表接口、三层路由接口、ACL接口等等;所述驱动模块知晓自己所对应的硬件的细节和配置,可以直接生成优化的转发表。举个例子来说,通常计算机上可以安装/读取多种不同的存储设备,例如:硬盘、U盘、SD卡等等;从硬件操作的角度来看,对于不同设备,实际操作的指令和方法是不一样的,但是,操作系统屏蔽了这种差异性,无论是U盘、还是硬盘,用户在windows中看到的都只是一个个的分区,在这些分区之上可以直接进行文件操作,如:创建、删除、拷贝等等。其中,操作系统中的文件系统就充当了这种转换的角色,即:将抽象的文件操作命令例如open,close,转换成不同设备的操作指令,并将相应的功能接口提供给上层应用。本发明中,转发抽象层向上层应用提供抽象的功能接口,例如前面提到的二层、三层功能接口,向下调用对应的驱动模块操作具体的转发面设备,如交换机/路由器。例如:有的交换机支持openflow协议,则驱动模块将这些功能接口操作转换成openflow命令;有的交换机只支持snmp协议,那么驱动模块就将这些操作通过snmp来表达。其中,所述转发面设备为交换机、或路由器;这里,所述转发抽象层对NOS内核或上层应用屏蔽了转发面设备的流水线细节信息,仅向NOS内核或上层应用提供可调用的驱动模块,使NOS可以很容易地控制各种厂家的转发面设备硬件,并且可以依赖各个厂商特定驱动来生成最优化的转发表。具体的,各个驱动模块知晓自己所对应的硬件的细节和配置,可以直接生成优化的转发表,就好比某厂商的显卡驱动可以采用最优方式管理自己厂家的显卡一样。所述驱动模块,用于NOS内核与对应转发面设备之间的连接;根据所述转发抽象层的调用,将标准操作转换成硬件流水线特定的转发表操作;所述驱动模块,还用于记录所述转发面设备的实例号和设备类型标识符,初始化硬件特性数据。图2所示给出了两种驱动模块:驱动模块1、驱动模块2 ;驱动模块1、驱动模块2由相应的转发面硬件厂商提供,即:驱动模块I对应转发面设备1,驱动模块2对应转发面设备2。具体的,驱动模块可以为任何与转发面设备相对应的驱动程序;转发面设备的驱动程序在NOS上安装时,需要注册自身与某一种或某几种设备类型标识符之间的绑定关系,以便于相应转发面设备连接到NOS时,NOS可以根据设备类型标识符查找到相应的驱动程序入口。除此之外,SDN的NOS还包括虚拟化层、API接口层等,但由于与本发明没有直接关系,在此不再详述。图3为本发明NOS控制转发面设备方法的实现流程示意图,如图3所示,该方法包括以下步骤:
步骤301:转发抽象层将应用或NOS内核的转发表操作请求转换成统一标准的、与硬件无关的接口;这里,每种SDN系统的转发面设备具有唯一的设备类型标识符,所述设备规格描述符可以采用字符串形式,如:厂商名设备品牌规格型号版本号;且转发面厂商的驱动实现遵循NOS厂商的接口规范,也就是FAL和驱动之间的接口规范。具体的,将转发表操作请求转换成统一标准的与硬件无关的功能接口,所述转换是将需求转换成FAL提供的统一接口 ;相应的,只需要在转发抽象层和驱动模块之间定义标准接口即可,比如:定义二层转发表接口、三层路由接口、ACL接口等等。步骤302:转发抽象层调用对应转发面设备的驱动模块提供的接口 ;具体的,所述转发抽象层根据转发面设备标识符找到对应的转发面驱动,并调用所述驱动模块提供的接口;进一步的,所述转发抽象层根据收集到的转发面设备类型标识符,加载对应的驱动模块,并将具体的转发面实例和驱动模块建立对应关系,以便后续对所述转发面实例进行控制。这里,驱动模块可以为任何与转发面设备相对应的驱动程序;转发面设备的驱动程序在NOS上安装时,需要注册自身与某一种或某几种设备类型标识符之间的绑定关系,以便于相应转发面设备连接到NOS时,NOS可以根据设备类型标识符查找到相应的驱动程序入口。进一步的,当转发面设备首次与SDN NOS建立连接关系时,主动上报自身的设备类型标识符,SDN NOS根据所述设备类型标识符查找到对应的驱动模块实例,由所述驱动模块记录所述转发面设备的实例号和设备类型标识符,并初始化硬件特性数据。步骤303:所述驱动模块根据所述转发抽象层的调用,将所述标准操作转换成硬件流水线特定的转发表操作。这里,所述转换其实是一种分解,即:在驱动模块内将操作分解到不同的流水线执行。举个例子来说,转发抽象层的请求是Add L3Route (IP Subnet, Mask,NextHopList),驱动程序本身管理的硬件可能有六级流水线,其中IP路由对应表3,并且该IP路由并不能完成最终的转发决策,L3路由出口还需要替换目的MAC地址,而只有驱动程序知道本设备的MAC地址处理表是表6,故下发IP路由表基本动作处理完毕后还指向表6进行MAC地址处理。在上述例子中,所述标准操作是指请求Add_L3Route,所述转换成特定转发表操作是指:先执行表3的IP路由操作,表3执行完后指向表6进行MAC地址处理;其中,所述IP路由是NOS内核根据拓扑计算决策的,之后通过Add_L3R0ute标准接口下发给转发面抽象层。由于一级流水线可能包含多张表,这些表之间允许相应的跳转关系,这里所提到的表3、表6指的是流水线中的两张表,而表的级数表明这条流水线中表的数量,例如,六级流水线说明这条流水线共有六张表。这里,驱动模块根据需要直接调用控制接口和所述转发面设备进行硬件特性协商;所述控制接口为转发面设备管理协议接口、控制协议接口 ;所述控制协议包括OpenFlow协议;所述管理协议包括命令行、简单网络管理协议(SNMP)、网络配置协议(NetConf)。图4为本发明转发面设备驱动加载实施例的实现流程示意图,如图4所示,该流程包括以下步骤:步骤401 402:转发面设备向NOS内核发出网络加入请求,该网络加入请求通过控制接口到达NOS内核;这里,所述控制接口可以是任何主流交换机/路由器管理协议接口、控制协议接口 ;所述控制协议可以为OpenFlow等协议,管理协议可以为命令行、简单网络管理协议、网络配置协议等等。步骤403 =NOS内核接收到网络加入请求后,向转发抽象层发出绑定请求;这里,所述绑定请求中含有发出网络加入请求的转发面设备的设备类型标识符等信息。步骤404:转发抽象层根据绑定请求中转发面设备的设备类型标识符查找到相应的驱动程序入口,并将具体驱动程序对应的驱动模块绑定到相应的转发面设备实例,调用驱动模块的绑定入口;这里,所述转发面设备实例属于同一转发面设备类型的不同的转发面设备。步骤405:转发抽象层调用查找到的驱动模块的绑定入口,向驱动模块发出绑定请求;步骤406:所述转发面设备的驱动模块记录下该设备类型标识符和设备实例号,初始化硬件特性数据;步骤407 410:驱动模块返回响应,响应经过转发抽象层、NOS内核,最终通过控制接口发送外部消息返回给转发面设备;步骤411 414:驱动模块根据需要直接调用控制接口和所述转发面设备进行硬件特性协商。图5为本发明转发表管理流程实施例的实现流程示意图,如图5所示,该流程包括以下步骤:步骤501:应用向NOS内核发送增加一条路由请求;步骤502 =NOS内核接收到该增加一条路由请求后,根据路由表信息查找本地拓扑信息,并确定要在哪个转发面设备上下发转发表;步骤503 =NOS内核向转发抽象层发送路由下发请求,所述路由下发请求中包括路由信息本身和转发面设备的实例号;步骤504:转发抽象层根据转发面设备实例号找到相应的驱动模块路由下发接口入口 ;步骤505:转发抽象层调用查找到的接口入口,向驱动模块发出路由下发请求;步骤506:驱动模块根据自身管理的转发面硬件特性以及收集到的硬件参数,将路由表分解到相应的硬件流水线上;举个例子来说,转发抽象层的请求是Add_L3Route (IP_Subnet, Mask,NextHopList),驱动程序本身管理的硬件可能有六级流水线,其中IP路由对应表3,并且该IP路由并不能完成最终的转发决策,L3路由出口还需要替换目的MAC地址,而只有驱动程序知道本设备的MAC地址处理表是表6,故下发IP路由表基本动作处理完毕后还指向表6进行MAC地址处理。 在上述例子中,所述标准操作是指请求Add_L3Route,所述转换成特定转发表操作是指:先执行表3的IP路由操作,表3执行完后指向表6进行MAC地址处理;其中,所述IP路由是NOS内核根据拓扑计算决策的,之后通过Add_L3R0ute标准接口下发给转发面抽象层。由于一级流水线可能包含多张表,这些表之间允许相应的跳转关系,这里所提到的表3、表6指的是流水线中的两张表,而表的级数表明这条流水线中表的数量,例如,六级流水线说明这条流水线共有六张表。步骤507 508:驱动模块根据自己所知的硬件特性生成硬件特定的转发表,向控制接口发送修改转发表命令,控制接口接收到该修改转发表命令后,将该修改转发表命令发送给转发面设备;步骤509 513:转发面设备返回修改成功响应;这里,所述步骤509 513在不同的实现中可能有不同的选择,部分情况下有些步骤是可以缺省的,比如=OpenFlow协议中,没有步骤509的响应,上层依赖于错误报告来确定转发表修改失败。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种软件定义网络SDN操作系统,包括:NOS内核、控制接口、应用;其特征在于,所述系统还包括:转发抽象层、一个以上对应转发面设备的驱动模块;其中, 所述转发抽象层,设置于NOS内核与转发面设备的驱动模块之间,用于管理驱动模块;将应用或NOS内核的转发表操作请求转换成统一标准的与硬件无关的功能接口 ;调用对应转发面设备的驱动模块提供的接口; 所述驱动模块,用于NOS内核与对应转发面设备之间的连接;根据所述转发抽象层的调用,将所述标准操作转换成硬件流水线特定的转发表操作。
2.根据权利要求1所述的系统,其特征在于,所述转发面设备为交换机、或为路由器;所述转发面设备具有唯一的设备类型标识符。
3.根据权利要求2所述的系统,其特征在于,所述转发抽象层,还用于根据收集到的转发面设备类型标识符,加载对应的驱动模块,并将具体的转发面实例和驱动模块建立对应关系。
4.根据权利要求2所述的系统,其特征在于,所述驱动模块,还用于记录所述转发面设备的实例号和设备类型标识符,初始化硬件特性数据。
5.根据权利要求1、2、3或4所述的系统,其特征在于,所述控制接口为转发面设备管理协议接口、控制协议接口 ; 所述控制协议包括OpenFlow协议; 所述管理协议包括命令行、简单网络管理协议、网络配置协议。
6.根据权利要求1、2 、3或4所述的系统,其特征在于,所述转发抽象层和驱动模块之间的接口为NOS规范接口。
7.一种SDN操作系统实现方法,其特征在于,在NOS内核与转发面设备的驱动模块之间设置转发抽象层;所述方法还包括: 转发抽象层将应用或NOS内核的转发表操作请求转换成统一标准的与硬件无关的接Π ; 转发抽象层调用对应转发面设备的驱动模块提供的接口; 所述驱动模块根据所述转发抽象层的调用,将所述标准操作转换成硬件流水线特定的转发表操作。
8.根据权利要求7所述的方法,其特征在于,所述转发面设备为交换机、或为路由器;所述转发面设备具有唯一的设备类型标识符; 所述转发抽象层调用对应转发面设备的驱动模块提供的接口为:转发抽象层根据转发面设备的设备类型标识符找到对应的转发面驱动,并调用所述驱动模块提供的接口。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:所述转发抽象层根据收集到的转发面设备类型标识符,加载对应的驱动模块,并将具体的转发面实例和驱动模块建立对应关系。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:转发面设备首次与SDNNOS建立连接关系时,主动上报自身的设备类型标识符,SDNNOS根据所述设备类型标识符查找到对应的驱动模块实例,由所述驱动模块记录所述转发面设备的实例号和设备类型标识符,并初始化硬件特性数据。
11.根据权利要求8、9或10所述的方法,其特征在于,所述驱动模块为任何与转发面设备相对应的驱动程序;所述驱动程序在NOS上安装时,注册自身与一种或几种设备类型标识符之间的绑定关系。
12.根据权利要求7至10任一项所述的方法,其特征在于,所述转发抽象层和驱动模块之间的接口为N OS规范接口 。
全文摘要
本发明公开了一种SDN操作系统,包括NOS内核、控制接口、应用;该系统还包括转发抽象层,一个以上对应转发面设备的驱动模块;所述转发抽象层,设置于NOS内核与转发面设备驱动模块之间,用于管理驱动模块,将应用或NOS内核的转发表操作请求转换成统一标准的与硬件无关的功能接口;调用对应转发面设备的驱动模块;所述驱动模块,用于NOS内核与对应转发面设备之间的连接;根据所述转发抽象层的调用,将所述标准操作转换成硬件流水线特定的转发表操作。本发明还同时公开了一种SDN操作系统的实现方法,采用本发明所述系统及方法,使NOS在不知晓转发面硬件流水线设计细节的情况下,也能实现对转发面设备的最优化控制。
文档编号H04L12/70GK103095565SQ201210397349
公开日2013年5月8日 申请日期2012年10月18日 优先权日2012年10月18日
发明者汪军, 梁亮 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1