用于网络交换机的负载平衡哈希计算的制作方法

文档序号:8001091阅读:365来源:国知局
专利名称:用于网络交换机的负载平衡哈希计算的制作方法
技术领域
本公开整体上涉及通信系统,以及更具体地涉及在计算设备或网络设备处计算用于数据单元的哈希值。
背景技术
现今,哈希函数广泛用于向较小集合中的值映射较大集合中的数据的各种计算应用中。例如,相对较长的比特序列可以作为针对数学函数的输入而被提供,以便生成用作针对数据库表的索引的较短比特序列。哈希尤其适用的一个应用领域是网络交换。通常,网络交换机(switch)可以通过多个端口接收并传输数据分组。在某些情况下,可以存在为了将数据分组适当地转发至其目的地而经由其传输分组的不止一个可能的网络链路。而且,网络链路有时会有目的地进行聚集,以便在通信设备或网络之间提供更多的带宽。为了定义较宽的通信信道而将链路归组在一起公知为链路聚集(LAG)。在多个链路向网络交换机呈现均等地有吸引力的路由选择的那些情况下,路由技术典型地称为等开销多路径(ECMP)路由。

发明内容
一种用于避免通信网络中的极化的方法的实施方式包括在包括在通信网络中的网络设备处接收数据单元,其中网络设备与包括在通信网络中并具有多个通信链路的链路聚集群组相关联。该方法进一步包括基于包括在数据单元中的信息来确定初始关键码;基于初始关键码,通过使用在通信网络内对于网络设备而言是唯一的去极化器来生成去极化的初始关键码;以及在去极化的初始关键码上执行哈希函数,以获得用于数据单元的哈希值。该方法附加地包括基于哈希值来确定链路聚集群组中的特定通信链路;以及引起数据单元通过特定通信链路进行传输,从而减小通信网络中的极化。一种用于避免通信网络中的极化的网络设备的实施方式包括第一网络接口,配置用于接收数据单元,以及哈希值生成器,配置用于基于数据单元来生成哈希值。哈希值生成器包括去极化的关键码生成器,配置用于基于向初始关键码应用的去极化函数来生成去极化的初始关键码,其中初始关键码基于包括在数据单元中的信息的至少部分,以及去极化函数这样定义,以使得针对相同业务流的不同数据单元生成去极化的初始关键码。哈希值生成器附加地包括哈希函数,配置用于基于去极化的初始关键码和数据单元来生成哈希值。此外,网络设备包括选择器,配置用于基于哈希值来选择特定通信链路,以及第二网络接口,用于经由特定通信链路从网络设备传出数据单元。一种用于避免通信网络中的极化的系统的实施方式包括通信网络中的多个网络设备,其中每个网络设备包括网络接口,用于接收数据单元,以及哈希值生成器,用于基于数据单元来生成哈希值。哈希值生成器包括去极化的关键码生成器,用于基于向初始关键码应用的去极化函数来生成去极化的初始关键码,其中初始关键码基于包括在数据单元中的信息的至少部分,以及其中去极化函数在通信网络内对于每个网络设备而言是唯一的。 哈希值生成器进一步包括哈希函数,用于基于去极化的初始关键码和数据单元来生成哈希值。该系统附加地包括链路选择器,用于基于哈希值来选择通信链路,以从每个网络设备传出数据单元。


图1是根据一个实施方式、其中的网络设备应用在此处讨论的哈希计算技术的通信网络的框图。图2是根据一个实施方式、在图1的网络设备中实现的示例哈希值生成器的框图。图3A和图;3B是根据一个实施方式、示出了包括在图2的哈希值生成器中的重映射(remapping)函数或表的示例的框图。图4是根据一个实施方式、示出了由图2的哈希值生成器生成的哈希值的示例应用的框图。图5是根据一个实施方式、在图1的网络设备中实现的示例哈希值修改器的框图。图6是根据一个实施方式、由图1的一个或若干网络设备实现的、用于避免通信网络中的极化(polarization)的示例方法的流程图。图7是根据一个实施方式、由图1的一个或若干网络设备实现的、用于对通信网络中的业务进行负载平衡的示例方法的流程图。图8包括具有虚拟端口并且配置用于跨网络设备的虚拟端口集合进行负载平衡的示例网络交换机或设备的框图。图9是根据一个实施方式、由图1或图8的一个或若干网络设备实现的、用于对网络设备中的业务进行负载平衡的示例方法的流程图。
具体实施例方式图1是根据一个实施方式的示例通信网络10的框图,其中若干网络设备ND1, ND2,.. . ND6处理在外部网络12与内部网络14之间的数据流。网络10利用下述讨论的多路径负载平衡。在各种实施方式中,网络设备ND1-ND6可以是相同类型或不同类型,并且包括工作组交换机、其他类型的交换机、路由器,或具有数据处理能力的任何其他适当设备。在一个实施方式中,网络设备ND1-ND6中的每个网络设备包括相应的哈希值生成器16a-16f, 其实现至少某些下述讨论的技术。在操作中,网络设备ND1在相应的端口 PI、P2和P3 (在此处一般地称为“接收端口”或“源端口”Pk)接收经由通信链路18、20和22从外部网络12向内部通信网络14行进
6的数据单元(诸如分组或帧)。网络设备ND^S由对应的端口 P4、P5和P6(在此处一般地称为“传输端口”或“目的地端口”PT)以及最终经由相应的通信链路对、26和观向网络设备ND2或ND3转发接收的数据单元。网络设备ND1由此具有与通信链路18、20和22耦合的接收接口(也称为“接收网络接口”),以及与通信链路对、26和观耦合的传输接口(也称为“传输网络接口”)。在某些场景中,负载平衡网络10的路由配置是这样的,使得网络设备ND1选择端口 Ρ4、Ρ5或Ρ6之一来适当地向内部网络14中的数据分组目的地导引该数据分组。然而,由于通信链路Μ-28中的每个通信连路具有有限的带宽,因此网络设备ND1应用负载平衡技术来在链路M-观中的适当链路中分发接收的分组。换言之,网络设备ND1选择与适当链路对应的端口之一。为此,在一个实施方式中,网络设备ND1利用哈希值生成器 16a来使用特定于该网络设备ND1的参数生成有效的哈希值。向链路选择器应用该哈希值, 以便在数据分组沿其行进的链路聚集群组(例如,链路M,26,观)中选择通信链路。某些技术通常产生交换机内极化,或者称为针对用于某些分组类型的适当链路群组中特定链路的“偏爱”。此外,当多个网络交换机作为负载平衡网络中的相应跳(hop)进行操作时,可以在每一跳进行相同的负载平衡决策,由此产生了交换机间极化,或称为对通过负载平衡网络的特定路径的偏爱。至少某些实施方式的哈希值生成器16a避免了链路极化和/或交换机间极化,并且改善了数据分组在通信链路间的整体分发平衡,由此增大了网络带宽并减小了延迟。尽管图1示出了网络设备ND1-ND6的特定实施方式,但是这些网络设备ND1-ND6的每个网络设备包括任何适当数量的端口,以及网络设备ND1-ND6中的至少某些网络设备具有不同的端口数量。在某些实施方式、配置和/或场景中,网络设备ND1-ND6的某些或全部通过移除和/或添加在对应通信协议栈的一个或若干协议层处的协议报头来执行某些分组的协议转换。在各种实施方式中,或作为一个示例,链路18-22对应于不同的物理通信信道,诸如,网络线缆、无线频带等,或诸如数字信号I(DSl)线路的时隙之类的逻辑信道。在各种实施方式中,类似地,端口 P1-P3对应于网络设备ND1的物理或逻辑资源。如图1中所示,链路 18携带一个或多个数据流30-34。典型地但不是必须地,数据流30-34中的每个数据流是双向流,包括从网络12向网络14行进的数据(或称为传入数据)和从网络14向网络12行进的数据(或称传出数据)。在一个实施方式中,链路20和22也携带一个或若干数据流。 在一个实施方式中,数据流30-34中的某些数据流与链路18-22中的不止一个链路相关联。在某些实施方式和/或场景中,数据流30-34与不同的通信协议相关联,该不同的通信协议诸如,网际协议(IP)上层叠的传输控制层(TCP)(下文称“TCP/IP”)、层叠在IP上的用户数据报协议(UDP)(下文称“UDP/IP”)、文件传输协议(FTP)、超文本传输协议(HTTP) 等。例如,在一个场景中,数据流30对应于FTP,数据流32对应于远程登录(Telnet),以及数据流34对应于HTTP。此外,在某些场景中,数据流30-34中的某些数据流对应于与相同通信协议相关联的不同会话。典型的网络链路还包括简单邮件传送协议(SMTP)、结构化查询语言(SQL)和与电子邮件收发、web浏览、数据库应用、远程登录和其他应用类型相关联的若干附加数据流。操作者可以配置网络设备ND1-ND6,以处理数据流以及在各种协议栈的其他层上路由数据流。在某些场景中,数据流30-34中的每个数据流包括对应于各种通信协议层的连接、多个流或会话。注意,某些协议,诸如TCP,是面向连接的,而诸如UDP之类的的其他协议是无连接的。在一个示例场景中,网络12上的外部主机通过与网络14上的本地主机建立具有两端特定地址和端口组合的TCP连接而连接网络14上的本地主机。此连接由部分指定外部主机地址、本地主机地址、外部主机端口和本地主机端口的TCP报头标识。个体TCP/ IP分组携带与相同的连接或通信会话相关联的一定信息量或信息块。另一方面,在另一示例场景中,主机配对使用UDP协议来交换个体消息或数据报文,而不用建立连接。由此,在某些场景中,数据流30-34中的每个数据流包括一个或多个流,诸如包括与单个数据交换相关联的多个分组或者在其整体中传达个体消息的单个分组的TCP流。在以下讨论的示例中,数据流一般地表示两个或更多主机之间、包括诸如数据分组或帧的一个或多个数据单元的单向或双向数据交换。继续参考图1,示例数据分组40属于TCP/IP流34,以及作为示例,在相对于内部网络14的传入方向中行进。数据分组40包括报头42和载荷44。通常,报头42对应于协议栈的一个或多个层,以及在某些情况下,报头42将对应的分组标识为属于特定的面向连接的或无连接的数据流。在以下示例中,报头42表示在传输层(即,开放系统互联(OSI) 七层模型中的层4(L4))上的载荷之前的所有信息。然而,在各种实施方式中,如果期待的话,报头42包括一直到应用层报头且包括该应用层报头的所有报头,或者相反地,包括少于OSI模型的层2(L2)、层3(L3)和L4的报头。通常,通过负载平衡网络10行进的数据分组具有与对应的协议(例如,在数据分组40情况下的TCP/IP) —致的适当期待长度。此外,在某些实施方式中,数据分组40的长度是操作员可配置的,以便适应网络设备ND1-ND6的特定需求。在某些实施方式中,网络设备ND1-ND6在未定义特定长度分组的协议层或协议上操作。在这种意义上,个体分组是数据分组或数据量的任何逻辑指示。在某些实施方式中,术语“分组”或“数据单元”简单地表示出于由网络设备ND1-ND6之一生成哈希值的目的而对特定流上的数据进行的分组。另一方面,在其他实施方式中,这些术语中的每个术语表示对包括在通信协议的两个或更多帧中的数据的分组。在一个实施方式中,例如,单个数据分组包括多个TCP帧。接着,图2是哈希值生成器16a_16f的每个哈希值生成器的示例高层架构的框图。 为了讨论清楚,此处的讨论总体上涉及哈希值生成器“16”,尽管原理和技术适用于图1的任何哈希值生成器16a-16f,或者适用于其他适当的哈希值生成器。通常,在一个实施方式中,每个哈希值生成器16a-16f的架构符合图2的哈希值生成器16。然而,在某些实施方式中,哈希值生成器16a_16f中的一个或多个哈希值生成器与通信网络10中的其他哈希值生成器不同。例如,在一个实施方式中,特定的哈希值生成器省略图2中所示的一个或多个框,或者不同哈希值生成器16a-16f所利用的一个或多个参数在网络100内是唯一的。总体上参考图2,哈希值生成器16的某些部件使用硬件、微代码、处理器执行的软件指令、处理器执行的固件指令或者其组合实现。在一个实施方式中,哈希值生成器16实现在包括于印刷电路板卡设备上的专用集成电路(ASIC)中,其中该印刷电路板卡设备具有与外围部件互联(PCI)或类似标准兼容的接口。在一个实施方式中,参考图2,哈希值生成器16配置用于基于数据单元或分组102 来确定用以确定哈希值115的关键码(key) 110。在一个实施方式中,哈希值生成器16配置关键码110,以实现负载平衡和/或减小网络设备本身内的(例如,“交换机内”或“设备内”)和通信网络10内(例如,“交换机间”或“设备间”)的极化。在一个实施方式中,哈希值生成器16包括在接收的数据单元或分组102上操作的初始关键码生成器100。在操作期间,该初始关键码生成器在接收的数据单元或分组102的 Nb个输入字节(或“输入数据”)上操作,以生成长度为Nb的初始关键码105。初始关键码 105包括包含在数据单元或分组102中的字节串,以及在某些实施方式中,初始关键码105 包括附加信息,诸如数据单元或分组102经由其进入网络设备的源端口标识。在某些实施方式中,串长度(例如,(Nb))等于信息的70个字节。然而,在其他实施方式中,利用其他适当的Nb值。在一个实施方式中,初始关键码105包括源字段,其内容对应于从其接收数据单元或分组102的源,以及目的地字段,其内容对应于向其传输数据单元或分组102的目的地。源字段和目的地字段涉及任何适当的源和目的地,并且具有适当的格式,例如,源和目的地IP (网际协议)地址字段,源和目的地MAC (媒体访问控制)地址字段,源和目的地虚拟端口标识,源和目的地物理端口标识等。在一个实施方式中,哈希值生成器16包括初始关键码修改器108。通常,初始关键码修改器108以公知的方式修改初始关键码105,以生成修改的关键码110,其支持哈希值生成器16生成跨通信网络10和/或跨特定网络设备ND1-ND6的去极化的和/或负载平衡的业务。由此,修改的关键码110可以在此处互换地称为去极化的初始关键码。在一个实施方式中,在每个特定网络设备ND1-ND6*,初始关键码修改器108引入对初始关键码105 的一致修改,从而使得每个初始关键码105在给定设备ND1-ND6处进行了一致的修改。在此实施方式中,每个设备ND1-ND6具有由初始关键码修改器108引入的不同的一致修改。在一个实施方式中,初始关键码修改器108包括对称关键码改变器112,此处也称为“对称关键码生成器”。该对称关键码改变器112配置用于修改初始关键码105,以产生修改的关键码110,从而使得在特定网络设备处针对用于双向业务的特定初始关键码105产生公共的哈希值。即,对于给定的初始关键码105,被寻址以在网络设备ND1和ND5之间行进的分组,生成相同的公共哈希值,无论ND1是分组的源还是ND1是分组的目的地。因此,在通信网络10中的所有网络设备ND1-ND6中的每个网络设备都包括对称关键码改变器112的实施方式中,特定流(例如,流30-34)的分组沿着贯穿网络100的相同路径行进。在一个实施方式中,特定流的所有分组在沿着贯穿网络100的相同路径的两个方向中行进。以此方式,网络设备ND1-ND6之间的业务跨通信网络10得到负载均衡。在一个实施方式中,对称关键码改变器或生成器112基于可交换函数来修改初始关键码105的两个不同字段,以产生包括两个对应的对称关键码字段的修改的关键码110。 在一个实施方式中,对称关键码字段允许在不考虑两个不同初始关键码字段的顺序的情况下生成公共的哈希值。在一个示例实施方式中,从两个初始字段生成的两个对称字段对应于表达式对称字段1 =可交换运算(初始字段1,初始字段2、 (1)对称字段2 =常数或(对称字段1的导数(derivative)) (2)在一个实施方式中,新的对称字段(例如,对称字段1和对称字段幻包括在修改的关键码Iio中,以及修改的关键码110作为针对哈希值确定器108的输入被提供,以生成对应的哈希值115。归因于修改的关键码110的字段对称性,由哈希值确定器108生成的作为结果的哈希值115是对于相同流的业务的双方向(例如,对于具有相同初始关键码105的分组)的公共哈希值。网络设备使用该公共哈希值来选择数据单元或分组102将在其上传输或转发的链路,由此贯穿网络10产生了对称的负载,而不考虑初始字段的顺序。在一个实施方式中,对称关键码改变器或生成器112根据以下表达式修改初始源字段和初始目的地字段,以产生修改的对称源字段和目的地字段对称源字段=(初始源字段+初始目的地字段)(3)对称目的地字段=0(4)在此实施方式中,可交换函数是加法或加性(additive)函数,尽管在其他实施方式中,其他可交换函数(例如,乘法等)可以由对称关键码改变器112使用。类似地,在此实施方式中,对称目的地字段设置为0,而在其他实施方式中,对称目的地字段设置为任何适当常数值,或者设置为对称源字段的导数。在此实施方式中,初始源字段和目的地字段有效地独立于任何特定的OSI层,以及由此,初始源字段和目的地字段可以对应于任何适当的寻址或标识机制,诸如IP地址、MAC地址、虚拟端口标识符、物理端口标识符等。在某些实施方式中,在哈希值生成器16中包括对称关键码改变器或生成器112提供了贯穿通信网络10的对称延迟,以及由此增大了业务流针对负载平衡的可预测性。另外,在某些实施方式中,对称关键码改变器112允许使用单个抽头(tap)(例如,监控抽头) 在网络设备处截获业务,以及提供容易的业务分析和较深的分组检查。在一个实施方式中,哈希值生成器16包括字段选择器118。在一个实施方式中,字段选择器118基于哈希掩码120来确定数据单元102的比特或字节的子集。例如,字段选择器118利用哈希掩码120对未选择的输入字节进行掩码,即,忽略(zero out)未选择的字节,或者利用预定义的值替换这些字节,以便生成修改的关键码110。作为示意示例,数据单元或分组102在第一若干位置处包括字节0xA3 0xD4 0x36 0xF3 0x55...(其中“Ox”表示十六进制表征),哈希掩码120开始于比特11001...,以及字段选择器118相应地输出0xA3 0xD4 0x00 0x00 0x55。以此方式,掩码120选择性地开启或关闭数据单元102的NB个输入字节中的个体字节,以及由此控制使用哪些字段(例如,报头42中的字段,与设备(例如,设备冊工等)的某些参数相关联的字段)来生成哈希值。在一个实施方式中,哈希掩码 120是基于分组类型(例如,MPLS (多协议标签交换)、IPv4 (网际协议版本4)、IPv6 (网际协议版本6)等)选择的。在一个实施方式中,哈希值生成器16包括在初始关键码105上操作的极化避免单元122。在一个实施方式中,极化避免单元122包括去极化的关键码生成器,其基于初始关键码105来形成修改的关键码110。通常,对于给定的网络设备,极化避免单元122被配置以允许网络设备针对特定流(例如,图1的流30-34之一)的所有分组生成相同的公共哈希值。在另一网络设备处针对特定流生成不同的哈希值,以及仍然在给定设备处和通信网络10内的其他网络设备处针对不同流生成不同的哈希值。在一个实施方式中,极化避免单元122生成的修改的关键码110引起哈希值确定器108生成哈希值115,从而使得交换机间业务极化得以避免。由此,修改的关键码110在此处可以互换地称为“去极化的初始关键码”或“去极化的关键码”。去极化的关键码110是通过向例如初始关键码105或初始关键码105的选定字段应用去极化函数或去极化器125而生成的。在一个实施方式中,去极化器125的去极化函数是对于具有相同参数值集合(例如,相同的源字段和相同的目的地字段)的分组或数据单元而言公共的去极化器。
在一个实施方式中,去极化函数或去极化器125是实质上双射(bijective)的函数。注意,双射函数是从集合X到集合Y的函数f,其特性在于,针对Y中的每个y,X中严格地存在一个χ从而使得f(x) =y。例如,去极化函数125是异或O(OR)函数、重映射 (remapping)函数、诸如unique salt (盐)或seed(种子)的加性函数等。在此实施方式中,归因于去极化函数或去极化器125的双射特性,每个网络设备ND1-ND6针对给定的数据单元或分组102产生不同的哈希值115。在通信网络10内,每个哈希值115具有实质上或功能上唯一的合理概率。由此,在一个实施方式中,在网络10内避免了网络业务的交换机间或设备间极化。在一个实施方式中,极化避免实体122的去极化函数或去极化器125基于双射重映射表或函数200,诸如图3A和图;3B中所示。在图3A中,表或函数200向输出205的唯一字节205a-205n重映射输入202的(例如,初始关键码105的)每个字节20加-20211。在此实施方式中,重映射表或函数200的输出205是输入202的置换(permutation),并且包括输入202的所有值。由于表200是双射的,因此在输入值202和输出值205之间存在一对一映射。在一个实施方式中,该一对一映射是随机或伪随机生成的。图3B中示出了基于表 200向示例输出比特流212重映射示例输入比特流210的图示。在另一实施方式中,去极化函数或去极化器125是与初始关键码105结合的salt 或seed。在此实施方式中,salt或seed是在通信网络10中对于特定网络设备而言唯一的比特系列。即,通信网络10内的每个网络设备ND1-ND6包括由其相应的哈希值生成器 16a_16f使用的相应的唯一 salt或seed。在某些实施方式中,网络10中的每个salt是随机生成的或伪随机生成的。在某些实施方式中,salt或seed是用户可配置的。salt或 seed可以是任意数量的比特,并且可以以任何方式与初始关键码105结合,诸如通过向初始关键码105附接salt,通过向初始关键码105预悬挂salt,或者通过在初始关键码105 的比特或字节内交织salt的比特或字节。在某些实施方式中,将salt与初始关键码105 进行结合是实质上双射的函数,例如,salt与初始关键码105的结合对于除了比特的子集 (诸如,最后一些比特)之外的所有比特而言是双射的。在一个实施方式中,salt包括数量与初始关键码105相同的字节,以及salt是逐字节地向初始关键码105添加的,以根据以下表达式形成去极化的关键码110 去极化的关键码[i]=初始关键码[i]+salt[i] (5)其中,i表示特定字节。在此实施方式中,由于通信网络10内的每个网络设备 ND1-ND6包括唯一的salt或seed,因此每个网络设备ND1-ND6针对具有相同初始关键码105 的分组生成不同的去极化的关键码。因此,随着不同的去极化关键码用于确定在每个网络设备ND1-ND6处的传输端口或通信链路,跨网络针对具有相同初始关键码105的分组选择不同的传输端口或通信链路,使得对网络业务去极化。返回图2,在所示实施方式中,初始关键码修改器108包括对称改变器112,其输出利用字段选择器118进行掩码,字段选择器118的输出继而通过去极化避免单元122进行去极化,从而产生了向哈希值确定器108输入的修改的关键码110。然而,在哈希值生成器 16的其他实施方式中,省略了实体112、118和122中的一个或多个实体。在某些实施方式中,附加地或备选地,实体112、118和122向初始关键码105应用的操作顺序不同于图2中所示的顺序。在一个示例中,通过仅用对称改变器112修改初始关键码105来生成修改的关键码110 ;在另一示例中,通过利用字段选择器118和极化避免实体122修改初始关键码 105来生成修改的关键码110 ;以及在另一实施方式中,仅利用极化避免单元122来修改初始关键码105。不过,为了优化通信网络10内的负载平衡和去极化,通信网络10的每个网络设备ND1-ND6的哈希值生成器16a-16f包括与从实体112、118和122选择的实体或实体集合相同的实体或实体集合,尽管不是必须存在这种一致。在一个实施方式中,哈希值确定器108在修改的关键码110上操作以及基于哈希函数1 来生成哈希值115。在一个实施方式中,向修改的关键码110应用的哈希函数1 在每个网络设备ND1-ND6处是相同的公共哈希函数128。典型地,哈希函数1 生成的哈希值115在长度上短于修改的关键码115的长度。在一个实施方式中,向客户端130提供哈希值,以用于处理或转发数据单元或分组。在一个实施方式中,客户端130包括在网络设备上,以及客户端130可以包括在与哈希值生成器16相同的固态设备或不同的固态设备上。 哈希值115的客户端130的类型示例包括例如路由器、端口汇聚、单个干线、层2ECMP、入口表、TCAM(三态可寻址存储器)等。在一个实施方式中,如之前所讨论的,哈希值115由客户端130用于选择在其上传输数据单元102的通信链路。由此,在某些实施方式中,哈希值115配置用于实现通信链路的选择,以平衡业务负载以及避免网络10内的极化。在一个实施方式中,哈希函数128 配置用于生成哈希值115,其长度足以避免字段间的重叠,以便跨通信链路提供业务的均勻 (uniform)分发或者业务分发的足够均勻性的期待水平,从而避免网络设备极化。在一个实施方式中,哈希函数1 包括循环冗余校验(CRC)生成器,诸如输出长度为32比特的哈希值115的CRC32生成器。如图4中示意性所示,在一个实施方式中,客户端130是出口接口表160,以及哈希值生成器16生成的哈希值115用作针对出口接口表160的索引。再次参考图1,网络设备 ND1基于报头42确定在该处接收数据分组40的进入端口,或者使用任何其他适当信息,确定数据分组40属于具有1个成员(即,链路)的链路聚集群组g。再次参考图4,网络设备 ND1的选择器162向哈希值115应用函数,以生成针对表160的索引。在一个实施方式中, 向哈希值115应用的函数是索引=(哈希值)* Λ2η),(6)尽管其他适当函数可以向哈希值115应用。在一个实施方式中,网络设备ND1继而使用生成的索引来选择出口接口表160的行g处、指定将在其上传播数据分组40的链路的条目。在其他实施方式中,出口接口表160的条目指定特定的虚拟目的地端口。在这些实施方式中,网络设备ND1确定将向具有ν个成员的虚拟端口群组转发数据分组40,以及选择器162基于虚拟端口 ν的数量向哈希索引115应用函数,以生成针对表160的索引。网络设备ND1继而使用生成的索引来选择出口表160的行ν处、指定用于数据分组40的虚拟目的地端口的条目。虚拟端口继而向一个或多个物理端口映射,以及数据分组40经由该一个或多个物理端口传出。虚拟端口技术在下文进行更详细讨论。尽管出口接口表160是哈希值115的客户端的一个示例,但是在某些实施方式中, 网络设备ND1包括哈希值115的一个或多个其他客户端。如在此涉及的,哈希值115的“客户端”是网络设备内(例如,网络设备NDift)的实体或函数,其使用哈希值115来执行一个或多个函数,以便处理、转发或分析数据单元或分组。例如,如以上讨论的,出口接口表160 使用哈希值115来确定用于选择链路的索引。在各种实施方式中,哈希值115的其他客户端包括DRAM成员选择器、路由器引擎、层2等开销多路径(ECMP)确定器、端口汇聚、单个干线、或者包括在网络设备ND1中的某个其他实体。通常,哈希函数1 配置用于生成哈希值 115,其长度足以服务网络设备内的哈希值115的所有客户端。在某些实施方式中,哈希值115被修改,以实现业务的负载平衡和/或去极化(例如,“交换机内”负载平衡和/或“交换机内”去极化)。图5描绘了哈希值修改器220,其配置用于基于哈希值115来确定由图2的客户端130使用的修改的哈希值222。在一个实施方式中,哈希值修改器220生成修改的哈希值222,以实现交换机内负载平衡和/或交换机内去极化。总体上参考图5,哈希值修改器220的某些部件使用硬件、微代码、处理器执行的软件指令、处理器执行的固件指令或其组合实现。在一个实施方式中,哈希值修改器220 在包括在印刷电路板上的专用集成电路(ASIC)中实现。在一个实施方式中,哈希值修改器 220和哈希值生成器16包括在配置为分组处理器的相同ASIC或固态设备中,以及在另一实施方式中,哈希值修改器220和哈希值生成器16包括在不同的ASIC或固态设备中。参考图5,哈希值修改器220包括哈希比特选择器225。在一个实施方式中,哈希值比特选择器225配置用于基于客户端130的身份或类型来选择待包括在修改的哈希值222 中的哈希值115的比特子集。在一个示例实施方式中,哈希比特选择器220针对包括在网络设备(例如,ND1)中的不同客户端或不同客户端类型选择比特的不同的互斥子集,从而使得向不同的客户端提供不同的修改的关键码,即使每个不同的修改的关键码基于公共的原始哈希值115。在某些实施方式中,客户端130通过预悬挂、附接或交织期待数量的0,期待数量的1或0和1的预定组合来填充其相应的比特子集。利用哈希比特选择器220,由于哈希值115的不同客户端使用其相应的修改的关键码来选择输出端口或通信链路,因此业务针对哈希值115的所有客户端、跨链路聚合群组(以及,因此,与之对应的输出端口)进行分发,从而实现交换机内负载平衡和交换机内去极化。在某些实施方式中,哈希值修改器220包括哈希比特替换器228。哈希比特替换器2 典型地包括在这样的场景中,其中,基于客户端130的类型或身份,需要修改的哈希值222长度相对较短,从而使得满足严格的负载平衡需求。在这些场景中,哈希比特替换器 228利用随机或伪随机生成的数字、递增的索引、以轮询方式选择的数字或基于某些其他信息的数字来替换哈希值115。例如,哈希比特替换器2 利用以轮询方式选择的数字替换哈希值115,以生成用于提供基于分组的负载平衡的修改的哈希值222。在另一示例中,哈希比特替换器2 利用随机或伪随机生成的数字来替换哈希值115,以生成用于提供均勻分发的修改的哈希值222。在又一示例中,哈希比特替换器2 利用传输至少一定量的数据业务的链路的指示来替换哈希值115,以生成用于提供接近完美的字节分发的修改的哈希值 222。注意,在某些实施方式中,通过使用哈希比特替换器2 来修改哈希值115,数据单元或分组不按顺序到达其目的地,所以在严格的负载平衡和分组顺序的维护之间存在权衡。在某些实施方式中,哈希值修改器220包括大小确定器230。为了生成位于期望范围或期望大小的索引,大小确定器230配置用于通过调整哈希值115的长度修改哈希值 115,以形成供客户端130使用的修改的哈希值222。在一个实施方式中,大小确定器230基于客户端130需要的哈希值222的大小来调整哈希值115的大小或长度。例如,如果客户端
13130是图4的出口接口表160,则大小确定器115基于包括在与网络设备(例如,ND1)对应的链路聚集群组中的通信链路总数量来调整哈希值115的长度,以形成修改的哈希值222。 考虑哈希值115的长度为η比特以及客户端130需要位于Z与y (包含性的,其中Z通常但不必须地是0)之间的修改的哈希值的示例,其中修改的哈希值的范围对应于与通信链路的总数量对应的范围。在此示例中,大小确定器230向Z和y(包含Z和y)之间的修改的哈希值映射哈希值115的可能的2n个值中的每一个。例如,大小确定器230可以根据以下函数来映射哈希值115的值f (χ) =x modulo (y+1) (7)或者根据函数g(x) = x*(y+l)n+Z (8)在其他情况中,大小确定器230可以使用其他适当的函数。业务不平衡可以发生在链路数量和修改的哈希值的范围不同时。在一个实施方式中,为了解决可能的业务不平衡,哈希值生成器16的哈希函数1 配置用于生成哈希值 115,以实现更均勻的分发以及校正链路数量和修改的哈希值的范围之间的可能不平衡。例如,哈希函数1 配置用于生成哈希值115,其长度足够跨链路数量而提供数据单元业务分发的期望水平。大小确定器230继而可以用于将哈希值115的整体长度缩小为客户端130 所需的长度(例如,大小确定器生成短于哈希值115的修改的哈希值222)。在图5的实施方式中,哈希值修改器220包括哈希比特选择器225,其输出由哈希比特替换器2 进行操作,哈希比特替换器2 的输出继而由大小确定器230进行操作,从而产生了向客户端130提供的修改的哈希值222。然而,在哈希值修改器220的其他实施方式中,省略了实体225、228、230中的一个或多个实体。附加地或备选地,在某些实施方式中,实体225、2观和/或230对哈希值115的操作顺序不同于图5中所示的实施方式。例如,在一个实施方式中,修改的哈希值222通过仅使用哈希比特替换器2 修改哈希值115 来生成;在另一实施方式中,修改的哈希值222通过利用哈希比特选择器225和大小确定器 230 二者修改哈希值115来生成;而在又一实施方式中,初始关键码105仅通过哈希比特选择器225或仅通过大小确定器230来进行修改。图6是根据一个实施方式、用于避免通信网络10中的极化的示例方法250的流程图。在某些实施方式中,方法250单独利用哈希值生成器16(参见图幻实现,或者通过哈希值生成器16与对应的网络设备ND1-NDd参见图1)的其他部件的合作实现。在一个实施方式中,方法250结合图5的哈希值修改器220进行操作。在框252处,诸如数据分组40的数据单元在实现方法250的网络设备(例如,网络设备ND1)的某个端口&处接收。接着,在框255处,基于包括在接收的分组或数据单元中的信息来确定初始关键码。在一个实施方式中,初始关键码包括数据单元或分组的源和目的地的指示。在框258处,在一个实施方式中,根据初始关键码生成修改的关键码。在一个实施方式中,修改的关键码是去极化的初始关键码,其中去极化的初始关键码被配置,从而使得在利用去极化的初始关键码时,网络10内的网络业务的极化小于在使用初始关键码时的交换机间极化。在某些实施方式中,基于初始关键码生成去极化的初始关键码(框258)包括向初始关键码应用双射的或实质上双射的函数。在各种实施方式中,双射的或基本上双射的函数例如是加法或加性函数、重映射函数、异或O(OR)函数或任何适当的双射函数。在一个实施方式中,向初始关键码应用双射的或实质上双射的函数包括以逐字节的方式向初始关键码的相应字节添加salt或seed的字节。在一个实施方式中,salt或seed是随机或伪随机生成的比特序列,以及在某些实施方式中,随机或伪随机生成的比特序列的长度等于初始关键码的长度。在一个实施方式中,包括在通信网络10中的每个网络设备ND1-ND6包括在通信网络10内是唯一的不同salt或seed。由此,在包括在通信网络10中的每个不同网络设备处生成不同的去极化初始关键码(框258)。例如,针对相同的分组,在第一网络设备ND1处生成第一去极化的初始关键码,以及在第二网络设备ND2处生成不同的、第二去极化的初始关键码。在一个实施方式中,在框260处,基于去极化的初始关键码来确定与数据单元或分组对应的哈希值。例如,诸如哈希函数128的哈希函数在去极化的初始关键码上操作以产生哈希值。在一个实施方式中,通信网络10的每个网络设备ND1-ND6包括相同的公共哈希函数。在一个实施方式中,在可选的框262处,在框260处确定的哈希值(例如,原始哈希值)被进一步修改,以避免或减小网络设备内的极化或交换机内极化。例如,原始哈希值被修改,以通过选择哈希值的比特子集来生成修改的哈希值。在一个实施方式中,基于哈希值的客户端的身份或类型来确定选定的比特的子集。例如,出口表客户端仅需要70个字节长的修改的关键码中的8个字节,所以选择哈希值的8个比特以形成修改的哈希值。在一个实施方式中,比特或字节的互斥子集向哈希值的客户端的相应类型或相应客户端进行映射。在一个实施方式中,省略框262。在框265处,确定经由其从网络设备传出或传输数据单元或分组的通信链路。在一个实施方式中,基于在框260处确定的哈希值(或者如果包括可选的框沈2,则基于在框 262处确定的修改的哈希值)来确定通信链路。在一个实施方式中,(修改的)哈希值的客户端基于(修改的)哈希值来执行一个或多个函数,其在网络设备内执行以转发数据单元或分组。例如,如果客户端是出口接口表(诸如,出口接口表160),则出口接口表160将 (修改的)哈希值用作索引以确定经由其传输分组的特定虚拟端口、物理端口或通信链路。 在一个实施方式中,特定通信链路或端口是或者对应于包括在与网络设备对应的链路聚集群组中的多个通信链路之一。在框268处,引起分组从网络设备进行传输。在一个实施方式中,诸如数据分组40 的数据单元经由实现方法250的网络设备(例如,网络设备ND1)的某个端口 Pt例如通过在框265处确定的特定通信链路进行传输。图7是根据一个实施方式、用于对通信网络10中的业务进行负载平衡的示例方法 300的流程图。在某些实施方式中,方法300单独利用哈希值生成器16(参见图幻实现,或者通过哈希值生成器16与对应的网络设备(ND1-ND6)(参见图1)的其他部件的合作实现。 在一个实施方式中,方法300结合图5的哈希值修改器220和/或结合图6的方法250进行操作。在框302处,诸如数据分组40的数据单元在实现方法300的网络设备(例如,网络设备ND1)的某个端口&处接收。接着,在框305处,基于包括在接收的分组或数据单元中的信息来确定初始关键码。在一个实施方式中,初始关键码包括数据单元或分组的源和目的地的指示。在框308处,在一个实施方式中,根据初始关键码来生成修改的关键码。在一个实施方式中,修改的关键码是负载平衡关键码,其中该负载平衡关键码被配置,从而使得在使用负载平衡关键码时的网络10内的业务较之于使用初始关键码时更加负载平衡。在一个实施方式中,生成负载平衡关键码308包括基于初始关键码的两个字段来生成对称关键码。在一个实施方式中,初始关键码的两个字段对应于分组的源的指示以及分组的目的地的指示。例如,初始关键码的两个字段可以对应于IP源地址和IP目的地地址,MAC源地址和MAC目的地地址,虚拟源端口标识符和虚拟目的地端口标识符,物理源端口标识符和物理目的地端口标识符等。在一个实施方式中,向两个字段之一应用可交换函数,以及可交换函数的结果被填充至对称关键码的相应字段中。在一个实施方式中,对称关键码的另一字段填充有常数 (例如,0或某个其他适当常数)或可交换函数的结果的导数(例如,对称关键字的第一字段的内容的导数)。可交换函数是任何适当的可交换函数,诸如加法函数、乘法函数等。在一个实施方式中,基于负载平衡关键码,在框310处确定公共哈希值,而无需考虑初始关键码的两个字段的顺序。即,确定公共哈希值,而不考虑分组的行进方向。在某些情况下,诸如哈希函数128的哈希函数在负载平衡关键码上进行操作,以产生公共哈希值。 在一个实施方式中,通信网络10的每个网络设备ND1-ND6包括相同的公共哈希函数。在可选的框312处,在框310处确定的哈希值(例如,原始的公共哈希值)被进一步修改,以生成继而在网络设备本身内实现负载平衡或交换机内负载平衡的修改的哈希值。在一个实施方式中,基于哈希值的客户端的需求,将原始哈希值的大小重新制定为不同的长度。例如,如果客户端是图4的出口接口表160,则基于包括在与网络设备(例如,ND1) 对应的链路聚集群组中的通信链路总数量来调整原始哈希值长度,以形成调整了大小的修改的哈希值。在一个实施方式中,如果在框310处生成的原始哈希值具有η比特的长度,以及客户端需要在Z与y之间的负载平衡哈希值,则原始哈希值的可能的2"个值的每个值向 Z与y之间的负载平衡哈希值映射。例如,在框310处生成的原始哈希值χ在框312处根据以下函数f (χ) =x modulo (y+1) (9)根据函数g(x) = x*(y+l)n+Z (10)或者根据另一适当的函数转换成已调整大小的修改的哈希值。典型地,但不是必须地,在框312处生成的已调整大小的修改的哈希值的长度小于在框310处生成的原始哈希值的长度。在某些实施方式中,省略框312。在框315处,确定经由其从网络设备传输数据单元或分组的通信链路。在一个实施方式中,基于在框310处确定的原始哈希值(或者如果包括可选的框312,则基于在框 312处确定的修改的哈希值)来确定通信链路。在一个实施方式中,(修改的)哈希值的客户端基于(修改的)哈希值来执行一个或多个函数,其在网络设备内执行以转发或分析数据单元或分组。例如,如果客户端是出口接口表(诸如,出口接口表160),则出口接口表 160将(修改的)哈希值用作索引以确定经由其传输分组的特定通信链路或端口(例如,虚拟或物理端口)。在一个实施方式中,特定通信链路可以是包括在与网络设备对应的链路聚集群组中的多个通信链路之一。在框318处,引起数据单元或分组从网络设备传出或传输。在一个实施方式中,诸如数据分组40的数据单元经由实现方法300的网络设备(例如,网络设备ND1)的某个端口 Pt进行传输。例如,通过在框315处确定的特定通信链路从网络设备的网络接口传输分组。在一个实施方式中,此处描述的技术在利用虚拟端口技术的网络设备中使用。利用虚拟端口技术的网络设备示例在2008年2月13日提交的、题为“Logical Bridging System and Method”的美国专利申请号12/030,822,现在为美国专利号7,796,594中公开,在此通过参考将其全部公开显式地并入。利用虚拟端口技术的另一网络设备示例在 2010 ^Ξ 11 ^ 2"Switching Apparatus and Method Based on Virtual hterfaces”的美国专利申请号12/938,116中公开,在此通过参考将其全部公开显式地并入。利用虚拟端口技术,网络设备典型地利用数量与物理端口不同的虚拟端口,以及网络设备被配置用于执行虚拟端口与物理端口之间的映射。例如,在利用虚拟端口技术的一个示例网络设备中,分组经由其进入网络设备的物理端口的指示向虚拟端口映射。分组处理器被配置用于针对虚拟端口处理分组。例如,分组处理器确定向其转发分组的一个或多个虚拟端口。确定的一个或多个虚拟端口向一个或多个物理端口映射,以及分组经由确定的一个或多个物理端口进行传输。图8是根据一个实施方式、利用虚拟端口以及实现此处描述的至少某些负载平衡技术的示例网络设备350的框图。在一个实施方式中,网络350包括在图1的通信网络10 中。在一个实施方式中,图1的网络设备ND1-ND6中的一个或多个网络设备包括图8的网络设备350。网络设备350包括配置用于向虚拟端口映射物理端口以及反之亦然的映射器 352。例如,映射器352向虚拟端口映射经由其接收数据单元102的物理端口。分组处理器3M针对虚拟端口处理分组。例如,分组处理器3M可以确定向其转发分组的一个或多个虚拟端口。分组处理器邪4包括哈希值生成器355。在一个实施方式中,哈希值生成器355是图2的哈希值生成器16的实施方式。在一个实施方式中,哈希值生成器355在数据单元102上进行操作,以及生成哈希值358。例如,哈希值358是图2的哈希值115的实施方式。在一个实施方式中以及在某些场景中,基于与经由其接收数据单元102的物理端口对应的虚拟源端口的指示来生成哈希值115。在一个实施方式中,生成的哈希值358针对在出口表360中进行查找而被利用。例如,出口表360是图2的客户端130的实施方式或者图4的出口表160的实施方式。在一个实施方式中,出口表360包括存储虚拟目的地端口的指示的条目,以及哈希值358用于确定出口表360的特定条目,以标识向其转发数据单元102的特定虚拟端口 362。例如,哈希值358用于以与前文针对图4讨论的类似方式来确定针对出口表360的索引,以确定特定的虚拟端口。在一个实施方式中,向映射器352提供基于出口表360确定的特定虚拟目的地端口 362的指示。在一个实施方式中,映射器352向对应的物理目的地端口映射虚拟目的地端口 362。在一个实施方式中,网络设备350引起数据单元或分组经由对应的物理目的地端
17口从网络设备350传输。由此,在一个实施方式中,跨虚拟和/或物理目的地端口的集合的业务的负载在网络设备350中更加均勻地平衡。图9是根据一个实施方式的、用于在网络设备中对业务进行负载平衡的示例方法 400的流程图。在一个实施方式中,方法400由图8的网络设备350实现。在某些实施方式中,方法400结合图2的哈希值生成器16、图5的哈希值修改器220、图6的方法250和 /或图7的方法300进行操作。在框402处,诸如数据分组40的数据单元在具有虚拟端口的网络设备(例如,网络设备350或另一适当的网络设备)的某个端口&处接收。根据一个实施方式,例如,某个端口 Pk是物理端口,以及物理端口继而向对应的虚拟端口映射。接着,在框405处,基于包括在分组或数据单元中的信息来确定初始关键码。在某些实施方式和/或场景中,基于与经由其接收数据单元的某些物理端口对应的虚拟源端口的指示来确定初始关键码。在框408处,根据初始关键码来生成修改的关键码。在一个实施方式中,生成修改的关键码,从而使得修改的关键码是去极化的(诸如之前针对图6进行描述的)和/或从而使得修改的关键码是对称的(诸如之前针对图7进行描述的)。在框410处,基于修改的关键码来确定哈希值。例如,在一个实施方式中,基于向修改的关键码应用诸如哈希函数128的哈希函数来生成哈希值。在一个实施方式中,通信网络10的每个网络设备ND1-ND6应用相同的公共哈希函数。在框412处,在框410处确定的哈希值被进一步修改,以生成修改的哈希值,其继而在网络设备本身内实现负载平衡或交换机内负载平衡。在一个实施方式中,基于哈希值的客户端的需求来将原始哈希值的大小制定为不同的长度。例如,基于出口表360来重新制定哈希值的大小。在某些实施方式中,省略框412。在框415处,确定与数据单元或分组对应的虚拟目的地端口。在一个实施方式中, 基于在框410处确定的原始哈希值(或如果包括框412的话,基于在框412处确定的修改的哈希值)来确定虚拟目的地端口。在一个实施方式中,(修改的)哈希值的客户端基于 (修改的)哈希值来执行一个或多个函数。在一个实施方式中,客户端执行的一个或多个函数是在网络设备中执行的、用于转发或分析数据单元或分组的函数。在一个实施方式中,客户端执行出口接口表(诸如,出口接口表360)中的查找。例如,将(修改的)哈希值用作索弓丨,以确定内容指示虚拟目的地端口的表360中的特定条目。在框418处,确定与特定虚拟目的地端口对应的特定物理目的地端口。例如,可以根据网络设备的物理端口与虚拟端口之间的映射确定特定物理目的地端口。在框420处,引起数据单元或分组经由在框420处确定的特定物理目的地端口从网络设备传出或传输。在一个实施方式中,诸如数据分组40的数据单元经由实现方法400 的网络设备(例如,网络设备350或某个其他适当网络设备)的某个端口 Pt进行传输。上述描述的各种框、操作和技术的至少某些可以利用硬件、执行固件指令的处理器、执行软件指令的处理器或其任何组合实现。在利用执行软件或固件指令的处理器实现时,软件或固件指令可以存储在任何计算机可读存储器中,诸如磁盘、光盘或其他介质、RAM 或ROM或闪存、处理器、硬盘驱动器、光盘驱动器、带驱动器等。软件或固件指令可以包括机器可读指令,其在由处理器执行时,将引起处理器执行各种动作。在以硬件实现时,硬件可以包括一个或多个离散的部件、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)等。尽管上文阐明了对众多不同实施方式的具体描述,但是应当理解,本专利的范围由本专利结尾处阐明的权利要求的词汇限定。具体描述仅为了提供示例性示例而构建,而不用于描述所有可能的实施方式,因为描述每种可能的实施方式即使是可能的,也是不实际的。众多的备选实施方式可以使用当前的技术或在本公开申请日之后开发的技术实现, 这些仍将落入权利要求的范围内。通过示例而不是限制,此处的公开包含了至少以下方面一种用于对通信网络中的业务进行负载平衡的方法,包括在包括在通信网络中的网络设备处接收数据单元,其中网络设备与包括在通信网络中的链路聚集群组相关联。 该方法进一步包括基于包括在数据单元中的信息来确定初始关键码,以及基于初始关键码的第一字段和初始关键码的第二字段来生成对称关键码。该方法可以附加地包括向对称关键码应用哈希函数以生成哈希值;基于该哈希值,确定链路聚集群组中的通信链路;以及引起数据单元通过通信链路进行传输。前述方面的方法,其中生成对称关键码包括生成这样的对称关键码,其引起针对初始关键码的第一字段和初始关键码的第二字段的不同序列生成公共哈希值。任一前述方面的方法,其中基于初始关键码的第一字段和初始关键码的第二字段生成对称关键码包括向初始关键码的第一字段和初始关键码的第二字段应用可交换函数, 利用可交换函数的结果填充对称关键码的第一字段或对称关键码的第二字段中的一个,以及利用常数或可交换函数的结果的导数中的一个来填充对称关键码的第一字段或对称关键码的第二字段中的另一个。任一前述方面的方法,其中应用可交换函数包括应用加法函数。任一前述方面的方法,其中基于初始关键码的第一字段和初始关键码的第二字段生成对称关键码包括以下之一基于数据单元的IP(网际协议)地址源字段和数据单元的 IP地址目的地字段来生成对称关键码,基于数据单元的MAC (媒体访问控制)地址源字段和数据单元的MAC地址目的地字段来生成对称关键码,基于与数据单元相关联的虚拟端口源字段和与数据单元相关联的虚拟端口目的地字段来生成对称关键码,或基于与数据单元相关联的物理端口源字段和与数据单元相关联的物理端口目的地字段来生成对称关键码。任一前述方面的方法,其中哈希值是原始哈希值,以及其中该方法进一步包括跨网络设备的链路聚集群组来对业务进行负载平衡,诸如,基于原始哈希值来确定长度与原始哈希值不同的调整大小的哈希值,以及使用调整大小的哈希值来确定通信链路。任一前述方面的方法,其中基于原始哈希值来确定调整大小的哈希值包括基于跨包括在链路聚集群组中的通信链路的总数量的哈希值范围的映射来确定调整大小的哈希值,其中哈希值的范围包括原始哈希值。任一前述方面的方法,其中跨通信链路的总数量来映射哈希值的范围对应于以下至少一个f (χ) = χ mod y,或g(x) = x*(y+l)n+Z,其中χ是特定的哈希值,
y对应于包括在链路聚集群组中的通信链路的总数量,η是包括在特定哈希值中的比特数量,以及Z是与通信链路的总数量对应的范围的下界。一种用于对通信网络中的业务进行负载平衡的网络设备,包括前述方面的任一或不包括前述方面,以及进一步包括网络接口,配置用于接收数据单元,以及哈希值生成器, 配置用于基于数据单元来生成哈希值。在一个实施方式中,哈希生成器包括对称关键码生成器,配置用于基于初始关键码的源字段和初始关键码的目的地字段来生成对称关键码, 其中初始关键码基于包括在数据单元中的数据的至少部分。哈希生成器进一步包括哈希函数,用于基于对称关键码来生成哈希值。在一个实施方式中,网络设备附加地包括链路选择器,配置用于基于哈希值来选择通信链路,以从网络设备传出数据单元。前述任一方面的网络设备,其中对称关键码配置用于引起由哈希函数针对初始关键码的源字段和初始关键码的目的地字段的不同序列生成公共哈希值。前述任一方面的网络设备,其中对称关键码包括对称关键码源字段和对称关键码目的地字段,对称关键码源字段或对称关键码目的地字段中的一个对应于与初始关键码源字段和初始关键码目的地字段对应的可交换函数的结果,以及对称关键码源字段或对称关键码目的地字段中的另一个对应于以下之一常数,或可交换函数的结果的导数。前述任一方面的网络设备,其中可交换函数是加法函数。前述任一方面的网络设备,其中初始关键码的源字段和初始关键码的目的地字段包括以下之一与数据单元对应的ΙΡ(网际协议)地址源字段和与数据单元对应的IP地址目的地字段;与数据单元对应的MAC (机器可寻址码)地址源字段和与数据单元对应的 MAC地址目的地字段;与数据单元对应的虚拟端口源字段和与数据单元对应的虚拟目的地字段;或者与数据单元对应的物理端口源字段和与数据单元对应的物理端口目的地字段。前述任一方面的网络设备,其中哈希值生成器进一步包括大小确定器,配置用于调整哈希值的长度,以避免跨包括选定通信链路的链路聚集群组的通信链路的极化。前述任一方面的网络设备,其中大小确定器配置用于基于包括在链路聚集群组中的通信链路的总数量来调整哈希值的长度。前述任一方面的网络设备,其中大小确定器配置用于基于以下至少一个来调整哈希值的长度f (χ) =x mod y,或g(x) = x*(y+l)n+Z,其中χ是哈希值,y是通信链路的总数量,以及η是包括在哈希值中的比特数量, 以及Z是与通信链路的总数量对应的范围下界。一种用于对通信网络中的业务进行负载平衡的网络设备,该网络设备包括前述任一方面或不包括前述方面,以及该网络设备包括用于接收数据单元的网络接口和用于基于数据单元生成哈希值的哈希值生成器。该哈希值生成器包括对称关键码生成器,配置用于基于数据单元来生成对称关键码,和哈希函数,配置用于基于对称关键码来生成哈希值,其中对称关键码配置用于引起哈希函数针对与数据单元对应的第一字段和与数据单元对应的第二字段的不同序列生成公共哈希值。网络设备附加地包括链路选择器,其基于哈希值来选择通信链路以从网络设备传出数据单元。
前述任一方面的网络设备,其中对称关键码包括对称关键码源字段和对称关键码目的地字段,对称关键码源字段或对称关键码目的地字段中的一个的值是可交换函数的结果,针对可交换函数的输入包括与数据单元对应的第一字段的值和与数据单元对应的第二字段的值,以及对称关键码源字段或对称关键码目的地字段中的另一个的值是以下之一 常数或可交换函数的结果的导数。前述任一方面的网络设备,其中哈希值生成器进一步包括大小确定器,配置用于基于包括在包含选定的通信链路的链路聚集群组中的通信链路的总数来调整哈希值的长度,以及其中哈希值的经调整的长度不同于哈希值的原始长度。前述任一方面的网络设备,其中与数据单元对应的第一字段和与数据单元对应的第二字段包括与数据单元对应的IP(网际协议)地址源字段和与数据单元对应的IP地址目的地字段;与数据单元对应的MAC(机器可寻址码)地址源字段和与数据单元对应的MAC 地址目的地字段;与数据单元对应的虚拟端口源地址和与数据单元对应的虚拟端口目的地地址;或与数据单元对应的物理端口源字段和与数据单元对应的物理端口目的地字段。一种用于对网络设备中的业务进行负载平衡的方法,包括前述任一方面或不包括前述方面,以及包括在虚拟端口的数量比物理端口数量大的网络设备的第一物理端口处接收数据单元。该方法附加地包括确定与第一物理端口对应的第一虚拟端口 ;基于包括在数据单元中的信息来确定初始关键码;基于该初始关键码来确定与数据单元对应的以及与网络设备的至少一个虚拟端口相关联的哈希值;基于该哈希值,确定向其转发数据单元的第二虚拟端口 ;确定与第二虚拟端口对应的第二物理端口 ;以及引起数据单元经由第二物理端口从网络设备传出。前述任一方面的方法,其中基于包括在数据单元中的信息来确定哈希值包括通过使用在包括网络设备的通信网络内对于该网络设备而言是唯一的去极化器来根据初始关键码生成去极化的初始关键码;以及在去极化的初始关键码上执行哈希函数以确定用于数据单元的哈希值。前述任一方面的方法,其中执行哈希函数包括执行跨包括在通信网络中的多个网络设备是公共的哈希函数。前述任一方面的方法,其中基于哈希值确定第二虚拟端口包括基于哈希值来确定索引;使用索引来为出口表编制索引,以确定出口表的特定条目;以及基于出口表的特定条目的内容来确定第二虚拟端口。前述任一方面的方法,其中哈希值是第一哈希值,以及该方法进一步包括修改第一哈希值以形成修改的哈希值,以及基于修改的哈希值来确定索引。前述任一方面的方法,进一步包括确定与数据单元对应的网络设备的特定链路聚集群组,以及其中修改第一哈希值包括基于包括在特定链路聚集群组中的链路数量来修改第一哈希值。前述任一方面的方法,其中修改第一哈希值以形成修改的哈希值包括选择第一哈希值的比特子集以形成修改的哈希值。前述任一方面的方法,进一步包括基于网络设备的物理端口与虚拟端口之间的映射来确定第二物理端口。负载平衡网络设备,包括前述任一方面并且包括第一网络接口,用于接收数据单元;映射器,用于向虚拟端口映射物理端口 ;以及哈希值生成器,用于确定与数据单元对应的哈希值,其中哈希值基于包括在数据单元中的信息以及与网络设备的一个或多个虚拟端口相关联。负载平衡网络设备进一步包括虚拟端口选择器,用于基于哈希值来确定特定虚拟端口 ;以及第二网络接口,用于传出数据单元,该第二网络接口连接至通过映射器向特定虚拟端口映射的特定物理端口。前述任一方面的负载平衡网络设备,进一步包括出口表;以及其中虚拟端口选择器配置用于通过利用与哈希值对应的索引为出口表编制索引来确定特定的虚拟端口。前述任一方面的负载平衡网络设备,其中哈希值是第一哈希值,负载平衡网络设备进一步包括哈希值修改器,用于修改第一哈希值以形成修改的哈希值,以及虚拟端口选择器,配置用于基于修改的哈希值来确定特定虚拟端口。前述任一方面的负载平衡网络设备,其中哈希值修改器配置用于基于与数据单元对应的链路聚集群组的链路数量来修改第一哈希值。前述任一方面的负载平衡网络设备,其中哈希值修改器配置用于通过选择第一哈希值的比特子集来修改第一哈希值以形成修改的哈希值。前述任一方面的负载平衡网络设备,其中虚拟端口选择器配置用于通过利用与修改的哈希值对应的索引为出口表编制索引来确定特定虚拟端口。负载平衡网络设备包括前述任一方面,以及包括多个物理端口和用于向虚拟端口映射物理端口的映射器。负载平衡网络设备附加地包括哈希值生成器,用于确定与接收的数据单元对应的哈希值,其中该哈希值基于包括在接收的数据单元中的信息并且与网络设备的至少一个虚拟端口相关联。负载平衡网络设备进一步包括虚拟端口选择器,用于基于哈希值来选择向其转发数据单元的特定虚拟端口 ;以及网络接口,用于传出数据单元,该网络接口连接至通过映射器向特定虚拟端口映射的特定物理端口。前述任一方面的负载平衡网络设备,进一步包括出口表;以及其中虚拟端口选择器通过利用与哈希值对应的索引为出口表编制索引来确定特定的虚拟端口。前述任一方面的负载平衡网络设备,其中哈希值是第一哈希值,负载平衡网络设备进一步包括哈希值修改器,用于修改第一哈希值以形成修改的哈希值,以及虚拟端口选择器基于修改的哈希值来确定特定虚拟端口。前述任一方面的负载平衡网络设备,其中哈希值修改器基于与接收的数据单元对应的链路聚集群组的多个链路的至少一个来修改第一哈希值。前述任一方面的负载平衡网络设备,其中哈希值修改器基于对第一哈希值的比特子集的选择来修改第一哈希值,以形成修改的哈希值。前述任一方面的负载平衡网络设备,其中虚拟端口选择器配置用于通过利用与修改的哈希值对应的索引为出口表编制索引来确定特定虚拟端口。
权利要求
1.一种用于避免通信网络中的极化的方法,所述方法包括在包括在所述通信网络中的网络设备处接收数据单元,所述网络设备与包括在所述通信网络中的链路聚集群组相关联;基于包括在所述数据单元中的信息来确定初始关键码;基于所述初始关键码,通过使用在所述通信网络内对于所述网络设备而言是唯一的去极化器来生成去极化的初始关键码;在所述去极化的初始关键码上执行哈希函数,以获得用于所述数据单元的哈希值; 基于所述哈希值来确定所述链路聚集群组中的通信链路;以及引起所述数据单元通过所述通信链路进行传输。
2.如权利要求1的方法,其中通过使用所述去极化器来生成所述去极化的初始关键码包括向所述初始关键码应用去极化函数,以生成所述去极化的初始关键码。
3.如权利要求2的方法,其中向所述初始关键码应用所述去极化函数包括向所述初始关键码应用实质上双射的函数。
4.如权利要求3的方法,其中向所述初始关键码应用所述实质上双射的函数包括向所述初始关键码应用以下之一加性函数、重映射函数或异或O(OR)函数。
5.如权利要求4的方法,其中向所述初始关键码应用所述加性函数包括向所述初始关键码应用在所述通信网络内唯一的、随机或伪随机生成的比特序列。
6.如权利要求1的方法,其中 所述哈希值是第一哈希值; 所述方法进一步包括基于所述第一哈希值的客户端,修改所述第一哈希值以生成修改的哈希值,以避免所述网络设备内的极化,以及基于替代所述第一哈希值的所述修改的哈希值来确定所述通信链路;以及所述客户端包括在所述网络设备中,对应于所述数据单元,以及配置用于执行在使用所述修改的哈希值来转发所述数据单元时使用的函数。
7.如权利要求6的方法,其中基于所述第一哈希值的所述客户端来修改所述第一哈希值包括基于所述客户端的类型来选择包括在所述第一哈希值中的比特子集,以生成所述修改的哈希值。
8.如权利要求7的方法,其中选择包括在所述第一哈希值中的所述比特子集包括选择包括在所述第一哈希值中的多个互斥比特子集中的一个。
9.如权利要求1的方法,其中执行所述哈希函数包括执行公共哈希函数,其在包括在所述通信网络中的多个网络设备的每个网络设备中使用。
10.如权利要求9的方法,其中执行所述公共哈希函数包括执行特定公共哈希函数,其配置用于生成长度足以提供具有期望均勻程度的数据单元业务的分发的哈希值。
11.一种用于避免通信网络中的极化的网络设备,所述网络设备包括 第一网络接口,配置用于接收数据单元;哈希值生成器,配置用于基于所述数据单元来生成哈希值,所述哈希值生成器包括 去极化的关键码生成器,配置用于基于向初始关键码应用的去极化函数来生成去极化的初始关键码,所述初始关键码基于包括在所述数据单元中的信息的至少部分,以及所述去极化函数这样定义,以使得针对相同业务流的不同数据单元生成所述去极化的初始关键码;以及哈希函数,配置用于基于所述去极化的初始关键码和所述数据单元来生成所述哈希值;链路选择器,配置用于基于所述哈希值来选择通信链路;以及第二网络接口,用于经由所述通信链路从所述网络设备传出所述数据单元。
12.如权利要求11的网络设备,其中所述去极化关键码生成器配置用于基于加性函数来生成所述去极化的初始关键码,所述加性函数向所述初始关键码应用随机生成的比特序列;以及其中所述随机生成的比特序列在所述通信网络内对于所述网络设备而言是唯一的。
13.如权利要求11的网络设备,其中所述去极化的关键码生成器配置用于基于实质上双射的重映射函数来生成所述去极化的初始关键码。
14.如权利要求11的网络设备,进一步包括用于接收所述哈希值的客户端;以及其中所述哈希值是第一哈希值;所述网络设备进一步包括哈希值修改器,配置用于基于所述第一哈希值的比特的多个互斥子集之一以及进一步基于所述客户端来生成修改的哈希值;以及所述链路选择器进一步配置用于基于所述修改的哈希值来选择所述通信链路。
15.如权利要求14的网络设备,其中所述客户端的类型包括在多个客户端类型中;以及比特的不同的互斥子集对应于所述多个客户端类型中的每个客户端类型。
16.如权利要求11的网络设备,其中所述哈希函数配置用于生成长度足以提供具有期望均勻程度的数据单元业务的分发的哈希值。
17.一种用于避免通信网络中的极化的系统,包括所述通信网络中的多个网络设备,其中所述多个网络设备的每个网络设备包括 网络接口,用于接收数据单元;哈希值生成器,用于基于所述数据单元来生成哈希值,所述哈希值生成器包括 去极化的关键码生成器,用于基于向初始关键码应用的去极化函数来生成去极化的初始关键码,所述初始关键码基于包括在所述数据单元中的信息的至少部分,以及所述去极化函数在所述通信网络内对于所述每个网络设备而言是唯一的,以及哈希函数,用于基于所述去极化的初始关键码和所述数据单元来生成所述哈希值;以及链路选择器,用于基于所述哈希值来选择通信链路,以从所述每个网络设备传出所述数据单元。
18.如权利要求17的系统,其中所述去极化函数是在所述通信网络内对于所述每个网络设备而言是唯一的实质上双射的函数;以及其中所述哈希函数跨所述多个网络设备是公共的。
19.如权利要求17的系统,其中所述去极化函数是可选择的。
20.如权利要求17的系统,其中所述哈希值是第一哈希值;所述每个网络设备进一步包括哈希值修改器,其被配置用于基于所述第一哈希值的比特的多个互斥子集之一来生成修改的哈希值,所述第一哈希值的比特的所述多个互斥子集之一对应于所述修改的哈希值的客户端的类型,以及所述修改的哈希值的所述客户端包括在所述每个网络设备上,以及配置用于执行在转发所述数据单元时使用的函数;以及所述链路选择器进一步配置用于基于所述修改的哈希值替代基于所述第一哈希值来选择所述通信链路。
全文摘要
本发明的实施方式涉及用于网络交换机的负载平衡哈希计算。用于避免通信网络中的极化的技术包括网络交换机或设备,其具有用于接收数据单元或分组的第一接口,和经由其从网络设备传输分组的第二接口。网络设备包括哈希值生成器,其配置用于使用去极化器来根据初始关键码(其中,该初始关键码基于分组的内容,以及该去极化器对于网络设备而言是唯一的)生成去极化的关键码,以及基于去极化的关键码和分组、通过使用对网络中的所有网络设备公共的哈希函数来生成哈希值。哈希值可以可选地被修改,以对网络设备的传出业务进行负载平衡。网络设备诸如通过基于(修改的)哈希值确定针对出口表的索引来选择传出链路或端口。
文档编号H04L29/06GK102571558SQ20111039959
公开日2012年7月11日 申请日期2011年11月30日 优先权日2010年11月30日
发明者A·罗伊施泰恩, T·米兹拉希 申请人:马维尔以色列(M.I.S.L.)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1