CN116982307A - 用于在群聚基础设施中强制实施功能过滤规则的方法和计算设备 - Google Patents
用于在群聚基础设施中强制实施功能过滤规则的方法和计算设备 Download PDFInfo
- Publication number
- CN116982307A CN116982307A CN202280019495.5A CN202280019495A CN116982307A CN 116982307 A CN116982307 A CN 116982307A CN 202280019495 A CN202280019495 A CN 202280019495A CN 116982307 A CN116982307 A CN 116982307A
- Authority
- CN
- China
- Prior art keywords
- destination
- cluster
- address
- source
- computing device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 112
- 238000001914 filtration Methods 0.000 title claims description 109
- 238000013507 mapping Methods 0.000 claims abstract description 48
- 238000004891 communication Methods 0.000 claims description 101
- 238000012545 processing Methods 0.000 claims description 97
- 230000009471 action Effects 0.000 claims description 15
- 230000000875 corresponding effect Effects 0.000 description 48
- 102100033121 Transcription factor 21 Human genes 0.000 description 38
- 101710119687 Transcription factor 21 Proteins 0.000 description 38
- 101100491335 Caenorhabditis elegans mat-2 gene Proteins 0.000 description 31
- 230000006870 function Effects 0.000 description 19
- 238000004590 computer program Methods 0.000 description 9
- 101100495256 Caenorhabditis elegans mat-3 gene Proteins 0.000 description 8
- 230000006855 networking Effects 0.000 description 7
- 230000000903 blocking effect Effects 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本方法和计算机设备将多个功能过滤规则存储在存储器中,每个功能过滤规则基于命名空间和群聚类型中的至少一个。提供群聚和互联网协议(IP)地址之间的映射的数据结构被存储在存储器中。当接收或传输IP数据包时,从该IP数据包中提取源IP地址和目的地IP地址。使用数据结构确定与源IP地址对应的源群聚和与目的地IP地址对应的目的地群聚。每个群聚属于多个命名空间之一和多个群聚类型之一。该方法和计算机还识别并应用多个功能过滤规则当中与源群聚和目的地群聚各自的命名空间和群聚类型匹配的功能过滤规则。
Description
技术领域
本公开涉及大规模多设备应用部署中的数据包过滤策略。更具体而言,本公开涉及用于在群聚(pod)基础设施中实施功能过滤规则的方法和计算设备。
背景技术
Kubernetes是大规模多设备应用部署框架的示例。在Kubernetes中,应用部署包括部署群聚。Kubernetes中的计算设备被称为节点。群聚由一个或多个容器组成,这些容器共置于同一节点上并共享资源。每个容器执行软件,并且群聚的(一个或多个)容器执行的(一个或多个)软件的组合实现应用。一个或多个相同类型的群聚可以在同一节点上并发执行,也可以在不同节点上执行。
在Kubernetes中,节点上的每个群聚都分配有至少一个互联网协议(IP)地址,用于与节点外部的其它实体(包括在其它节点上执行的群聚)通信。为了强制实施安全性,实现数据包过滤规则来控制进出节点的流量。数据包过滤规则确定节点接收到的数据包是被允许还是被阻止。数据包过滤规则还确定节点生成的数据包是否被传输到另一个实体或被阻止。传统的数据包过滤规则直接基于IP数据包的特性,诸如IP数据包的源IP地址和目的地IP地址等。
Kubernetes框架还提供定义功能过滤规则的能力,代表群聚部署的功能体系架构。功能过滤规则直接基于群聚的特性,诸如群聚的命名空间和群聚的群聚类型。因此,使用功能过滤规则,容易针对一组共享公共属性(例如,给定的命名空间和一个或多个相关联的群聚类型)的群聚。相比之下,直接基于分配给该组群聚的IP地址来使用传统IP数据包过滤规则针对共享公共属性的该组群聚扩展性不佳。这是因为IP地址中没有表示公共属性这一事实。因此,需要针对分配给该组群聚的IP地址生成复杂的传统数据包过滤规则。当创建或删除与公共属性匹配的群聚时,需要定期更新传统的数据包过滤规则集,以考虑与创建或删除的群聚相关联的IP地址。
但是,在当前的Kubernetes实现中,不可能对经由执行多个群聚的节点的通信接口接收或传输的IP数据包直接强制实施功能过滤规则。功能过滤规则被转换成传统的IP数据包过滤规则,这些规则对经由通信接口接收或传输的IP数据包强制实施。如前所述,传统的IP数据包过滤规则的使用对于群聚基础设施来说扩展性不佳。
因此,需要一种用于在群聚基础设施中强制实施功能过滤规则的方法和计算设备。
发明内容
根据第一方面,本公开涉及一种用于在群聚基础设施中强制实施功能过滤规则的方法。该方法包括在计算设备的存储器中存储多个功能过滤规则,每个功能过滤规则基于命名空间和群聚类型中的至少一个,命名空间是多个命名空间之一并且群聚类型是多个群聚类型之一。该方法包括在计算设备的存储器中存储提供群聚与互联网协议(IP)地址之间的映射的数据结构。该方法包括确定IP数据包已经经由计算设备的通信接口接收或者将经由计算设备的通信接口传输。该方法包括由计算设备的处理单元提取IP数据包的源IP地址和目的地IP地址。该方法包括由计算设备的处理单元使用映射数据结构来确定与源IP地址对应的源群聚,源群聚属于多个命名空间当中的源命名空间以及多个群聚类型当中的源群聚类型。该方法包括由计算设备的处理单元使用映射数据结构来确定与目的地IP地址对应的目的地群聚,目的地群聚属于多个命名空间当中的目的地命名空间以及多个群聚类型当中的目的地群聚类型。该方法包括由计算设备的处理单元在多个功能过滤规则当中识别与源命名空间、源群聚类型、目的地命名空间和目的地群聚类型匹配的功能过滤规则。该方法包括由计算设备的处理单元将匹配的功能过滤规则应用于IP数据包。
根据第二方面,本公开涉及一种计算设备。该计算设备包括存储器、通信接口和包括至少一个处理器的处理单元。存储器存储多个功能过滤规则,每个功能过滤规则基于命名空间和群聚类型中的至少一个,命名空间是多个命名空间之一并且群聚类型是多个群聚类型之一。存储器存储提供群聚和互联网协议(IP)地址之间的映射的数据结构。处理单元确定已经经由计算设备的通信接口接收到IP数据包或者将经由计算设备的通信接口传输IP数据包。处理单元提取IP数据包的源IP地址和目的地IP地址。处理单元使用映射数据结构确定与源IP地址对应的源群聚,源群聚属于多个命名空间当中的源命名空间以及多个群聚类型当中的源群聚类型。处理单元使用映射数据结构来确定与目的地IP地址对应的目的地群聚,目的地群聚属于多个命名空间当中的目的地命名空间以及多个群聚类型当中的目的地群聚类型。处理单元识别多个功能过滤规则当中与源命名空间、源群聚类型、目的地命名空间和目的地群聚类型匹配的功能过滤规则。处理单元将匹配的功能过滤规则应用于IP数据包。
根据第三方面,本公开涉及一种用于在支持互联网协议(IP)地址域的群聚基础设施中强制实施功能过滤规则的方法。该方法包括在计算设备的存储器中存储多个功能过滤规则,每个功能过滤规则基于命名空间和群聚类型中的至少一个,命名空间是多个命名空间之一并且群聚类型是多个群聚类型之一。该方法包括在计算设备的存储器中存储提供群聚与互联网协议(IP)地址和IP地址域的组合之间的映射的数据结构,IP地址域是多个IP地址域之一。该方法包括确定IP数据包已经经由计算设备的通信接口接收或者将经由计算设备的通信接口传输。该方法包括由计算设备的处理单元确定多个IP地址域当中与通信接口相关联的IP地址域。该方法包括由计算设备的处理单元提取IP数据包的源IP地址和目的地IP地址。该方法包括由计算设备的处理单元使用映射数据结构来确定与源IP地址和所确定的IP地址域的组合对应的源群聚,源群聚属于多个命名空间当中的源命名空间以及多个群聚类型当中的源群聚类型。该方法包括由计算设备的处理单元使用映射数据结构来确定与目的地IP地址和所确定的IP地址域的组合对应的目的地群聚,该目的地群聚属于多个命名空间当中的目的地命名空间以及多个群聚类型当中的目的地群聚类型。该方法包括由计算设备的处理单元在多个功能过滤规则当中识别与源命名空间、源群聚类型、目的地命名空间和目的地群聚类型匹配的功能过滤规则。该方法包括由计算设备的处理单元将匹配的功能过滤规则应用于IP数据包。
根据第四方面,本公开涉及一种计算设备。该计算设备包括存储器、通信接口和包括至少一个处理器的处理单元。存储器存储多个功能过滤规则,每个功能过滤规则基于命名空间和群聚类型中的至少一个,命名空间是多个命名空间之一并且群聚类型是多个群聚类型之一。存储器还存储提供群聚与互联网协议(IP)地址和IP地址域的组合之间的映射的数据结构,IP地址域是多个IP地址域之一。处理单元确定IP数据包已经经由通信接口接收或者将经由通信接口传输。处理单元确定多个IP地址域当中与通信接口相关联的IP地址域。处理单元提取IP数据包的源IP地址和目的地IP地址。处理单元使用映射数据结构来确定与源IP地址和所确定的IP地址域的组合对应的源群聚,源群聚属于多个命名空间当中的源命名空间以及多个群聚类型当中的源群聚类型。处理单元使用映射数据结构来确定与目的地IP地址和所确定的IP地址域的组合对应的目的地群聚,目的地群聚属于多个命名空间当中的目的地命名空间以及多个群聚类型当中的目的地群聚类型。处理单元识别多个功能过滤规则当中与源命名空间、源群聚类型、目的地命名空间和目的地群聚类型相匹配的功能过滤规则。处理单元将匹配的功能过滤规则应用于IP数据包。
附图说明
本公开的实施例将仅通过示例的方式参考附图进行描述,其中:
图1表示计算设备;
图2表示群聚在几个计算设备上的部署;
图3表示用于在图2中所示的计算设备之一上创建群聚的方法;
图4表示图2的执行过滤软件的计算设备之一;
图5表示由图4的计算设备实现的用于在群聚基础设施中强制实施功能过滤规则的方法;
图6表示图4的具有两个通信接口的计算设备;以及
图7表示由图6的计算设备实现的用于在支持互联网协议(IP)地址域的群聚基础设施中强制实施功能过滤规则的方法。
具体实施方式
通过阅读仅作为示例参考附图给出的说明性实施例的以下非限制性描述,前述和其它特征将变得更加明显。
本公开的各个方面总体上解决了与在群聚部署框架(例如,Kubernetes)的上下文中直接应用于互联网协议(IP)数据包的群聚功能过滤规则的使用相关的一个或多个问题。本发明支持具有单个IP地址域的群聚部署框架和具有多个IP地址域的群聚部署框架。
在接下来的描述中,Kubernetes框架将用于描述群聚基础设施的部署以及应用于IP数据包的群聚功能过滤规则的使用。在Kubernetes中,群聚是容器化的软件应用,实现在同一计算设备上执行的一个或多个软件容器。本公开可以扩展到支持群聚作为容器化软件应用的概念并进一步支持用于功能过滤规则的使用的Kubernetes的其它功能(如下所述)的另一个应用部署框架。
现在参考图1,图示了计算设备100。在接下来的描述中,计算设备100将被称为节点,这是Kubernetes框架中通常使用的术语,用于指定执行一个或多个群聚的计算设备。节点100的示例包括(但不限于)交换机、路由器、服务器、台式机、移动计算设备(例如,智能电话或平板电脑)等。
节点100包括处理单元110、存储器120和至少一个通信接口130。节点100可以包括附加组件(为了简化目的在图1中未表示)。例如,节点100可以包括用户界面和/或显示器。
处理单元110包括能够执行计算机程序的指令的一个或多个处理器(为了说明目的,图1中表示了单个处理器)。每个处理器还可以包括一个或几个内核。处理单元110还可以包括一个或多个专用处理组件(例如,网络处理器、专用集成电路(ASIC)等),用于执行专门的联网功能(例如,数据包转发)。
存储器120存储由处理单元110执行的(一个或多个)计算机程序的指令、由处理单元110执行(一个或多个)计算机程序所生成的数据、经由(一个或多个)通信接口130接收到的数据等。图1中仅表示了单个存储器120,但是节点100可以包括几种类型的存储器,包括易失性存储器(诸如随机存取存储器(RAM))和非易失性存储器(诸如硬盘驱动器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等)。
每个通信接口130允许节点100与其它设备交换数据(为了说明目的,图1中表示了两个通信接口)。有线类型的通信接口130的示例包括标准(电气)以太网端口、光纤端口、适于接收小形状因子可插拔(SFP)单元的端口等。通信接口130也可以是无线类型的(例如,Wi-Fi接口)。通信接口130包括硬件和由硬件执行的软件的组合,用于实现通信接口130的通信功能。可替代地,用于实现通信接口130的通信功能的硬件和软件的组合被至少部分地包括在处理单元110中。
现在同时参考图1和图2。图2图示了具有在主节点200的控制下执行群聚的三个节点100(分别为节点1、节点2和节点3)的架构。在接下来的描述中,与主节点对照,(在主节点200的控制下)执行群聚的节点100将被简称为节点。
主节点200的硬件架构类似于图1中所示的节点100的硬件架构。主节点200包括执行用于管理(配置、创建、执行、删除等)节点100上的群聚的主软件的处理单元210。主节点200对群聚的管理基于主节点200和节点100之间的数据交换,这不在本要求保护的发明的范围内。虽然为了简化目的未在图2中表示,但是每个节点100执行客户端软件,该客户端软件与主软件交互以实现节点100上的群聚的管理。
为了说明目的,节点1执行4个群聚(分别为POD 1、POD 2、POD 3和POD 4),节点2执行3个群聚(分别为POD 1、POD 2和POD 3),并且节点3执行3个群聚(分别为POD 1,POD 2和POD3)。此外,虽然图2中表示了3个节点100,但是任何数量的节点100都可以在主节点200的控制下操作。
Kubernetes框架提供了命名空间的功能,其通常用在包括大量用户的环境中。命名空间为Kubernetes框架中使用的资源(例如,群聚、服务等)名称提供范围。资源的名称在给定命名空间内是唯一的,但跨命名空间不是唯一的。
命名空间可以用于定义资源配额限制,这些限制在主节点200的控制下强制实施。例如,第一命名空间(对应于第一组用户)在主节点200的控制下具有由所有节点100提供的30%的处理能力和30%的存储器的限制,而第二命名空间(对应于第二组用户)在主节点200的控制下具有由所有节点100提供的40%的处理能力和50%的存储器的限制。在另一个示例中,第一命名空间在主节点200的控制下被分配所有节点100的25%,而第二命名空间在主节点200的控制下被分配所有节点100的50%。命名空间也可以用于例如通过减少属于给定命名空间的一组用户的特权来强制实施安全策略。
Kubernetes框架还提供了群聚模板的功能。群聚模板是用于根据群聚模板创建群聚的规范。每个群聚模板都是文本文件,它定义从群聚模板创建的群聚的行为方式。特别地,群聚模板定义了由群聚实现的软件容器的数量,以及对于每个容器,由容器执行的(一个或多个)特定软件程序。每个群聚模板都包含识别群聚模板的名称。在接下来的描述中,群聚模板的名称将被称为群聚类型。因此,给定的群聚类型识别对应的给定群聚模板。对应于给定群聚类型的群聚实例将被称为给定群聚类型的群聚。相同群聚类型的几个群聚可以在不同节点100上并发执行。此外,可以在同一节点100上并发执行同一群聚类型的几个群聚。
命名空间和群聚类型的概念是相互关联的。群聚模板和相关联的群聚类型是在给定命名空间的上下文中生成的。由于命名空间和群聚类型由名称组成,因此它们分别由字符串实现,该字符串可能有或没有预定义的长度。例如,命名空间是具有最多N个(例如,30个)字符的字符串,并且群聚类型是具有最多T个(例如,20个)字符的字符串。命名空间字符串和群聚类型字符串可以被转换成(比字符串)更有效的格式用于内部存储和内部处理。字符串格式供用户使用,并允许由用户(例如,由管理员使用主节点200的用户界面)对命名空间和群聚类型进行创建、修改、删除等。
以下是与图2中表示的群聚对应的示例性命名空间和群聚类型。生成名称为NSpace_A的第一命名空间。在命名空间NSpace_A内,生成两个名称分别为app_a01和app_a02的群聚类型。群聚类型app_a01识别群聚模板t_a01,并且群聚类型app_a02识别群聚模板t_a02。节点1上的POD 1属于命名空间NSpace_A并且对应于群聚类型app_a01(节点1上的POD 1实现群聚模板t_a01)。节点1上的POD 2属于命名空间NSpace_A并且也对应于群聚类型app_a01(节点1上的POD 2实现群聚模板t_a01)。POD 1和POD 2图示了在同一节点上并发执行的同一命名空间/群聚类型的两个实例。节点1上的POD 4属于命名空间NSpace_A并且对应于群聚类型app_a02(节点1上的POD 4实现群聚模板t_a02)。节点2上的POD 1属于命名空间NSpace_A并且对应于群聚类型app_a01(节点2上的POD 1实现群聚模板t_a01)。节点3上的POD 1属于命名空间NSpace_A并且对应于群聚类型app_a02(节点3上的POD 1实现群聚模板t_a02)。
生成名称为NSpace_B的第二命名空间。在这个命名空间NSpace_B内,生成两个名称分别为app_b01和app_b02的群聚类型。群聚类型app_b01识别群聚模板t_b01,并且群聚类型app_b02识别群聚模板t_b02。节点1上的POD 3属于命名空间NSpace_B并且对应于群聚类型app_b01(节点1上的POD 3实现群聚模板t_b01)。节点2上的POD 2属于命名空间NSpace_B并且对应于群聚类型app_b02(节点2上的POD 2实现群聚模板t_b02)。节点2上的POD 3属于命名空间NSpace_B并且对应于群聚类型app_b01(节点2上的POD 3实现群聚模板t_b01)。节点3上的POD 2属于命名空间NSpace_B并且对应于群聚类型app_b02(节点3上的POD 2实现群聚模板t_b02)。
生成名称为NSpace_C的第三命名空间。在这个命名空间NSpace_C内,生成一个名称为app_c01的群聚类型。群聚类型app_c01识别群聚模板t_c01。节点3上的POD 3属于命名空间NSpace_C并且对应于群聚类型app_c01(节点3上的POD 3实现群聚模板t_c01)。
在第一实施方式中,群聚类型在所有定义的命名空间中是唯一的。在第二实施方式中,群聚类型在给定的命名空间内是唯一的(相同的群聚类型可以在两个不同的命名空间中使用)。在这两种实施方式中,群聚类型和其中定义了它的命名空间的组合都是唯一的。
前面示例中的命名空间数量和每个命名空间的群聚类型数量仅用于说明目的,并且可能随群聚基础设施的每个特定实施方式而变化。下表总结了前面的示例。
群聚 | 命名空间 | 群聚类型 |
节点1/POD 1 | NSpace_A | app_a01 |
节点1/POD 2 | NSpace_A | app_a01 |
节点1/POD 3 | NSpace_B | app_b01 |
节点1/POD 4 | NSpace_A | app_a02 |
节点2/POD 1 | NSpace_A | app_a01 |
节点2/POD 2 | NSpace_B | app_b02 |
节点2/POD 3 | NSpace_B | app_b01 |
节点3/POD 1 | NSpace_A | app_a02 |
节点3/POD 2 | NSpace_B | app_b02 |
节点3/POD 3 | NSpace_C | app_c01 |
表1
表1中表示的命名空间和群聚类型可以以各种数据格式(例如最终用户在管理命名空间和群聚类型时容易操纵的字符串)编码。但是,命名空间和群聚类型也可能由Kubernetes框架以(比字符串)更有效的格式编码以供内部使用。在接下来的描述中,对命名空间和群聚类型的引用可以涵盖Kubernetes用于管理命名空间和群聚类型的任何格式。
Kubernetes框架还提供了为每个群聚分配至少一个互联网协议(IP)地址的功能。因此,群聚可以仅具有IPv4地址、仅具有IPv6地址,或者具有IPv4和IPv6地址。在同一节点100上执行的两个群聚通常使用它们各自的IP地址直接交换数据。在两个不同节点100上执行的两个群聚使用它们各自的IP地址并通过两个不同节点的各自通信接口130交换数据。
以下段落描述了用于生成分配给群聚的IPv6地址的示例性实施方式。在Kubernetes术语中,集群(cluster)是一组节点100和(一个或多个)主节点200。集群被分配有IPv6前缀;例如2001:db80:aabb/48。集群中的每个节点100被分配从集群的IPv6前缀导出的IPv6前缀;例如,用于节点1的2001:db80:aabb:1001/64,用于节点2的2001:db80:aabb:1002/64,和用于节点3的2001:db80:aabb:1003/64。在接下来的描述中,被分配给每个节点100的IPv6前缀将被称为IPv6基本前缀。
给定节点100上的每个群聚还被分配有预定义位数(例如,14或16位)的群聚标识符。在给定节点100内,群聚标识符是唯一的。但是,同一群聚标识符可以在不同的节点100上使用。例如,群聚标识符0x0001、0x0002、0x0003和0x0004分别被分配给节点1上的群聚POD 1、POD 2、POD 3和POD 4。群聚标识符0x0001、0x0002和0x0003分别被分配给节点2上的群聚POD 1、POD 2和POD 3。群聚标识符0x0001、0x0002和0x0003分别被分配给节点3上的群聚POD 1、POD 2和POD 3。
Kubernetes框架为集群的每个对象(包括群聚)分配128位的通用唯一标识符(UUID)。因此,在示例性实施方式中,通过计算分配给群聚的UUID的散列来生成群聚的群聚标识符。散列函数的输入是128位的UUID,并且散列函数的输出是14(或16)位的群聚标识符。散列函数的设计使得两个不同的UUID值在应用散列函数时不会生成相同的输出。
为群聚生成IPv6地址的通常方法是将群聚在其上执行的节点100的基于IPv6的前缀与分配给群聚的唯一标识符组合。下表基于表1说明了为群聚生成IPv6地址的通常方法。
表2
如表2所示,分配给群聚的IPv6地址没有考虑群聚的命名空间和群聚类型。
在接下来的描述中,IPv6地址将用于图示本公开提供的功能。但是,本领域技术人员将容易地使这些功能适应IPv4地址。例如,通过组合IPv4前缀和群聚标识符(如果群聚标识符编码在太多位上,那么为群聚标识符的散列),为群聚生成IPv4地址。
现在同时参考图1、图2和图3,图3中图示了用于创建群聚的方法300。方法300的至少一些步骤由图2中表示的每个节点100执行。
方法300包括存储至少一个命名空间以及每个命名空间的至少一个相关联的群聚类型的步骤305。步骤305由节点100的处理单元110执行。
例如,每个命名空间由集群的管理员在主节点200处定义。对于每个命名空间,相关联的一个或多个群聚类型也由集群的管理员(或简单用户)在主节点200处定义。一个或多个命名空间和每个对应的一个或多个群聚类型从主节点200传输到每个节点100、经由通信接口130在每个节点100处被接收到,并存储在存储器120中。前面已经描述了存储在各节点——节点1、节点2和节点3的存储器120中的命名空间和对应群聚类型的示例性集合。
方法300包括从存储在存储器120中的至少一个命名空间中选择命名空间的步骤310。步骤310由节点100的处理单元110执行。
方法300包括从与在步骤310处选择的命名空间相关联的至少一个群聚类型(存储在存储器120中)中选择群聚类型的步骤315。步骤315由节点100的处理单元110执行。例如,如果在步骤310处选择命名空间“NSpace_A”,那么在步骤315处选择群聚类型“app_a01”、“app_a02”或“app_a03”之一。
方法300包括创建与在步骤310处选择的命名空间和在步骤315处选择的群聚类型对应的群聚的步骤320。步骤320由节点100的处理单元110执行。例如在Kubernetes框架的上下文中群聚的创建在本领域中是众所周知的并且不在本公开的范围内。群聚的创建可以例如包括硬件和/或软件资源的分配、从永久存储存储器(例如,节点100的硬盘驱动器)传输软件指令(与在步骤315处选择的群聚类型相关联)到临时执行存储器(例如,节点100的随机存取存储器(RAM))等。群聚的创建是基于与所选择的命名空间和群聚类型对应的群聚模板。例如,如果在步骤310处选择命名空间“NSpace_A””并且在步骤315处选择群聚类型“app_a02”,那么在步骤320处创建的群聚符合模板t_a02。
方法300包括为在步骤320处创建的群聚生成群聚标识符的步骤325。步骤325由节点100的处理单元110执行。群聚标识符具有预定义的位数,并且唯一地在节点100级别识别在步骤320处创建的群聚(在同一节点100上创建的任何两个群聚具有各自不同的群聚标识符)。前面已经描述了确定群聚标识符的示例性实现。步骤325可以集成到步骤320中,或者可以独立于步骤320执行(例如,通过Kubernetes框架或独立于Kubernetes框架的专用机制)。
方法300包括为(在步骤320创建的)群聚生成IP地址的步骤330。步骤330由节点100的处理单元110执行。IP地址由IPv6地址或IPv4地址组成。
方法300包括执行在步骤320处创建的群聚的步骤335。步骤335由节点100的处理单元110执行。群聚的执行是本领域众所周知的,例如在Kubernetes框架的上下文中。群聚的执行包括执行容器化软件应用。群聚包括一个或多个容器,每个容器执行(一个或多个)计算机程序。由(一个或多个)容器执行的(一个或多个)计算机程序的组合实现群聚支持的软件应用。容器的概念在本领域中也是众所周知的。
虽然出于简化目的未在图3中表示,但是在步骤330处生成IP地址之后通常是所生成的IP地址的通告(由处理单元110经由(一个或多个)通信接口330执行)。例如,所生成的IP地址的通告由节点1向(一个或多个)其它节点100(例如,节点2和3)进行,以使用在步骤330处生成的IP地址,允许在步骤320处在节点1上创建的群聚与在(一个或多个)其它节点100上执行的其它群聚(例如,节点2和3上的群聚)之间的通信。
以下是在步骤335处执行群聚期间执行的通信的示例。出于说明目的,群聚是在节点1上执行的POD 1。在第一示例中,节点1上执行POD 1生成具有以步骤330处生成的IP地址作为源IP地址的IP数据包,并且处理单元110经由通信接口130将该IP数据包传输到节点2(更具体而言,传输到在节点2上执行的POD 2)。在第二示例中,处理单元110经由通信接口130(例如,从节点3并且更具体而言从在节点3上执行的POD 3)接收具有在步骤330处生成的IP地址作为目的地地址的IP数据包,并且IP数据包在节点1上的POD 1执行期间被处理。节点1上的POD 1也可以使用在步骤330处生成的IP地址来与群聚以外的其它实体进行通信。例如,节点1上的POD 1经由在步骤330处生成的IP地址与托管web服务器的计算设备进行通信。节点1上的POD 1执行web客户端,用于经由在步骤330处生成的IP地址与web服务器交互。
如图3中所示,方法300执行的步骤顺序仅用于说明目的。在不脱离当前要求保护的发明的范围的情况下,可以改变方法300的一些步骤的顺序。
步骤310和/或315处的选择可以由处理单元110基于节点100的用户经由节点100的用户界面的交互来执行。可替代地,步骤310和/或315处的选择由处理单元110基于经由通信接口130从主节点200接收到的命令执行(该命令基于主节点200的用户经由主节点200的用户界面的交互)。
类似地,处理单元110可以基于节点100的用户经由节点100的用户界面的交互来执行步骤320处的群聚的创建。可替代地,步骤320处的群聚的创建是由处理单元110基于经由通信接口130从主节点200接收到的命令执行的(该命令基于主节点200的用户经由主节点200的用户界面的交互)。
通过对每个IP地址重复步骤330(在执行步骤335之前或之后),可以为相同的群聚生成不同的IP地址。例如,第一次执行步骤330以生成IPv6地址,并重复执行步骤330以生成IPv4地址。然后,执行步骤335。
在图5中所示的方法400支持的第一实施方式中,假设在步骤330处生成的IP地址是唯一的并且将不会被分配给另一个群聚(位于相同节点或另一个节点上)。因此,用作由给定群聚传输到另一个群聚的数据包的源地址或用作由给定群聚从另一个群聚接收的数据包的目的地地址的任何给定IP地址都是唯一的。给定的IP地址唯一地与给定群聚正在其上执行的给定群聚/节点相关联。
数据结构可以由每个节点100生成,用于存储IP地址和群聚之间的映射。给定节点存储在给定节点上执行的群聚的映射,并与其它节点共享此信息。给定节点从其它群聚接收信息,从而允许给定节点也存储在其它节点上执行的群聚的映射。
用于在节点100之间共享映射信息的机制不在本公开的范围内。对等协议可以用于在节点100之间直接交换映射信息。可替代地,集中式协议可以用于在主节点200的控制下执行映射信息的交换。
下面基于表1和表2的表图示了提供IP地址和群聚之间的映射的示例性数据结构。该数据结构存储在每个节点100(例如,图2的节点1、节点2和节点3)处,并且可选地也存储在主节点200处。
在下表3中:
表3
使用表3,如果IP数据包使用IPv6地址2001:db80:aabb:1001:000A:0000:0A01:0002,那么确定该IPv6地址属于节点1上的POD 2。在另一个示例中,如果IP数据包使用IPv6地址2001:db80:aabb:1003:000A:0000:0A02:0001,那么确定该IPv6地址属于节点3上的POD 1。
与给定群聚相关的命名空间和群聚类型信息直接存储在映射数据结构中,如表3中所示。可替代地,与给定群聚相关的命名空间和群聚类型信息不存储在映射数据结构中,但是一旦给定群聚被识别出,该信息就可以容易地被检索。例如,给定群聚通过它的群聚标识符和它在其上执行的节点100的标识符(例如,节点100的MAC地址)来识别。
虽然出于简化目的未在表3中表示,但是几个IP地址可以被映射到在给定节点100上执行的给定群聚(例如,至少一些群聚的IPv6和IPv4地址)。
IP(IPv4或IPv6)数据包的数据包过滤在本领域中是众所周知的。将IP数据包的特性与过滤规则的一个或多个条件进行比较,并且如果满足给定过滤规则的一个或多个条件,那么执行对应的一个或多个动作。被比较的IP数据包的特性包括源IP地址、目的地IP地址、目的地端口(例如,HTTP),有时还有源端口、传输协议(例如,TCP、UDP)等。过滤规则的(一个或多个)条件取决于所考虑的特性。例如,源IP地址是否匹配给定的IP前缀(例如,IPv6中的2001:db80:aabb::/48)、目的地IP地址是否不匹配给定的IP前缀(例如,IPv6中的2001:db80:aabb:1001::/64)、目的地端口或源端口是否匹配给定的端口值或给定的端口值范围、传输协议是TCP还是UDP等。动作的示例包括允许或阻止匹配过滤规则的(一个或多个)条件的IP数据包、修改匹配过滤规则的(一个或多个)条件的IP数据包的字段等。过滤被应用于经由通信接口130接收的IP数据包(入口过滤)和/或由处理单元110生成要经由通信接口130传送的IP数据包。
在支持如容器化软件应用的群聚的概念的应用部署框架(例如,Kubernetes)的上下文中,定义适用于数据包的源IP地址和目的地IP地址的过滤规则可能是不可扩展的。这是因为这样的应用部署框架在群聚创建和删除方面非常动态,导致基于IP的过滤规则发生大量更新这一事实。
Kubernetes提供定义适用于命名空间和群聚类型的功能过滤规则的功能。但是,这些功能过滤规则被转换成适用于源IP地址和目的地IP地址的对应联网过滤规则。联网过滤规则基于对应的功能过滤规则以及群聚的创建和删除(其如前所述可能不可扩展)进行实时调整。
因此,在当前的Kubernetes框架中,当节点100的通信接口130接收或传输IP数据包时,联网过滤规则被应用于IP数据包。Kubernetes不支持直接对IP数据包应用功能过滤规则(基于命名空间和群聚类型)。
下面首先描述功能过滤规则。然后描述允许将功能过滤规则应用于经由通信接口接收到的IP数据包的方法400(在图5中表示)。
功能过滤规则基于命名空间或群聚类型中的至少一个。例如,针对一个或多个命名空间定义功能过滤规则。在另一个示例中,针对命名空间和每个名称的一个或多个群聚类型的一个或多个组合定义功能过滤规则。在又一个示例中,针对一个或多个群聚类型定义功能过滤规则。在该最后一个示例中,未提及命名空间,因为它隐含在功能过滤规则的上下文中。
如表1中所示,在群聚基础设施的标准部署中,使用多个命名空间和每个命名空间的多个群聚类型。在功能过滤规则中使用的给定命名空间是在多个命名空间当中选择的。对于给定命名空间,在与给定命名空间对应的多个群聚类型当中选择在功能过滤规则中使用的给定群聚类型。
由节点100强制实施的功能过滤规则由用户经由节点100的用户界面创建或者经由节点100的通信接口130从主节点200接收(在后一种情况下,规则是经由主节点200的用户界面创建的)。每个功能过滤规则包括一个或多个条件以及一个或多个对应的动作。
下面是应用于由节点1(例如,从节点2或节点3)接收的IP流量的入口功能过滤规则和应用于在节点1处生成的用于传输(例如,到节点2或节点3)的IP流量的出口功能过滤规则的示例性集合。
入口规则1:允许任何流量到达(NSpace_A且app_a01)
入口规则2:阻止到(NSpace_A且app_a02)的任何流量
入口规则3:允许从(NSpace_A或NSpace_C”)到NSpace_B”的任何流量
入口规则(4):允许从(NSpace_B且app_b02)到NSpace_B的任何流量
入口规则(5):阻止从(NSpace_B且app_b01)到NSpace_B的任何流量
出口规则(6):阻止来自NSpace_A的任何流量
出口规则(7):允许从NSpace_B到(NSpace_C且app_c01)的任何流量
默认规则:阻止任何其它流量
这些规则仅用于说明目的。本领域技术人员将容易理解,基于命名空间和群聚类型的其它类型的规则也适用于本公开的上下文。例如,如前所述,规则可以包括附加类型的条件,诸如目的地端口/端口范围、传输协议等。此外,规则中使用的术语可以变化(例如,承认而不是允许、丢弃而不是阻止等)。另外,条件可以表达为参数(例如,群聚类型的命名空间)等于某个值、与某个值不同、等于值集合中的一个值、与值集合中的任何一个值不同,等等。本公开还支持其它类型的动作,诸如在允许数据包之前修改数据包的字段。
在特定实施方式中,入口规则包括基于数据包的源IP地址(以及可选的对应IP地址域)的一个或多个附加规则,并且出口过滤规则包括基于IP数据包的目的地IP地址(以及可选的对应IP地址域)的一个或多个附加规则。这些附加规则支持与群聚不同的源和目的地实体的IP无类别域间路由(CIDR)范围。
现在同时参考图2、4和5,图5图示了用于在群聚基础设施中强制实施功能过滤规则的方法400。方法400的至少一些步骤由图4中所示的节点100(节点1)执行。如前所述,群聚基础设施包括多个命名空间,并且对于每个命名空间包括多个群聚类型。
图4中表示的节点100(节点1)与图1中表示的节点100和图2中表示的节点1对应。为了实现IP数据包过滤功能,功能过滤规则122被存储在存储器120中并且处理单元110使用用于执行IP数据包过滤的功能过滤规则122来执行过滤软件111。
专用计算机程序具有用于实现方法400的至少一些步骤的指令。这些指令被包括在非暂态计算机程序产品(例如,节点100的存储器120)中。这些指令在由节点100的处理单元110执行时提供在群聚基础设施中强制实施功能过滤规则。指令可经由诸如存储介质(例如,CD-ROM、USB盘等)之类的电子可读介质,或经由通信链路(例如,经由通过节点100的通信接口130之一的通信网络)传送到节点100。如前所述,处理单元110包括至少一个处理器,每个处理器包括至少一个核心。
方法400包括将多个功能过滤规则122存储在节点100的存储器120中(例如,在包括过滤软件111使用的所有功能过滤规则122的配置文件中)的步骤405。每个功能过滤规则基于命名空间和群聚类型中的至少一个,其中命名空间是多个命名空间之一,并且群聚类型是群聚基础设施中定义的多个群聚类型之一。步骤405由节点100的处理单元110执行。
功能过滤规则已经在前面进行了描述,并且包括例如前面提到的规则(1)、(2)、(3)、(4)、(5)、(6)和(7)。
方法400包括将提供群聚和IP地址之间的映射的数据结构存储在存储器120中的步骤410。步骤410由节点100的处理单元110执行。
映射数据结构已经在前面进行了描述。表3提供了此类映射数据结构的示例。
方法400包括确定已经经由节点100的通信接口130接收到IP数据包或者将经由通信接口130传输IP数据包的步骤415。步骤415由节点100的处理单元110执行。
方法400包括提取IP数据包的源IP地址和目的地IP地址(在步骤415处提到)的步骤420。步骤420由节点100的处理单元110执行。
方法400包括使用映射数据结构(在步骤410处存储)来确定与源IP地址(在步骤420处提取)对应的源群聚的步骤425。源群聚属于多个命名空间当中的源命名空间以及多个群聚类型当中的源群聚类型。步骤425由节点100的处理单元110执行。
方法400包括使用映射数据结构(在步骤410处存储)来确定与目的地IP地址(在步骤420处提取)对应的目的地群聚的步骤430。目的地群聚属于多个命名空间当中的目的地命名空间以及多个群聚类型当中的目的地群聚类型。步骤430由节点100的处理单元110执行。
方法400包括在多个功能过滤规则(在步骤405处存储)当中识别与源命名空间、源群聚类型、目的地命名空间和目的地群聚类型匹配的功能过滤规则(在步骤425和430处确定)的步骤435。步骤435由节点100的处理单元110执行。
如本领域众所周知的,源命名空间、源群聚类型、目的地命名空间和目的地群聚类型中的每一个不需要全部存在于规则中以使规则匹配。例如,可以匹配仅引用源命名空间和目的地命名空间的第一规则,可以匹配仅引用源命名空间、目的地命名空间和目的地群聚类型的第二规则,等等(如前面描述的功能过滤规则集中所示)。
此外,如前所述,可以考虑IP数据包的附加特性来确定给定的功能过滤规则是否匹配,诸如目的地端口、传输协议等。
方法400包括将匹配的功能过滤规则(在步骤435处识别)应用到IP数据包(在步骤415处提到)的步骤440。步骤440由节点100的处理单元110执行。
下面是在图2、图4和表3中描述的群聚基础设施以及前面描述的功能过滤规则集的上下文中应用步骤415-440的示例。
在第一示例(1)中,经由节点1的通信接口130接收IP数据包,其具有源IPv6地址2001:db80:aabb:1002::0001/128和目的地IPv6地址2001:db80:aabb:1001::0001/128。与源IPv6地址对应的源群聚为节点2上的POD 1,属于命名空间NSpace_A和群聚类型app_a01。与目的地IPv6地址对应的目的地群聚为节点1上的POD 1,属于命名空间NSpace_A和群聚类型app_a01。入口规则(1)匹配并且IPv6数据包被允许(它被传输到节点1上的POD 1)。
在第二示例(2)中,经由节点1的通信接口130接收IP数据包,其具有源IPv6地址2001:db80:aabb:1002::0003/128和目的地IPv6地址2001:db80:aabb:1001::0003/128。与源IPv6地址对应的源群聚为节点2上的POD 3,属于命名空间NSpace_B和群聚类型app_b01。与目的地IPv6地址对应的目的地群聚为节点1上的POD 3,属于命名空间NSpace_B和群聚类型app_b01。入口规则(5)匹配并且IPv6数据包被阻止(它不被传输到节点1上的POD 3)。
在第三示例(3)中,IP数据包将经由节点1的通信接口130传输,其具有源IPv6地址2001:db80:aabb:1001::0001/128和目的地IPv6地址2001:db80:aabb:1003::0001/128。与源IPv6地址对应的源群聚为节点1上的POD 1,属于命名空间NSpace_A和群聚类型app_a01。与目的地IPv6地址对应的目的地群聚为节点3上的POD 1,属于命名空间NSpace_A和群聚类型app_a02。出口规则(6)匹配并且IPv6数据包被阻止(它不经由通信接口130传输)。
在第四示例(4)中,IP数据包将经由节点1的通信接口130传输,其具有源IPv6地址2001:db80:aabb:1001::0003/128和目的地IPv6地址2001:db80:aabb:1003::0003/128。与源IPv6地址对应的源群聚为节点1上的POD 3,属于命名空间NSpace_B和群聚类型app_b01。与目的地IPv6地址对应的目的地群聚为节点3上的POD 3,属于命名空间NSpace_C和群聚类型cpp_c01。出口规则(7)匹配并且IPv6数据包被阻止(它不经由通信接口130传输)。
在方法400的特定实施方式中,步骤415处提到的IP数据包是IP流的第一IP数据包。IP流在本领域中是众所周知的。它由从源到目的地的一系列IP数据包组成,通过IP联网基础设施经由零个、一个或多个中间路由(例如,路由器)或交换装备(例如,IP交换机)传送。IP流具有适于传输IP数据包的物理层,诸如以太网、同步光网络(SONET)/同步数字体系(SDH)等。IP流的IP数据包的传输涉及几个协议层,包括物理层(例如,光或电)、链路层(例如,以太网的介质访问控制(MAC))、互联网层(例如,IPv4或IPv6)、传输层(例如,用户数据报协议(UDP)或传输控制协议(TCP))、以及一个或多个应用层(例如,HTTP或HTTPS)。IP流通过IP联网基础设施提供应用有效负载的端到端传送。
与在步骤435处识别出的匹配功能过滤规则相关联的动作被存储以应用于IP流的后续IP数据包。该动作直接应用于IP流的后续IP数据包(例如,针对入口过滤规则允许或阻止后续IP数据包,以及针对出口过滤规则传输或阻止后续IP数据包)。因此,对于IP流的后续IP数据包,仅应用方法400的步骤415和440。
已经使用包括IPv6地址的表3描述了方法400。但是,本领域技术人员将容易地使方法400适于包括IPv4地址的表3。
在步骤425处未识别出源群聚的情况下,在步骤435处使用源IP地址而不是源命名空间和源群聚类型(如前所述,支持与群聚不同的源和目的地实体的CIDR范围的附加规则可以包含在功能过滤规则中)。类似地,在步骤430处未识别出目的地群聚的情况下,在步骤435处使用目的地IP地址而不是目的地命名空间和目的地群聚类型。
图4中表示了单个通信接口130。但是,如果节点100(例如,节点1)包括多个通信接口130,那么方法400适用于任何通信接口130。
如前所述,方法400不限于Kubernetes框架,而是可以扩展到支持以下特征的另一个框架:群聚、命名空间和群聚类型(以类似于Kubernetes的上下文中对这些特征的支持的方式)。
现在参考图6,其表示图4中所示的节点100,该节点100具有两个相应的通信接口130和130'。第一IP地址域与通信接口130相关联,并且第二IP地址域与通信接口130'相关联。
IP地址域在本领域中是众所周知的。IP地址域与IP网络相关联,其中IP网络内使用的任何IP地址都是唯一且明确定义的。IP网络经由联网基础设施来实现,包括例如路由器和防火墙,其保护IP网络免受属于其它IP域的其它IP网络的干扰。相同的IP地址可以在分别与两个不同域相关联的两个不同IP网络中使用。网络地址转换(NAT)类型功能可以用于在两个不同域之间转换地址,从而允许分别位于两个不同域中的实体之间的通信。
节点100的每个通信接口与给定网络相关联,该给定网络与给定IP地址域相关联。例如,参考图6,通信接口130与多个IP地址域当中的第一IP地址域(例如,Domain_1)相关联,并且通信接口130'与多个IP地址域当中的第二IP地址域(例如,Domain_2)相关联。群聚基础设施的管理员负责定义和配置群聚基础设施中使用的多个IP地址域。对于给定节点100,节点100的通信接口可以与相同IP地址域或不同IP地址域相关联。给定节点100的两个通信接口可以与相同的IP地址域相关联。每个通信接口与对应的IP地址域之间的映射存储在每个节点100的存储器120中。
如后面将在描述中图示的,图6中表示的POD 1和POD 2被分配与IP地址域Domain_1相关联的各自的IPv6地址,并且使用通信接口130基于这些各自的IPv6地址进行通信。也在图6中表示的POD 3和POD 4被分配与IP地址域Domain_2相关联的各自的IPv6地址,并且使用通信接口130'基于这些各自的IPv6地址进行通信。
但是,POD 1和POD 2也可以被分配与IP地址域Domain_2相关联的各自的其它IPv6地址,并且使用通信接口130'基于这些其它各自的IPv6地址进行通信。类似地,POD 3和POD4也可以被分配与IP地址域Domain_1相关联的各自的其它IPv6地址,并且使用通信接口130基于这些其它各自的IPv6地址进行通信。
现在同时参考图2、5、6和7,图7图示了用于在支持IP地址域的群聚基础设施中强制实施功能过滤规则的方法500。方法500的至少一些步骤被图6中表示的节点100(节点1)执行。方法500是图5中表示的方法400的适配,考虑了多个IP地址域的使用。
专用计算机程序具有用于实现方法500的至少一些步骤的指令。这些指令被包括在非暂态计算机程序产品(例如,节点100的存储器120)中。这些指令在由节点100的处理单元110执行时提供在支持IP地址域的群聚基础设施中强制实施功能过滤规则。指令可经由诸如存储介质(例如,CD-ROM、USB盘等)之类的电子可读介质,或经由通信链路(例如,经由通过节点100的通信接口130之一的通信网络)传送到节点100。如前所述,处理单元110包括至少一个处理器,每个处理器包括至少一个核心。
类似于先前描述的表3,下表图示了提供群聚与IP地址和IP地址域的组合之间的映射的示例性数据结构。该数据结构存储在每个节点100处(例如,图2的节点1、节点2和节点3),并且可选地也存储在主节点200处。
在先前描述的表3中,IP地址足以识别在给定节点上执行的对应群聚(使用单个默认IP地址域)。在表4中,IP地址不足以识别在给定节点上执行的对应群聚,还需要相关联的IP地址域(因为相同的IP地址可以在不同的IP地址域中使用)。
表4
如表4中所示,节点1上的POD 1和POD 3具有相同的IPv6地址,但是在两个不同的域中。节点1上的POD 2和POD 4具有相同的IPv6地址,但是在两个不同的域中。节点2上的POD 1和POD 3具有相同的IPv6地址,但是在两个不同的域中。节点3上的POD 1和POD 3具有相同的IPv6地址,但是在两个不同的域中。
方法500是关于图6中表示的节点100来描述的,该节点100包括两个通信接口130和130'。但是,方法500可以泛化到包括任意数量的通信接口(每个通信接口与多个IP地址域当中的给定IP地址域相关联)的节点100。
方法500包括将多个功能过滤规则122存储在节点100的存储器120中(例如,在包括过滤软件111使用的所有功能过滤规则122的配置文件中)的步骤505。每个功能过滤规则基于命名空间和群聚类型中的至少一个,其中命名空间是多个命名空间之一,并且群聚类型是群聚基础设施中定义的多个群聚类型之一。步骤505由节点100的处理单元110执行。步骤505与方法400的步骤405类似。
功能过滤规则已经在前面进行了描述,并且包括例如前面提到的规则(1)、(2)、(3)、(4)、(5)、(6)和(7)。
方法500包括将提供群聚与IP地址和IP地址域(IP地址域是多个IP地址域之一)的组合之间的映射的数据结构存储在存储器中120中的步骤510。步骤510由节点100的处理单元110执行。
映射数据结构已经在前面进行了描述。表4提供了此类映射数据结构的示例。
方法500包括确定已经经由节点100的通信接口(例如,130或130')接收到IP数据包或者将经由通信接口(例如,130或130')传输IP数据包的步骤515。步骤515由节点100的处理单元110执行。步骤515类似于方法400的步骤415。通信接口(例如,130或130')提供对与IP地址域(分别为Domain_1或Domain_2)相关联的IP网络的访问。
方法500包括确定与通信接口(在步骤515处提到)相关联的多个IP地址域当中的IP地址域的步骤517。步骤517由节点100的处理单元110执行。
方法500包括提取IP数据包(在步骤515处提到)的源IP地址和目的地IP地址的步骤520。步骤520由节点100的处理单元110执行。步骤520类似于方法400的步骤420。
方法500包括使用映射数据结构(在步骤510处存储)确定与源IP地址(在步骤520处提取)和IP地址域(在步骤517处确定)的组合对应的源群聚的步骤525。源群聚属于多个命名空间当中的源命名空间以及多个群聚类型当中的源群聚类型。步骤525由节点100的处理单元110执行。
方法500包括使用映射数据结构(在步骤510处存储)确定与目的地IP地址(在步骤520处提取)和IP地址域(在步骤517处确定)的组合对应的目的地群聚的步骤530。目的地群聚属于多个命名空间当中的目的地命名空间以及多个群聚类型当中的目的地群聚类型。步骤530由节点100的处理单元110执行。
方法500包括在多个功能过滤规则(在步骤505处存储)当中识别与源命名空间、源群聚类型、目的地命名空间和目的地群聚类型(在步骤525和530处确定)匹配的功能过滤规则的步骤535。步骤535由节点100的处理单元110执行。步骤535类似于方法400的步骤435。
如先前关于方法400所提到的,源命名空间、源群聚类型、目的地命名空间和目的地群聚类型中的每一个不需要全部存在于规则中以使规则匹配。例如,可以匹配仅引用源命名空间和目的地命名空间的第一规则,可以匹配仅引用源命名空间、目的地命名空间和目的地群聚类型的第二规则,等等(如前面描述的功能过滤规则集中所示)。
此外,如前所述,可以考虑IP数据包的附加特性来确定给定的功能过滤规则是否匹配,诸如目的地端口、传输协议等。
方法500包括将匹配的功能过滤规则(在步骤535处识别)应用到IP数据包(在步骤515处提到)的步骤540。步骤540由节点100的处理单元110执行。步骤540类似于方法400的步骤440。
下面是在图2、图6和表4中描述的群聚基础设施的上下文中应用步骤515-540的示例。这些示例类似于为方法400提供的示例,但是已经适于方法500的上下文。
在第一示例(1)中,经由节点1的通信接口130接收IP数据包,其具有源IPv6地址2001:db80:aabb:1002::0001/128和属于IP地址域Domain_1的目的地IPv6地址2001:db80:aabb:1001::0001/128。与IP地址域Domain_1中的源IPv6地址对应的源群聚为节点2上的POD 1,属于命名空间NSpace_A和群聚类型app_a01。与IP地址域Domain_1中的目的地IPv6地址对应的目的地群聚为节点1上的POD 1,属于命名空间NSpace_A和群聚类型app_a01。入口规则(1)匹配并且IPv6数据包被允许(它被传输到节点1上的POD 1)。
在第二示例(2)中,经由节点1的通信接口130'接收IP数据包,其具有源IPv6地址2001:db80:aabb:1002::0001/128和属于IP地址域Domain_2的目的地IPv6地址2001:db80:aabb:1001::0001/128。与IP地址域Domain_2中的源IPv6地址对应的源群聚为节点2上的POD 3,属于命名空间NSpace_B和群聚类型app_b01。与IP地址域Domain_2中的目的地IPv6地址对应的目的地群聚为节点1上的POD 3,属于命名空间NSpace_B和群聚类型app_b01。入口规则(5)匹配并且IPv6数据包被阻止(它不被传输到节点1上的POD 3)。
在第三示例(3)中,IP数据包将经由节点1的通信接口130传输,其具有源IPv6地址2001:db80:aabb:1001::0001/128和属于IP地址域Domain_1的目的地IPv6地址2001:db80:aabb:1003::0001/128。与源IPv6地址对应的源群聚为节点1上的POD 1,属于命名空间NSpace_A和群聚类型app_a01。与目的地IPv6地址对应的目的地群聚为节点3上的POD 1,属于命名空间NSpace_A和群聚类型app_a02。出口规则(6)匹配并且IPv6数据包被阻止(它不经由通信接口130传输)。
在第四示例(4)中,IP数据包将经由节点1的通信接口130'传输,其具有源IPv6地址2001:db80:aabb:1001::0001/128和属于IP地址域Domain_2的目的地IPv6地址2001:db80:aabb:1003::0001/128。与源IPv6地址对应的源群聚为节点1上的POD 3,属于命名空间NSpace_B和群聚类型app_b01。与目的地IPv6地址对应的目的地群聚是节点3上的POD 3,属于命名空间NSpace_C和群聚类型cpp_c01。出口规则(7)匹配并且IPv6数据包被阻止(它不经由通信接口130传输)。
在方法500(先前参考方法400提到)的特定实施方式中,在步骤515处提到的IP数据包是IP流的第一IP数据包。与在步骤535处识别出的匹配功能过滤规则相关联的动作被存储以应用于IP流的后续IP数据包。该动作直接应用于IP流的后续IP数据包(例如,针对入口过滤规则允许或阻止后续IP数据包,以及针对出口过滤规则传输或阻止后续IP数据包)。因此,对于IP流的后续IP数据包,仅应用方法500的步骤515和540。
已经使用包括IPv6地址的表4描述了方法500。但是,本领域技术人员将容易地使方法500适于包括IPv4地址的表4。
在步骤525处未识别源群聚的情况下,在步骤535处使用源IP地址和IP地址域而不是源命名空间和源群聚类型(如前所述,支持与群聚不同的源和目的地实体的CIDR范围的附加规则可以包含在功能过滤规则中)。类似地,在步骤530处未识别目的地群聚的情况下,在步骤535处使用目的地IP地址和IP地址域而不是目的地命名空间和目的地群聚类型。
如前所述,方法500不限于Kubernetes框架,而是可以扩展到支持以下特征的另一个框架:群聚、命名空间和群聚类型(以类似于Kubernetes的上下文中对这些特征的支持的方式)。
已经在包括多个命名空间和每个命名空间的多个群聚类型的群聚基础设施的上下文中描述了本公开。这种上下文对于大规模基础设施来说是现实的。但是,本公开也适用于包括单个命名空间(例如,单个默认命名空间)和与该单个命名空间相关联的多个群聚类型的群聚基础设施的上下文。本公开也适用于具有单个相关联的群聚类型的命名空间。
虽然本公开已经通过其非限制性、说明性实施例描述了本公开,但是在不脱离本公开的精神和本质的情况下,可以在所附权利要求的范围内随意修改这些实施例。
Claims (23)
1.一种用于在群聚基础设施中强制实施功能过滤规则的方法,所述方法包括:
在计算设备的存储器中存储多个功能过滤规则,每个功能过滤规则基于命名空间和群聚类型中的至少一个,所述命名空间是多个命名空间之一,并且所述群聚类型是多个群聚类型之一;
在所述计算设备的存储器中存储提供群聚和互联网协议(IP)地址之间的映射的数据结构;
确定IP数据包已经经由所述计算设备的通信接口接收或者将经由所述计算设备的通信接口传输;
由所述计算设备的处理单元提取所述IP数据包的源IP地址和目的地IP地址;
由所述计算设备的处理单元使用映射数据结构确定与所述源IP地址对应的源群聚,所述源群聚属于所述多个命名空间当中的源命名空间以及所述多个群聚类型当中的源群聚类型;
由所述计算设备的处理单元使用所述映射数据结构确定与所述目的地IP地址对应的目的地群聚,所述目的地群聚属于所述多个命名空间当中的目的地命名空间以及所述多个群聚类型当中的目的地群聚类型;
由所述计算设备的处理单元在所述多个功能过滤规则当中识别与所述源命名空间、所述源群聚类型、所述目的地命名空间和所述目的地群聚类型匹配的功能过滤规则;以及
由所述计算设备的处理单元将匹配的功能过滤规则应用于所述IP数据包。
2.如权利要求1所述的方法,其中经由所述计算设备的通信接口接收所述IP数据包,所述匹配的功能过滤规则执行入口过滤,并且基于所述匹配的功能过滤规则允许或阻止所述IP数据包。
3.如权利要求2所述的方法,其中所述IP数据包是IP流的第一IP数据包,并且确定适用于所述IP流的动作并将其存储在所述计算设备的存储器中,所述动作包括:如果第一IP数据包被允许,那么允许所述IP流的后续IP数据包,或者如果第一IP数据包被阻止,那么阻止所述IP流的后续IP数据包。
4.如权利要求1所述的方法,其中所述IP数据包将经由所述计算设备的通信接口传输,所述匹配的功能过滤规则执行出口过滤,并且基于所述匹配的功能过滤规则传输或阻止所述IP数据包。
5.如权利要求4所述的方法,其中所述IP数据包是IP流的第一IP数据包,并且确定适用于所述IP流的动作并将其存储在所述计算设备的存储器中,所述动作包括:如果第一IP数据包被传输,那么传输所述IP流的后续IP数据包,或者如果第一IP数据包被阻止,那么阻止所述IP流的后续IP数据包。
6.如权利要求1所述的方法,其中所述匹配的功能过滤规则匹配所述IP数据包的一个或多个附加特性,所述IP数据包的所述一个或多个附加特性包括目的地端口和传输协议中的至少一个。
7.如权利要求1所述的方法,其中所述IP数据包是IPv4或IPv6数据包。
8.如权利要求1所述的方法,其中所述源群聚和目的地群聚是Kubernetes群聚。
9.如权利要求1所述的方法,其中所述IP数据包经由所述计算设备的通信接口接收,并且所述目的地群聚由所述计算设备的处理单元执行,所述目的地群聚的执行包括执行容器化软件应用。
10.如权利要求1所述的方法,其中所述IP数据包将经由所述计算设备的通信接口传输,并且所述源群聚由所述计算设备的处理单元执行,所述源群聚的执行包括执行容器化软件应用。
11.一种计算设备,包括:
存储器,用于:
存储多个功能过滤规则,每个功能过滤规则基于命名空间和群聚类型中的至少一个,所述命名空间是多个命名空间之一,并且所述群聚类型是多个群聚类型之一;以及
存储提供群聚和互联网协议(IP)地址之间的映射的数据结构;
通信接口;以及
处理单元,包括至少一个处理器,用于:
确定IP数据包已经经由所述通信接口接收或者将经由所述通信接口传输;
提取所述IP数据包的源IP地址和目的地IP地址;
使用映射数据结构确定与所述源IP地址对应的源群聚,所述源群聚属于所述多个命名空间当中的源命名空间以及所述多个群聚类型当中的源群聚类型;
使用所述映射数据结构确定与所述目的地IP地址对应的目的地群聚,所述目的地群聚属于所述多个命名空间中的目的地命名空间以及所述多个群聚类型中的目的地群聚类型;
识别所述多个功能过滤规则当中与所述源命名空间、所述源群聚类型、所述目的地命名空间和所述目的地群聚类型匹配的功能过滤规则;以及
将匹配的功能过滤规则应用于所述IP数据包。
12.一种用于在支持互联网协议(IP)地址域的群聚基础设施中强制实施功能过滤规则的方法,所述方法包括:
在计算设备的存储器中存储多个功能过滤规则,每个功能过滤规则基于命名空间和群聚类型中的至少一个,所述命名空间是多个命名空间之一,并且所述群聚类型是多个群聚类型之一;
在所述计算设备的存储器中存储数据结构,所述数据结构提供群聚与互联网协议(IP)地址和IP地址域的组合之间的映射,所述IP地址域是多个IP地址域之一;
确定IP数据包已经经由所述计算设备的通信接口接收或者将经由所述计算设备的通信接口传输;
由所述计算设备的处理单元确定所述多个IP地址域当中与所述通信接口相关联的IP地址域;
由所述计算设备的处理单元提取所述IP数据包的源IP地址和目的地IP地址;
由所述计算设备的处理单元使用映射数据结构确定与所述源IP地址和所确定的IP地址域的组合对应的源群聚,所述源群聚属于所述多个命名空间当中的源命名空间以及所述多个群聚类型当中的源群聚类型;
由所述计算设备的处理单元使用所述映射数据结构确定与所述目的地IP地址和所确定的IP地址域的组合对应的目的地群聚,所述目的地群聚属于所述多个命名空间当中的目的地命名空间以及所述多个群聚类型中的目的地群聚类型;
由所述计算设备的处理单元在所述多个功能过滤规则当中识别与所述源命名空间、所述源群聚类型、所述目的地命名空间和所述目的地群聚类型匹配的功能过滤规则;以及
由所述计算设备的处理单元将匹配的功能过滤规则应用于所述IP数据包。
13.如权利要求12所述的方法,还包括:
确定另一个IP数据包已经经由所述计算设备的另一个通信接口接收或者将经由所述计算设备的所述另一个通信接口传输;
由所述计算设备的处理单元确定与所述另一个通信接口相关联的所述多个IP地址域当中的另一个IP地址域;
由所述计算设备的处理单元提取所述另一个IP数据包的源IP地址和目的地IP地址;
由所述计算设备的处理单元使用所述映射数据结构确定与所述源IP地址和所确定的另一个IP地址域的组合对应的源群聚,所述源群聚属于所述多个命名空间当中的源命名空间以及所述多个群聚类型当中的源群聚类型;
由所述计算设备的处理单元使用所述映射数据结构确定与所述目的地IP地址和所确定的另一个IP地址域的组合对应的目的地群聚,所述目的地群聚属于所述多个命名空间当中的目的地命名空间以及所述多个群聚类型当中的目的地群聚类型;
由所述计算设备的处理单元在所述多个功能过滤规则当中识别与所述源命名空间、所述源群聚类型、所述目的地命名空间和所述目的地群聚类型匹配的功能过滤规则;以及
由所述计算设备的处理单元将匹配的功能过滤规则应用于所述IP数据包。
14.如权利要求12所述的方法,其中经由所述计算设备的通信接口接收所述IP数据包,所述匹配的功能过滤规则执行入口过滤,并且基于所述匹配的功能过滤规则允许或阻止所述IP数据包。
15.如权利要求14所述的方法,其中所述IP数据包是IP流的第一IP数据包,并且确定适用于所述IP流的动作并将其存储在所述计算设备的存储器中,所述动作包括:如果第一IP数据包被允许,那么允许所述IP流的后续IP数据包,或者如果第一IP数据包被阻止,那么阻止所述IP流的后续IP数据包。
16.如权利要求12所述的方法,其中所述IP数据包将经由所述计算设备的通信接口传输,所述匹配的功能过滤规则执行出口过滤,并且基于所述匹配的功能过滤规则传输或阻止所述IP数据包。
17.如权利要求16所述的方法,其中所述IP数据包是IP流的第一IP数据包,并且确定适用于所述IP流的动作并将其存储在所述计算设备的存储器中,所述动作包括:如果第一IP数据包被传输,那么传输所述IP流的后续IP数据包,或者如果第一IP数据包被阻止,那么阻止所述IP流的后续IP数据包。
18.如权利要求12所述的方法,其中所述匹配的功能过滤规则匹配所述IP数据包的一个或多个附加特性,所述IP数据包的所述一个或多个附加特性包括目的地端口和传输协议中的至少一个。
19.如权利要求12所述的方法,其中所述IP数据包是IPv4数据包并且所述IP地址域是IPv4地址域,或者所述IP数据包是IPv6数据包并且所述IP地址域是IPv6地址域。
20.如权利要求12所述的方法,其中所述源群聚和目的地群聚是Kubernetes群聚。
21.如权利要求12所述的方法,其中所述IP数据包经由所述计算设备的通信接口接收,并且所述目的地群聚由所述计算设备的处理单元执行,所述目的地群聚的执行包括执行容器化软件应用。
22.如权利要求12所述的方法,其中所述IP数据包将经由所述计算设备的通信接口传输,并且所述源群聚由所述计算设备的处理单元执行,所述源群聚的执行包括执行容器化软件应用。
23.一种计算设备,包括:
存储器,用于:
存储多个功能过滤规则,每个功能过滤规则基于命名空间和群聚类型中的至少一个,所述命名空间是多个命名空间之一,并且所述群聚类型是多个群聚类型之一;以及
存储提供群聚与互联网协议(IP)地址和IP地址域的组合之间的映射的数据结构,所述IP地址域是多个IP地址域之一;
通信接口;以及
处理单元,包括至少一个处理器,用于:
确定IP数据包已经经由通信接口接收或者将经由通信接口传输;
确定所述多个IP地址域当中与所述通信接口相关联的IP地址域;
提取所述IP数据包的源IP地址和目的地IP地址;
使用映射数据结构确定与所述源IP地址和所确定的IP地址域的组合对应的源群聚,所述源群聚属于所述多个命名空间当中的源命名空间以及所述多个群聚类型当中的源群聚类型;
使用所述映射数据结构确定与所述目的地IP地址和所确定的IP地址域的组合对应的目的地群聚,所述目的地群聚属于所述多个命名空间当中的目的地命名空间以及所述多个群聚类型当中的目的地群聚类型;
识别所述多个功能过滤规则当中与所述源命名空间、所述源群聚类型、所述目的地命名空间和所述目的地群聚类型匹配的功能过滤规则;以及
将匹配的功能过滤规则应用于所述IP数据包。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163144308P | 2021-02-01 | 2021-02-01 | |
US63/144,308 | 2021-02-01 | ||
PCT/CA2022/050115 WO2022160050A1 (en) | 2021-02-01 | 2022-01-28 | Method and computing device for enforcing functional filtering rules in a pod infrastructure |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116982307A true CN116982307A (zh) | 2023-10-31 |
Family
ID=82612892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280019495.5A Pending CN116982307A (zh) | 2021-02-01 | 2022-01-28 | 用于在群聚基础设施中强制实施功能过滤规则的方法和计算设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220247684A1 (zh) |
CN (1) | CN116982307A (zh) |
WO (1) | WO2022160050A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11880282B2 (en) * | 2021-09-15 | 2024-01-23 | Trilio Data, Inc. | Container-based application data protection method and system |
US11916741B1 (en) * | 2022-10-16 | 2024-02-27 | Oracle International Corporation | Discovery of application relationships in clusters |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107947961B (zh) * | 2017-10-17 | 2021-07-30 | 上海数讯信息技术有限公司 | 基于SDN的Kubernetes网络管理系统与方法 |
US11070480B2 (en) * | 2019-07-03 | 2021-07-20 | Kaloom Inc. | Method and computing devices for enforcing packet order based on packet marking |
-
2022
- 2022-01-28 WO PCT/CA2022/050115 patent/WO2022160050A1/en active Application Filing
- 2022-01-28 US US17/586,855 patent/US20220247684A1/en active Pending
- 2022-01-28 CN CN202280019495.5A patent/CN116982307A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220247684A1 (en) | 2022-08-04 |
WO2022160050A1 (en) | 2022-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11563681B2 (en) | Managing communications using alternative packet addressing | |
US11212210B2 (en) | Selective route exporting using source type | |
US8942235B1 (en) | Load balancing deterministic network address translation across session management modules | |
US6973488B1 (en) | Providing policy information to a remote device | |
EP3481015B1 (en) | Variable-based forwarding path construction for packet processing within a network device | |
EP2866389B1 (en) | Method and device thereof for automatically finding and configuring virtual network | |
US9215093B2 (en) | Encoding packets for transport over SDN networks | |
US20150124823A1 (en) | Tenant dhcp in an overlay network | |
CN107046506B (zh) | 一种报文处理方法、流分类器和业务功能实例 | |
US10956501B2 (en) | Network-wide, location-independent object identifiers for high-performance distributed graph databases | |
CN116982307A (zh) | 用于在群聚基础设施中强制实施功能过滤规则的方法和计算设备 | |
Kim et al. | ONTAS: Flexible and scalable online network traffic anonymization system | |
CN113726907B (zh) | 一种路由处理方法、网元设备、装置以及可读存储介质 | |
US9819641B2 (en) | Method of and a processing device handling a protocol address in a network | |
CN103460676A (zh) | 通过查询远程服务器的流路由协议 | |
US20150032898A1 (en) | Method for establishing a virtual community network connection and a system for implementing said method | |
US7684406B2 (en) | Data packet filtering in a client-router server architecture | |
US20220006778A1 (en) | Computing device and method for generating a functional ipv6 address of a pod | |
Hantouti et al. | A novel SDN-based architecture and traffic steering method for service function chaining | |
CN111935336A (zh) | 基于IPv6的网络治理方法及系统 | |
Halavachou et al. | Research on IPv4, IPv6 and IPv9 address representation | |
Kodialam et al. | CLAP: Compact labeling scheme for attribute-based IoT policy control | |
Li et al. | Research of Subnetting Based on Huffman Coding | |
US11258720B2 (en) | Flow-based isolation in a service network implemented over a software-defined network | |
Zhang et al. | Research and Implementation of Future Network IPV9 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |