软件定义网络中的数据包转发单元的制作方法

文档序号:17120580发布日期:2019-03-15 23:45阅读:233来源:国知局
本发明大体涉及软件定义网络。更具体地说,本发明涉及软件定义网络中的数据包转发单元。
背景技术
::在传统网络中,路由器和交换机等网络转发元件包含数据面功能(dataplane,简称d面)以及控制面(controlplane,简称c面)功能。软件定义网络(softwaredefinednetworking,简称sdn)是一种网络设计和管理方法,它将控制面与网络的转发面分离,从而实现其独立处理。可以集中管理控制面,以使控制面协议的开发更简单快捷。软件定义网络将网络设备定义为流处理设备,表示为交换机。在这些交换机的基础上,sdn可以将经典管理和控制面智能集中在一个逻辑设备中,该逻辑设备也称为控制器(也称为sdn控制器)。通用抽象和本地可用数据使控制和管理应用的开发更简便。由于控制面的集中化,网络功能迁移到控制器,例如,它们可以实现为在控制器上运行的控制应用(controlapplication,简称capp)。例如,在路由时,传统交换机运行链路状态分配协议和路由(路径)计算,而支持sdn的交换机仅将它们的链路状态分发给控制器,然后控制器执行路径计算。通过设置适当的流规则,可以在交换机中使用这些路径。图1示出了sdn架构100的图示。在该网络中,sdn控制器108是关键组件之一。通过所谓的南向应用编程接口(即南向api),sdn控制器108可以与基础设施层中的网络元件(即多个交换机102)进行通信,并且将必要数据转发至这些交换机102并从这些交换机中转发必要数据,以构建网络状态的集中视图。通过所谓的“北向api”,sdn控制器108可以向多个sdn控制应用104a-c(即,在sdn控制器108上运行的sdncapp)呈现集中视图,从而使这些控制应用104a-c能够执行其逻辑并操纵网络状态。南向api可以使用openflow(of)协议来实现。of交换机抽象层是协议所做的关键假设,流和流表的概念是该抽象层的核心。流本质上是数据包的任意序列,它们共享通用的一组第2层-第3层(l2-l3)协议比特(例如,目的地为相同互联网协议(internetprotocol,简称ip)地址的数据包),而交换机的流表是与该交换机相关的所有流的集合。流表中的每个流表项与一组操作相关联,当输入数据包与流表项匹配时,应执行这些操作。sdn控制器108和交换机102之间的通信信道通常称为控制信道。它可以在逻辑上实现为sdn控制器108和交换机102之间的传输层安全(transportlayersecurity,简称tls)或传输控制协议(transmissioncontrolprotocol,简称tcp)连接。因此,术语“控制连接”也与“控制信道”具有相同的含义。软件定义网络(更具体地说是基于of的sdn)被认为是可以发展下一代移动网络架构设计的关键技术之一,因为它具有简单性和网络可编程性特征(例如,参见ngmnalliance,“5g白皮书”,2015年2月17日)。下一代移动网络的其中一个目标是支持网络切片概念。网络切片主要针对移动核心网的分区,其中网络切片被定义为来自sdn基础设施的资源集合以及支持特定用途的通信服务要求的一组控制应用(controlapplication,简称capp),例如,机器类通信(machinetypecommunication,简称mtc)、车联网(vehicle-to-x,简称v2x)、移动宽带(mobilebroadband,简称mbb)等。对于一个网络切片,可以有一个或多个sdncapp,它们可以提供不同的网络服务。来自不同切片的资源可以共享同一个支持sdn的基础设施,并且这些切片可能具有不同的capp并具有发送到sdn控制面的不同请求,以便操作基础设施。然而,需要在网络切片的范围内解决几个问题。首先,必须保证同一基础设施上运行的不同切片(例如切片a和切片b)仅可访问该基础设施中与其相关的部分(例如,openflow交换机中的流表项)且切片a不会更改与切片b相关的基础设施的部分。例如,如果切片a的capp在交换机s1中配置流表项,则应该保证来自切片b的capp无法修改同一交换机s1中切片a的流表项。另一个问题是保证即使在相同的切片内,也可以存在各个切片的每个capp的控制域。例如,在来自切片b的具有capp#1(例如,移动管理capp)和capp#2(例如,连接管理capp)的情况下,capp#1可以在交换机s1中定义一组流表项,以将事件从数据面发送到控制面。然而,应该有机制来保证,只有capp#1可以实施这些配置更改(即流表项),因此不允许capp#2更改可能会对capp#1运行造成损害的配置。在openflow交换机论坛2009年技术报告文档《flowvisor:网络虚拟化层》中,建议将名为flowvisor的虚拟化解决方案用于在不同sdn控制域之间共享物理交换机。该解决方案基于管理程序层。每个sdn控制实体均可获得一份完全隔离的网络资源。flowvisor实现为openflow代理,可拦截和转换交换机和控制器之间的消息。但是,这种方法也存在一些问题。首先,它不允许单个切片内capp之间的访问控制。其次,控制器和交换机之间的附加层增加了额外的控制延迟和开销。第三,由于在控制层消息处理中涉及到附加层,控制面复杂性的增加是不可避免的。在blenk等人于2015年5月11-15日召开的ifip/ieee综合网络管理国际研讨会上发表的文档《具有灵活管理程序功能分配的sdn虚拟化架构》中,提出了一种支持控制面多租户功能的管理程序。这项工作仅侧重于控制面的隔离。然而,该方法没有解决同一切片上capp之间的资源共享问题,并且与前面提到的文档类似的是,它的性能较低。在us20150139238a1中,公开了一种用于在与不同切片或租户相关联的交换机中动态创建流表项的方法。然而,本发明并未定义在部署之后对所部署的流表项执行哪种访问控制。因此,无法保证另一个切片将覆盖或删除另一个切片定义的流表项。此外,这种方法没有提供任何解决同一租户的capp之间的流表项共享问题的机制。因此,鉴于上述情况,需要用于软件定义网络的改进设备和方法。技术实现要素:本发明的目的在于提供用于软件定义网络的改进设备和方法。上述和其它目的通过独立权利要求的主题来实现。根据从属权利要求、说明书以及附图,进一步的实现形式是显而易见的。根据第一方面,本发明涉及一种数据包转发单元,尤其是交换机,用于基于一组数据包转发规则在由sdn控制器管理的软件定义网络中转发数据包。所述数据包转发单元包括:存储单元,例如存储器,用于存储所述一组数据包转发规则和一组访问规则;以及访问控制实体,用于基于所述一组访问规则控制对所述一组数据包转发规则的访问。根据如上所述第一方面,在所述数据包转发单元的第一种可能的实现方式中,所述访问控制实体用于通过控制以下过程来控制对所述一组数据包转发规则的访问:控制读取数据包转发规则、写入数据包转发规则和/或使用数据包转发规则。根据如上所述第一方面或所述第一方面的所述第一种实现方式,在所述数据包转发单元的第二种可能的实现方式中,所述数据包转发单元用于接收来自sdn控制器的sdn控制消息,以访问所述一组数据包转发规则;且所述访问控制实体用于从所述sdn控制消息中提取识别控制实体的标识,并基于所述一组访问规则和所述标识控制对所述一组数据包转发规则的访问。根据如上所述第一方面或所述第一方面的所述第一种或第二种实现方式,在所述数据包转发单元的第三种可能的实现方式中,所述数据包转发单元是根据openflow标准实现的交换机,且所述一组数据包转发规则以流表、组表和/或计量表的形式存储在所述存储单元中。根据所述第一方面的所述第三种实现方式,在所述数据包转发单元的第四种可能的实现方式中,所述一组访问规则以流表、组表和/或计量表扩展的形式存储。根据所述第一方面的所述第三种或第四种实现方式,在所述数据包转发单元的第五种可能的实现方式中,所述访问控制实体用于检查以下事项:如果存储在流表中的数据包转发规则和存储在组表或计量表中的另一数据包转发规则具有冲突的访问规则,存储在所述流表中的数据包转发规则不将数据包重定向到存储在所述组表或计量表中的另一数据包转发规则。根据所述第一方面的所述第三种至第五种实现方式中的任意一种,在所述数据包转发单元的第六种可能的实现方式中,所述访问控制实体用于通过控制向所述一组数据包转发规则添加新数据包转发规则的过程,来控制对所述一组数据包转发规则的访问,具体方式为:检查以所述流表扩展形式存储的所述访问规则是否允许向所述一组数据包转发规则添加所述新数据包转发规则。根据所述第一方面的所述第六种实现方式,在所述数据包转发单元的第七种可能的实现方式中,所述访问控制实体用于通过控制向所述一组数据包转发规则添加新数据包转发规则的过程,来控制对所述一组数据包转发规则的访问,具体方式为:如果以所述流表扩展形式存储的所述访问规则允许向所述一组数据包转发规则添加所述新数据包转发规则,进一步检查以所述组表和/或计量表扩展形式存储的所述访问规则是否允许向所述一组数据包转发规则添加所述新数据包转发规则。根据如上所述第一方面或所述第一方面的所述第一种至第六种实现方式中的任意一种,在所述数据包转发单元的第七种可能的实现方式中,所述一组访问规则为所述一组数据包转发规则的各个数据包转发规则定义:作为各个数据包转发规则所有者的控制实体;允许访问各个数据包转发规则的其它控制实体;和/或允许访问各个数据包转发规则的其它控制实体的访问权限。根据所述第一方面的所述第七种实现方式,在所述数据包转发单元的第八种可能的实现方式中,所述数据包转发单元用于接收来自sdn控制器的sdn控制消息,以创建所述一组数据包转发规则的新数据包转发规则,且访问控制实体用于从所述sdn控制消息中提取标识,所述标识将控制实体识别为所述新数据包转发规则的所有者。根据所述第一方面的所述第八种实现方式,在所述数据包转发单元的第九种可能的实现方式中,所述访问控制实体用于确定是否向所述一组数据包转发规则添加新数据包转发规则或基于所提取的标识(识别控制实体)修改现有数据包转发规则。根据如上所述第一方面或所述第一方面的所述第一种至第九种实现方式中的任意一种,在所述数据包转发单元的第十种可能的实现方式中,所述访问控制实体用于允许预定义的超级控制实体访问所有组数据包转发规则。根据如上所述第一方面或所述第一方面的所述第一种至第十种实现方式中的任意一种,在所述数据包转发单元的第十一种可能的实现方式中,所述访问控制实体还用于丢弃对所述一组数据包转发规则的访问请求,该访问请求将导致新增的或已修改的数据包转发规则覆盖现有数据包转发规则。根据第二方面,本发明涉及一种sdn控制器,其用于通过向数据包转发单元提供控制消息来控制软件定义网络中的数据包转发,其中所述控制消息包括数据包转发规则以及用于识别与数据包转发单元相关的控制实体的标识。根据所述第二方面,在所述sdn控制器的第一种可能的实现方式中,所述控制消息定义允许访问数据包转发规则的至少一个其它控制实体和/或至少一个其它控制实体的访问权限。根据第三方面,本发明涉及一种操作数据包转发单元的方法,所述数据包转发单元用于基于一组数据包转发规则在软件定义网络中转发数据包,其中所述方法包括以下步骤:访问所述数据包转发单元的存储器中的一组访问规则;基于所述一组访问规则控制对所述数据包转发单元的存储器中的一组数据包转发规则的访问。根据所述第三方面的操作数据包转发单元的方法的另一种实现方式直接来自根据第一方面的数据包转发单元的相应另一种实现方式。根据第四方面,本发明涉及一种操作sdn控制器的方法,所述sdn控制器用于基于一组数据包转发规则控制软件定义网络中的数据包转发,其中所述方法包括将控制消息发送到数据包转发单元的步骤;所述控制消息包括数据包转发规则以及用于识别生成控制消息的控制实体的标识。根据所述第四方面,在操作sdn控制器的方法的第一种可能的实现方式中,所述控制消息包括授权字段,其识别经授权访问所述数据包转发规则的控制实体。此外,所述控制消息可以指定每个被识别的控制实体的访问权限。根据第五方面,本发明涉及一种操作数据包转发单元的方法,所述数据包转发单元用于基于一组数据包转发规则在软件定义网络中转发数据包,其中所述方法包括接收来自所述数据包转发单元的控制消息的步骤,且所述控制消息包括数据包转发规则以及用于识别生成控制消息的控制实体的标识。根据所述第五方面,在操作数据包转发单元的方法的第一种可能的实现方式中,所述控制消息包括授权字段,其识别经授权访问数据包转发规则的控制实体。此外,所述控制消息可以指定每个被识别的控制实体的访问权限。根据第六方面,本发明涉及一种计算机程序,包括程序代码,用于在计算机上运行时执行第三方面的方法、第四方面的方法、第五方面的方法和/或上述实现方式中的任意一种。附图说明本发明的具体实施例将结合以下附图进行描述,其中:图1示出了sdn架构的示意图;图2示出了包括实施例提供的数据包转发单元和实施例提供的sdn控制器的sdn架构示意图;图3示出了包括实施例提供的数据包转发单元和实施例提供的sdn控制器的sdn架构示意图;图4示出了在实施例中实现的openflow表项扩展的示意图;图5示出了在实施例中实现的openflow接口的控制消息扩展;图6示出了在实施例中实现的openflow接口的控制消息扩展;图7示出了在实施例中实现的openflow接口的控制消息扩展;图8示出了在实施例中实现的授权列表的数据结构;图9示出了在实施例中实现的访问控制权限列表;图10示出了在实施例提供的数据包转发单元访问控制实体中实现的过程的流程图;图11示出了用于检查在实施例提供的数据包转发单元中实现的匹配规则的树状结构示意图;图12示出了实施例提供的数据包转发单元操作方法的示意图。在附图中,相同或功能对等的特征采用相同的图例编号。具体实施方式以下结合附图进行描述,所述附图是本发明的一部分,并通过图解说明的方式示出可以实施本发明的具体方面。可以理解的是,在不脱离本发明范围的情况下,可以将本发明置于其它方面中,并且可以做出结构或逻辑上的改变。因此,以下详细的描述并不当作限定,本发明的范围由所附权利要求书界定。例如,可以理解的是,与所描述方法有关的公开通常对于用于执行所述方法的相应设备或系统也同样适用,反之亦然。例如,如果描述了特定方法步骤,则对应设备可以包括用于执行所描述的方法步骤的单元,即使此类单元没有在图中明确描述或图示。另外,在以下具体描述以及权利要求中,描述了包含相互连接或进行信号交互的功能方框或处理单元的实施例。可以理解的是,本发明也涵盖了包含附加功能方框或处理单元的实施例,这些附加功能方框或处理单元设置在以下所述的实施例中的功能方框或处理单元之间。最后,可以理解的是,除非另有说明,此处所述的各种示例性方面的特征可以互相结合。图2示出了包括实施例提供的数据包转发单元202和实施例提供的多个sdn控制器208a-c的sdn架构200的示意图。在实施例中实现为openflow交换机的数据包转发单元202用于基于各组数据包转发规则,在由各个sdn控制器208a-c管理的各个软件定义网络中转发数据包。数据包转发单元202包括存储单元或存储器202b,所述存储单元或存储器用于存储各组数据包转发规则以及各组访问规则。此外,数据包转发单元202包括访问控制实体202a,所述访问控制实体用于基于各组访问规则控制对各组数据包转发规则的访问。在一实施例中,数据包转发单元202a可以使用openflow(of)协议经由控制信道与多个sdn控制器208a-c通信。在sdn控制器a208a上实现两个控制应用204a(即控制应用a)和204b(即控制应用b),该控制应用可以定义切片a的至少一部分或其网络功能。在sdn控制器b208b上实现控制应用204c(即控制应用c),该控制应用可以定义切片b的至少一部分或其网络功能。本发明的实施例以基于sdn的访问控制模型为基础,其中sdn控制实体(亦称为主体)可以是sdn控制器x或sdn控制器x和sdncappy的组合,此处表示为x.y。例如,在图2所示的实施例中,sdn控制实体可以是控制器c208c、控制器a208a与cappa204a或控制器b208b与cappc204c。在一实施例中,交换机202的访问控制实体202a可以实现访问规则,例如“来自sdn控制器x上的所有切片的capp可以修改资源”或“仅sdn控制器x上的切片y的cappy可以修改资源”。此外,在一实施例中,对象可以被定义为一个或多个数据包转发规则,例如,交换机202的流表/组表/计量表的表项,其可以由主体访问和指定。在一实施例中,首先访问并使用交换机202的某些对象的主体拥有该对象的所有权。在一实施例中,拥有对象所有权的主体还可以授权其它主体的访问权限。在一实施例中,交换机202和sdn控制器a208a均用于利用交换机202的访问控制实体202a。在一实施例中,可以在sdn控制器208a和of交换机202之间实现相应的接口,其可用于指定访问控制实体202a的访问规则。例如,根据定义访问控制策略的一组访问规则,来自切片a的所有sdncapp都不能使用和/或修改属于切片b的对象。图3示出了包括多个交换机(即交换机1-4)的sdn架构200的示意图,包括实施例提供的数据包转发单元202(在这种情况下对应于交换机1)以及两个sdn控制器208a、b。在本实施例中,来自不同切片(即切片x和切片y)的三个不同sdn控制应用204a-c(即cappa、b和c)可以基于在交换机202的访问控制实体202a中实现的授权和认证访问交换机202。如上所述,交换机202的访问控制实体202a通过sdn控制实体的访问权限实施访问控制策略(由各组访问规则定义),以对基础设施资源(其是访问控制配置的对象)执行操作(例如,添加、修改、删除)。在图3所示的实施例中,在sdn控制器a208a上实现的三个sdncappa、b和c204a-c可以由a.a、a.b和a.c表示,其中a.a和a.b用于切片x,a.c用于切片y。主机h1附着于交换机202,并且主机h1往往通过以下方式连接到万维网服务器1:利用万维网服务器1的目的地址,将d面数据包发送到交换机202。由于在该阶段的示例性实施例中,交换机202不具有处理该业务流的任何流规则(即数据包转发规则),因此可以由交换机202将pi控制消息发送到sdn控制器a208a,以请求用于处理该流量的数据包转发规则。在一实施例中,在sdn控制器a108a上实现的控制实体cappa204a可以生成数据包转发规则,以处理源自主机h1的该流量。根据一实施例,可以执行以下操作步骤的序列,所述操作步骤由图3中带圆圈的数字指示。在步骤1中,cappa204a向交换机202发送控制消息以添加数据包转发规则,从而处理从主机h1到万维网服务器1的流量。在步骤2中,交换机202收到控制消息后,交换机202的访问控制实体(accesscontrolentity,简称ace)202a将基于存储在存储单元或存储器202b中的访问规则检查相应的控制实体(即控制应用a204a)是否具有添加数据包转发规则的必要权限。存储单元或存储器202b的类型取决于交换机202的实现方式。它可以是硬件存储器,例如三态内容可寻址存储器(ternarycontentaddressablememory,简称tcam),也可以是虚拟化存储器,例如开放式虚拟交换机(openvirtualswitch,简称ovs)使用的存储器。也可以使用其它形式的存储单元。如果是这种情况,则在交换机202上(即存储在其存储器202b上)安装由cappa204a提供的数据包转发规则。否则,cappa204a提供的数据包转发规则将被交换机202的访问控制实体202a拒绝,并且可能向cappa204a报告错误。在步骤3中,cappc204c生成另一数据包转发规则并将其发送到交换机202,该交换机可以修改或删除由控制实体a.a204a指定的先前规则。在步骤4中,交换机202的访问控制实体202a检查控制实体a.c204c是否被控制实体a.a204a授权执行上述操作。如果情况并非如此,交换机202的访问控制实体202a可以拒绝由cappc204c提供的另一规则,并向cappc204c返回错误消息。图3右下方的详细视图中示出了可以存储在交换机的存储单元202b中的数据包转发规则和访问规则的示例性组合。优点在于,图3中所示的实施例不需要任何类型的基于管理程序的虚拟化技术来保证对网络切片的访问控制。它可以应用于旨在使用和/或修改交换机202的资源的控制消息。因此,属于不同切片的不同控制器208a和208b或capp可以共享相同的交换机202而不会相互干扰。嵌入交换机202中的访问控制实体202a消除了对交换机202的流表进行虚拟化以保证隔离每个切片的一组流表项的需要。因此,如果交换机是专用of硬件,或者交换机是使用虚拟交换机(例如,ovs)的机架设备的实物,则可以独立地保证对资源级别的网络切片的访问控制。这对移动核心网络具有有利影响,因为基于本发明的实施例,mcn运营商仍然可以具有高性能专用硬件of交换机并且可以保证网络切片之间的隔离。此外,图3中所示的实施例允许通过消除集中控制层来减少sdn控制面延迟。此外,任何类型的虚拟化都必然会影响网络切片中的资源配置性能。由于本发明的实施例不依赖于虚拟化技术,因此消除了对启用网络切片的访问控制和隔离造成的性能降级。图4示出了可用于本发明实施例中的openflow表项扩展的示意图。openflow表项可以存储在交换机202的存储器202b中。在一实施例中,对于of交换机202相关对象(即数据分组转发规则,例如流表、组表和/或计量表的表项),可以使用两个扩展字段,即所有者字段401和授权字段403。of交换机202和sdn控制器208a之间的接口扩展允许sdn控制器208a定义和编程在of交换机202上执行的访问控制策略。of交换机202上的扩展使用根据本发明提出的动态和可编程访问控制解决方案,启用对of交换机202的访问控制实体202a执行的操作。所有者字段401定义该对象的所有权,该对象被控制实体相关主体抢占。例如,创建表项的控制实体可以被视为该表项的所有者。此外,可以存在“超级控制器账户”或超级控制实体,其可以在错误配置的情况下修改所有资源以恢复交换机202,这也称为根所有权。例如,属于基础设施提供商的控制器可以拥有根所有权。根控制器最初还可以指定允许写入交换机202的控制器列表。所有权可以表示为id,其可以以各种方式组成。在一实施例中,id包含两个字段,即控制器id和cappid。如上所述,控制器a208a上的cappxid可以表示为a.x。可以忽略控制应用id(或使用通配符),为特定控制器上的所有控制应用授予权限,例如,a.*。默认情况下,所有者是首次安装资源的控制实体。如有必要,可以通过“超级控制器账户”进行更改。通过使用授权字段403,一个表项的所有者可以授权具有某些访问权限的其它控制实体,正如下文将要解释的那样。可以在不同控制器(例如,在同一控制器上实现的所有capp在彼此之间具有权限)、或不同切片(例如,属于相同切片的所有capp彼此之间具有权限),或不同capp(例如,授权是针对单独一对capp进行的)之间完成授权。这两个扩展字段401和403用于验证sdn控制消息的访问权限,并且它不影响数据面的数据包处理。如上所述,在一实施例中,交换机202实现为openflow(of)交换机。在of交换机202中,有三张主表可以由控制实体配置并且可以使用扩展字段401、403进行扩展,即流表、组表和/或计量表。组表由组表项组成。组表使流表项能够指向一组端口,使openflow能够表示其它转发方法。计量表由计量表项构成,它定义了每个流的计量。每个流的计量使openflow能够实现各种qos操作,例如速率限制。它还可以与每个端口的队列组合以实现qos框架(例如,diffserv)。计量表项测量分配给它的数据包速率,因此它可以控制流数据包速率。根据of标准,组表和计量表与流表相关。实际上,当数据流数据包到达of交换机202时,它首先由流表进行处理,并且该表中的指令可以将数据包重定向到组表和/或计量表,且组表中的指令也可以将数据包重定向到计量表。因此,在一实施例中,访问控制实体202a用于保证流表(或组表)的指令只能将数据包重定向到具有与已开始数据包重定向的流表项(组表项)相同类型的所有权和授权的组表或计量表。这对于避免切片a的流表项将流量重定向到切片b的计量表项非常重要。因此,在一实施例中,用于改变流表中的信息的访问控制可通过下列直接方式实现。如果第一个控制实体是交换机202中流表项的所有者,既不是该流表项的所有者也未经授权更改流表项的第二个控制实体尝试更改第一个控制实体的流表项时,可以检测到该尝试并终止第二个控制实体。对于组表和计量表,可能发生控制实体尝试重新配置表项的情况,并且还可以定义使用组表和计量表的访问权限。在这种情况下,如果第一个控制实体拥有组表或计量表项的所有权,则它可以使用组表和计量表项。它还可以授权第二个控制实体使用相同的组表或计量表项。也就是说,在一实施例中,如果第二个控制实体也共享所有权或被授权(由第一控制实体授权)使用相同的组表或计量表项,则第二个控制实体的流表项只能链接到第一个控制实体的组表或计量表项。下表1列出了不同定义的of类型表的可能访问权限。“read”表示主体可以从流表、组表和/或计量表中读取表项内容但不能修改表项的访问权限。“write”表示主体可以从流表、组表和/或计量表中读取、修改或删除表项内容的访问权限。例如,如果控制实体要在交换机的流表中设置新的流表项,则访问控制实体将检查流表中是否已存在此类表项(例如,相同的匹配字段)。如果已存在,则访问控制实体将检查控制实体是否是流表项的所有者,然后基于新的流表项更新现有流表项。如果控制实体不是所有者,但是由具有访问权限(write)的所有者授权,则基于新的流表项更新现有流表项。“use”表示主体可以根据流表项中定义的操作指示使用组表和/或计量表项的访问权限。因此,“use”不适用于流表项。所有者和授权字段的组合定义了访问规则。示例用法可以是,流表项的所有者是控制实体1,它为控制实体2授予访问权限“write”,向控制实体3授予访问权限“write”。因此,访问规则可以定义为【1,2(write),3(write)】。如果此流表项定义了使用组表项的操作,该组表项的所有者是控制实体1,并且控制实体1为控制实体3授予访问权限“use”,为控制实体4授予访问权限“use”。因此,此组表项的访问规则为【1,3(write、use),4(use)】。如果控制实体3发送控制消息以修改上述流表项,则访问控制实体首先将检查访问规则【1,2(write),3(write)】,然后检查访问规则【1,3(write、use),4(use)】。这两个访问规则不会相互冲突,因此,可以在交换机上设置来自控制实体3的控制消息。如果组表项具有访问规则【1,4(write、use),6(use)】并且从控制实体3收到以下控制消息:【1,2(write),3(write)】和【1,4(write、use),6(use)】,则这些访问规则相互冲突。因此,无法在交换机202上安装来自控制实体3的控制消息。如果控制实体5发送控制消息以修改上述流表项,则访问控制实体首先将检查访问规则【1,2(write),3(write)】。控制实体5未经授权,因此其规则无法安装在交换机上。对于组表/计量表,访问权限的可能组合可以是:【read】:授权控制实体只能读取组表/计量表项。【write】:授权控制实体可以修改组表/计量表项。“write”包含“read”访问权限。【use】:定义流表项的授权控制实体可以使用相应的组表/计量表项。“use”包含“read”访问权限。【write、use】:定义流表项的授权控制实体可以使用相应的组表/计量表项,且授权控制实体可以修改组表/计量表项。在一实施例中,组表项的所有者可以授权控制实体使用组表项。这意味着,如果流表项的指令定义了通过某个组表项处理数据包的操作,则只有在控制实体(拥有流表项或已获得授权)也被授予相应组表项的权限时,才能使用此类组表项。这同样适用于计量表。也就是说,只有具有相同访问控制规则的流表项和组表项可用于(即,重定向数据流)计量表。将流表项(即数据包转发规则)插入交换机202时,检查流表项和组表项或计量表项之间的兼容性。如果流表项的所有者不是指令集的组表项或计量表项的所有者或未经所有者授权使用此类组表项或计量表项,则访问控制实体202a拒绝添加该流表项并返回错误消息。图5示出了实施例提供的openflow接口的控制消息扩展。在一实施例中,有两个新字段已添加到控制消息ofpt_flow_mod中,即所有者控制标识id和授权列表。of接口需要这些控制消息扩展,其基于openflow规范(“openflow交换机规范”,开放网络基金会(opennetworkfoundation,简称onf),版本1.5.0,2014年12月19日),以支持上述功能。图6示出了实施例提供的openflow接口的控制消息扩展。与图5类似,在本实施例中,有两个新字段已添加到控制消息ofpt_group_mod中,即所有者控制标识id和授权列表。图7示出了实施例提供的openflow接口的控制消息扩展。与图5和图6类似,在本实施例中,有两个新字段已添加到控制消息ofpt_meter_mod中,即所有者控制标识id和授权列表。图8示出了实施例提供的授权列表的可能数据结构。在本实施例中,生成控制消息的sdn控制实体将其id放置在所有者id字段中。图9示出了实施例提供的访问控制权限列表。在本实施例中,如果sdn控制实体向其它控制实体授予访问权限read、write或use,则它将这些控制实体及其相应的访问权限放置在授权字段中。如果通过没有授权字段403的控制消息添加表项,则除所有者之外,其它控制实体均无法访问该表项。对于旨在修改或删除表项的控制消息,仅使用所有者id字段401来检查生成控制消息的控制实体是所有者还是经过授权。资源的所有者可以通过重置所有者字段将所有权转移到另一个控制实体,并将其从权限列表中移除。任何控制实体都可以使用ofpt_table_mod消息修改流表。它会影响具有相同所有权、已授予“write”权限的流表项以及没有任何特定所有者和授权字段的表项。图10示出了在实施例提供的交换机202的访问控制实体202a中实现的过程1000的流程图。在本实施例中,交换机202收到of控制数据包(步骤1001)后,访问控制实体202a首先将检查控制包类型,以查看控制包是否为flow_mod、group_mod或meter_mod消息(步骤1003、1005、1007)。对于flow_mod消息,如果它旨在添加新规则(步骤1009),则访问控制实体202a首先将检查是否可以添加该流表项,如图11中的说明。如果可以添加,则访问控制实体202a将检查该流表项是否定义了操作,包括使用任何组表或计量表。如果定义了操作,则访问控制实体202a将检查组表或计量表相应表项中的所有权字段或认证字段(o|a)(步骤1009、1011、1013)。如果是,则将该新规则添加到交换机202的数据包转发规则(步骤1015),否则,将向已生成flow_mod消息的sdncapp报告错误(步骤1017)。如果flow_mod消息用于修改流表项,则访问控制实体202a将检查生成该flow_mod消息的sdncapp是否拥有所有权或者经过该流的所有者的授权(步骤1013)。如果是,则将修改此流(步骤1015),否则将向sdncapp报告错误消息(步骤1017)。如果控制包是roup_mod或meter_mod消息,则访问控制实体202a将检查组表或计量表相应表项中的所有权字段或认证字段(o|a),以查看已生成控制消息的sdncapp是否拥有所有权或经过旨在修改的该组表或计量表项的所有者的授权(步骤1019)。如果是这种情况,则将修改该组流规则(步骤1015),否则将向sdncapp报告错误(步骤1017)。如图中的注1所述,确定控制包类型的顺序或确定控制包类型的方式可以灵活选择。如注2所述,在一实施例中,在交换机102a上安装规则之前可以对规则遮蔽进行进一步测试,其中规则遮蔽表示应用程序在无法直接写入超集匹配时可以写入匹配规则的子集的过程。例如,应用程序“a”无权在地址空间192.168.155.0/24中编写匹配规则。但是,它理论上可以通过为地址空间192.168.155.xxx写入大量规则来克服这一限制,其中xxx为1到254。由于of的正常运行优先处理最长匹配,这些流规则的子集将隐藏全部流规则组。本发明的一个优点是,保证访问权限以配置交换机202本身的机制是在交换机202内部执行的,其是由访问控制实体202a管理的对象。因此,即使控制器208a和管理程序具有检查capp是否可以提交of消息以更改交换机的流表项(即,发送offlow_mod消息)的安全机制,当前of交换机本身没有机制来双重检查流表项是否应该由所收到的of消息更改。本发明介绍了of交换机202内部的这种双重检查安全功能。使用上述方法首次在of交换机202中设置流表项后,即可保证实际上仅允许符合已设置流表项中的访问控制权限要求的flow_mod消息重新配置此类流表项。因此,本发明在交换机202中增加了额外的安全机制,以保证对每个网络切片的交换机资源的访问控制以及这些切片内部的访问控制。图11示出了用于检查匹配规则的树状结构示意图,所述匹配规则可在本发明的实施例中实现并用于解决规则遮蔽问题。如上所述,当cappa定义交换机202中的通用规则(即,of交换机中的流表项)且cappb定义相同交换机202中更窄的特定规则从而覆盖cappa规则时,可能会发生规则遮蔽问题。在这种情况下,cappb可以遵循交换机202规则中的设置规则(即流表项),直到通用规则的整个cappa空间被cappb在交换机202中设置的新特定规则所覆盖。因此,cappa的操作将被踢出交换机202。这是一个严重的问题,因为从控制的角度来看,cappa“相信”数据面中的一切都在正常运行。然而,cappa的数据面规则将被忽略,cappa规则应处理的流量实际上将由cappb的规则处理。如果cappa和cappb属于同一切片,则至少与同一切片相关的流量会发生此类规则遮蔽问题。然后,当这些capp属于不同切片时,可能会导致严重的问题,即缺少切片隔离、流量的错误处理以及切片资源的错误使用。在图11的实施例中,根节点是父匹配规则的子集匹配规则(更具体的匹配规则)。在一实施例中,为父节点定义的权限自动应用于根节点(类似于linux目录结构树)。父匹配*.*由根控制器所拥有,而根控制器由系统管理员所拥有。只有根控制器可以将初始权限集分配给第一层的各种其它控制器和/或应用程序。然后,可以由被授予权限的匹配超集内第一层的所有者添加进一步的匹配规则。根据一实施例,它检查传入流规则的匹配字段是否是任何现有流表项的子集,例如,使用ofpff_check_overlap标志。如果ofpff_check_overlap=1,它将检查传入流规则的所有者是否已获得授权。如果所有者已获得授权,则可以添加流规则。否则,将报告错误。如果ofpff_check_overlap=0,则可以添加流规则。然而,与linux目录结构不同的是,在这种情况下,一个节点可以有两个父节点。也就是说,需要成功提供来自两个父节点的权限。图12示出了数据包转发单元202的操作方法1200的示意图,所述数据包转发单元用于在软件定义网络中转发数据包。所述方法1200包括以下步骤:访问数据包转发单元202的存储器202b中的一组访问规则(1202);基于该组访问规则,控制对数据包转发单元202的存储器202b中的一组数据包转发规则的访问(1204)。尽管本发明的特定特征或方面可能已经仅结合几种实施方式或实施例中的一种进行公开,但此类特征或方面可以和其它实施方式或实施例中的一个或多个特征或方面相结合,只要对任何给定或特定的应用有需要或有利即可。而且,在一定程度上,术语“包括”、“有”、“具有”或这些词的其它变形在详细的说明书或权利要求书中使用,这类术语和所述术语“包括”是类似的,都是表示包括的含义。同样,术语“示例性地”、“例如”和“如”仅表示为示例,而不是最好或最佳的。可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可以用于指示两个元件彼此协作或交互,而不管它们是直接物理接触还是电接触,或者它们彼此不直接接触。尽管本文中已说明和描述特定方面,但本领域普通技术人员应了解,多种替代和/或等效实现形式可在不脱离本发明的范围的情况下替代所示和描述的特定方面。本申请旨在覆盖本文论述的特定方面的任何修改或变更。尽管以上权利要求书中的元件是利用对应的标签按照特定顺序列举的,但是除非对权利要求的阐述另有暗示用于实施部分或所有这些元件的特定顺序,否则这些元件不必限于以所述特定顺序来实施。通过以上启示,对于本领域技术人员来说,许多替代、修改和变化是显而易见的。当然,本领域技术人员容易认识到除本文所述的应用之外,还存在本发明的众多其它应用。虽然已参考一个或多个特定实施例描述了本发明,但本领域技术人员将认识到在不偏离本发明的范围的前提下,仍可对本发明作出许多改变。因此,应理解,只要是在所附权利要求书及其等效物的范围内,可以用不同于本文具体描述的方式来实施本发明。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1