背景技术
在数字组网和电信领域,数据经常被组装,然后以确定的离散单元——为大家所知道的分组被传输和接收。全部或者特定数量的起源于同一源设备、连接或者应用程序的分组能够以“流”的方式被聚集在一起。虽然术语“分组”被使用在这个论述中,“分组”也可以指其它的诸如帧等等的离散数据单元。截取和转发这种流或者分组的网络设备(例如交换器、路由器等等)经常被配置了多个入端口(也就是输入流到达该设备进入该端口)和多个出端口(也就是输入流从该端口被路由离开该设备)。在这点上,并且为了本发明的目的,端口可以是物理的、逻辑的或者物理和逻辑的组合。此外,端口实际上可以是双向的,这样它们即可以用作为入端口,也可以用作为出端口。当输入流或者单个输入分组被网络设备接收时,它可能已经被指定经由仅单个出端口或者多个出端口输出。仅具有单个目的出端口的输入流/分组被称为单播,而被指定去往多个出端口的流/分组被称为组播。
某些网络设备可以被分类为异构的,因为它们可以接收很多不同类型的数据(例如,通过入端口),并且以很多不同的格式或者在不同类型的传输机制上转发这种数据(例如,通过出端口)。这种设备的例子包括转换网关,所述转换网关以一种格式拆开数据,而以另一种格式重新封装它。为了本发明的目的,异构网络被认为是那些非异构网络(也就是那些基于一种传输机制接收和转发仅一种数据的网络)的一般情况;如此,意味着这些非异构的网络是在本发明的范围内。当两端口的非异构设备仅仅从它的一个入端口向它的一个出端口转发数据时,较少地需要对分组分类。然而,在那些具有多种类型的端口(例如,入端口、出端口、入/出端口组合,变化的数据格式,变化的物理连接,等等)和物理端口可能被合并或者分割为一个或者多个逻辑端口的设备中,有分组分类的极大必要。
图1表示了规定不同类型的数据格式和兼备不同的传输机制的异构网络环境。这种格式和传输机制(还有很多其它的)的很多不同组合能够被组合起来形成这种网络环境,这对本领域的技术人员将是显而易见的。例如,网络环100可包括诸如SONET环的高容量网络,并且通常向不止一个客户提供服务。这种客户可进一步将他们通过网络环100接收的服务发布至在他们自己的内部网络之后的一个或者多个节点。图1显示了节点110、120、130、140、150、160和170。节点140和150通过同一用户界内设备(CPE)145接入网络环100。同样地,节点130和170通过CPE135接入该网络。剩余的节点直接接入网络环100。CPE145和135可,例如,是在网络环100上分配诸如以太网或者PDH(例如,T1线路,T3线路,等等)的传输机制、从而使用给定的带宽的网关。如在上面提及的,网络环100可以是可具有非常巨大带宽,例如,诸如2.5千兆比特每秒(Gb/s)的电信级网络。
因而,网络环100通常不像典型的局域网(LAN)服务或者典型的点对点租用线路服务。然而,最近的努力已经试图在诸如在图1中显示的环境中提供这两种类型的服务。例如,第一个,被称为“专线服务”或者“以太网专用线路服务”,是尝试创建一种安全的和专用的租用线路类型的机制。例如,假定在属于同一组织B、而可能被长物理距离分隔开的节点130和节点110之间需要专用的面向连接的服务。专线服务可以被用来提供节点130至节点110的服务。专线服务将在节点110和节点130之间创建点对点的、专用的互连,尽管二者在网络环100上是隔离的。
然而,另一个服务,例如,所知道的透明LAN或者以太网专用LAN服务,是尝试在从属于同一客户的那些节点之外创建虚拟局域网(LAN)。例如,如果节点120、140、150和170(也就是属于同一客户组织A的所有节点)是使用网络环100的虚拟LAN的部分,它们互相看起来如同处于同一客户A的LAN中,尽管节点120可能离节点140、150和170有很大的距离。此外,这些节点看起来在同一LAN中,尽管所有四个节点可能运行在不同传输机制下(例如,如果透明LAN服务被使能)。同样地,另一个透明LAN服务可使得属于客户组织B的节点110、130和160能够看起来是在B的LAN上。
然而,在网络环100上提供这种服务的另一个挑战是来自诸如CPE135和CPE145的CPE的立场。CPE必须考虑提供该服务,以便节点(例如:终端客户机或者用户)能够依据它们的网络流被精确地识别,并且彼此被区别开。由于实际网络不准确地是面向连接的,CPE应该能够将属于组织A的数据单元和属于组织B的数据单元区别开。此外,在专线和透明LAN服务二者都出现,而且二者都试图在同一CPE上被提供的地方,这种服务应该被CPE区别开。当CPE还具有分配其资源、调度和路由数据单元、确定出端口等任务的时候,分组分类变得更加困难。此外,在CPE可能支持向一个节点提供T1线路,而向另一个节点提供千兆比特以太网或者10/100以太网的地方,CPE必须能够在内部在这种分组类型中进行分类和区别。
虽然CPE135和145能够简单地利用很多不同的物理端口和大的存储器被构造,这种CPE对客户是不经济的。此外,在客户希望在同一物理入或者出端口上有很多不同的信道或者逻辑端口的地方,这种CPE不能很好地调整。最近,正在努力提供可调整的CPE,所述CPE能够在较少的硬件上运行,从而较之于其前任具有较低的价格和复杂性,同时仍然提供较之于其前任更好的性能。然而,在这种努力中,随着诸如优先排序和调度数据单元、分配有限的CPE物理资源(例如:存储器和处理周期)等功能涌现出来,数据的分类变得重要。此外,在逻辑的和物理的端口实际上是双向的地方,即具有出口能力,又具有入口能力,调度和分配对网络的正确运行变得至关重要。
因而,所需要的就是具有数据分类器的网络设备,所述数据分类器能够廉价地和有效地被用于在多个入/出端口之间和在变化的传输媒介和传输格式之间管理、排队、处理、调度和路由数据单元。
具体实施方式
现在将参照作为本发明的示例性例子而被提供的附图详细地描述本发明,以便使得本领域的技术人员能够实践本发明。值得注意地,下面的图和例子不意味着限制本发明的范围。在本发明的某些元件能够部分地或者全部地使用已知组件实现的情况下,仅这种已知组件的那些为本发明的理解所必须的部分将被描述,并且这种已知组件的其它部分的详细地描述将被省略以便不会使得本发明难以理解。此外,本发明包括作为例子而在这里被引用的已知组件的当前的和未来的已知等价物。附加的附录构成了本说明书的一部分,并且在这里被引作参考。
图2表示了依据本发明配置在网络设备中的数据分类器的至少一个实施例。网络设备200被显示为具有多个能够连接到各式各样的和/或者不同的传送机制的物理端口205、206、207和209。每个端口205、206、207和209也可以支持一个或者多个逻辑的端口或者信道。在这个实施例中,端口205连接到诸如10/100网络的典型的以太网服务;端口206连接到较高容量的GigE或者吉比特以太网服务;端口207连接到诸如T1或者T3的PDH类型的服务;而端口209可以是连接到诸如SONET的电信级服务的具有SDH能力的端口。这个配置是用来显示很多可能的被支持的网络接口和配置之一,并且仅用来举例说明支持多种网络、传输/传送方案和相关协议的复杂网络接口设备200。
如在图2中所示,依据本发明的分类器210产生队列ID220,所述队列ID是在设备200内部的。队列ID220由内部的流ID和优先级ID(在下面被进一步论述)组成。队列ID220被设备200用以决定在任何给定的进入分组被调度(也在下面被进一步论述)之前,在哪个队列上存储它。分类器210包括一组标签提取器218、标签存储器214和标签查阅216。
例如,分类器210能够被连接到在设备200上的可用端口(例如,端口205、206、207和209)以接收在这些端口上进入的每个分组的第一部分。每个标签提取器218接口可以与端口205、206、207和209之一联系在一起,并且能够检查每个分组的第一部分以了解正确的分组类型(也就是与那个端口的配置兼容的类型)是否被接收。标签提取器218(在下面被进一步论述)使用分组的这个第一部分(例如,在一些实施例中,第一个32或者64字节)创建一组标签。此外,产生的标签包括关于客户和外部流/服务(也就是透明LAN)的信息、媒体接入控制(MAC)的源和目的、和链路聚合会话信息。然后,产生的标签能够被存储在标签存储器214中。
一旦分组的标签被完成了,标签查阅引擎216将从标签存储器214顺次地读出标签并且执行查阅。该查阅同时返回流ID和优先级ID(如果链路聚合被使用了,还有均衡流ID),然后它们被合并起来组成队列ID220。诸如引擎216的标签查阅引擎的一个实施例在下面被详细地论述。
图3表示了依据本发明的至少一个实施例的分类技术的流程图。如在图3中所示,进入设备的很多端口之一的分组被接收310。接收到的分组的分组类型被检查312。如果检查到的分组类型与该分组被为之配置的或者该分组被指向的端口类型不匹配312,那么标签错误被产生315,并且由于接收到的分组是错误的,处理停止317。如果分组在其上被接收的端口的分组类型与该端口类型匹配,那么标签被提取320。如果标签提取器在提取期间发现标签有错误,缺省的标签值可以被指定(如下面所更加详细地描述的)。
当标签被提取320之后,依据这个实施例,标签能够被写入存储器以便稍后它们能够被访问330。然后,使用标签的查阅被执行,所述查阅首先包括流标签查阅和MAC目的地址和MAC源地址标签查阅340。基于这些标签,输出流ID被协调350。如果有链路聚合360,那么均衡流ID也被产生365。接下来,当获得流ID和/或均衡流ID之后,优先级ID标签的查阅被执行370。然后,流ID,或者,如果产生了,均衡流ID,与优先级ID被合并在一起380。然后,合并的结果,队列ID,从分类器被输出390。然后,为随后接收到的进入分组重复该过程。执行在图3中概述的过程的细节会在下面被非常详细地论述。
图4表示依据本发明的至少一个实施例的分类器的结构图。如在图4中所示,分类器400由标签提取单元(Tag Extraction Unit)420、标签查阅(Tag Lookup)430和配置表(Configuration Table)410组成。标签提取单元420由多个标签提取器的实例组成,为该设备中的每个端口各配置了一个(参见图5和相关的描述)。标签查阅430由一系列在由标签提取单元420产生的已提取的标签上被执行的查阅操作组成。标签提取单元420(和它的相关的提取器)在连接到分类器400的每个可用端口上进行不同操作。标签提取机制的这个每端口配置能力(per-port configurability)由配置表410处理。每个端口在配置表410中都有一个条目,所述配置表410指定了标签应该怎样为了在那个端口上的分组而被(标签提取单元420)提取。配置表410将包括信息,诸如奇偶校验位选择、标签和字段的起始和结束位置、以及当需要时还包括标签和字段的长度。
图5表示了依据本发明的至少一个实施例的标签提取单元的结构图。如在图5中所示,标签提取单元500可以由许多分组标签提取器510组成,例如:GE(GigE)分组提取器512、ME(以太网)分组提取器514、SDH(SONET)分组提取器516和PDH分组提取器518。然而,可以包括更少的或者额外的分组提取器。标签提取单元500也可以由标签提取配置块410、提取存储器214和提取屏蔽块540组成。
在这个典型的实施例中,每个标签提取器510可以由许多的独立的提取组件组成,例如管理标记提取、错误标记提取、类型标签提取、流标签提取、MAC标签提取、优先级标签提取、均衡器标签提取,每个都在下面被更加详细地论述。
管理标记提取
管理标记能够被用来将管理分组和其它的分组区别开,并且能够是再简单不过的单个比特。从所有类型的端口接收到的分组可以,例如,附带有提取管理指示符(EMI)。当EMI在分类的起始(SOC)被声明时,以及当EMI被用于那个逻辑端口的提取配置使能时,接收到的分组可以被标示为管理分组。
错误标记提取
错误标记可以被用来表示错误的分组。例如,3比特的错误标记能够被用来标明接收到的分组被不正确地提取了,其中,例如:
如果类型标签或者流标签提取配置有错误,或者如果分类的结束(EOC)在分组类型标签或者流标签提取被完成之前发生,错误标记的比特2(流错误)可以被置位;
如果MAC标签提取配置有错误,或者如果EOC在分组MAC标签提取被完成之前发生,错误标记的比特1(MAC错误)可以被置位;以及
如果均衡器标签提取配置有错误,如果均衡器标签被配置为零长度,或者如果EOC在分组均衡器标签提取完成之前发生,错误标记的比特0(均衡器错误)可以被置位。
类型标签提取
类型标签提取能够获得被用来检验到达的分组与任何给定的逻辑端口是否是相同类型的信息。流、MAC、优先级和均衡器标签提取为到达同一逻辑端口的每个分组使用同一标签提取配置。如果不同类型的分组到达逻辑端口,该分组将被不正确地提取和错误地分类。
该提取能够,例如,通过获得包含,例如,属于分组的第一个64字节的0-16个连续比特的字节而被完成。第一比特的位置和标签长度可根据逻辑端口配置(通过标签配置410)。这些被提取的比特的值应该与为那个端口预配置的值匹配。如果不匹配,分组类型可能不是有效的,并且该分组可被标明为错误分组。如果接收到的分组的逻辑端口被配置成提取长度大于16比特的类型标签,或者如果起始比特加上长度超出了第一个64字节,为接收到的分组标记配置错误。该提取能够简单地被应用于分组的字节长度,并且具有变化的提取比特长度,这对本领域的技术人员应该是显而易见的。如果存在对于那个逻辑端口的类型标签提取配置错误,或者如果EOC在提取被完成之前发生了,可以为接收到的分组标记提取错误。
流标签提取
流标签获得被用来识别客户流的信息。该提取,例如,通过从分组的第一个64字节获得2个直至64的连续比特的不重叠字段而被完成。第一比特的位置和两个字段的长度都是可根据逻辑端口配置的(通过标签提取配置410)。从其接收分组的10比特的逻辑端口ID(LPID),能够被添加在这两个字段前面以构成流标签。
MAC标签提取
MAC标签获得被用于MAC目的查阅和源学习(source learning)的信息。该提取,例如,通过从分组的开头的64字节获得12个连续字节而被完成。首字节的位置是可根据逻辑端口配置的。第一个6字节是MAC目的地址,最后的6字节是MAC源地址。如果接收到的分组的逻辑端口被配置成利用加上12超出了开头的64个字节的起始字节提取MAC标签,可以为接收到的分组标记配置错误。如果存在对于那个逻辑端口的MAC标签提取配置错误,或者如果EOC在该提取被完成之前发生了,可以为接收到的分组标记MAC错误。
优先级标签提取
优先级标签提取获得被用来确定接收到的分组的优先级的信息。该提取能够,例如,通过从分组的开头的64个字节获得3个连续的比特而被完成。首比特的位置是可根据逻辑端口配置的。如果起始比特加上3超出了第一个64字节,或者如果EOC在该提取被完成之前发生了,优先级标签将缺省为全零。
均衡器标签提取
均衡器标签提取获得被用来确定链路聚合的客户流的信息。该提取,例如,通过从分组的开头64个字节获得直至15个连续字节的5比特CRC(循环冗余校验)而实现。首字节的位置和标签的长度是可根据逻辑端口配置的。CRC函数可以是,例如,多项式函数,x5+x2+1,初始值为全1。虽然这个典型的多项式通常被用于USB令牌环,其它的函数也能够被使用。如果接收到的分组的逻辑端口被配置成具有加上长度超出了第一个64字节的起始字节,可以为接收到的分组标记配置错误。如果存在对于那个逻辑端口的均衡器标签提取配置错误,或者如果长度为零,或者如果EOC在该提取被完成之前发生了,可以为接收到的分组标记均衡器错误。如果均衡器错误被标记了,均衡器标签将缺省为全1,即初始值。
标签提取配置块410可以包括确定在分组中的哪里获得用于构造对于端口有效的标签的信息所必需的信息,所述分组通过所述端口被接收,并且所述分组可外出至所述端口。系统中的每个端口可以具有不同的分组流,因而,用于起源于那个端口的分组的标签应该被不同地构造。
存储器214能够,例如,在提取器构造标签时存储所得到的标签,并且在EOC存储部分提取配置。当标签查阅请求被接收时,存储器530能够检索来自标签提取配置410的提取配置,以及标签。存储器530可以在逻辑上被组织成369个逻辑的FIFO(如果,例如,在系统中有总共369个端口)。每个FIFO可以为每个逻辑端口保存很多标签(例如,每个端口4个标签)。由标签提取器510创建的新标签能够被写入对应于每个标签的逻辑端口的FIFO尾部。要被查阅的标签可以从FIFO的头部被读出。
标签提取屏蔽540可以是,例如,当标签准备从标签提取单元500(或者,例如,标签提取单元420)被传送至标签查阅(例如,标签查阅引擎430)时,从存储在存储器530中的标签中去除不必要的信息的机制。
图6表示了依据本发明的至少一个实施例的标签查阅引擎的结构图。一旦标签被存储在标签存储器之后,在分类器中的标签查阅引擎600能够取该标签(例如,使用适当的标签提取屏蔽540),并且使用存储在标签中的5个字段(例如,输入流ID、输出流ID、客户ID、MAC DA和MAC SA)中的一个或者多个执行搜寻。当完整的搜寻被完成时,标签查阅引擎600能够输出该分组的流ID674、以及优先级ID672。当链路聚合被使用时,查阅引擎还能够输出均衡流ID676。该均衡流ID能够被用以,例如,执行多个物理端口上单个以太网逻辑端口的负载均衡。然后,队列ID678,所述队列ID是分类器的输出,通过合并流ID674(或者均衡ID676)和优先级ID672而被产生。
依据这个典型的实施例,流标签查阅引擎610能够使用二元搜寻树而被实现。在该树中的值能够由软件计算出来,并且被下载进入集成了分类器的设备中。这些值能够由软件或者固件动态地改变。也能够出现阴影数值集(a shadow set of values),并且能够无中断地(hitlessly)进行切换。二元搜寻树能够以任何数量的方法被实现,其中的许多在本领域内是众所周知的。
如在图6中所示,标签查阅引擎600左上角的块是流标签查阅610。流标签查阅610包括发现给定分组(或者那个分组的标签)的输入流ID、输出流ID和客户ID的任务。它能够通过使用事先提取出的流标签并发现对应的值完成这个任务。这个对应能够基于准确的匹配或者一组范围。
流标签查阅610的输出包括客户ID、输出流ID和输入流ID。客户ID可以是,例如,识别一组客户(例如,265个客户)中的哪一个拥有该分组(例如,客户ID能够与载波虚拟LAN标签相同)的值。输出流ID能够表示要被用于在内部将分组路由至正确的出端口的内部流。输入流ID在功能上等同于输出流ID,但用于在相反方向上的传输(也就是,要被用于将返回分组路由回到输入的内部流/路径)。为了进行学习,需要输入流ID(在下面进一步论述)。
在很多情况下,流标签查阅610可能不足以将分组精确地路由至正确的目的端口。例如,来自流标签查阅610的输出流ID可能简单地提供信息以广播分组至属于同一客户的所有远程主机(例如,组播)。在这种情况下,需要使用MAC地址的更精确的目的查阅。
MAC目的地址(DA)查阅620使用客户ID(来自流标签查阅610)、以及MAC DA标签,以发现更精确的输出流ID。只有MAC地址已经由设备事先学习或者编程了(以下更多的是学习),MAC DA查阅620的输出才是有效的(也就是,在来自流标签查阅610的输出流ID中有效)。MAC DA查阅620使用具有适当数量的条目(例如,256个条目,等)的散列表625存储学习到的MAC地址(与它们的对应客户ID信息一起)。散列冲突通过使用N条目深的列表而得以解决。散列表625的输出是被用以在内部将分组路由至合适的,或更好的输出端口的输出流ID。
如果MAC DA查阅620返回了有效值,它成为分组的流ID。另一方面,如果它返回了空值(例如,如果MAC地址仍然没有被学习或被编程),来自流标签查阅的缺省输出流ID将被使用。这个逻辑由选择器装置640控制,所述选择器装置使用表示MAC地址查阅成功还是有效(也就是,如果MAC地址已经事先被学习或被编程,例如,查阅将是成功的,否则就不成功)的信号。
MAC源地址(SA)学习630能够被用以将给定的MAC地址和客户ID与得到的输出流ID联系起来。只要新分组到达,分组的MAC源地址标签就能够被用于学习。在这个情况下,源MAC地址和客户ID(例如,由流标签查阅引擎610提供)将与输入流ID(例如,也由流标签查阅引擎610提供)联系起来。值能够被写入在散列表625中的一个条目中。在可编程的时间间隔之后,事先学习到的条目将变旧,并且将不再被MAC DA查阅引擎620使用。老化时间间隔可以是,例如,16个时钟周期。
与今天的典型的专用LAN的学习方案不同,所述方案在每端口(per-port)基础上执行空闲状态的学习,本发明的MAC SA学习630是每流(per-flow)学习方案。依据典型的实施例,每个学习到的客户/MAC组合能够与流联系在一起,而不是今天典型的端口。因而,一旦客户/MAC查阅通过MAC SA学习630而被执行了,更多的信息是可用的,而不仅仅是分组被指向的出端口。例如,输入流ID、输出流ID、MAC SA/DA、客户ID等对网络都是可用的,这等同于在数据处理中更详细的粒度。这个详细的粒度允许本发明的网络设备提供有意义的服务质量(QoS)管理。这与今天的技术形成对照,今天的技术在这种网络设备上没有考虑到QoS管理。
只要链路聚合被使用了,一组物理端口被编程以充当单一的逻辑端口。在这种情况下,额外的均衡器标签查阅650被用以分布分组通过构成那一个逻辑接口的不同物理接口。均衡器标签查阅650应该确定属于单一会话的任何两个分组在同一物理接口上被发送。这有助于确保属于同一会话的所有分组将被依次传递。另一方面,均衡器标签查阅650也应该将来自不同会话的业务有效地负载均衡(load-balance)通过那一个逻辑接口的所有可应用的物理接口,以最大化带宽需求。
均衡器标签查阅650使用函数来获取会话标签的散列值。然后,该散列值被用以索引表示由分组使用的物理接口的表格。由均衡器标签查阅650获得的新的流ID被称为均衡流ID676。由于两个相等的会话标签产生相同的散列值,所以保证来自同一会话的所有分组具有同一均衡流ID676,因而使用同一物理端口。
流ID674(也就是来自流标签查阅610或MAC DA查阅620)能够被用作为至优先级标签查阅660的输入,以发现优先级ID672。例如,在优先级标签查阅660内,k比特的流ID674可以与n比特的优先级标签组合起来构成(k+n)比特的数据项。优先级标签查阅660可以,例如,由具有2*(k+n+1)个条目的大表格组成,其中每个条目可以具有,例如,2比特的数值。然后,被查阅的2比特的数值可以成为进入的分组的内部优先级ID672。
对于无错误和无管理的分组,流ID674/676(流标签查阅610或MAC DA查阅620块的输出,有时被均衡器标签查阅650修改)和优先级ID672(优先级标签查阅660的输出)被连结起来。例如,来自流ID674/676的比特是最高位,而优先级ID672构成最低位。这个合并的值可以是分组队列ID678。它能确定,感兴趣的分组将被写入外部分组队列的哪一个。这是分类器输出。
如果给定的流标签已经被标明为错误,则不管该标签的内容是什么,该查阅的输出也将是错误指示。如果该标签被标明有错误,查阅引擎的输出将使能错误比特。这使生成的任何队列ID678值无效,并且表示对应的分组应该被丢弃。
如要求的那样,上面描述的系统和方法能够同时被应用于专线服务和专用LAN服务。在同时支持这些服务的系统中,明了在分组正被转发通过的设备内的内部流能够帮助确保分组被放置在出端口上,以便它维护其到特定的专用LAN的从属关系,或者沿着由专线指定的路径而被路由。图7表示本发明的实施例,在所述实施例中,专线和专用LAN服务都能够被包容在单个分类器设备中,因而在同一网络硬件中。这还有包容诸如VLAN或MPLS(多协议标记服务)的不同类型的专用LAN机制的好处。
分类器700,所述分类器类似于在本发明的其他实施例中提及的分类器,能够被分解为两个功能组件。由于分组的标签是在分类器700中被提取的,所以不知道分组是属于专线服务的,还是属于专用LAN服务。分类器700的第一功能分支(prong)是搜寻功能710(所述功能,例如,在上面论述的流标签查阅610中被使用)。搜寻功能710利用查阅能力以确定分组是属于专线服务,还是属于专用LAN服务。搜寻功能719返回缺省路由,如果分组是专线分组,所述缺省路由是分组将采用的实际路由。如果搜寻功能710确定了分组属于专用LAN服务,那么客户ID和MAC目的地址标签能够被输入散列表725(例如,以类似于上面论述的620、625和630的方式),所述散列表为专用LAN服务数据产生不同的流ID。然后,来自搜寻719的流ID和来自散列表725的流ID被输入选择装置740(例如,诸如选择器640),所述选择装置决定这些流ID中的哪一个是适当的路由,从而也是适当的流ID。适当的路由可能是最好的或最有效的路由和/或满足专用LAN特性和/或需求的路由。这种方案能够在显示在图6中的硬件中被实现,例如,由于搜寻表和散列表都能被使用。
尽管本发明已经参照其优选实施例而被特别的描述了,在不偏离本发明的精神和范围的情况下,可以在形式及其细节上做出变化和修改,这对本领域的普通技术人员应该是显而易见的。例如,本领域的技术人员将理解,可以改变在上面的结构图中表示的组件的数量和排列。意图是附加的权利要求书包括了这种变化和修改。