CN102857322B - 混合端口范围编码 - Google Patents
混合端口范围编码 Download PDFInfo
- Publication number
- CN102857322B CN102857322B CN201210211428.1A CN201210211428A CN102857322B CN 102857322 B CN102857322 B CN 102857322B CN 201210211428 A CN201210211428 A CN 201210211428A CN 102857322 B CN102857322 B CN 102857322B
- Authority
- CN
- China
- Prior art keywords
- port
- port range
- value
- range
- encoded radio
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000004364 calculation method Methods 0.000 claims abstract description 31
- 238000005516 engineering process Methods 0.000 abstract description 38
- 238000004891 communication Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000001914 filtration Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 101100438226 Petunia hybrida CAM72 gene Proteins 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000013011 mating Effects 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
-
- 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/60—Router architectures
-
- 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
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及混合端口范围编码,总体上,说明了关于编码端口范围的技术。在一个示例中,一种方法包括生成表示指定端口范围的编码值,该编码值包括存储标识符的第一单元和存储索引的第二单元,该标识符对最频繁出现的端口范围的关联数据结构中存储的频繁出现的端口范围进行识别,该索引表示指定至少一部分指定端口范围的动态学***面将与编码值相关联的一个或多个过滤器应用至指定包括在指定端口范围中的端口的包。
Description
技术领域
本发明涉及计算机网络,更特别地,涉及用于在计算机网络内过滤数据的技术。
背景技术
计算机网络是交换数据并共享资源的互连计算装置的集合。在分组网络如互联网中,计算装置通过将数据分成称为包(packet,分组)的小块而对数据进行通信。包在网络上从源装置到目标装置单独进行路由。目标装置从包中提取数据,并将数据汇编成其原始形式。
网络内的特定装置,例如,路由器,保持对网络上的路线进行描述的路由信息。各个路线定义了网络上两个位置之间的路径。根据路由信息,路由器可生成转发信息,转发信息由路由器用于通过网络对包流进行中继,更特别地,用于为各包流选择选择特定的下一中继段(hop)。关于包的转发,来自网络路由器的“下一中继段”一般指沿指定路线的相邻装置。常规路由器通常将转发信息以一个或多个转发表、二叉树或类似数据结构的形式保持。接收到发来的包时,根据其中一个转发表,路由器对包中的信息进行检验,以选择包的下一中继段。
路由器和其他网络装置,诸如防火墙、网关和交换机通常在处理包流时应用过滤器。例如,路由器可将各个包内的报头信息与一组过滤规则(其指定“条件”或“标准”和一个或多个动作)相比较。过滤规则例如可指定特定源IP地址、目标IP地址和用于识别包的其他标准,以及对与指定标准匹配的包进行的一个或多个动作。具体地,路由器识别与过滤规则匹配的包,并根据包匹配的过滤规则对包进行一个或多个动作。这些动作可包括丢弃包、将包标记为较低优先级、统计与过滤规则匹配的包、复制包,以进行记录或进一步分析等。例如,过滤器可安装在路由器内,使路由器将装置的源IP地址已识别为服务拒绝(DoS)来源的包丢弃。常规路由器一般根据接收包流的接口,即,以逐接口方式对包流应用过滤器。例如,路由器可对指定接口接收的各个包流应用接口专用过滤器。可替代地或者另外地,无论包来自哪个接口,路由器可对所有包流应用包过滤器。
发明内容
本文总体对过滤器标准编码技术进行了说明。所述技术例如可减少将过滤器存储在存储器(例如,内容可寻址数据结构)内和提高性能所需的资源。在某些示例中,应用该技术,以对过滤器指定的端口范围进行编码。为了表示过滤器指定的端口范围,本发明的技术可生成包括多个单元的编码值。编码值的第一单元可包括对频繁出现的端口范围进行识别的标识符。例如,本发明的技术可保持一组一个或多个频繁出现的端口范围,各个端口范围都由唯一标识符识别。当对与频繁出现的端口范围匹配的端口范围进行编码时,本发明的技术可生成编码值,编码值存储与第一单元中的端口范围相关联的标识符。这样,单个编码值可表示频繁出现的端口范围,从而减少表示端口范围所需的编码值的数量,并提高存储效率。
本发明的技术进一步提供不与频繁出现的端口范围匹配的多个不同端口范围的有效存储。在某些示例中,过滤器指定的端口范围可以不与频繁出现的端口范围匹配。在这些示例中,本发明的技术可存储指定端口范围,并进一步由索引值识别端口范围。这样,本发明的技术可动态学习没有包括在一组频繁出现的端口范围中的端口范围。编码值的第二单元可存储表示动态学习端口范围的索引值,从而仅用一个或少量编码值表示动态学习端口范围。这样,本发明的技术可有效地仅用一个或少量编码值表示频繁出现的动态学习端口范围。通过用本发明的编码技术表示端口范围,在对不同签约者的多个不同包流应用过滤器时,可有效使用存储资源。
在一个示例中,一种方法包括由计算装置生成表示指定端口范围的编码值,该编码值包括存储标识符的第一单元和存储索引的第二单元,该标识符对最频繁出现的端口范围的关联数据结构中存储的频繁出现的端口范围进行识别,该索引表示指定至少一部分指定端口范围的动态学***面将与编码值关联的一个或多个过滤器应用至指定包括在指定端口范围内的端口的包。
一个网络装置包括生成表示指定端口范围的编码值的编码模块,该编码值包括存储标识符的第一单元和存储索引的第二单元,该标识符对最频繁出现的端口范围的关联数据结构中存储的频繁出现的端口范围进行识别,该索引表示指定至少一部分指定端口范围的动态学***面,用于将与编码值关联的一个或多个过滤器应用至指定包括在指定端口范围内的端口的包。
下文中的附图和说明对本发明的一个或多个实施方式的细节进行了说明。根据说明和附图,以及权利要求,本发明的其他特征、目标和优点得以明确。
附图说明
图1是示出了根据本发明的技术的路由器对相关联的包流进行过滤的示例***的框图。
图2是示出了通过图1的路由器的示例包流的框图。
图3是示出了根据本发明的一个或多个技术运行、具有编码模块的示例路由器的框图。
图4是提供了根据本文所述的技术的对端口范围进行编码的示例包转发引擎和数据结构的展开图的框图。
图5是示出了根据本发明的技术的生成编码值的示例方法的流程图。
具体实施方式
图1是用户装置2的示例的框图,该用户装置2通过无线接入网络6和核心网络13连接至外部分组网络22(例如,互联网)。如图1所示,用户装置2可以是任何计算装置。例如,用户装置2可以是具有蜂窝或其他射频通信能力的便携式计算装置(例如,手机/上网本/笔记本电脑/平板电脑装置)或台式计算机。用户装置2可利用用户装置2中包括的无线通信硬件,诸如符合3G、4G或LTE无线标准的部件,通过无线接入网络6连接至e节点4。
e节点4包括硬件,诸如射频发射器,其与用户装置2中包括的无线通信硬件直接通信。射频发射器有助于数据从用户装置2到e节点4通信。在某些示例中,e节点4还包括无线网络控制器。e节点4的无线网络控制器提供无线接入网络6的无线资源管理。无线资源管理可包括同信道(co-channel)干扰、管理发射功率、信道分配、数据率、交接标准、调制方案、错误编码方案的***水平控制。这样,无线网络控制器可有效地利用无线网络6的有限的无线频谱资源和基础架构。
e节点4为用户装置2提供无线接入网络6的接入。无线接入网络6用作使用户装置2将数据传送给核心网络13的接入网络。用户装置2通过e节点4提供的无线信道与无线网络6连接。用户装置2进一步利用各种已知的多路复用方案,诸如频分复用(FDM)、时分复用(TDM)、码分复用(CDM)和空分复用(SDM)通过无线网络6进行数据通信。从用户装置2在e节点4接收的数据进一步传送给核心网络13。
核心网络13包括能传送数据的任何类型的网络,诸如在一个或多个二层(L2)网络(例如,以太网或多包标签交换(MPLS)网络)上运行的三层(L3)包交换网络,可用于从无线接入网络6向诸如以太网22的网络传送数据。在某些示例中,核心网络13由代表任何通信装置的网络单元,诸如交换机、路由器、链路和能传送数据的其他装置组成。核心网络13可对从用户装置2传送给诸如互联网的其他外部网络22的数据的接入和通信进行管理。核心网络13建立和运行载体,以将用户流量以“包”的形式传送。一般来说,载体为核心网络13中的一组网络资源和数据传功能,以在两个网络实体之间传送用户流量。载体可包括两个网络装置之间的路径、逻辑连接或物理或无线连接。载体可包括(例如)演进分组***(EPS)载体。
载体的建立和管理可参见“3GPP TS 23.401-演进通用陆地无线接入网络的通用分组无线业务(GPRS)增强”,第10.0.0版,第三代合作伙伴项目,技术规范组服务和***方面,2010年6月(“3GPP TS 23.401-GeneralPacket Radio Service(GPRS)enhancements for Evolved Universal TerrestrialRadio Access Network,”version 10.0.0,3rd Generation Partnership Project,Technical Specification Group Services and System Aspects,June 2010),以及“3GPP TS 36.300-演进通用陆地无线接入(E-UTRA)和演进通用陆地无线接入网络(E-UTRAN)综述”,第10版,第三代合作伙伴项目,技术规范组无线接入网络,2010(“3GPP TS 36.300-Evolved Universal TerrestrialRadio Access(E-UTRA)and Evolved Universal Terrestrial Radio AccessNetwork Evolved Universal Terrestrial Radio Access Network(E-UTRAN)Overall Description,”Release 10,3rd Generation Partnership Project,Technical Specification Group Radio Access Network,2010)。
核心网络13的部件可提供各种服务,例如,分组路由、服务质量、用户装置验证、计费/收费和策略实施。核心网络13的部件包括移动管理实体(MME)8、家用签约者服务器(HSS)10、服务网关12、分组网关14、动态主机配置协议(DHCP)服务器16和规则服务器18。核心网络13的部件可以硬件和/或软件的任何组合实现,并可通过核心网络13互连。
如图1所示,MME 8从e节点4接收数据通信,MME 8负责执行有助于用户装置2和核心网络13之间的连通性的各种功能。例如,MME 8一般对与无线接入网络6连接的各个用户装置分配唯一标识符。唯一标识符的示例可包括隧道标识符或互联网协议(IP)地址。MME 8还负责在核心网络13上对用户装置进行验证。例如,MME 8可从用户装置2接收一个或多个验证凭证。MME 8可通过查询HSS 10或其他AAA装置检验验证凭证是否真实。HSS 10包括集中式数据库,集中式数据库包括含有验证数据的签约和用户相关数据。HSS 10还包括用于移动性管理和呼叫和会话建立支持的数据。如果验证凭证不真实,MME 8可拒绝用户装置2接入外部网络11。
如图1所示,核心网络13的部件还可以包括服务网关12。在某些示例中,服务网关12对接收自用户装置2的用户数据包进行路由和转发。当用户装置2从一个e节点4转换为另一个时,服务网关12还可作为移动锚点。例如,随着用户离开包括e节点4的第一位置,靠近包括不同的第二e节点的第二位置,用户装置2可将连接从e节点4切换为第二e节点。这样,用户装置2可在不同无线接入网络之间无缝切换,而不会中断用户装置会话。虽然用户装置2可在无线接入网络之间切换,但服务网关12却通过各种不同e节点对接收自用户装置2的数据通信进行管理。
核心网络13还可以包括分组网关14。分组网关14为从用户装置2向外部网络11的数据通信提供连通性。分组网关14可提供各种功能,包括策略实施、对每个用户进行包过滤、以及包筛选。为了提供这种功能,分组网关14可进一步与核心网络13的其他部件,诸如DHCP服务器16和规则服务器18通信。DHCP服务器16可以是用户装置2自动配置互联网协议(IP)地址。
在某些示例中,用户装置2与核心网络13连接,为无线装置建立核心网络会话和默认载体以传送用户流量,作为附接程序的一部分。核心网络会话是核心网络13与用户装置2之间的关联,可由用户装置2的地址和外部网络11的接入点名称(APN)的组合进行识别。除建立默认载体之外,附接程序还由核心网络13引发在分组网关14与用户装置2之间建立一个或多个专用载体,以传送用户流量。专用载体根据不同组的服务质量(QoS)参数工作,因此对用户装置2进行的各种服务的包流进行QoS区分。例如,各种专用载体可提供不同的保证比特率(GBR载体)(或可不提供保证比特率)、最大比特率(MBR)、优先级、包延迟预算、误包丢失率和分配/保持优先级(ARP)特性。当特定载体的QoS特性符合服务会话的要求时,该载体可以为核心网络会话的多个服务会话传送包流。在基于IP的内容接入网络4中,核心网络会话包括IP核心网络会话。
分组网关14对核心网络4实现策略和计费控制(PCC)功能。操作者和/或外部实体,诸如策略和计费规则功能实体,例如,规则服务器18,为分组网关14规定一个或多个PCC规则,每个PCC规则指定一组信息,使得检测服务数据流,并提供策略控制和/或计费控制参数。PCC规则可包括一个或多个过滤器。分组网关14根据PCC规则实施基于服务流的策略和计费控制。关于策略和计费控制,可参见“3GPP TS 23.203-策略和计费控制架构(第10版)”,第10.1.0版,第三代合作伙伴项目,技术规范组服务和***方面,2010年9月(“3GPP TS 23.203–Policy and ChargingControl Architecture(Release 10),”Version 10.1.0,3rd Generation PartnershipProject,Technical Specification Group Services and System Aspects,September 2010)。
PCC规则包括唯一识别会话内的规则的规则标识符、服务数据流检测信息、计费信息和/或策略控制信息。一般来说,会话可包括存在于用户装置2和分组网关14之间的隧道。策略控制信息为选通控制(即,允许/拒绝)、QoS控制和QoS信令指定了参数。服务数据流检测信息包括优先级值和服务数据流模板,服务数据流模板指定了流量映射信息,以识别服务会话的包流。流量映射信息可包括一个或多个包过滤器,该包过滤器包括根据例如由源地址、目标地址、源端口、目标端口和IP包报头中指定的传送协议组成的IP五元组对包流进行表征的参数、其他包报头信息和/或从深度包检测(DPI)中获得的信息。通过应用特定PCC规则的服务数据流模板而检测的这组包称为服务数据流。服务数据流可包括用于多个服务会话的包。服务数据流模板的包过滤器在本文中还可称为服务数据流过滤器。
分组网关14在绑定(binding)过程中将服务数据流(扩展后还有相应的PCC规则)与用于核心网络会话的特定载体相关联,以确保服务数据流内的包流从核心网络13接收适当QoS。对于指定PCC规则,分组网关14分析其中的策略控制信息,以确定用于相关核心网络会话的现有载体是否足以提供必要的QoS。如果否,则分组网关14开始建立新的合适载体。分组网关14在一个或多个服务数据流与和用于服务数据流的相应PCC规则指定的QoS匹配的载体之间建立绑定(或“约束”)。因此,为提供特定QoS方案而建立的特定载体可传送一个或多个PCC规则匹配的包流。
分组网关14评估相应PCC规则的服务数据流模板,以应用给穿过核心网络13边界的包。在包评估期间,为PCC规则匹配服务数据流模板中的包过滤器使分组网关14将包映射到PCC规则绑定的载体上。
根据本发明的技术,为了确保核心网络13上在下行和上行方向的指定服务水平,分组网关14应用这样的包过滤器,该包过滤器包括与流量模板流量映射信息中相同的流量映射信息。包过滤器可包括在存储于规则服务器18上的规则中。规则服务器18可包括与核心网络13的用户相关联的规则。规则可包括可应用给包流的一个或多个过滤器或过滤器组。在某些示例中,应用给载体时的一组过滤器可称为流量流模板(TFT)。可以为不同用户和/或不同包流定义不同策略。例如,可以为各种类型的签约者服务定义不同策略。在某些示例中,可应用过滤器来提供更高服务质量,用户可以为其支付更高签约者费用。在其他示例中,过滤器可用于对不同类型的包流,诸如多媒体、数据或声音增强家长控制或提供优先级。
更一般来说,在某些示例中,分组网关14识别与不同用户相关联的包,并根据与用户相关联的过滤器以不同方式处理这些包。例如,分组网关14可检验包流的包报头。在一个示例中,分组网关14可检验包的源端口和目标端口、协议、源IP地址和目标IP地址,例如,五元组。根据报头内容和分组网关14应用的过滤器,包可被丢弃、重优先化、修改或允许继续至报头中指定的目标。图2和图3进一步对分组网关14的功能进行了说明。
如图1所示,用户装置2可发送和接收包括包流26的数据包。在一个示例中,分组网关14可初始确定包流26来源于用户装置2,且用户装置2与特定用户相关联。因此,分组网关14可从与用户相关联的规则服务器18中选择一个或多个策略。这一个或多个策略可包括一个或多个过滤器。分组网关14可将这组过滤器应用给包流26。
在某些示例中,由于签约者数量增加至几百万,分组网关14的大量资源用于为各个签约者存储和选择过滤器。例如,过滤器可指定端口范围,使得当包包括端口范围内的端口值时,将过滤器应用至包。存储过滤器与端口范围之间的关联,使分组网关14可选择和应用过滤器,这可能要求用于几百万签约者的大量的存储资源。
本发明的方面提供了过滤器标准编码技术。该技术例如可减少将过滤器存储在存储器(例如,内容可寻址数据结构)内和提高性能所需的资源。在一个示例中,分组网关14可应用本发明的技术,以对过滤器指定的端口范围进行编码。为了表示过滤器指定的端口范围,分组网关14可生成包括多个单元的编码值。编码值的第一单元可包括对频繁出现的端口范围进行识别的标识符。例如,本发明的技术可保持一组一个或多个频繁出现的端口范围,它们都由唯一标识符识别。当对与频繁出现的端口范围匹配的端口范围进行编码时,本发明的技术可生成编码值,该编码值将与端口范围相关联的标识符存储在第一单元内。这样,单个编码值的第一单元可表示频繁出现的端口范围,从而减少表示端口范围和提高存储效率所需的编码值的数量。
本发明的技术进一步提供不与频繁出现的端口范围匹配的多个不同端口范围的有效存储。在某些示例中,由过滤器指定的端口范围可以不与频繁出现的端口范围匹配。在这些示例中,本发明的技术可存储指定端口范围,并进一步由索引值识别端口范围。编码值的第二单元可存储表示端口范围的索引值,从而仅用一个或少量编码值表示端口范围。这样,应用本发明技术的分组网关14可有效地仅用一个或少量编码值表示频繁出现和不频繁出现的端口范围。图1以分组网关14为背景对本发明的技术进行了描述,但本文所述的技术一般可应用于能将过滤器应用至包的任何网络装置。
图2是示出了通过分组网关14的包流的框图。分组网关14接收包流20A至20C(“包流20”,在图1中显示为“包流15”),并选择性地将输入接口过滤器22A至22B(“接口过滤器22”)应用至包流20。在图2所示的示例中,分组网关14将输入接口过滤器22A应用至包流20A,将输入接口过滤器22B应用至包流20B。分组网关14不将输入接口过滤器22应用至包流20C。输入接口过滤器22例如可包括接口专用过滤规则和关联动作,分组网关14可将它们应用至包流20。
分组网关14根据分组网关14用于对包进行路由的表26将过滤器24应用至包流20。过滤器24包括应用至包流20的表专用过滤规则和关联动作。这样,分组网关14利用共用规则对与表26对应的包流20的包进行过滤。
分组网关14根据信息28为包流20的包确定下一跳,该信息28可将网络目标与特定下一跳相关联。分组网关14选择性地将输出接口过滤器30应用至包流20。例如,分组网关14可将输出接口过滤器30应用至目标为特定下一跳的包流。在图2所示的示例中,分组网关14将输出接口过滤器30应用至包流20A和20C,但不将输出接口过滤器30应用至包流20B。分组网关14可包括与任何数量的表26相关联的任何数量的输入接口22和输出接口30,但为了简明,图1仅显示与表26关联的输入接口22和输出接口30。
如图2所示,分组网关14还包括频繁出现的端口范围(FOPR)存储器32、动态学习端口范围(DPR)存储器34、内容可寻址存储器(CAM)36、过滤器存储器37和过滤器38。本发明的技术使用FOPR存储器32存储频繁出现的端口范围和各个端口范围的对应标识符。DPR存储器34可进一步将没有包括在FOPR存储器32内的端口范围与对DPR存储器34内的端口范围进行识别的关联索引值一起存储。
应用本发明的技术,分组网关14可生成可存储在CAM 36内的编码值,其中,该编码值进一步与过滤器相关联。该编码值可表示与过滤器指定的端口范围对应的端口范围。随后,包到达分组网关14时,编码值可用于选择存储于过滤器存储器37内的过滤器38,其指定了与包的端口值匹配的端口范围。
在某些示例中,编码值的第一单元可包括对存储于FOPR 32内的频繁出现的端口范围进行识别的标识符。由于一个编码值的第一单元可表示频繁出现的端口范围,本发明的技术可减少表示端口范围所需的CAM 36内存储的编码值的数量。
本发明的技术进一步将可能不与频繁出现的端口范围匹配的多个不同端口范围存储在DPR存储器34内。在某些示例中,过滤器指定的端口范围可不与频繁出现的端口范围匹配。在这些示例中,DPR存储器34可存储指定端口范围,并进一步通过索引值识别端口范围。因此,这些端口范围可由分组网关14动态学习。编码值的第二单元可存储表示DPR存储器34的端口范围的索引值。这样,仅用一个或少量编码值便可表示端口范围。因此,本发明的技术可有效地仅用一个或少量编码值表示频繁出现的动态学习端口范围。该编码值可进一步与过滤器关联,并存储在CAM 36内。当分组网关14接收包时,由包指定的端口值用于生成查询值,该查询值与CAM 36内存储的编码值相比较。当查询值与CAM 36的编码值匹配时,选择与编码值关联的过滤器,并将其应用至对应包。
图3是示出了根据本发明一个或多个技术配置的包括编码模块60的示例路由器40的框图。为了便于说明,下文可以图1的示例所示的***10为背景对路由器40进行说明,且路由器40可表示路由器12中的任何一个。在该示例性实施方式中,路由器40包括控制单元42、接口卡(IFC)62A至62N(统称为“IFC 62”)和服务卡68。
路由器20一般包括机架(为了简化说明,图3的示例中未示出),机架具有用于容纳包括IFC 64和服务卡68的一组卡的多个缝隙。各个卡可***机架的对应缝隙中,以使卡通过总线、背板或其他电通信机构与控制单元42可通信耦接。IFC 62通过入站网络链路64A至64N(统称为“入站链路64”)和出站网络链路66A至66N(统称为“出站链路66”)发送和接收包流或网络流量。在某些示例中,用于共用IFC的入站链路64和出站链路66形成IFC的共用物理通信介质,IFC以全双工模式运行。即,在某些示例中,各个IFC 62与可基本同时发送和接收数据的各个通信介质耦接。在其他示例中,入站链路64和出站链路66形成各个IFC 62的单独物理介质。
控制单元42可包括执行存储在诸如存储装置(例如,磁盘驱动器或光驱)的计算机可读存储介质(图3中未示出)中的软件指令(诸如用于定义软件或计算机程序的软件指令)的一个或多个处理器(图3中未示出),或者存储器(例如,闪存、随机存取存储器(RAM))或任何其他类型的易失性或非易失性存储器,其存储指令使可编程处理器执行本文所述的技术。可替代地,控制单元42可包括专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用处理器(ASSP)、一个或多个现场可编程门阵列(FPGA),或一个或多个前述专用硬件示例的任何组合,以用于实施本文的技术。
控制单元42还可分成逻辑或物理“平面”,以包括第一控制或路由平面44和第二数据或转发平面52。在某些示例中,控制单元42可进一步分成第三逻辑或物理“平面”,服务平面。即,控制单元42可以逻辑方式(例如,作为运行于同一组硬件部件上的单独软件实例)、物理方式(例如,作为单独物理专用硬件部件,其以硬件静态执行功能或动态执行软件或计算机程序以实现该功能)或逻辑和物理方式的某种组合来实现三种单独功能,例如,路由、转发和服务功能。
控制单元42的控制平面44可提供路由器40的路由功能。在这个方面,控制平面44可代表实现路由协议50的控制单元42的硬件或硬件和软件的组合。路由协议50例如可包括中间***到中间***(IS-IS)、开放最短路径优先(OSPF)、路由信息协议(RIP)、边界网关协议(BGP)或其他路由协议。通过执行路由协议50,数据平面52识别网络上的现有路线,并确定网络上的新路线。控制平面44将路由信息存储在路由信息库(RIB)50内。该路由信息可包括定义网络(诸如图1的网络14)的拓扑结构的信息。控制平面44可解析路由信息定义的拓扑结构,以选择或确定网络14上的一个或多个路线。随后,控制平面44可根据这些路线更新数据平面52,以通过存储在转发信息库(RIB)50内的转发信息对数据平面52编程。
通过一个或多个出站链路转发包之前,数据平面52可将一个或多个过滤器56应用至包。过滤器56可存储在过滤器存储器74内。过滤器存储器74可以是存储过滤器56的任何合适数据结构,诸如数据库、查找表、阵列、链表等。在某些示例中,过滤器56根据例如由源地址、目标地址、源端口、目标端口和IP分组报头中指定的传输协议组成的IP五元组、其他分组报头信息和/或从深度包检测(DPI)中获得的信息来指定一个或多个条件和将在与表征包流的参数匹配的包上进行的一组动作。这些动作可包括为包添加标签、移除或交换包上的标签、检查包是否携带病毒、对包进行深度包检测、对包进行服务质量处理、阻挡或丢弃包或其他服务中的一个或多个。
为了应用一个或多个过滤器,数据平面52包括转发部件,例如,包转发引擎58,包转发引擎58还包括FIB 54、内容可寻址存储器(CAM)72、编码模块60和转发专用集成电路(ASIC)70。转发ASIC 70可包括一个或多个专用包转发集成电路。在该示例中,CAM 72用于存储对过滤器56进行识别的指针,但也可使用任何其他类型的可读存储器结构。CAM72包括半导体存储器和使存储器内的内容搜索操作在一个时钟周期内完成的比较电路。
在一个示例中,CAM 72可存储一个或多个条目,这些条目包括与一个或多个过滤器相关联的编码值。为了选择一个或多个过滤器,CAM 72将查询值与CAM 72的一个或多个编码值相比较,并返回与和查询值匹配的编码值相关联的过滤器56的指针。例如,PFE 58可利用过滤器56的指针从过滤器存储器74中选择一个或多个过滤器56。该查询值可根据与CAM 72中存储的编码值相同的技术进行编码。例如,PFE 58可请求编码模块60从由包指定的端口或端口范围中生成查询值。随后,PFE 58使用该查询值从CAM 72中选择与由包指定的端口或端口范围相关联的过滤器。
在一个示例中,CAM 72的各个编码值表示一个或多个过滤器56指定的精确端口值或端口范围。各个编码值与指定精确端口值或端口范围的过滤器相关联。这样,当接收到包时,编码模块60可使用包中包括的端口信息生成查询值,查询值随后被CAM 72用于选择与查询值相关联的一个或多个过滤器。PFE 58可通过所选过滤器对转发ASIC 70编程,并根据过滤器对包进行路由。如图4详细所示,编码模块60提供端口范围的编码技术,用于在CAM 72中有效存储和检索过滤器。
图4是示出了PFE 58的示例性实施方式和编码模块60中包括的数据结构的展开图的框图。如图4所示,PFE 58包括FIB 54、CAM 72、编码模块60和转发ASIC 70。编码模块60还包括频繁出现的端口范围(FOPR)存储器80和动态学习端口范围(DPR)存储器82。
如上文中图3所示,CAM 72可存储条目,各个条目包括与编码值关联的过滤器或过滤器数据的存储位置。先有的用于表示CAM中的端口范围的技术可能无法有效地存储端口范围,因为在这些先有技术中,端口范围可能跨越多个CAM条目。例如,在将端口表示为16位值的传统CAM中,1024至65535的端口范围一般需要扩展成6个单独的CAM条目,如下所示:
000001** **** ****
00001*** **** ****
0001**** **** ****
001* **** **** ****
01** **** **** ****
1*** **** **** ****
如果过滤器内指定多个端口范围,则扩展的数量增加,因此,CAM条目的数量进一步增加。例如,如果过滤器指定两个端口范围,则各个端口范围的端口最小值和最大值都表示为16位值,一个过滤器将有(2×16)(2×16)=1024个扩展。因此,先有技术的可伸缩性有限。
与先有技术相比,本发明提供的编码技术可提高控制平面性能(硬件更新)并使用更少的CAM条目,例如,某些情况下使用一个条目,来表示与过滤器相关联的端口范围。例如,在某些应用中,实际上仅一小部分过滤器使用端口范围,并且即使指定了范围,某些范围也以较高频率使用(例如,1023至65536以较高频率使用)。本发明的技术可避免没有指定范围的过滤器的控制平面中高昂成本的范围编码。对于具有了范围的过滤器,编码模块60可有效地对频繁出现的端口范围进行编码,有时最多利用一个TCAM条目。通过将各个“动态”范围表示为编码值中的索引,可有效处理不频繁出现的或“动态”的范围。这些索引值可由树形数据结构进行管理,具体如本文进一步所述。通过避免已知/频繁使用的端口的规则分解,并通过免除执行用于精确端口范围的编码逻辑的需要,可减小控制平面的整体复杂性。
图4公开的示例技术根据与过滤器关联的端口或端口范围生成由三个单元组成的32位编码值。编码值的三个单元分别存储表示精确端口数量的16位值、表示频繁出现的端口范围的标识符的8位值和表示动态学习端口范围的索引的8位值。
如图4所示,CAM 72可为三态内容可寻址存储器(TCAM)。CAM 72包括一个或多个条目84。CAM 72中的各个条目包括编码值88、掩码90和过滤器86。编码值88可由编码模块60根据本文所述的示例技术而生成。为了在查找操作中从CAM 72中选择一个或多个过滤器,CAM 72可将查询值与存储于CAM 72内的各个编码值相比较,以识别条目84的一个或多个匹配编码值。对于与查询值匹配的各个编码值,CAM 72可返回包括匹配编码值的对应条目的过滤器。在某些示例中,过滤器86可包括存储过滤器定义的存储器位置。在其他示例中,过滤器86可包括过滤器定义本身。
在某些示例中,掩码90可用于进一步提高CAM 72的查找性能。例如,掩码90可包括位串,该位串包括值0、1或X。CAM 72将查询值与编码值比较时,掩码90应用至编码值,随后将所得值与查询值相比较。对编码值的一个位应用掩码值1返回相同编码位值,而对编码值的一个位应用掩码值0则返回编码位值的1的补码。掩码值X包括“无关”值,“无关”值使CAM 72在进行比较时忽略应用了X的编码值的位。例如,如图4所示,CAM 72在比较操作中忽略编码值90的16个最低排列位,因为掩码90的16个最低排列位为无关值。在一个示例中,查询值在16个最高排列位中包括0001100101100100。当进行比较,以搜索与16个最高排列位中的0001100101100100匹配的编码值时,CAM 72可将掩码90应用至编码值80。由于掩码90的16个最低排列位为无关值,且16个最高排列位为1,所以CAM 72将编码值88的16个最高排列位与查询值的16个最高排列位相比较。确定查询值与编码值88匹配之后,返回过滤器86A。
为了初始将条目存储在CAM 72内,编码模块60首先为过滤器生成编码值。例如,PFE 58可初始接收指定了一个或多个精确端口或端口范围的一个或多个过滤器。PFE 58可从包括一个或多个过滤器的策略服务器(未示出)中接收一个或多个过滤器。在其他示例中,在路由器40上运行的管理器或其他应用可指定将由PFE 58应用在包流上的一个或多个过滤器。在任何情况下,PFE 58都可接受一个或多个过滤器,编码模块60使用这一个或多个过滤器生成与过滤器对应的一个或多个编码值。
如上所述,各个编码值都包括三个单元。例如,如图4所示,编码值88包括精确端口单元92、频繁出现的端口范围(FOPR)单元94和动态学习端口范围(DPR)单元96。如图4所示,编码值88的16个最高排列位包括精确端口单元92,第8至15位表示FOPR单元94,8个最低排列位包括DPR单元96。尽管本发明的示例对分解成一个16位单元和两个8位单元的32位编码值进行了说明,但本发明的技术还可应用位尺寸并非32位的编码值。
在某些示例中,过滤器可指定精确端口值。在这些示例中,精确端口单元92存储单个端口值,该端口值表示过滤器指定的精确端口。例如,如图4所示,精确端口值92包括表示端口6500的精确端口。因此,如果编码模块60接收的过滤器指定了单个端口6500,则编码模块60可生成编码值88,并存储端口值6500。在当前示例中,由于过滤器指定了精确端口,所以FOPR单元94或DPR索引96中不包括任何值。另外,掩码90为16个最高排列位的其中每位包括值1,并为16个最低排列位包括无关值。这样,掩码90表示,仅16个最高排列位包括条目84A的端口范围数据。包括端口6500的过滤器84A可进一步与条目84A中的编码值88相关联。
在某些示例中,编码模块60可确定过滤器指定了端口范围,而不是精确端口值。通过确定指定端口范围是否频繁出现,并将频繁出现的端口范围编码为CAM 72中的一个条目,应用本发明的技术的编码模块60可减少CAM 72中表示端口范围的条目。例如,编码模块60包括频繁出现的端口范围(FOPR)存储器80。如图4所示,FOPR存储器80包括八个条目,各个条目表示一个频繁出现的端口范围。在某些示例中,存储于FOPR存储器80内的条目的端口范围可由运行于路由器40上的管理器或其他应用指定。在其他示例中,编码模块60可生成统计信息,其包括显示包流中最频繁出现的端口范围的频率数据。FOPR 80例如可由编码模块60随统计信息的变化而更新。
如图4所示,FOPR存储器80的条目116包括位位置(bit position)标识符102、低极值端口值104和高极值端口值106。位位置标识符102包括对条目116进行唯一识别的标识符。低极值端口值104包括频繁出现的端口范围的最低端口值,高极值端口值106包括频繁出现的端口范围的最高端口值。
如果编码模块60初始接收用于编码的过滤器,并确定过滤器指定了端口范围,则编码模块60进一步确定端口范围是否包括在FOPR存储器80内。例如,如果过滤器指定了端口范围49152至65536,则编码模块60可识别与条目116中的端口范围相关联的位位置标识符102。编码模块60可使用位位置标识符102生成编码值108。编码值108的第8至15位包括FOPR标识符98。FOPR标识符98还包括位图,其中,该位图的各个位的排序与FOPR存储器80的位位置标识符相对应。例如,FOPR存储器80的最低排列位与FOPR存储器80的最低排列位位置标识符对应。
在当前示例中,位位置标识符102与FOPR存储器80的条目116内指定的端口范围相关联。因此,编码模块60可使CAM 72将FOPR标识符98的第三低排列位设为值1。FOPR标识符98的第三低排列位的值1表示与过滤器86B相关联的指定端口范围由位位置标识符102,例如,FOPR存储器80的第三低排列位位置标识符进行识别。这样,FOPR存储器80可使用单个位位置标识符表示过滤器指定的端口范围。该单个位位置标识符,例如,位位置标识符102,使用CAM 72中的单个条目84B表示端口范围49152至65536,因此减少了表示CAM 72中的端口范围所需的条目数量。在设置FOPR标识符98的值之后,编码模块60可进一步将掩码110存储在条目84B内,其中FOPR标识符98的位位置处为值1,编码值108中不包括端口范围数据的其余位为无关值。
在某些示例中,编码模块60可确定过滤器指定了没有包括在FOPR存储器80内的端口范围。这些端口范围可称为不频繁出现的或“动态”的端口范围。例如,过滤器86C可指定端口范围24001至34000。首先,编码模块60确定端口范围是否包括在FOPR 80内。如图4所示,端口范围24001至34000没有包括在FOPR存储器80内。编码模块60在确定该端口范围没有包括在FOPR存储器80内之后,可以确定端口范围24001至34000是否存储在动态学习端口范围存储器82内。
在某些示例中,DPR存储器82包括树形结构,例如,二叉搜索树形数据结构,如图4所示。DPR存储器82的各个节点表示包括低极值和高极值的动态学习端口范围,低极值和高极值分别与动态学习端口范围的最低端口值和最高端口值对应。DPR存储器82的各个节点还包括索引值,该索引值对节点进行唯一识别,因此动态学习端口范围由节点表示。所述索引值可在二叉搜索树形数据结构中包括键值。DPR存储器82中的端口值的各个范围在叶节点分解,使得没有任何叶节点的动态学习端口范围与任何其他叶节点的动态学习端口范围重叠。例如,如图4所示,DPR存储器82的各个叶节点包括由索引唯一识别的非重叠的动态学习端口范围。
在当前示例中,编码模块60确定端口范围24001至34000包括在DPR存储器82中。如图4所示,索引值7与表示端口范围24001至34000的节点相关联。因此,编码模块60可在CAM 72中生成包括编码值112的条目84C。编码值112的第0至7位存储DPR索引100。DPR索引100包括DPR 82的索引值,例如,7,其与表示DPR存储器82中端口范围24001至34000的节点相关联。通过用DPR索引100表示CAM 72中的动态学***衡,以提高性能。在设置DPR索引96的值之后,编码模块60可进一步将掩码114存储在条目84C内,其中DPR索引100的位位置处为值1,编码值112中不包括端口范围数据的其余位为无关值。
在某些示例中,当添加动态学***衡,以提高数据结构的效率。编码模块60可进一步更新CAM72中初始包括索引3的条目,以表示10001至16000,并用包括表示动态学习端口范围10001至12000和12001至16000的所生成的第一和第二叶节点的索引值的两个条目代替各个单个的条目。这样,DPR 82可以将多个不同动态范围表示为CAM 72中的索引,因此,使用的CAM条目数量小于实际动态学习端口范围值存储在CAM 72内的情况。
图5是示出了根据本发明的技术的生成编码值的示例方法的流程图。图5的示例方法可由如图4所示的编码模块60进行。在某些示例中,图5的方法可提高控制平面性能,并通过对端口范围编码而减少表示端口范围所需的CAM条目。例如,本发明的技术可将频繁使用的端口范围编码为单个或少量CAM条目。该技术可进一步使用比动态学***面中的范围编码。图5的示例方法可进一步有效地对频繁出现的端口范围进行编码,并通过将各个动态学习端口范围表示为CAM 72中的CAM条目的编码值中的索引值而有效处理不频繁出现的端口范围,例如,动态学习端口范围。
为了对过滤器指定的端口或端口范围进行编码,PFE 58可初始例如从策略服务器、管理器、脚本或其他网络装置中接收过滤器。编码模块60初始接收过滤器,并生成包括32位、其中每位都初始化为零的初始化编码值(140)。随后,编码模块60确定过滤器是否指定了精确端口(142)。如果过滤器指定了精确端口(144),则编码模块60将精确端口值存储为编码值的精确端口单元(166)。如果过滤器没有指定精确端口(146),则编码模块60可确定过滤器是否指定了逻辑操作(148)。如果编码模块60确定过滤器指定了逻辑操作(150),则编码模块60进行逻辑操作,具体如以下示例所述(164)。
在某些示例中,编码模块60可提供指定逻辑操作的编码值。逻辑操作可生成表示单端口、端口范围或多个端口范围的编码值。当FOPR存储器80和DPR存储器82不具有存储额外端口范围的能力时,编码模块60可使用逻辑操作。例如,过滤器可指定没有在FOPR存储器80或DPR存储器82中表示的端口范围。另外,FOPR存储器80或DPR存储器82都可不包括额外的存储指定端口范围的能力。在这些示例中,编码模块60可进行逻辑操作,以生成表示端口范围的一个或多个编码值。
在一个示例中,编码值可表示指定大于1024的所有端口范围的逻辑操作,例如,>1024。在另一个示例中,编码值可表示指定小于65536的所有端口范围的逻辑操作,例如,<65536。在另一个示例中,编码值可表示指定非端口80的所有端口范围的逻辑操作,例如,!80。编码模块60可进行逻辑操作,以生成表示端口范围的编码值。各个逻辑操作在以下示例中进一步说明。
在“大于”逻辑操作的一个示例中,过滤器可指定大于37的所有端口值的端口范围。十进制值37的16位二进制表示为0000000000100101。在这种示例中,编码模块60可初始确定37是否为FOPR存储器80中的一个或多个条目的低极值。如果该端口值为低极值,并且高极值为65536,则编码模块60可选择与FOPR存储器80中的匹配端口范围相关联的FOPR标识符,并进一步生成包括FOPR标识符的编码值,如图4所示。例如,如果逻辑操作指定大于1024的所有端口范围,编码模块60可选择与1024至65536关联的FOPR标识符,例如,3。但是,在当前示例中,逻辑操作指定大于37的所有端口值的范围。FOPR存储器80中的条目不将38作为3678的低极值和65536的高极值。
如果FPOR存储器80中不存在匹配条目,则编码模块60以以下方式生成端口范围值大于37的一个或多个编码值。编码模块60首先识别端口37的二进制值中包括值1的最高有效位(M)。如果端口值包括所有0值,则编码模块60生成包括xxxxxxxxxxxxxxxx的编码值。在当前示例中,端口37的二进制端口值为0000000000100101,具有值1的最高有效位(M)为第5位。在确定第5位为1后,编码模块60生成用1代替第5位之前的每个0值的第一编码值,例如,11111111111xxxxx。编码模块60生成用x值代替尾随M的每个位的第二编码值,例如,00000000001xxxxx。对于M之后的各个尾随零,编码模块60还生成一个编码值,其中的尾随零用1代替,尾随值1的位值设为x。在当前示例中,编码模块60生成三个编码值:000000000011xxxx、0000000000101xxx和000000000010.011x。
在当前示例中,表示大于37的所有端口值的编码值的结果集包括:11111111111xxxxx 、00000000001xxxxx 、000000000011xxxx 、0000000000101xxx和000000000010011x。编码模块60可进一步为各个编码值生成值1的16位掩码,以体现编码值表示由逻辑操作指定的端口范围。各个掩码和编码值都可存储在CAM 72的一个或多个条目内。
在“小于”逻辑操作的一个示例中,过滤器可指定大于45的所有端口值的端口范围。十进制值45的16位二进制表示为0000000000101101。在这种示例中,编码模块60可初始确定44是否为FOPR存储器80中的一个或多个条目的低极值。如果该端口值为低极值,并且高极值为65536,则编码模块60可选择与FOPR存储器80中的匹配端口范围相关联的FOPR标识符,并进一步生成包括FOPR标识符的编码值,如图4所示。例如,如果逻辑操作指定大于1024的所有端口范围,则编码模块60可选择与1024至65536相关联的FOPR标识符,例如,3。但是,在当前示例中,逻辑操作指定大于45的所有端口值的范围。FOPR存储器80中的条目不将45作为3678的低极值和65536的高极值。
如果FPOR存储器80中不存在匹配条目,编码模块60以以下方式生成端口范围值大于45的一个或多个编码值。编码模块60首先识别端口45的二进制值中包括值1的最高有效位(M)。在当前示例中,端口45的二进制端口值为0000000000101101,具有值1的最高有效位(M)为第5位。在确定第5位为1后,编码模块60生成用0代替第M位,用x值代替尾随M的所有位的第一编码值,例如,00000000000xxxxx。随后,编码模块60为M之后包括值1的各个位生成编码值,使对于特定编码值,该位的值1设为值0,设为0的位之后的所有位都设为x。因此,编码模块60可生成以下编码值:0000000000100xxx、00000000001010xx和0000000000101100。
在当前示例中,表示大于45的所有端口值的编码值的组包括:00000000000xxxxx、0000000000100xxx、00000000001010xx 和0000000000101100。编码模块60可进一步为各个编码值生成值1的16位掩码,以体现编码值表示逻辑操作指定的端口范围。各个掩码和编码值都可存储在CAM 72的一个或多个条目内。
在“非”逻辑操作的一个示例中,过滤器可指定不等于10的所有端口值的端口范围。在这种示例中,编码模块60初始生成表示10的二进制值00001010的1的补值。例如,10的1的补码为11111010。随后,编码模块60选择最高有效位(M),生成包括最高有效位的编码值,并将其余位设为值x。例如,编码模块60可为第15位生成编码值1xxxxxxx。对于各个排序低于M的位,编码模块60生成包括低位的编码值,小于M的所有位为x值,且大于M的所有位为零位。例如,表示不等于10的所有端口值的端口范围的编码值包括:00000xxx、0000100x、000011xx、0001xxxx、001xxxxx、01xxxxxx、1xxxxxxx。编码模块60为各个编码值生成值为1的掩码。随后,这些掩码和对应编码值存储在CAM 72内。
如图5所示,如果编码模块60确定过滤器没有指定逻辑操作(152),则编码模块60确定过滤器是否指定了端口范围(156)。如果过滤器指定了端口范围,则编码模块60确定指定端口范围是否包括在FOPR存储器80内(158)。如果端口范围包括在FOPR存储器80内(160),则编码模块60选择与端口范围关联的FOPR标识符,并将FOPR标识符存储在编码值内(168)。如果端口范围没有包括在FOPR存储器80内(162),则编码模块60确定端口范围是否包括在DPR存储器82内(170)。如果端口范围包括在DPR存储器82内(174),则编码模块60选择与端口范围相关联的DPR索引,并将DPR索引存储在编码值内(178)。如果端口范围没有包括在DPR存储器82内,则编码模块60添加该端口范围,作为DPR存储器82中的动态学习端口范围,如图4所示(178)。
在图5所示的示例方法中,一旦编码模块60生成表示精确端口值或端口范围的编码值,编码模块60就进一步生成掩码(180)。掩码包括编码值的各个单元的值1,各个单元中存储表示精确端口或端口范围的数据,如图4所示。随后,编码模块60返回编码值和掩码,并将其存储在CAM72内。
编码模块60在CAM 72中存储表示一个或多个过滤器的端口范围的编码值之后,当指定了精确端口值或端口范围的PFE 5接收包时,编码值可随后由编码模块60选择。初始,当PFE 58接收包时,转发ASIC 70可选择包中包含的IP报头信息。IP报头信息可指定源IP地址、目标IP地址、源端口、目标端口和协议。转发ASIC 70可从IP报头中选择源和目标端口信息。
为了从CAM 72中选择指定IP报头的源和目标端口值的过滤器,编码模块60生成查询值,以查询CAM 72的编码值。例如,CAM 72将与和查询值匹配的编码值相关联的各个过滤器返回。由CAM 72返回的过滤器随后可加载到转发ASIC 70内,转发ASIC 70将过滤器应用至包。为了生成查询值,编码模块60使用与图5所示的方法基本相似的以下示例技术。
在当前示例中,转发ASIC 70最初可从发送给编码模块60的包的IP报头中选择源端口信息。编码模块60生成包括所有零值位的初始化32位查询值。随后,编码模块60将精确端口值存储在查询值的精确端口单元内。例如,查询值的精确端口单元可为查询值的16个最高排序位。
将精确端口值存储在精确端口单元内之后,编码模块60确定包的源端口是否包括在FOPR存储器80的一个或多个范围内。在当前示例中,查询值的第8至15位包括FOPR标识符。如图4所示,FOPR标识符可包括位图,其中,位图中的各个位位置与FOPR存储器80中的条目对应。因此,在当前示例中,如果包的源端口包括在FOPR存储器80的第一和第三端口范围的端口范围中,则编码模块60将FOPR标识符的第8和第10位设为值1。通过将第8和第10位设为值1,FOPR标识符表示源端口包括在FOPR存储器80的第一和第三端口范围条目中。
接下来,编码模块60查询DPR存储器82,以确定包的源端口是否包括在动态范围内。如果源端口包括在DPR存储器82中表示的动态范围内,则编码模块60选择与包括源端口的动态学习端口范围相关联的索引值。编码模块60进一步将索引值存储在查询值的DPR索引值单元内。例如,查询值的8个最低排序位可包括DPR索引值单元。因此,索引值可存储在8个最低排序位中。
在编码模块60生成查询值之后,编码模块60使用查询值查询CAM72。CAM 72将查询值与单个时钟周期内的各个编码值相比较,并返回与和查询值匹配的编码值相关联的各个过滤器。随后,由CAM 72返回的这组过滤器由PFE 58编程到转发ASIC 70内。随后,转发ASIC 70将过滤器应用至包,因此包由转发ASIC进行路由。这样,编码模块60中实现的本发明的技术可用于根据特定包中包含的端口信息选择将应用至包的过滤器。
本文对本发明的各个实施方式进行了说明。这些和其他实施方式都处于所附权利要求的范围内。
Claims (13)
1.一种编码方法,包括:
由计算装置生成表示指定端口范围的编码值,所述编码值包括:
存储标识符的第一单元,所述标识符对最频繁出现的端口范围的关联数据结构中存储的频繁出现的端口范围进行识别,
存储索引的第二单元,所述索引表示指定至少一部分所述指定端口范围的动态学习端口范围,所述动态学习端口范围以动态学习端口范围的树形结构表示,并由所述索引识别;
由所述计算装置接收指示了一端口值的包;
由所述计算装置至少根据所述端口值生成查询值;
由所述计算装置利用表示所述编码值和一个或多个过滤器之间的关联的内容可寻址数据结构,选择所述一个或多个过滤器,其中,所述编码值与所述查询值匹配;并且
由所述计算装置的转发平面将与所述编码值相关联的所述一个或多个过滤器应用至指示了所述端口的所述包。
2.根据权利要求1所述的方法,还包括:
由所述计算装置确定过滤器指定的端口范围;并且
由所述计算装置查询最频繁出现的端口范围的关联数据结构,以确定所述指定端口范围是否包括在所述最频繁出现的端口范围的关联数据结构中。
3.根据权利要求2所述的方法,其中,如果所述指定端口范围包括在所述最频繁出现的端口范围的关联数据结构中,则生成所述编码值,以将对所述频繁出现的端口范围进行识别的标识符存储在所述编码值的第一单元中。
4.根据权利要求2或3所述的方法,其中,如果所述指定端口范围与所述最频繁出现的端口范围不匹配,则将一个或多个动态学习端口范围存储在树形数据结构内,以表示所述过滤器指定的端口范围,其中,所述动态学习端口范围由一个或多个索引唯一表示;并且
生成所述编码值,以将所述一个或多个索引存储在所述编码值的第二单元中。
5.根据权利要求2或3所述的方法,还包括:
由所述计算装置确定与动态学习端口范围的树形结构内的至少一个动态学习端口范围重叠的指定端口范围;并且
由所述计算装置将所述至少一个动态学习端口范围分成所述动态学习端口范围的树形结构内的多个动态学习端口范围,其中,所述多个动态学习端口范围的至少其中之一表示所述指定端口范围,其中,不表示所述指定端口范围的所述多个动态学习端口范围各自表示所述动态学习端口范围的树形结构内的至少一个动态学习端口范围的子集。
6.根据权利要求1至3中任一项所述的方法,其中,如果所述指定端口范围包括单个端口值,
则由所述计算装置将所述单个端口值存储在所述编码值的第三单元中。
7.根据权利要求1所述的方法,其中,至少根据端口值生成查询值还包括:
由所述计算装置选择所述包的端口值;并且
由所述计算装置将所述端口值存储在所述查询值中。
8.根据权利要求1所述的方法,其中,至少根据端口值生成查询值还包括:
由所述计算装置选择所述包的端口值;
由所述计算装置将所述端口值与存储所述最频繁出现的端口范围的关联数据结构的一个或多个端口范围相比较;
由所述计算装置选择与所述关联数据结构的一个或多个端口范围相关联的、包括端口值的一个或多个频繁出现的端口范围标识符;并且
由所述计算装置将所述一个或多个频繁出现的端口范围标识符存储在所述查询值中。
9.根据权利要求7至8中任一项所述的方法,其中,至少根据端口值生成查询值还包括:
由所述计算装置选择所述包的端口值;
由所述计算装置将所述端口值与所述动态学习端口范围的树形结构的一个或多个端口范围相比较;
由所述计算装置选择与包括所述端口值的所述动态学习端口范围的树形结构的动态学习端口范围相关联的动态学习端口范围索引;并且
由所述计算装置将所述动态学习端口范围索引存储在所述查询值中。
10.根据权利要求1至3中任一项所述的方法,还包括:
由所述计算装置生成掩码,其中,所述掩码包括表示第一单元是否存储标识符或第二单元是否存储索引的数据,所述标识符对频繁出现的端口范围进行识别,所述索引表示指定至少一部分所述指定端口范围的动态学习端口范围;并且
由所述计算装置将所述掩码和所述编码值存储在内容可寻址数据结构内。
11.根据权利要求1至3中任一项所述的方法,还包括:
由所述计算装置至少根据一个或多个包流确定一组最频繁出现的端口范围;
由所述计算装置将所述一组最频繁出现的端口范围存储在所述最频繁出现的端口范围的关联数据结构中;
由所述计算装置确定第二包流中的观测端口范围的出现频率高于所述关联数据结构中的至少一个所述最频繁出现的端口范围;
并且
由所述计算装置用所述观测端口范围代替所述关联数据结构中的至少一个所述最频繁出现的端口范围。
12.一种网络装置,包括:
编码模块,生成表示指定端口范围的编码值,所述编码值包括:
存储标识符的第一单元,所述标识符对最频繁出现的端口范围的关联数据结构中存储的频繁出现的端口范围进行识别,
存储索引的第二单元,所述索引表示指定至少一部分所述指定端口范围的动态学习端口范围,所述动态学习端口范围以动态学习端口范围的树形结构表示,并由所述索引识别
转发平面,其接收指示了一端口值的包;
其中所述编码模块:
至少基于所述端口值生成查询值;
利用表示所述编码值和一个或多个过滤器之间的关联的内容可寻址数据结构,选择所述一个或多个过滤器,其中,所述编码值与所述查询值匹配;并且
其中,所述转发平面将与所述编码值相关联的所述一个或多个过滤器应用至指示了所述端口的所述包。
13.根据权利要求12所述的网络装置,
其中,所述编码模块确定由过滤器指定的端口范围;并且
其中,所述编码模块查询最频繁出现的端口范围的关联数据结构,以确定所述指定端口范围是否包括在所述最频繁出现的端口范围的关联数据结构中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/174,437 US8576841B2 (en) | 2011-06-30 | 2011-06-30 | Hybrid port range encoding |
US13/174,437 | 2011-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102857322A CN102857322A (zh) | 2013-01-02 |
CN102857322B true CN102857322B (zh) | 2015-11-04 |
Family
ID=46704448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210211428.1A Expired - Fee Related CN102857322B (zh) | 2011-06-30 | 2012-06-21 | 混合端口范围编码 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8576841B2 (zh) |
EP (1) | EP2541854B1 (zh) |
CN (1) | CN102857322B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130077530A1 (en) * | 2011-09-28 | 2013-03-28 | Cisco Technology, Inc. | Scaling IPv6 on Multiple Devices Virtual Switching System with Port or Device Level Aggregation |
US8635326B1 (en) * | 2011-09-29 | 2014-01-21 | Juniper Networks, Inc. | Mobile gateway having reduced forwarding state for anchoring mobile subscribers |
US8713169B2 (en) | 2011-10-11 | 2014-04-29 | Cisco Technology, Inc. | Distributed IPv6 neighbor discovery for large datacenter switching systems |
US9282038B2 (en) * | 2012-03-15 | 2016-03-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Policy control enforcement at a packet gateway |
US9143557B2 (en) * | 2012-06-27 | 2015-09-22 | Juniper Networks, Inc. | Feedback loop for service engineered paths |
US9178801B1 (en) | 2012-06-27 | 2015-11-03 | Juniper Networks, Inc. | Automated service discovery in computer networks |
US8909857B2 (en) * | 2012-06-29 | 2014-12-09 | Broadcom Corporation | Efficient storage of ACL frequent ranges in a ternary memory |
US8943268B2 (en) * | 2012-08-17 | 2015-01-27 | Broadcom Corporation | Ternary content addressable memory (TCAM) storage system |
US8938579B2 (en) * | 2012-09-28 | 2015-01-20 | Alcatel Lucent | Method and system for using range bitmaps in TCAM access |
US9094337B2 (en) | 2012-12-21 | 2015-07-28 | Cieno Corporation | Source identification preservation in multiprotocol label switching networks |
US20140177637A1 (en) * | 2012-12-21 | 2014-06-26 | Ian Hamish Duncan | Reduced complexity multiprotocol label switching |
US10686699B2 (en) | 2015-07-28 | 2020-06-16 | Ciena Corporation | Multicast systems and methods for segment routing |
US10069639B2 (en) | 2015-07-28 | 2018-09-04 | Ciena Corporation | Multicast systems and methods for segment routing |
US20170266475A1 (en) * | 2016-03-21 | 2017-09-21 | David G. Mahrt | Compressed air foam system with in-tank manifold |
US10834085B2 (en) | 2017-04-14 | 2020-11-10 | Nxp Usa, Inc. | Method and apparatus for speeding up ACL rule lookups that include TCP/UDP port ranges in the rules |
US10541923B2 (en) | 2018-02-05 | 2020-01-21 | Ciena Corporation | Segment routing traffic engineering based on link utilization |
CN110413667A (zh) * | 2019-06-18 | 2019-11-05 | 深圳壹账通智能科技有限公司 | 接口选择方法及装置、电子设备和计算机可读存储介质 |
WO2024102150A1 (en) * | 2022-11-10 | 2024-05-16 | Rakuten Mobile, Inc. | Determining internet protocol (ip) addresses for scanning in wireless network |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674557A (zh) * | 2005-04-01 | 2005-09-28 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133586A1 (en) * | 2001-01-16 | 2002-09-19 | Carter Shanklin | Method and device for monitoring data traffic and preventing unauthorized access to a network |
US20060036907A1 (en) * | 2004-08-11 | 2006-02-16 | Emc Corporation | Area-and product-independent test automation system and method for automatically synchronizing tests of multiple devices |
US8374182B2 (en) * | 2010-08-13 | 2013-02-12 | Juniper Networks, Inc. | Virtual local area network (VLAN)-based membership for multicast VLAN registration |
-
2011
- 2011-06-30 US US13/174,437 patent/US8576841B2/en active Active
-
2012
- 2012-06-21 CN CN201210211428.1A patent/CN102857322B/zh not_active Expired - Fee Related
- 2012-06-22 EP EP12173103.8A patent/EP2541854B1/en not_active Not-in-force
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674557A (zh) * | 2005-04-01 | 2005-09-28 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
Non-Patent Citations (1)
Title |
---|
Algorithms for Advanced Packet Classification with Ternary CAMs;Karthik Lakshminarayanan等;《SIGCOMM "05 Proceedings of the 2005 conference on Applications, technologies, architectures, and protocols for computer communications》;20051031;第35卷(第4期);193-204 * |
Also Published As
Publication number | Publication date |
---|---|
EP2541854B1 (en) | 2015-02-18 |
CN102857322A (zh) | 2013-01-02 |
EP2541854A1 (en) | 2013-01-02 |
US8576841B2 (en) | 2013-11-05 |
US20130003727A1 (en) | 2013-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102857322B (zh) | 混合端口范围编码 | |
CN102857491B (zh) | 集管理方案 | |
US10749794B2 (en) | Enhanced error signaling and error handling in a network environment with segment routing | |
US10110433B2 (en) | System and method for exchanging information in a mobile wireless network environment | |
CN102754409B (zh) | 用于直径协议协调的方法、***和计算机可读介质 | |
US11296972B2 (en) | Scalable network path tracing | |
CN101888334B (zh) | 利用路由优先级值的动态重定义的可扩展路由策略结构 | |
US7990893B1 (en) | Fast prefix-based network route filtering | |
CN110401599B (zh) | 数据包的处理方法及装置、存储介质、电子装置 | |
CN104270475A (zh) | 基于NAT64实现IPv4网络与IPv6网络互通的***及方法 | |
FI119166B (fi) | Menetelmä ja laitteisto palvelunlaatuluokasta riippuvan reitityspäätöksen muodostamiseksi | |
CN108353022A (zh) | 一种数据报文的处理方法、装置及*** | |
EP2953302B1 (en) | Service packet processing method, apparatus and system | |
Wilkins | Designing for Cisco Internetwork Solutions (DESIGN) Foundation Learing Guide | |
CN1973503B (zh) | 流处理 | |
CN112769738A (zh) | DetNet数据包处理方法及装置 | |
Tulumello et al. | Pushing services to the edge using a stateful programmable dataplane | |
CN110120985A (zh) | 通信的方法和设备 | |
CN105376174A (zh) | 执行lte/epc中基于服务链的策略的方法与设备 | |
CN104363176A (zh) | 一种报文控制的方法和设备 | |
CN105323234A (zh) | 业务节点能力处理方法、装置、业务分类器及业务控制器 | |
CN104871497B (zh) | 流表处理方法和装置 | |
CN110581799A (zh) | 一种业务流的转发方法及装置 | |
WO2023050981A1 (zh) | 虚拟专用网络业务标识的分配方法、报文处理方法及装置 | |
US20230028147A1 (en) | Source route compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: California, USA Patentee after: Juniper Networks, Inc. Address before: California, USA Patentee before: Jungle network |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151104 Termination date: 20210621 |