CN107094114A - 用于模块化转发表可缩放性的技术 - Google Patents
用于模块化转发表可缩放性的技术 Download PDFInfo
- Publication number
- CN107094114A CN107094114A CN201610020895.4A CN201610020895A CN107094114A CN 107094114 A CN107094114 A CN 107094114A CN 201610020895 A CN201610020895 A CN 201610020895A CN 107094114 A CN107094114 A CN 107094114A
- Authority
- CN
- China
- Prior art keywords
- calculate node
- node
- hash function
- flow identifier
- network packet
- 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
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
本文描述了用于模块化转发表可缩放性的技术。用于软件集群开关的模块化转发表可缩放性的技术包括多个计算节点。该多个计算节点各自包括全局分区表(GPT),该全局分区表用于基于在该软件集群开关的进入计算节点处接收到的网络分组的流标识符确定该网络分组的离开计算节点。该GPT包括与应用到该流标识符的散列函数相对应的集合映射索引和标识散列函数族的其输出导致与该进入计算节点将该网络分组转发到其上的该离开计算节点相对应的节点标识符的散列函数。在此描述并要求保护其他实施例。
Description
背景
现代计算设备能够通过各种数据网络(诸如互联网)与其他计算设备通信(即,传输并接收数据通信)。为了促成这种计算设备之间的通信,这些网络通常包括一个或多个网络设备(例如,网络交换机、网络路由器等等)以便基于网络流将这些通信(即,网络分组)从一个计算设备路由到另一个计算设备。传统上,已经在这些网络设备的专用网络处理器上执行网络分组处理。然而,网络虚拟化技术(例如,网络功能虚拟化(NFV))和中央控制器网络架构(例如,软件定义网络(SDN))的进步已经导致高度可缩放和快速可部署的网络基础设施。
在一个这种网络分组处理示例中,互连服务器节点集群可用于网络分组路由和交换。在服务器节点集群中,每个服务器节点可从一个或多个外部端口接收网络分组并且将所接收的网络分组派发到其他服务器节点以便基于网络流的标识规则转发到目的地或离开端口。为了通过服务器节点集群路由网络流量,服务器节点通常使用路由表(即,路由信息库(RIB))和转发表(即,转发信息库(FIB))。
当每个服务器节点被添加到集群时,不仅集群的转发能力增加,而且其可到达的目的地地址的数量也增加。换言之,随着网络的基础设施的大小放大,路由表和转发表各自的大小也增加并且可变得非常大。通常,更大的路由表要求更多的时间和计算资源(例如,存储器、存储、处理周期等等)以便在转发表上执行查找。此外,这种扩展的负面影响可包括处理网络分组所需要的附加跳(即,网络分组在服务器节点之间的每次通过)或例如跨集群的内部交换机结构执行的查找。这种负面影响可导致降低的吞吐量和/或超出转发表容量的转发表大小。
附图简要描述
通过举例而非通过限制在附图中示出在此描述的概念。为了说明简单和清晰,图中所示元素无需按比例绘制。当认为合适时,已经在附图中重复参照标号以便表明相应的或类似的元素。
图1是用于由包括多个计算节点的软件集群开关进行模块化转发表可缩放性的系统的至少一个实施例的简化框图。
图2是图1的系统的软件集群交换机的计算节点的至少一个实施例的简化框图;
图3是图2的系统的计算节点的环境的至少一个实施例的简化框图;
图4和图5是可由图2的计算节点执行的用于确定所接收的网络分组的离开计算节点的方法的至少一个实施例的简化流程图。
图6是可由图2的计算节点执行的用于转发从进入节点接收的网络分组的方法的至少一个实施例的简化流程图;以及
图7是可由图2的计算节点执行的用于向路由表添加与网络分组的网络流标识符相对应的条目的方法的至少一个实施例的简化流程图。
附图详细描述
尽管本公开的概念可受到各种修改和替代形式,已经通过举例在附图中示出并且将在此详细地描述其特定实施例。然而,应当理解的是不旨在将本公开的概念限制为所公开的具体形式,而是相反,本发明涵盖与本公开和所附权利要求书一致的所有修改、等效方案和替代方案。
在说明书中对“一个实施例”、“实施例”、“说明性实施例”等等的引用表明所描述的实施例可包括具体的特征、结构或特性,但是每个实施例可无需包括该具体的特征、结构或特性。而且,这种短语无需指代相同的实施例。而且,当结合实施例描述具体的特征、结构或特性时,认为其在本领域普通技术人员结合显式地或未显式地描述的其他实施例实施这种特征、结构或特性的知识范围内。此外,应当认识到列表中包括的“A、B和C中的至少一个”形式的项目可意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。类似地,以“A、B、和C中的至少一个”的形式列出的项目可指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
在某些情况下,可在硬件、固件、软件、或其任何组合中实现所公开的实施例。所公开的实施例还可被实现为由一个或多个瞬态或非瞬态机器可读(例如计算机可读)存储介质携带或存储在其上的指令,这些指令可由一个或多个处理器读取并执行。机器可读存储介质可被实施为任何用于存储或传输机器(例如,易失性或非易失性存储器、介质盘、或其他介质设备)可读形式的信息的存储设备、机构、或其他物理结构。
在附图中,可用特定安排和/或排序示出某些结构或方法特征。然而,应当认识到可不要求这种特定安排和/或排序。相反,在某些实施例中,可用与说明性附图中示出的不同的方式和/或顺序安排这种特征。此外,具体附图中包括结构或方法特征不意味着暗示在所有实施例中要求这种特征以及在某些实施例中可不包括这种特征或者这种特征可与其他特征组合。
现在参照图1,在说明性实施例中,用于模块化转发表可缩放性的系统100包括与源计算设备102和目的地计算设备106进行网络通信的软件集群开关104。软件集群开关104可在网络功能虚拟化(NFV)和/或软件定义网络(SDN)架构的范围中(诸如在虚拟演进分组核心(vEPC)模型中)充当分布式服务的独立软件交换机/路由器或底线结构。说明性软件集群开关104包括多个计算节点110,每个计算节点110能够充当进入和离开计算节点。虽然说明性系统100包括源计算设备102和目的地计算设备106,应当认识到计算节点110各自可通信地耦合到任何数量的不同网络和/或子网络、网络设备和/或其他软件集群交换机。这样,任何计算节点110可接收源自一个网络的网络分组并且可基于软件集群开关104的路由表将网络分组转发到不同的网络。
说明性软件集群开关104包括“进入(ingress)”计算节点112、计算节点114、计算节点116以及“离开(engress)”计算节点118。当然,在某些实施例中,软件集群开关104还可包括支持网络分组吞吐量所需的附加计算节点110。在使用时,软件集群开关104的进入计算节点112从与软件集群开关104进行有线或无线网络通信的源计算设备102(例如,网络交换机、网络路由器、发起计算设备等等)接收网络分组108。应当认识到在图1中说明性地示出的任何其他计算节点110可替代地从源计算设备102接收网络分组108。这样,接收网络分组108的具体计算节点110可被指定为“进入”计算节点112并且在以下描述中被称为这样。
当接收到网络分组108时,进入计算节点112在转发表(即,转发信息库)上执行查找以便基于与网络分组108相对应的流标识符(例如,目标计算设备的媒体访问代码(MAC)、目标计算设备的网际协议(IP)地址、五元组流标识符等等)标识负责在软件集群开关104中处理网络分组108的离开计算节点118(即,处理节点)并且随后经由互连设备120或交换机将网络分组108直接转发到该节点。为了这样做,计算节点110中的每一个包括存储将该流标识符映射到计算节点110中的每一个的输出端口的信息的路由表。从该路由表,可生成两个结构:(1)全局查找表或全局分区表(GPT)以及(2)转发表条目。如将进一步详细描述的,GPT可被配置成比路由表更小(即,更紧凑),并且这样可被复制到计算节点110中的每一个。
不像传统的软件集群交换机,其中,每个计算节点包括包含以其整体复制的全部转发表条目的转发表,目前描述的转发表跨计算节点110中的每一个分区并分配,从而使得计算节点110都不包括整个转发表。换言之,基于哪一个计算节点110负责处理经由该计算节点110的输出端口转发相关联的网络分组(即,负责传输网络分组的离开计算节点),整个转发表的分区部分跨软件集群开关104的计算节点110分布。相应地,每个计算节点110可负责基于路由表和每个计算节点110的输出端口查找转发表条目的不同部分(即,整个转发表的子集)。结果是,软件集群开关104可管理网络分组108在单跳中到正确处理节点的直接传送。此外,使用GPT和分区转发表条目可要求比传统软件集群开关更少的存储器(即,开销),其中,每个计算节点处的存储器线性地随着传统软件集群开关中的计算节点的数量而增加。
源计算设备102以及类似地目的地计算设备106可被实施为任何类型的能够执行在此描述的功能的运算或计算设备,包括但不限于计算设备、智能电话、桌上计算机、工作站、膝上计算机、笔记本计算机、平板计算机、移动计算设备、可穿戴计算设备、网络电器、web电器、分布式计算系统、基于处理器的系统、多处理器系统、服务器(例如,独立式、机架式、刀片式等等)、网络电器(例如,物理的或虚拟的)和/或任何类型的计算和/或存储设备。
软件集群开关104可被实施为一起动作以便执行在此描述的功能的一组单独的计算节点110,诸如集群软件路由器、集群软件开关、分布式软件开关、分布式软件路由器、用于分布式服务的交换结构等等。在某些实施例中,软件集群开关104可包括根据全连接网格联网技术通信地耦合到彼此的多个计算节点110。当然,应当认识到,每个计算节点110可根据任何其他联网技术通信地耦合到其他计算节点110。例如,每个计算节点110可根据除其他拓扑之外的交换网络拓扑、Clos网络拓扑、总线网络拓扑、星形网络拓扑、环形网络拓扑、网络拓扑、蝴蝶状拓扑和/或其任何组合通信地耦合到其他计算节点110。
软件集群开关104的计算节点110中的每一个可被配置成用于执行软件集群开关104的路由操作的任何部分(例如,进入操作、转发操作、离开操作等等)。换言之,每个计算节点110可被配置成作为从源计算设备102接收网络分组108的计算节点(例如,进入计算节点112)和被确定用于执行查找并将网络分组108传输出软件集群开关104的计算节点(例如,离开计算节点118)来执行。
计算节点110可被实现为或以其他方式包括能够执行在此描述的功能的任何类型的计算设备,包括但不限于服务器计算机、联网设备、机架计算架构组件、桌上计算机、膝上计算设备、智能电器、消费者电子设备、移动计算设备、移动电话、智能电话、平板计算设备、个人数字助理、可穿戴计算设备和/或其他类型的计算设备。如图2说明性地所示,计算节点110包括处理器202、输入输出(“I/O”)子系统210、存储器212、数据存储设备218、通信电路220、以及多个通信接口222。当然,在其他实施例中,计算节点110可包括附加或替代组件,诸如在网络计算设备中发现的那些。此外,在某些实施例中,说明性组件中的一个或多个可被结合到另一个组件中或者以其他方式形成其一部分。例如,在某些实施例中,存储器212或其部分可被结合到处理器202中。
处理器202可被实施为能够执行在此描述的功能的任何类型的处理器。例如,在某些实施例中,处理器202可被实施为单核处理器、多核处理器、数字信号处理器、微控制器、或其他处理器或处理/控制电路。处理器202可包括高速缓存存储器204,该高速缓存存储器可被实施为处理器202可比访问用于存储指令和/数据以便执行的存储器212(诸如片上高速缓存)更快地访问的任何类型的高速缓存存储器。在某些实施例中,高速缓存存储器204还可存储全局分区表(GPT)206和转发表218。
如上所述,GPT 206通常比完全可复制的转发表更紧凑,这可允许在计算节点110中的每一个的操作期间在计算节点110处在高速缓存存储器204中复制并存储GPT 206。如将在以下进一步详细描述的,在某些实施例中,可使用设置分离映射策略实现GPT 206,该策略将输入密钥映射到计算节点110中的处理节点(例如,离开计算节点118)。设置分离映射策略包括开发由整个输入密钥集合的更小的组或子集组成的高级索引结构。可从与网络分组108相对应的流标识符(例如,目的地IP地址、目的地MAC地址、五元组流标识符等等)导出每个输入密钥。
如上所述,转发表208可包括将输入密钥映射到处理节点的转发表条目并且在某些实施例中可包括附加信息。计算节点110的每个转发表208可存储从路由表214获得的不同转发表条目集合(例如,部分、子集等等)。这样,每个计算节点110处的转发表208的大小比包括软件集群开关104的所有路由表条目的路由表214的大小更小(例如,包括更少的路由表条目)。在软件集群开关104的控制平面处,转发表208可被实施为散列表。然而,在某些实施例中,转发表208可被结构化为或实施为被加载到高速缓存存储器204中用于后续检索的单独网络路由条目集合或群组。
存储器212可被实施为能够执行在此描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在操作中,存储器212可存储在计算节点110的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动程序。存储器212经由I/O子系统210通信地耦合到处理器202,其可被实施为用于促成与计算节点110的处理器202、存储器212、以及其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统210可被实施为或以其他方式包括用于促成输入/输出操作的存储器控制器中枢、输入/输出控制中枢、固件设备、通信链路(即,点到点链路、总线链路、导线、线缆、光导、印刷电路板迹线等等)和/或其他组件及子系统。在某些实施例中,I/O子系统210可形成片上系统(SoC)的一部分并且可与计算节点110的处理器202、存储器212和其他组件一起结合到单个集成电路芯片上。应当认识到高速缓存存储器204以上被描述为片上高速缓存或处理器上高速缓存,在这种实施例中,高速缓存存储器204可以是片外高速缓存但是驻留在与处理器202相同的SoC上。
软件集群开关104的路由表214的拷贝(即,全局路由表)可存储在每个计算节点110的存储器212中。路由表214包括多个路由表条目,每个路由表条目具有与不同的网络目的地(例如,网络地址、目的地网络或子网、远程计算设备等等)相对应的信息。例如,在某些实施例中,每个路由表条目可包括指示目的地IP地址(即,目标计算设备和/或目的地子网的IP地址)、与应当通过其发送针对目的地IP地址的网络分组的网关IP地址、和/或通过其将针对目的地IP地址的网络分组发送到网关IP地址的离开接口的信息。应当认识到路由表214可包括用于助益将网络分组路由到其最终目的地的任何类型的信息。
在某些实施例中,网络路由表条目的全部或一部分可从路由表214获得并且用于生成或更新GPT 206和转发表208的条目。例如,可在计算节点110处接收对路由表214的更新,计算节点110然后可从该更新生成或更新(即,添加、删除或修改)转发表208的条目和GPT 206。经更新的转发表条目可在随后被传输到适当的处理节点,该处理节点可使用该条目更新该处理节点本地的转发表208。此外,在某些实施例中,接收对转发表208的更新的计算节点110可向全部其他计算节点110广播更新其对应的GPT的更新指示。
如先前所描述的,转发表208可被实施为散列表。相应地,软件集群开关104的控制平面可支持必要的操作,诸如散列表构建和转发表条目添加、删除和更新。应当认识到尽管GPT 206和转发表208被描述为存储在说明性计算节点110的高速缓存存储器204内,在其他实施例中,GPT 206和转发表208中的任一者或两者可被存储在计算节点110的其他数据存储设备(例如,存储器和/或数据存储218)内。例如,在其中针对具体计算节点110的转发表208的大小超过在高速缓存存储器204中可供使用的存储量的实施例中,转发表208的至少一部分可替代地被存储在计算节点110的存储器212内。在某些实施例中,GPT 206的大小可基于可用的高速缓存存储器204。在这种实施例中,附加计算节点110可被添加到软件集群开关104以便确保GPT 206的大小不超过可用的高速缓存存储器204空间。
集合映射表216可被实施为散列表。相应地,软件集群开关104的控制平面可支持必要的操作,诸如散列表构建和转发表条目添加、删除和更新。这样,当集合映射表216本地地删除、生成或更新表条目时,消息可被传输到软件集群开关104中的其他计算节点110以便提供所删除的、所生成的或以其他方式更新的表条目以适当地删除、生成或更新GPT 206和/或转发表208中的相应表条目的指示。
数据存储218可被实施为被配置成用于数据的短期或长期存储的任何类型的设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器、或其他数据存储设备。例如,数据存储设备218可被配置成用于存储有待由计算节点110初始化和/或执行的一个或多个操作系统。在某些实施例中,在针对更快处理和/或任何其他原因的操作期间,操作系统的部分可被拷贝到存储器212。
计算节点110的通信电路220可被实施为任何类型的通信电路、设备或其集合,能够允许计算节点110、源计算设备102、目的地计算设备104、互连设备120和/或其他计算或网络设备之间的经由一个或多个通信网络(例如,局域网、个域网、广域网、蜂窝网络、全球网络,诸如互联网等等)的通信。通信电路220可被配置成用于使用任何一种或多种通信技术(例如,无线通信或有线通信)和相关联的协议(例如,以太网、WiMAX等等)使这种通信生效。在说明性实施例中,通信电路220包括或以其他方式通信地耦合到一个或多个通信接口222。通信接口222可被配置成用于将计算节点110通信地耦合到任何数量的其他计算节点110、互连设备120、网络(例如,物理网络或逻辑网络)、和/或外部计算设备(例如,源计算设备102、目的地计算设备104、其他网络通信管理设备等等)。
现在参照图3,在使用中,每个计算节点110在操作期间建立环境300。说明性环境300包括网络通信模块310、路由表管理模块、全局分区表(GPT)管理模块330、转发表管理模块340、转发表查找模块350和GPT查找模块360。环境300的模块、逻辑和其他组件中的每一个可被实施为硬件、固件、软件或其组合。例如,环境300的模块、逻辑和其他组件各自可形成计算节点110的处理器或其他硬件组件的一部分或以其他方式由其建立。这样,在某些实施例中,环境300的模块中的一个或多个可被实施为电气设备的电路或集合(例如,网络通信电路、路由管理电路等等)。在说明性环境300中,计算节点110包括路由表数据302、集合映射数据304、GPT数据306和转发表数据308,上述中的每一个可由计算节点110的各个模块和/或子模块中的一个或多个访问。应当认识到计算节点110可包括在服务器设备中通常发现的其他组件、子组件、模块以及设备,为了描述清晰的目的,未在图3中示出。
网络通信模块310被配置成用于促成源计算设备102、互连设备120和目的地计算设备106之间的网络通信。每个计算节点可被配置成用于路由和交换目的。相应地,每个计算节点110可从一个或多个外部端口(即,通信接口222)接收网络分组108并且将网络分组108传输到另一个计算节点110以便基于流标识规则转发到目的地或离开端口。换言之,网络通信模块310可被配置成用于充当进入计算设备112和/或离开计算设备118,这取决于计算设备110是否正从外部计算设备接收网络分组108和/或将网络分组传输到目的地计算设备。例如,在某些条件下,诸如其中计算设备110接收网络分组108并且具有与所接收的网络分组108相对应的转发表208的一部分,该计算设备可充当进入计算设备112和离开计算设备118两者。
在某些实施例中,网络通信模块310可包括进入通信模块312和/或离开通信模块314。进入通信模块312被配置成用于当计算节点110充当进入计算节点112时从源计算设备102(例如,网络交换机、网络路由器、发起计算设备等等)接收网络分组108。所接收到的网络分组108可被实施为包括所接收到的网络分组108的目标的目的地IP地址的网际协议(IP)分组。当然,所接收到的网络分组108可包括其他类型的信息,诸如例如目的地端口、源IP地址、源端口、协议信息、和/或MAC地址。然而,应当认识到在其他实施例中,所接收到的网络分组108可被实施为任何其他类型的网络分组。在某些实施例中,可从通信地耦合到图2的说明性计算节点110的通信接口222的外部计算设备接收网络分组108。应当认识到在其中进入通信模块312从外部计算设备接收网络分组108的实施例中,计算设备110可被称为“进入”计算节点112。进入通信模块312可被进一步配置成用于在对路由表数据302、集合映射表数据304、GPT数据306和/或转发表数据308中的任何数据执行更新之后为其他计算节点110提供指示。
离开通信模块314被配置成用于确定输出端口并且当计算节点110充当“离开”计算节点118时将离开软件集群开关104的网络分组108从输出端口传输到目的地计算设备106。即,离开通信模块314被配置成用于将网络分组108传输到其最终目的地。例如,在某些实施例中,网路分组108的最终目的地可以是直接连接到离开计算节点118的通信接口222之一上的外部计算设备。在另一个示例中,在某些实施例中,网络分组108的最终目的地可以是经由一个或多个网络通信地耦合到离开计算节点118的外部计算设备。
路由表管理模块320被配置成用于维护存储在路由表214中的路由表302和存储在集合映射表216中的集合映射数据304。为了维护路由表数据302,路由表管理模块320进一步被配置成用于支持路由表数据302的构建和修改(例如,添加、删除和/或修改)。在某些实施例中,路由表数据302可由计算节点110从外部计算设备(诸如网络控制器)接收。为了维护集合映射数据304,路由表管理模块320进一步被配置成用于支持集合映射数据304的构建和修改(例如,添加、删除和/或修改)。集合映射数据304包括散列表,该散列表包括多个桶,其中,每个桶包括用于存储输入密钥及其相应值的一个或多个条目。路由表管理模块320另外被配置成用于使用桶到组(bucket-to-group)映射方案(即,密钥的2级散列化(a2-levelhashing of the key))以便确定每个输入密钥将被存储在哪个指定桶中。在某些实施例中,路由表管理模块320被配置成用于确定将为其指派多个桶的组。在这种实施例中,桶的连续块或密钥块可用于将更大数量的块和甚至更大数量的条目映射到更少数量的组。
在某些实施例中,输入密钥可由网络分组108的流标识符的至少一部分组成,例如诸如目的地IP地址、目的地MAC地址、流标签、五元组流标识符(即,源端口、目的地端口、源IP地址、目的地IP地址和协议)。每一组输入密钥可基于散列函数(例如,简单统一散列(simple uniform hash))而被放置在桶中,该散列函数可被直接应用到输入密钥,其结果可对应于输入密钥将存储在其中的指定桶。相应地,多于一个输入密钥(例如,十六个输入密钥)可存储在每个指定桶中。此外,每个计算节点110被指派用于将每个计算节点110与软件集群开关104的其他计算节点110区分开的唯一标识符或节点索引。在某些实施例中,节点索引可以是二进制参考号。
GPT 206的每个条目包括:与已经为其指派流标识符的候选组(即,各自包括一个或多个条目的桶块)相对应的集合映射索引;以及散列函数索引,其与产生同流标识符相对应的节点索引(即,该流标识符的离开计算节点的索引)的散列函数族中的散列函数的索引相对应。为了确定散列函数索引,路由表管理模块320进一步被配置成用于使用蛮力计算(brute force computation)来确定来自散列函数族的哪一个散列函数将该组的每个输入密钥映射到输出值小集合(即,节点索引)而无需存储输入密钥。换言之,散列函数族的每个散列函数可按照预先确定的顺序应用到该组的每个条目,直到返回正确的节点索引。类似于集合映射索引,散列函数索引可仅需要大小是几个比特——相对于散列函数族的散列函数的数量。桶到组映射方案的结果是,找到所有组的合适的散列函数可能更加可行。此外,仅存储索引(即,集合映射索引和散列函数索引)可导致GPT 206更紧凑并且在大小上比路由表214更小。
此外,当将输入密钥添加到其相应的桶以及因此其相应的组时,可能需要为该组重新计算散列函数并且更新相应的GPT数据306(即,散列函数索引)。相应地,在某些实施例中,路由表管理模块320可向GPT管理模块330和/或转发表管理模块340提供指示集合映射数据304已经发生改变的通知。在某些实施例中,集合映射数据304的每个桶中的条目的数量可在大小上受限制。换言之,集合映射数据304可仅能够支持为每个桶存储最大数量的输入密钥。在最大数量的输入密钥已经存储在相应的桶中的情况下,可忽略特定条目。相应地,GPT 206可仍基于散列函数的输出将网络分组108路由到特定计算节点110;然而,计算节点110可不对应于离开计算设备118。结果是,网络分组108被路由到其上的计算节点110(即,“回弹(bounce)”或“中间”计算节点)可在随后执行全路由表查找并且将分组传输到适当的离开计算设备118。换言之,可添加附加跳。
在控制平面处,GPT管理模块330被配置成用于构建并维护(即,添加、删除、修改等等)GPT数据306。在某些实施例中,GPT数据306可包括GPT 206,该GPT 206可基于路由表数据302生成。为了避免重构整个GPT数据306,可能在初始构建之前需要总表大小的先验知识。相应地,对于某些工作负荷,可基于各种试探法和/或估计确定总表大小的粗略估计。此外,在某些实施例中(例如,vEPC),输入密钥范围的先验知识可用于为GPT数据306构建表(例如,图2的GPT 206),可根据需要更新表。在其他实施例中——其中不能确定输入密钥范围的先验知识,可作为针对在线引导的手段执行批构建。特别是,可在每个计算节点110中使用整个转发表(即,替代GPT 206)的完全复制直到已经收集了足够的输入密钥,并且当已经采集了足够的密钥时,可基于所收集的输入密钥构建用于GPT数据306的表。
GPT管理模块330可被进一步配置成用于接收将从GPT数据306删除条目的通知(例如,来自路由表管理模块320)。在vEPC实施例中,例如,可从移动管理实体(MME)接收该通知。在交换机或路由器实施例中,本地转发表208可维护逐出(eviction)策略,诸如最近最少使用(LRU)逐出策略。在已经从GPT数据306删除条目之后,GPT管理模块330可向控制平面提供通知。在更新条目时,GPT管理模块330可重新计算相应组的散列函数并且相应地保存新散列函数的索引。
转发表管理模块340在控制平面被配置成用于构建转发表(例如,图2的转发表)并且使用各种添加、删除和修改操作维护转发表的转发表数据308。相应地,在某些实施例中,转发表数据308可包括位于计算节点110本地的转发表208(即,整个转发表的一部分或子集)。转发表查找模块350可被进一步配置成用于向GPT管理模块330提供通知以便通知GPT管理模块330来基于在维护转发表数据308时执行的操作来对GPT数据306采取相应的动作。例如,如果转发表查找模块350执行删除操作以便从转发表数据308移除转发表条目,则转发表查找模块350可向GPT管理模块330提供指示哪个转发表条目已经被移除的通知,从而使得GPT管理模块330可从GPT数据306移除相应的条目。
转发表查找模块350在数据平面被配置成用于在转发表数据308上执行查找操作以便确定网络分组108的转发信息。如先前所述,软件集群开关104中的每个计算节点110可主存转发表条目的一部分。为了确定每个计算节点110的转发表条目的分配,基于计算节点110中的哪个计算节点是处理节点(即,负责处理网络分组108)来划分并分布整个转发表。相应地,计算节点110中的每一个仅接收该计算节点110负责处理并传输的转发表数据308中的转发表条目的一部分。这样,计算节点110本地的转发表208可仅包括与该特定计算节点110相对应的那些转发条目。
GPT查找模块360在数据平面处被配置成用于在GPT数据306上执行查找操作以便确定哪一个计算节点110是处理节点(即,离开计算节点)。为了这样做,GPT查找模块360可被配置成用于将散列函数应用到网络分组108的流标识符(例如,目的地IP地址、目的地MAC地址、五元组流标识符等等)以便确定流标识符条目存储在其中的桶(即,GPT表206的一个或多个条目)。GPT查找模块360可响应于在GPT数据306上执行查找操作返回与处理节点(即,离开计算节点118)相对应的值(即,索引)。
在某些条件下,诸如当GPT表206中的存在的条目的数量超过GPT表206的最大可允许条目数量时,与搜索流标识符条目的散列函数相关联的成本可超过预定成本阈值。在这种条件下,GPT查找模块360可基于可能不是正确散列函数的散列函数的输出将网络分组108路由到另一个计算节点110——即使该计算节点110不是处理节点。相应地,如果接收到所路由的网络分组108的计算节点110不是处理节点,则该非处理节点可对路由表执行全查找并且将网络分组108路由到处理节点,从而导致附加跳。在某些实施例中,GPT查找模块360可被进一步配置成用于向离开通信模块314提供指示哪一个最终输出端口与网络分组108的目的地IP地址相对应的指示。
现在参照图4,在使用中,计算节点110(例如,图1的进入计算节点112)可执行用于为所接收的网络分组(例如,网络分组108)确定离开计算节点(例如,离开计算节点118)的方法400。如先前所提及的,任何计算节点110可充当进入计算节点112。方法400以框402开始,其中进入计算节点112确定是否诸如从源计算设备102接收到网络分组108。为了这样做,进入计算节点112可监视通信接口222以便接收新的网络分组108。如果进入计算节点112确定尚未接收到新的网络分组108,方法400返回到框402并且进入计算节点112继续监视接收新的网络分组108。然而,如果进入计算节点112确定已经接收到新的网络分组108,则方法400前进到框404。
在框404,进入计算节点112确定网络分组108的流标识符。在某些实施例中,流标识符可以是通信地耦合到软件集群开关104的一个计算节点110的目标计算设备(例如,目的地计算设备106)或经由一个或多个网络和/或网络设备通信地耦合到软件集群开关104的目的地计算设备(例如,目的地计算设备106)的地址和/或端口。在实施例中,所接收到的网络分组108可被实施为除其他类型的信息以外包括所接收到的网络分组108的目标的目的地IP地址的网际协议(IP)分组。在这种实施例中,进入计算节点112可检查(即,解析)所接收的IP网络分组108的IP头部以便确定源计算设备的IP地址和/或端口(即,源地址和/或端口)、目标计算设备的IP地址和/或端口(即,目的地地址和/或端口)和/或协议。
在框406处,进入计算节点112确定是否已经创建GPT 206。如先前所描述的,在某些实施例中,可能需要最小数量的输入密钥来构建GPT 206。相应地,在其中尚未创建GPT的这种实施例中,在框408处,进入计算节点112对全复制的转发表(即,整个转发表,不是整个转发表的本地分区)执行查找以便标识离开计算节点118。否则,方法400前进到框416以便执行以下进一步详细描述的查找操作。从框408,方法400前进到框410,其中,进入计算节点112确定进入计算节点112是否是与在框408处的查找中所标识的离开计算节点118相同的计算节点。换言之,进入计算节点112确定进入计算节点112是否也是离开计算节点118。如果这样,方法400前进到框412,其中,进入计算节点112基于在框408处执行的查找经由进入计算节点112的输出端口传输网络分组108。如果进入计算节点112确定离开计算节点118是除进入计算节点112之外的计算节点,方法400前进到框414,其中,进入计算节点112将网路分组108传输到在框408处确定的离开计算节点118。
如先前所描述的,如果进入计算节点112确定目前所收集的输入密钥的数量小于构建GPT 206所需的输入密钥的最小数量,方法前进到框416。在框416处,进入计算节点112使用集合映射索引作为密钥来对GPT执行查找并且作为查找的结果来检索散列函数索引(即,其密钥与集合映射索引匹配的密钥值对的值)。为了这样做,在框418处,进入计算节点112将散列函数(例如,简单的统一散列)应用到流标识符以便标识集合映射索引。此外,在框418处,进入计算节点112比较集合映射索引和GPT 206以便确定散列函数的索引(即,散列函数索引)。
应当认识到对GPT的查找可返回GPT 206中不与离开计算节点118相对应的集合映射索引。例如,在其中GPT 206是全表(即,不能支持附加流)的实施例中,如果接收到不是由GPT 206表示的流标识符,则GPT 206查找可返回不与曾在其上执行GPT 206查找的流标识符相对应的散列函数索引。相应的,在框416处执行的查找操作可导致不是离开计算节点118而是“回弹”计算节点或“中间”计算节点的计算节点。
在框424,进入计算节点112确定进入计算节点112是否是与在框422处确定的下一个计算节点118相同的计算节点。如果进入计算节点112不是与下一个计算节点118相同的计算节点,方法400前进到框426,其中,进入计算节点112将网路分组108传输到下一个计算节点。如果进入计算节点112是与下一个计算节点相同的计算节点,方法400前进到框428,如图5所示,其中,进入计算节点112在转发表(例如,转发表208)的本地部分上执行流标识符的查找以便确定从其传输所接收的网络分组的进入计算节点112的输出端口。
在框430处,进入计算节点112确定在框416处执行的查找操作是否成功。如果在框416处执行的查找成功,方法400前进到框432,其中,进入计算节点112经由查找操作所确定的进入计算节点112的输出端口将网络分组108传输到目标计算设备(例如,目的地计算设备106)。如果查找操作不成功,方法400前进到框434,其中,进入计算节点112在路由表(例如,路由表214)上执行流标识符的查找以便确定离开计算节点118。在框436处,进入计算节点112将所接收的网络分组传输到在框434处确定的离开计算节点118。
应当认识到在某些实施例中在框408、424和428处的查找操作中所使用的流标识符可以是不同的流标识符和/或相同的流标识符的诸个部分。例如,在某些实施例中,在框408和424处执行的查找操作可使用目标计算设备的IP地址,而在框428处执行的查找操作可使用五元组流标识符。
现在参照图6,在使用时,计算节点110(例如,图1的计算节点114、计算节点116或离开计算节点118)可执行用于转发从进入节点接收的网络分组(例如,网络分组108)的方法600。方法600始于框602,其中,离开计算节点118确定是否从下一个计算节点(诸如从进入计算节点112)接收到网络分组108。为了这样做,下一个计算节点可监视通信接口222以便接收网络分组108。
如先前所描述的,进入计算节点112可在GPT 206上执行查找操作,这可导致进入计算节点112将网络分组传输到下一个计算节点,而不知道下一个计算节点是离开计算节点118还是回弹计算节点。相应的,在某些实施例中,可在框602处接收的网络分组内(例如,在封装器或消息头部内)或伴随其提供指示网络分组是否是从进入节点112传输的指示(即,已经与GPT 206比较)。
如果下一个计算节点确定尚未接收到网络分组108,方法600返回到框602并且下一个计算节点继续监视接收网络分组108。然而,如果下一个计算节点确定已经接收到网络分组108,方法600前进到框604,其中,下一个计算节点112确定网络分组108的流标识符。在某些实施例中,流标识符可以是通信地耦合到软件集群开关104的一个计算节点110的目标计算设备(例如,目的地计算设备106)或经由一个或多个网络和/或网络设备通信地耦合到软件集群开关104的目的地计算设备(例如,目的地计算设备106)的地址和/或端口。在实施例中,所接收到的网络分组108可被实施为除其他类型的信息以外包括所接收到的网络分组108的目标的目的地IP地址的网际协议(IP)分组。在这种实施例中,下一个计算节点可检查(即,解析)所接收的IP网络分组108的IP头部以便确定目标计算设备的IP地址和/或端口、源计算设备的IP地址和/或端口、和/或协议。
在框606处,下一个计算节点在转发表(例如,转发表208)的本地部分上执行流标识符的查找以便确定下一个计算节点的输出端口。在框608处,离开计算节点118确定在框606处执行的查找是否成功。换言之,下一个计算节点确定其是否是从其传输所接收的网络分组的离开计算节点118。如果在框606处执行的查找成功(即,下一个计算节点是离开计算节点118),方法600前进到框610,其中,下一个计算节点作为离开计算节点118经由在框606处执行的查找所确定的下一个计算节点的输出端口将网络分组108传输到目标计算设备(例如,目的地计算设备106)。如果在框606处执行的查找不成功(即,下一个计算节点实际上是“回弹”或“中间”节点),方法600前进到框612,其中,下一个计算节点在路由表(例如,路由表214)上执行流标识符的查找以便确定离开计算节点118。在框614处,下一个计算节点将所接收的网络分组传输到在框612处确定的离开计算节点118。
现在参照图7,计算节点110可执行用于将与网络分组(例如,网络分组108)的网络流标识符相对应的条目添加到计算节点110的路由表(例如,路由表214)的方法700。方法700始于框702,其中,计算节点110确定是否在计算节点110处接收到向路由表214添加条目(即,流标识符)的请求。如果计算节点110确定尚未接收到请求,方法700返回到框702,其中,计算节点110继续监视对添加条目请求的接收。然而,如果计算节点110确定已经接收到添加条目请求,方法700前进到框704。
在框704,计算节点110将散列函数应用到流标识符以便标识流标识符可被存储在其中的散列表(例如,集合映射数据304)的桶。在框706处,计算节点110确定所标识的桶是否具有可用于存储流标识符的条目。如果不具有,方法700返回到框702并且计算节点110继续监视对添加条目请求的接收。如果所标识的桶被确定为具有可用条目,方法700前进到框708,其中,计算节点110将流标识符添加到所标识的桶中的可用条目。在框710处,计算节点110基于先前指派给所标识的桶的组(即,各自包括用于存储流标识符的一个或多个条目的桶块)重新计算散列函数换言之,计算设备110为每个桶中的已经被指派相同的组的每个条目重新计算散列函数。如先前所描述的,重新计算散列函数可包括应用散列函数族的多个散列函数中的每一个直到返回等于与网络分组108的处理节点或离开计算节点相对应的节点索引的结果。
在框712处,计算节点110基于所重新计算的散列函数更新GPT 206。换言之,计算节点110更新在框704处所标识的桶的适当的散列函数索引。在框714处,计算节点110将GPT更新通知广播到其他计算节点110,该通知指示基于在框712处执行的经更新的GPT更新其对应的GPT。
示例
以下提供在此公开的设备、系统、和方法的说明性示例。设备、系统、和方法的实施例可包括以下所描述的示例中的任何一个或多个以及任何组合。
示例1包括一种用于模块化转发表可缩放性的软件集群开关的计算节点,该计算节点包括:路由表管理模块,该路由表管理模块用于管理包括多个桶的集合映射表,其中,每个桶包括一个或多个条目,该一个或多个条目用于存储与该计算节点所接收的网络分组相对应的流标识符,其中,每个桶被指派到组,并且其中,每个组包括多于一个桶;全局分区表管理模块,该全局分区表管理模块用于管理包括多个条目的全局分区表(GPT),该多个条目可用于确定该软件集群开关的下一个计算节点的节点标识符;GPT查找模块,该GPT查找模块用于响应于接收到网络分组对该GPT执行查找以便基于该网络分组的流标识符确定该网络分组的该下一个计算节点并且将第二散列函数应用到该流标识符以便生成标识该下一个计算节点的节点标识符,其中,对该GPT执行该查找包括(i)将第一散列函数应用到该流标识符以便生成标识该集合映射表的组的集合映射索引,(ii)比较该集合映射索引和该GPT以便确定第二散列函数,并且其中,该下一个计算节点包括回弹计算节点或离开计算节点之一;以及网络通信模块,该网络通信模块用于将该网络分组传输到该下一个计算节点。
示例2包括示例1所述的主题,并且其中,该网络通信模块进一步用于从另一个计算节点接收网络分组,并且其中,该网络通信模块进一步用于确定来自另一个计算节点的该网络分组是否包括另一个计算节点是进入计算节点或回弹节点之一的指示。
示例3包括示例1和2所述的主题,并且进一步包括转发表管理模块,该转发表管理模块用于响应于确定另一个计算节点是回弹节点在转发表的本地部分执行该流标识符的查找以便确定该计算节点的输出端口,其中,该转发表的该本地部分包括基于该计算节点的输出端口的转发表条目子集。
示例4包括示例1-3中任一项所述的主题,并且其中,该网络通信模块进一步用于响应于确定该转发表的该本地部分处的该流标识符的该查找成功经由该输出端口将该网络分组传输到目标计算设备。
示例5包括示例1-4中任一项所述的主题,并且进一步包括:转发表管理模块,该转发表管理模块用于响应于确定另一个计算节点是离开节点在转发表的本地部分执行该流标识符的查找以便确定该计算节点的输出端口,其中,该转发表的该本地部分包括基于该计算节点的输出端口的转发表条目子集;以及路由表查找模块,该路由表查找模块用于响应于确定该转发表的该本地部分处的该流标识符的该查找不成功而在路由表处执行该流标识符的查找以便确定该离开计算节点,其中,该路由表标识该流标识符的离开计算节点;并且其中,该网络通信模块进一步用于将该网络分组传输到该离开计算节点。
示例6包括示例1-5中任一项所述的主题,并且其中,比较该集合映射索引和该GPT以便确定该第二散列函数包括(i)根据该集合映射索引在该GPT的条目上执行查找以及(ii)作为该查找的结果检索标识散列函数族的散列函数的散列函数索引,其中,该散列函数族包括多个散列函数。
示例7包括示例1-6中任一项所述的主题,并且进一步包括路由表管理模块,该路由表管理模块用于(i)接收向该计算节点的路由表添加该网络分组的该流标识符的请求,(ii)响应于已经接收到该请求向该计算节点的该路由表添加该流标识符,(iii)将散列函数应用到该流标识符以便标识该集合映射表的桶从而存储该流标识符,(iv)向该桶内的条目添加该流标识符,(v)为该条目指派组,以及(vi)更新与指派给该GPT内的该条目的该组相对应的散列函数索引。
示例8包括示例1-7中任一项所述的主题,并且其中,该路由表管理模块进一步用于将更新通知广播到该软件集群开关的其他计算节点,其中,该更新通知向GPT提供更新的指示。
示例9包括示例1-8中任一项所述的主题,并且其中,更新散列函数索引包括从散列函数族标识导致与网络分组的离开计算节点的节点索引相对应的输出的散列函数。
示例10包括示例1-9中任一项所述的主题,并且其中,从散列函数族标识散列函数包括将散列函数族的每个散列函数应用到指派给与该流标识符相同的组的该集合映射表的每个条目,直到所应用的散列函数导致与节点索引相对应的输出,该节点索引与指派给与流标识符相同的组的集合映射表的条目中的每个条目的离开计算节点相对应。
示例11包括示例1-10中任一项所述的主题,并且其中,确定该网络分组的该流标识符包括确定包括在所接收的网络分组中的指示所接收的网络分组的目标的目的地地址。
示例12包括示例1-11中任一项所述的主题,并且其中,确定该网络分组的该流标识符包括确定包括在所接收的网络分组中的指示所接收的网络分组的目标的五元组流标识符。
示例13包括示例1-12中任一项所述的主题,并且其中,确定与该软件集群开关的该离开计算节点相对应的该节点标识符包括基于具有映射到该流标识符的输出端口确定被标识为该软件集群开关的该计算节点的存储该转发表条目的该子集的离开计算节点。
示例14包括一种用于软件集群开关的模块化转发表可缩放性的方法,该方法:计算节点管理包括多个桶的集合映射表,其中,每个桶包括一个或多个条目,该一个或多个条目用于存储与该计算节点所接收的网络分组相对应的流标识符,其中,每个桶被指派到组,并且其中,每个组包括多于一个桶;该计算节点管理包括多个条目的全局分区表(GPT),该多个条目可用于确定该软件集群开关的下一个计算节点的节点标识符;该计算节点响应于接收到网络分组对该GPT执行查找以便基于该网络分组的流标识符确定该网络分组的该下一个计算节点,其中,对该GPT执行该查找包括(i)将第一散列函数应用到该流标识符以便生成标识该集合映射表的组的集合映射索引,(ii)比较该集合映射索引和该GPT以便确定第二散列函数,并且其中,该下一个计算节点包括回弹计算节点或离开计算节点之一;将该第二散列函数应用到该流标识符以便生成标识该下一个计算节点的节点标识符,并且其中,该下一个计算节点包括回弹计算节点或离开计算节点之一;以及该计算节点将该网络分组传输到该下一个计算节点。
示例15包括示例14所述的主题,并且进一步包括该计算节点从另一个计算节点接收网络分组;以及该计算节点确定来自另一个计算节点的该网络分组是否包括另一个计算节点是进入计算节点或回弹节点之一的指示。
示例16包括示例14和15中任一项所述的主题,并且进一步包括该计算节点并且响应于确定另一个计算节点是回弹节点在转发表的本地部分处执行该流标识符的查找以便确定该计算节点的输出端口,其中,该转发表的该本地部分包括基于该计算节点的输出端口的转发表条目子集。
示例17包括示例14-16中任一项所述的方法,并且进一步包括该计算节点响应于确定该转发表的该本地部分处的该流标识符的该查找成功经由该输出端口将该网络分组传输到目标计算设备。
示例18包括示例14-17中任一项所述的主题,并且进一步包括:该计算节点响应于确定另一个计算节点是离开节点而在转发表的本地部分执行该流标识符的查找以便确定该计算节点的输出端口,其中,该转发表的该本地部分包括基于该计算节点的输出端口的转发表条目子集;以及该计算节点响应于确定该转发表的该本地部分处的该流标识符的该查找不成功而在路由表处执行该流标识符的查找以便确定该离开计算节点,其中,该路由表标识该流标识符的该离开计算节点;以及将该网络分组传输到该离开计算节点。
示例19包括示例14-18中任一项所述的主题,并且其中,比较该集合映射索引和该GPT以便确定该第二散列函数包括(i)根据该集合映射索引在该GPT的条目上执行查找以及(ii)作为该查找的结果检索标识散列函数族的散列函数的散列函数索引,其中,该散列函数族包括多个散列函数。
示例20包括示例14-19中任一项所述的主题,并且进一步包括接收向该计算节点的路由表添加该网络分组的该流标识符;响应于已经接收到该请求向该计算节点的该路由表添加该流标识符;将散列函数应用到该流标识符以便标识该集合映射表的桶从而存储该流标识符;向该桶内的条目添加该流标识符;为该条目指派组;以及更新与指派给该GPT内的该条目的该组相对应的该散列函数索引。
示例21包括示例14-20中任一项所述的主题,并且进一步包括将更新通知广播到该软件集群开关的其他计算节点,其中,该更新通知向该GPT提供该更新的指示。
示例22包括示例14-21中任一项所述的主题,并且其中,更新该散列函数索引包括从该散列函数族标识导致与该网络分组的该离开计算节点的节点索引相对应的输出的散列函数。
示例23包括示例14-22中任一项所述的主题,并且其中,从该散列函数族标识该散列函数包括将该散列函数族的每个散列函数应用到指派给与该流标识符相同的组的该集合映射表的每个条目,直到所应用的散列函数导致与节点索引相对应的输出,所述节点索引与指派给与该流标识符相同的组的该集合映射表的该条目中的每个条目的该离开计算节点相对应。
示例24包括示例14-23中任一项所述的主题,并且其中,确定该网络分组的该流标识符包括确定包括在所接收的网络分组中的指示所接收的网络分组的目标的目的地地址。
示例25包括示例14-24中任一项所述的主题,并且其中,确定该网络分组的该流标识符包括确定包括在所接收的网络分组中的指示所接收的网络分组的目标的五元组流标识符。
示例26包括示例14-25中任一项所述的主题,并且其中,确定与该软件集群开关的该离开计算节点相对应的该节点标识符包括基于具有映射到该流标识符的输出端口确定被标识为该软件集群开关的该计算节点的存储该转发表条目的该子集的离开计算节点。
示例27包括计算节点,该计算节点包括处理器和存储器,该存储器其中存储有多条指令,当由该处理器执行时,该多条指令致使该计算设备执行示例14至26中任一项所述的方法。
示例28包括一种或多种机器可读存储介质,包括存储在其上的多条指令,响应于被执行,该多条指令致使计算节点执行如示例14至26中任一项所述的方法。
示例29包括一种用于模块化转发表可缩放性的软件集群开关的计算节点,该计算节点包括:用于管理包括多个桶的集合映射表的装置,其中,每个桶包括一个或多个条目,该一个或多个条目用于存储与该计算节点所接收的网络分组相对应的流标识符,其中,每个桶被指派到组,并且其中,每个组包括多于一个桶;用于管理包括多个条目的全局分区表(GPT)的装置,该多个条目可用于确定该软件集群开关的下一个计算节点的节点标识符;用于响应于接收到网络分组对该GPT执行查找以便基于该网络分组的流标识符确定该网络分组的该下一个计算节点的装置,其中,用于对该GPT执行该查找的装置包括用于(i)将第一散列函数应用到该流标识符以便生成标识该集合映射表的组的集合映射索引,以及(ii)比较该集合映射索引和该GPT以便确定第二散列函数的装置;用于将该第二散列函数应用到该流标识符以便生成标识该下一个计算节点的节点标识符的装置,并且其中,该下一个计算节点包括回弹计算节点或离开计算节点之一;以及用于将该网络分组传输到该下一个计算节点的装置。
示例30包括示例29所述的主题,并且进一步包括用于从另一个计算节点接收网络分组的装置;以及用于确定来自另一个计算节点的该网络分组是否包括另一个计算节点是进入计算节点或回弹节点之一的指示的装置。
示例31包括示例29和30中任一项所述的主题,并且进一步包括用于响应于确定另一个计算节点是回弹节点而在转发表的本地部分执行该流标识符的查找以便确定该计算节点的输出端口的装置,其中,该转发表的该本地部分包括基于该计算节点的输出端口的转发表条目子集。
示例32包括示例29-31中任一项所述的方法,并且进一步包括用于响应于确定该转发表的该本地部分处的该流标识符的该查找成功经由该输出端口将该网络分组传输到目标计算设备的装置。
示例33包括示例29-32中任一项所述的主题,并且进一步包括:用于响应于确定另一个计算节点是离开节点在转发表的本地部分执行该流标识符的查找以便确定该计算节点的输出端口的装置,其中,该转发表的该本地部分包括基于该计算节点的输出端口的转发表条目子集;以及用于响应于确定该转发表的该本地部分处的该流标识符的该查找不成功在路由表处执行该流标识符的查找以便确定该离开计算节点的装置,其中,该路由表标识该流标识符的该离开计算节点;以及用于将该网络分组传输到该离开计算节点的装置。
示例34包括示例29-33中任一项所述的主题,并且其中,用于比较该集合映射索引和该GPT以便确定该第二散列函数的该装置包括用于(i)根据该集合映射索引在该GPT的条目上执行查找以及(ii)作为该查找的结果检索标识散列函数族的散列函数的散列函数索引的装置,其中,该散列函数族包括多个散列函数。
示例35包括示例29-34中任一项所述的主题,并且进一步包括用于接收向该计算节点的路由表添加该网络分组的该流标识符的装置;用于响应于已经接收到该请求向该计算节点的该路由表添加该流标识符的装置;用于将散列函数应用到该流标识符以便标识该集合映射表的桶从而存储该流标识符的装置;用于向该桶内的条目添加该流标识符的装置;用于为该条目指派组的装置;以及用于更新与指派给该GPT内的该条目的该组相对应的该散列函数索引的装置。
示例36包括示例29-35中任一项所述的主题,并且进一步包括用于将更新通知广播到该软件集群开关的其他计算节点的装置,其中,该更新通知为该GPT提供该更新的指示。
示例37包括示例29-36中任一项所述的主题,并且其中,用于更新该散列函数索引的该装置包括用于从该散列函数族标识导致与该网络分组的该离开计算节点的节点索引相对应的输出的散列函数的装置。
示例38包括示例29-37中任一项所述的主题,并且其中,用于从该散列函数族标识该散列函数的该装置包括用于将该散列函数族的每个散列函数应用到指派给与该流标识符相同的组的该集合映射表的每个条目的装置,直到所应用的散列函数导致与节点索引相对应的输出,该节点索引与指派给与该流标识符相同的组的该集合映射表的该条目中的每个条目的该离开计算节点相对应。
示例39包括示例29-38中任一项所述的主题,并且其中,用于确定该网络分组的该流标识符的该装置包括用于确定包括在所接收的网络分组中的指示所接收的网络分组的目标的目的地地址的装置。
示例40包括示例29-39中任一项所述的主题,并且其中,用于确定该网络分组的该流标识符的该装置包括用于确定包括在所接收的网络分组中的指示所接收的网络分组的目标的五元组流标识符的装置。
示例41包括示例29-40中任一项所述的主题,并且其中,用于确定与该软件集群开关的该离开计算节点相对应的该节点标识符的该装置包括用于基于具有映射到该流标识符的输出端口确定被标识为该软件集群开关的该计算节点的存储该转发表条目的该子集的离开计算节点的装置。
Claims (25)
1.一种用于模块化转发表可缩放性的软件集群开关的计算节点,所述计算节点包括:
路由表管理模块,所述路由表管理模块用于管理包括多个桶的集合映射表,其中,每个桶包括一个或多个条目,所述一个或多个条目用于存储与所述计算节点所接收的网络分组相对应的流标识符,其中,每个桶被指派到组,并且其中,每个组包括多于一个桶;
全局分区表管理模块,所述全局分区表管理模块用于管理包括多个条目的全局分区表(GPT),所述多个条目能用于确定所述软件集群开关的下一个计算节点的节点标识符;
GPT查找模块,所述GPT查找模块用于响应于接收到网络分组对所述GPT执行查找以便基于所述网络分组的流标识符确定所述网络分组的所述下一个计算节点并且将第二散列函数应用到所述流标识符以便生成标识所述下一个计算节点的节点标识符,其中,对所述GPT执行所述查找包括(i)将第一散列函数应用到所述流标识符以便生成标识所述集合映射表的组的集合映射索引,(ii)比较所述集合映射索引和所述GPT以便确定第二散列函数,并且其中,所述下一个计算节点包括回弹计算节点或离开计算节点之一;以及
网络通信模块,所述网络通信模块用于将所述网络分组传输到所述下一个计算节点。
2.如权利要求1所述的计算节点,其特征在于,所述网络通信模块进一步用于从另一个计算节点接收网络分组,并且其中,所述网络通信模块进一步用于确定来自另一个计算节点的所述网络分组是否包括另一个计算节点是进入计算节点或回弹节点之一的指示。
3.如权利要求2所述的计算节点,其特征在于,进一步包括转发表管理模块,所述转发表管理模块用于响应于确定另一个计算节点是回弹节点在转发表的本地部分执行所述流标识符的查找以便确定所述计算节点的输出端口,其中,所述转发表的所述本地部分包括基于所述计算节点的输出端口的转发表条目子集。
4.如权利要求3所述的计算节点,其特征在于,所述网络通信模块进一步用于响应于确定所述转发表的所述本地部分处的所述流标识符的所述查找成功经由所述输出端口将所述网络分组传输到目标计算设备。
5.如权利要求1所述的计算节点,其特征在于,进一步包括:
转发表管理模块,所述转发表管理模块用于响应于确定另一个计算节点是离开节点在转发表的本地部分执行所述流标识符的查找以便确定所述计算节点的输出端口,其中,所述转发表的所述本地部分包括基于所述计算节点的输出端口的转发表条目子集;以及
路由表查找模块,所述路由表查找模块用于响应于确定所述转发表的所述本地部分处的所述流标识符的所述查找不成功在路由表处执行所述流标识符的查找以便确定所述离开计算节点,其中,所述路由表标识所述流标识符的所述离开计算节点;并且
其中,所述网络通信模块进一步用于将所述网络分组传输到所述离开计算节点。
6.如权利要求1所述的计算节点,其特征在于,比较所述集合映射索引和所述GPT以便确定所述第二散列函数包括(i)根据所述集合映射索引在所述GPT的条目上执行查找以及(ii)作为所述查找的结果检索标识散列函数族的散列函数的散列函数索引,其中,所述散列函数族包括多个散列函数。
7.如权利要求6所述的计算节点,其特征在于,进一步包括:
路由表管理模块,所述路由表管理模块用于(i)接收向所述计算节点的路由表添加所述网络分组的所述流标识符的请求,(ii)响应于已经接收到所述请求向所述计算节点的所述路由表添加所述流标识符,(iii)将散列函数应用到所述流标识符以便标识所述集合映射表的桶从而存储所述流标识符,(iv)向所述桶内的条目添加所述流标识符,(v)为所述条目指派组,以及(vi)更新与指派给所述GPT内的所述条目的所述组相对应的所述散列函数索引。
8.如权利要求7所述的计算节点,其特征在于,所述路由表管理模块进一步用于将更新通知广播到所述软件集群开关的其他计算节点,其中,所述更新通知向所述GPT提供所述更新的指示。
9.如权利要求7所述的计算节点,其特征在于,更新所述散列函数索引包括从所述散列函数族标识导致与所述网络分组的所述离开计算节点的节点索引相对应的输出的散列函数。
10.如权利要求9所述的计算节点,其特征在于,从所述散列函数族标识所述散列函数包括将所述散列函数族的每个散列函数应用到指派给与所述流标识符相同的组的所述集合映射表的每个条目,直到所应用的散列函数导致与节点索引相对应的输出,所述节点索引与指派给与所述流标识符相同的组的所述集合映射表的所述条目中的每个条目的所述离开计算节点相对应。
11.如权利要求1所述的计算节点,其特征在于,确定与所述软件集群开关的所述离开计算节点相对应的所述节点标识符包括基于具有映射到所述流标识符的输出端口确定被标识为所述软件集群开关的所述计算节点的存储所述转发表条目的所述子集的离开计算节点。
12.一种用于模块化转发表可缩放性的软件集群开关的计算节点,所述计算节点包括:
用于管理包括多个桶的集合映射表的装置,其中,每个桶包括一个或多个条目,所述一个或多个条目用于存储与所述计算节点所接收的网络分组相对应的流标识符,其中,每个桶被指派到组,并且其中,每个组包括多于一个桶;
用于管理包括多个条目的全局分区表(GPT)的装置,所述多个条目能用于确定所述软件集群开关的下一个计算节点的节点标识符;
用于响应于接收到网络分组对所述GPT执行查找以便基于所述网络分组的流标识符确定所述网络分组的所述下一个计算节点的装置,其中,对所述GPT执行所述查找包括(i)将第一散列函数应用到所述流标识符以便生成标识所述集合映射表的组的集合映射索引,以及(ii)比较所述集合映射索引和所述GPT以便确定第二散列函数;
用于将所述第二散列函数应用到所述流标识符以便生成标识所述下一个计算节点的节点标识符的装置,并且其中,所述下一个计算节点包括回弹计算节点或离开计算节点之一;以及
用于将所述网络分组传输到所述下一个计算节点的装置。
13.如权利要求12所述的计算节点,其特征在于,进一步包括:
用于从另一个计算节点接收网络分组的装置;以及
用于确定来自另一个计算节点的所述网络分组是否包括另一个计算节点是进入计算节点或回弹节点之一的指示。
14.如权利要求13所述的计算节点,其特征在于,进一步包括用于响应于确定另一个计算节点是回弹节点在转发表的本地部分执行所述流标识符的查找以便确定所述计算节点的输出端口的装置,其中,所述转发表的所述本地部分包括基于所述计算节点的输出端口的转发表条目子集。
15.如权利要求14所述的计算节点,其特征在于,进一步包括用于响应于确定所述转发表的所述本地部分处的所述流标识符的所述查找成功经由所述输出端口将所述网络分组传输到目标计算设备的装置。
16.如权利要求12所述的计算节点,其特征在于,进一步包括:
用于响应于确定另一个计算节点是离开节点在转发表的本地部分执行所述流标识符的查找以便确定所述计算节点的输出端口的装置,其中,所述转发表的所述本地部分包括基于所述计算节点的输出端口的转发表条目子集;以及
用于响应于确定所述转发表的所述本地部分处的所述流标识符的所述查找不成功在路由表处执行所述流标识符的查找以便确定所述离开计算节点的装置,其中,所述路由表标识所述流标识符的所述离开计算节点;以及
用于将所述网络分组传输到所述离开计算节点的装置。
17.如权利要求12所述的计算节点,其特征在于,用于比较所述集合映射索引和所述GPT以便确定所述第二散列函数的所述装置包括用于(i)根据所述集合映射索引在所述GPT的条目上执行查找以及(ii)作为所述查找的结果检索标识散列函数族的散列函数的散列函数索引的装置,其中,所述散列函数族包括多个散列函数。
18.如权利要求17所述的计算节点,其特征在于,进一步包括:
用于接收向所述计算节点的路由表添加所述网络分组的所述流标识符的请求的装置;
用于响应于已经接收到所述请求向所述计算节点的所述路由表添加所述流标识符的装置;
用于将散列函数应用到所述流标识符以便标识所述集合映射表的桶从而存储所述流标识符的装置;
用于将所述流标识符添加到所述桶中的条目的装置;
用于向所述条目指派组的装置;以及
用于更新与指派给所述GPT中的所述条目的所述组相对应的所述散列函数索引的装置。
19.如权利要求18所述的计算节点,其特征在于,进一步包括用于将更新通知广播到所述软件集群开关的其他计算节点的装置,其中,所述更新通知向所述GPT提供所述更新的指示。
20.如权利要求18所述的计算节点,其特征在于,用于更新所述散列函数索引的所述装置包括用于从所述散列函数族标识导致与所述网络分组的所述离开计算节点的节点索引相对应的输出的散列函数的装置。
21.如权利要求20所述的计算节点,其特征在于,用于从所述散列函数族标识所述散列函数的所述装置包括用于将所述散列函数族的每个散列函数应用到指派给与所述流标识符相同的组的所述集合映射表的每个条目的装置,直到所应用的散列函数导致与节点索引相对应的输出,所述节点索引与指派给与所述流标识符相同的组的所述集合映射表的所述条目中的每个条目的所述离开计算节点相对应。
22.如权利要求12所述的计算节点,其特征在于,用于确定与所述软件集群开关的所述离开计算节点相对应的所述节点标识符的所述装置包括用于基于具有映射到所述流标识符的输出端口确定被标识为所述软件集群开关的所述计算节点的存储所述转发表条目的所述子集的离开计算节点的装置。
23.一种用于软件集群开关的模块化转发表可缩放性的方法,所述方法包括:
由计算节点管理包括多个桶的集合映射表,其中,每个桶包括一个或多个条目,所述一个或多个条目用于存储与所述计算节点所接收的网络分组相对应的流标识符,其中,每个桶被指派到组,并且其中,每个组包括多于一个桶;
由所述计算节点管理包括多个条目的全局分区表(GPT),所述多个条目能用于确定所述软件集群开关的下一个计算节点的节点标识符;
由所述计算节点响应于接收到网络分组对所述GPT执行查找以便基于所述网络分组的流标识符确定所述网络分组的所述下一个计算节点,其中,对所述GPT执行所述查找包括(i)将第一散列函数应用到所述流标识符以便生成标识所述集合映射表的组的集合映射索引,以及(ii)比较所述集合映射索引和所述GPT以便确定第二散列函数;
将所述第二散列函数应用到所述流标识符以便生成标识所述下一个计算节点的节点标识符,并且其中,所述下一个计算节点包括回弹计算节点或离开计算节点之一;以及
由所述计算节点将所述网络分组传输到所述下一个计算节点。
24.如权利要求23所述的方法,其特征在于,进一步包括:
由所述计算节点从另一个计算节点接收网络分组;以及
由所述计算节点确定来自另一个计算节点的所述网络分组是否包括另一个计算节点是进入计算节点或回弹节点之一的指示。
25.如权利要求23所述的方法,其特征在于,进一步包括:
接收向所述计算节点的路由表添加所述网络分组的所述流标识符的请求;
响应于已经接收到所述请求向所述计算节点的所述路由表添加所述流标识符;
将散列函数应用到所述流标识符以便标识所述集合映射表的桶从而存储所述流标识符;
将所述流标识符添加到所述桶中的条目;
向所述条目指派组;以及
更新与指派给所述GPT中的所述条目的所述组相对应的散列函数索引,其中,所述散列函数索引标识散列函数族的散列函数,其中,所述散列函数族包括多个散列函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610020895.4A CN107094114A (zh) | 2016-01-13 | 2016-01-13 | 用于模块化转发表可缩放性的技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610020895.4A CN107094114A (zh) | 2016-01-13 | 2016-01-13 | 用于模块化转发表可缩放性的技术 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107094114A true CN107094114A (zh) | 2017-08-25 |
Family
ID=59645932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610020895.4A Pending CN107094114A (zh) | 2016-01-13 | 2016-01-13 | 用于模块化转发表可缩放性的技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107094114A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187659A (zh) * | 2020-04-24 | 2021-01-05 | 谷歌有限责任公司 | 用于减轻多路径网络中的散列相关性的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020281A (zh) * | 2012-12-27 | 2013-04-03 | 中国科学院计算机网络信息中心 | 一种基于空间数据数值索引的数据存储与检索方法 |
CN103842990A (zh) * | 2011-07-06 | 2014-06-04 | 华为技术有限公司 | 基于索引的虚拟寻址的方法和设备 |
CN104283906A (zh) * | 2013-07-02 | 2015-01-14 | 华为技术有限公司 | 分布式存储系统、集群节点及其区间管理方法 |
CN105049359A (zh) * | 2014-04-29 | 2015-11-11 | 英特尔公司 | 用于分布式路由表查找的技术 |
-
2016
- 2016-01-13 CN CN201610020895.4A patent/CN107094114A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103842990A (zh) * | 2011-07-06 | 2014-06-04 | 华为技术有限公司 | 基于索引的虚拟寻址的方法和设备 |
CN103020281A (zh) * | 2012-12-27 | 2013-04-03 | 中国科学院计算机网络信息中心 | 一种基于空间数据数值索引的数据存储与检索方法 |
CN104283906A (zh) * | 2013-07-02 | 2015-01-14 | 华为技术有限公司 | 分布式存储系统、集群节点及其区间管理方法 |
CN105049359A (zh) * | 2014-04-29 | 2015-11-11 | 英特尔公司 | 用于分布式路由表查找的技术 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187659A (zh) * | 2020-04-24 | 2021-01-05 | 谷歌有限责任公司 | 用于减轻多路径网络中的散列相关性的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3057270A1 (en) | Technologies for modular forwarding table scalability | |
CN105049359B (zh) | 用于分布式路由表查找的分布式路由器的入口计算节点和机器可读介质 | |
CN104769884B (zh) | 利用流数据的转发表优化 | |
US8515965B2 (en) | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors | |
CN103312615B (zh) | 使用可变数量前缀的最长前缀匹配搜索 | |
US20140280823A1 (en) | Wire-speed pending interest table | |
JP5518135B2 (ja) | データセンター向けの拡張可能なマルチキャスト転送方法および装置 | |
CN108462594B (zh) | 虚拟专有网络及规则表生成方法、装置及路由方法 | |
US8989193B2 (en) | Facilitating insertion of device MAC addresses into a forwarding database | |
US20130041982A1 (en) | Method and node for acquiring content and content network | |
US20140064093A1 (en) | Hashing-based routing table management | |
KR20130050356A (ko) | 스위치 시스템, 스위치 제어 방법 및 기억 매체 | |
US8923291B2 (en) | Communication apparatus and communication method | |
CN111147372B (zh) | 下行报文发送、转发方法和装置 | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
TWI638554B (zh) | 用於網路交換機中的可擴展且靈活的表格搜索的裝置和方法 | |
JP2018518925A (ja) | パケット転送 | |
CN108400922B (zh) | 虚拟局域网络配置系统与方法及其计算机可读存储介质 | |
Ruia et al. | Flowcache: A cache-based approach for improving SDN scalability | |
CN107094114A (zh) | 用于模块化转发表可缩放性的技术 | |
JP5814830B2 (ja) | フロー単位パケット転送のための宛先検索装置および検索方法 | |
Deepa et al. | Routing Scalability in Named Data Networking | |
JP2010177942A (ja) | ルータ装置 | |
Ganegedara et al. | 100+ Gbps IPv6 packet forwarding on multi-core platforms | |
CN114448892A (zh) | 一种软硬件选路方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170825 |