CN106534394A - 用于使用余数来实现端口映射的nat端口管理器 - Google Patents

用于使用余数来实现端口映射的nat端口管理器 Download PDF

Info

Publication number
CN106534394A
CN106534394A CN201510587816.3A CN201510587816A CN106534394A CN 106534394 A CN106534394 A CN 106534394A CN 201510587816 A CN201510587816 A CN 201510587816A CN 106534394 A CN106534394 A CN 106534394A
Authority
CN
China
Prior art keywords
port
conversion
scope
logic
source
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.)
Granted
Application number
CN201510587816.3A
Other languages
English (en)
Other versions
CN106534394B (zh
Inventor
万伟
郝丽红
高俊涛
王琼
邓君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juniper Networks Inc
Peribit Networks Inc
Original Assignee
Peribit Networks Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Peribit Networks Inc filed Critical Peribit Networks Inc
Priority to CN201510587816.3A priority Critical patent/CN106534394B/zh
Priority to US14/871,408 priority patent/US9961046B2/en
Publication of CN106534394A publication Critical patent/CN106534394A/zh
Application granted granted Critical
Publication of CN106534394B publication Critical patent/CN106534394B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/255Maintenance or indexing of mapping tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2517Translation of Internet protocol [IP] addresses using port numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请的各实施例涉及用于使用余数来实现端口映射的NAT端口管理器。一种网络设备可以包括一个或者多个处理器。一个或者多个处理器可以从服务处理器接收用于为数据分组分配网络地址转换资源的调用。一个或者多个处理器可以确定与服务处理器关联的标识符。一个或者多个处理器可以基于标识符、使用网络地址端口转换管理器来分配网络地址转换资源。网络地址转换端口管理器可以是为数据分组确定转换的源端口的两级端口位图管理系统。

Description

用于使用余数来实现端口映射的NAT端口管理器
技术领域
本申请的各实施例涉及用于使用余数来实现端口映射的NAT端口管理器。
背景技术
在计算机联网中,网络地址转换(NAT)是允许私有网络上的设备与公有网络(比如因特网)上的设备通信的联网服务。使用NAT允许私有网络上的一个或者多个设备被在NAT以外的设备视为具有相同因特网连接或者相同网络地址,由此向私有网络上的一个或者多个设备提供安全。端口转发或者端口映射是在分组(例如,数据段)穿越网络设备(例如,服务网关)之时将通信请求从一个网际协议(IP)地址和端口号组合重定向到另一IP地址和端口号组合的NAT应用。
发明内容
根据一些可能的实现方式,一种网络设备可以包括一个或者多个处理器。一个或者多个处理器可以从服务处理器接收用于为数据分组分配网络地址转换资源的调用。一个或者多个处理器可以确定与服务处理器关联的标识符。一个或者多个处理器可以基于标识符、使用网络地址端口转换管理器来分配网络地址转换资源。网络地址转换端口管理器可以是为数据分组确定转换的源端口的两级端口位图管理系统。
附加地或者备选地,两级端口位图管理系统可以包括作为两级端口位图管理系统的第一级的高速缓存位图层并且可以包括作为两级端口位图管理系统的第二级的端口位图层。
附加地或者备选地,在高速缓存位图层中包括的高速缓存位可以与端口位的集合关联。
附加地或者备选地,端口位的集合的每个端口位可以与网络设备的逻辑端口关联。
附加地或者备选地,在分配网络地址转换资源时,一个或者多个处理器可以分配转换的源地址、转换的目的地地址、转换的目的地端口和协议。一个或者多个处理器可以基于标识符来确定转换的源端口余数。一个或者多个处理器可以使用两级端口位图管理系统、基于转换的源端口余数来确定转换的源端口。
附加地或者备选地,在确定转换的源端口余数时,一个或者多个处理器可以对元组执行短XOR运算。元组可以包括转换的源地址、转换的目的地地址、转换的目的地端口和协议。一个或者多个处理器可以使用元组作为用于模运算的被除数和位于网络设备内的服务处理器的总数量作为用于模运算的除数来执行模运算以获得结果。一个或者多个处理器可以将结果乘以标识符以确定转换的源端口余数。
附加地或者备选地,在确定转换的源端口时,一个或者多个处理器可以选择与转换的源端口余数关联的高速缓存位范围。一个或者多个处理器可以选择具有一个或者多个未使用的端口位的、与高速缓存位范围关联的高速缓存位。一个或者多个处理器可以确定与高速缓存位关联的端口位范围。一个或者多个处理器可以选择在端口位范围中包括的未使用的端口位。一个或者多个处理器可以使用端口位范围来确定用于与未使用的端口位关联的未使用的逻辑端口的标识符。用于未使用的逻辑端口的标识符可以对应于转换的源端口。
根据一些可能的实现方式,一种计算机可读介质可以存储一个或者多个指令,一个或者多个指令在由一个或者多个处理器执行时,可以使得一个或者多个处理器从服务处理器接收用于为数据分组分配网络地址转换资源的调用。一个或者多个指令在由一个或者多个处理器执行时可以使得一个或者多个处理器确定与服务处理器关联的标识符。一个或者多个指令在由一个或者多个处理器执行时可以使得一个或者多个处理器基于标识符、使用网络地址端口转换管理器来分配网络地址转换资源。网络地址转换端口管理器可以是两层端口位图管理系统。一个或者多个指令在由一个或者多个处理器执行时,可以使得一个或者多个处理器向服务处理器提供网络地址转换资源。
附加地或者备选地,使得一个或者多个处理器分配网络地址转换资源的一个或者多个指令可以使得一个或者多个处理器分配转换的源地址、转换的目的地地址、转换的目的地端口和协议。一个或者多个指令在由一个或者多个处理器执行时,可以使得一个或者多个处理器基于标识符来确定转换的源端口余数。一个或者多个指令在由一个或者多个处理器执行时,可以使得一个或者多个处理器使用两级端口位图管理系统、基于转换的源端口余数来确定转换的源端口。
附加地或者备选地,使得一个或者多个处理器确定转换的源端口的一个或者多个指令可以使得一个或者多个处理器选择与转换的源端口余数关联的高速缓存位范围。一个或者多个指令在由一个或者多个处理器执行时,可以使得一个或者多个处理器选择具有一个或者多个未使用的端口位的、与高速缓存位范围关联的高速缓存位。一个或者多个指令在由一个或者多个处理器执行时,可以使得一个或者多个处理器确定与高速缓存位关联的端口位范围。一个或者多个指令在由一个或者多个处理器执行时,可以使得一个或者多个处理器选择在端口位范围中包括的未使用的端口位。一个或者多个指令在由一个或者多个处理器执行时,可以使得一个或者多个处理器使用端口位范围来确定用于与未使用的端口位关联的未使用的逻辑端口的标识符。标识符可以对应于用于未使用的逻辑端口的转换的源端口。
附加地或者备选地,使得一个或者多个处理器选择高速缓存位的一个或者多个指令可以使得一个或者多个处理器选择被设置成如下值的高速缓存位,该值指示高速缓存位具有一个或者多个未使用的端口位。
附加地或者备选地,使得一个或者多个处理器确定与高速缓存位关联的端口位范围的一个或者多个指令可以使得一个或者多个处理器确定用于高速缓存位的端口位范围,其中端口位范围等于[n*a,(n+1)*a-1]。‘n’可以是正为其确定关联的端口位范围的高速缓存位。‘a’可以是与高速缓存位关联的端口位的数量。
附加地或者备选地,使得一个或者多个处理器选择在端口位范围中包括的未使用的端口位的一个或者多个指令可以使得一个或者多个处理器选择具有如下值的未使用的端口位,该值被设置成指示高速缓存位具有一个或者多个未使用的端口位。
根据一些可能的实现方式,一种方法可以包括由一个或者多个处理器从服务处理器接收用于为数据分组分配网络地址转换资源的调用。数据分组可以与分组信息关联。分组信息可以用来确定第一哈希值。该方法可以包括由一个或者多个处理器确定与服务处理器关联的标识符。该方法可以包括由一个或者多个处理器基于标识符、使用两层端口位图管理系统来分配网络地址转换资源。网络地址转换资源可以与第二哈希值关联,其中第一哈希值等于第二哈希值。该方法可以包括由一个或者多个处理器向服务处理器提供网络地址转换资源。
附加地或者备选地,该方法可以包括分配转换的源地址、转换的目的地地址、转换的目的地端口和协议。该方法可以包括基于标识符来确定转换的源端口余数。该方法可以包括使用两层端口位图管理系统、基于转换的源端口余数来确定转换的源端口。
附加地或者备选地,该方法可以包括选择与转换的源端口余数关联的高速缓存位范围。该方法可以包括选择具有未使用的端口位的、与高速缓存位范围关联的高速缓存位。该方法可以包括确定与高速缓存位关联的端口位范围。该方法可以包括选择在端口位范围中包括的未使用的端口位。该方法可以包括使用端口位范围来确定用于与未使用的端口位关联的未使用的逻辑端口的标识符。用于未使用的逻辑端口的标识符可以对应于转换的源端口。
附加地或者备选地,该方法可以包括基于与高速缓存位关联的所有逻辑端口被使用来将与高速缓存位关联的标识符设置为等于指示全‘1’的值。
附加地或者备选地,在确定用于未使用的逻辑端口的标识符时,该方法可以包括确定逻辑端口范围。该方法可以包括基于逻辑端口范围来确定用于未使用的逻辑端口的标识符。附加地或者备选地,在确定逻辑端口范围时,该方法可以包括确定逻辑端口范围,其中[n/高速缓存位范围中的高速缓存位的数量+(n%高速缓存位范围中的高速缓存位的数量)*a*位于网络设备内的服务处理器的总数量]等于与逻辑端口范围关联的第一逻辑端口,并且[n/高速缓存位范围中的高速缓存位的数量+((n%高速缓存位范围中的高速缓存位的数量+1)*a-1)*位于网络设备内的服务处理器的总数量]等于与逻辑端口范围关联的最后逻辑端口。‘n’可以是与端口位范围关联的高速缓存位。‘a’可以是与每个高速缓存位关联的端口位的数量。
附加地或者备选地,在确定逻辑端口范围时,该方法可以包括确定用于未使用的逻辑端口的标识符,其中用于未使用的逻辑端口的标识符等于逻辑端口范围中的第一逻辑端口+w*(c-1)。‘w’可以是用于逻辑端口范围中的逻辑端口的标识符的值的递增改变。‘c’可以是用于在逻辑端口范围内的未使用的端口位的顺序值。
根据一些可能的实现方式,一种系统可以包括用于从服务处理器接收用于为数据分组分配网络地址转换资源的调用的装置。该系统可以包括用于确定与服务处理器关联的标识符的装置。该系统可以包括用于基于标识符、使用网络地址端口转换管理器来分配网络地址转换资源的装置。网络地址转换端口管理器可以是为数据分组确定转换的源端口的两级端口位图管理系统。
附图说明
图1A至图1B是这里描述的示例实现方式的概况的示图;
图2是可以在其中实施这里描述的系统和/或方法的示例环境的示图;
图3是用于使用NAT端口管理器的示例过程的流程图,该NAT端口管理器具有使用余数来实现端口映射的两级端口位图管理系统;
图4是与图3中所示的示例过程有关的示例实现方式的示图;以及
图5A至图5D是与图3中所示的示例过程有关的示例实现方式的示图。
具体实施方式
对示例实现方式的以下具体描述参照附图。不同附图中的相同标号可以标识相同或者相似的要素。
一般而言,在分组切换技术中,分组经由网络设备穿越从源点到目的地点的路径(例如,源点‘a’和目的地点‘b’、经由网络设备,其中路径是a→b并且其中‘a’和‘b’可以例如是用户设备)。反向分组是经由网络设备从目的地点向源点返回(例如,b→a)的分组。
在分组进入网络设备(例如,服务网关)时,基于预先配置的策略(例如,规则)来处理分组。预先配置的策略可以例如包括确定是否允许分组进入网络设备、将哪些防火墙过滤器应用于分组、分组可以取哪个路由以到达分组的目的地、是否应用NAT等。在网络设备内的网络处理单元(NPU)可以接收分组并且获得与分组关联的分组信息(例如,源IP地址、目的地IP地址、源端口、目的地端口、IP协议等)。
NPU可以根据预先配置的策略来向用于处理分组的服务处理器提供分组。网络设备可以具有多个服务处理器。NPU可以基于分组信息来选择特定服务,从而有助于在多个服务处理器之中的负载平衡。
流是具有公共特性(比如相同源和目的地网际协议(IP)地址、传送层协议信息和/或IP协议类型)的分组的序列。以相同方式处理并且向相同服务处理器提供属于相同流的分组。
为了选择特定服务处理器,NPU可以将哈希算法应用于分组信息以确定原有哈希值(例如,用于从a→b行进的分组的原有哈希值等于哈希值1)。哈希算法是将原有数据串转换成固定长度的数值输出串以确定哈希值的函数。数值输出串一般小于原有数据串。哈希算法被设计为防冲突,这意味着存在将为不同数据创建相同串的很低概率。NPU可以基于原有哈希值来指派服务处理器。
网络设备可以出于系统性能原因而要求反向分组由与分组相同的服务处理器处理(例如,相同服务处理器可以存储可以应用于反向分组的用于处理分组的预先配置的策略,从而允许消耗更少花费时间和更少设备资源来用于处理反向分组)。这是可能的,因为用于分组的哈希值(例如,原有哈希值)和反向分组(例如,反向哈希值)相等(例如,原有哈希值=反向哈希值=哈希值1,因为用于源IP地址和目的地IP地址的值以及用于源端口和目的地端口的值虽然被转置(transpose)但是未被改变,由此在应用哈希算法时提供相同结果)。
然而,在NAT被应用于分组时,分组信息中的源信息(即,源IP地址和源端口)基于出于安全原因而NAT模糊/改变源信息来改变(例如,在应用NAT之后,源点‘a’可以被改变成源点‘c’,其中路径是c→b并且用于反向分组的反向路径是b→c)。这里,用于反向分组的反向哈希值将不会等于在为了选择特定服务处理器的目的而应用NAT之前确定的原有哈希值(例如,原有哈希值(其中源点是‘a’)将不等于用于反向分组的反向哈希值(其中源点是‘c’),因为用于分组和反向分组的分组信息不同,从而造成在应用哈希算法时的不同哈希值)。
在应用NAT时,确定相同服务处理器如果并非不可能则也是困难的。在某些实例中,服务处理器可以向第二服务处理器发送分组以在用于分组的原有哈希值和用于反向分组的反向哈希值不相等时安装用于分组的转发会话。然而,存储用于安装的转发会话和安装转发会话消耗存储器和网络设备资源。附加地,向第二服务处理器发送分组减少用于处理分组的速度和效率。
NAT可以具有用于在执行NAT时分配和指派源端口的当前NAT端口管理器。然而,当前NAT端口管理器使用端口位图系统,其中随机地或者以循环(round-robin)方式分配NAT源端口(例如,基于执行NAT转换的源端口或者“转换的源端口”)。以这一方式,不可以操控用于反向分组的反向哈希值以发现处理了分组的相同服务处理器。
这里描述的实现方式可以提供一种用于在分配NAT资源时基于使用从用于分组的分组信息确定的余数来选择转换的源端口的NAT端口管理器,其中转换的源端口使分组能够被处理而未安装转发会话,并且其中用于分组的反向分组可以对应于与处理了分组的服务处理器相同的用于处理反向分组的服务处理器。
图1A和图1B是这里描述的示例实现方式100的概况的示图。如图1A中所示,假设使用当前NAT端口管理器来执行NAT。假设当前NAT端口管理器位于中央处理器内。中央处理器是在网络设备内的处理器。假设NPU从网络(例如,网络)接收分组(例如,分组A)并且获得与分组关联的分组信息。假设NPU基于与分组关联的分组信息来确定原有哈希值,并且向中央处理器发送分组以基于原有哈希值来指派用于处理分组的服务处理器(例如,服务处理器1)。假设中央处理器向服务处理器发送分组以用于进一步处理。
如图1A中用标号1所示,服务处理器可以向NAT发送用于为分组分配NAT资源的请求(例如,执行NAT)。
如图1A中用标号2所示,NAT可以分配NAT资源并且可以随机地为分组选择转换的源端口。如图1A中用标号3所示,服务处理器可以接收NAT分配的资源。
如图1A中用标号4所示,服务处理器可以基于NAT分配的资源来确定反向哈希值,并且基于随机地指派的转换的源端口来确定原有哈希值不等于反向哈希值。如图A中用标号5所示,服务处理器可以向第二服务处理器发送消息,该消息具有用于在第二服务处理器接收与分组关联的反向分组以用于转发时安装用于反该向分组的转发会话的指令(例如,向服务处理器2发送消息,该消息具有用于安装用于反向分组的转发会话的指令,该消息包含转换的源IP地址、转换的源端口、目的地IP地址、目的地端口和IP协议)。以这一方式,在反向分组进入网络设备时,第二服务处理器可以安装用于反向分组的转发会话,从而使反向分组能够对处理了分组的相同服务处理器定位。如图1B中所示,假设使用NAT端口管理器来执行NAT,该NAT端口管理器有使用余数来实现端口映射的两级端口位图管理系统。假设NPU从网络接收分组(例如,分组B)并且获得与分组关联的分组信息。假设NPU基于与分组关联的分组信息来确定原有哈希值,并且向中央处理器发送分组以基于原有哈希值来指派用于处理分组的服务处理器(例如,服务处理器1)。假设中央处理器向服务处理器发送分组以用于进一步处理。
如图1B中用标号1所示,服务处理器可以从NPU接收分组并且可以向NAT发送用于为分组分配NAT资源的请求。如图1B中用标号2所示,NAT可以分配NAT资源并且可以使用两级端口位图管理系统来选择转换的源端口,该两级端口位图管理系统使用余数来实现端口映射。
如图1B中用标号3所示,服务处理器可以接收包括转换的源端口的分配的NAT资源。
如图1B用标号4所示,服务处理器可以基于转换的源端口来确定原有哈希值等于反向哈希值。以这一方式,反向分组可以基于NAT端口管理器对NAT资源的分配来对处理了分组的相同服务处理器定位而无需安装转发会话。使用这一NAT端口管理器可以节省存储器和处理器资源以及增加处理速度和效率。
图2是可以在其中实施这里描述的系统和/或方法的示例环境200的示图。如图2中所示,环境200可以包括网络210和网络设备220,网络设备220可以包括NPU 230、一个或者多个服务处理器240-1至240-N(N≥1)(下文被统称为“服务处理器240”并且被个别地称为“服务处理器240”)、中央处理器250和NAT 260。环境200的设备可以经由有线连接、无线连接或者有线连接和无线连接的组合而互连。
网络210可以包括一个或者多个有线网络和/或无线网络。例如,网络210可以包括蜂窝网络(例如,长期演进(LTE)网络、3G网络、码分多址(CDMA)网络等)、公用陆地移动网络(PLMN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网络(例如,公用交换电话网络(PSTN))、私有网络、自组织网络、内联网、因特网、基于光纤的网络、云计算网络等和/或这些或者其它类型的网络的组合。
网络设备220可以包括一个或者多个数据处理设备和/或流量传送设备。例如,网络设备220可以包括网关、路由器、调制解调器、交换机、防火墙、网络接口卡(NIC)、集线器、网桥、服务器、光添加/丢弃复用器(OADM)或者任何其它类型的处理和/或传送流量的设备。附加地或者备选地,网络设备220可以发送和/或从网络210接收数据分组(例如,分组)。如图2中所示,网络设备220可以包括NPU 230、服务处理器240、中央处理器250和/或NAT 260。
NPU 230可以包括能够接收、处理、存储和/或传送与网络设备220关联的流量的一个或者多个处理器。例如,NPU 230可以从网络210接收与流量关联的分组。NPU 230可以向服务处理器240和/或向中央处理器250提供分组以用于进一步处理。
服务处理器240可以包括能够接收、处理、存储和/或传送与网络210关联的流量的一个或者多个处理器。例如,服务处理器240可以建立和/或管理流量流和在流量流内的分组。服务处理器240可以从NPU 230和/或中央处理器250接收分组。服务处理器240可以经由中央处理器250调用NAT 260以对分组执行NAT。服务处理器240可以从NAT 260接收NAT分配的资源。
中央处理器250可以包括能够接收、处理、存储和/或传送与网络210关联的流量的一个或者多个处理器。中央处理器250可以仲裁和/或分配网络资源并且分发分组,从而使得相同服务处理器240可以处置/处理相同流。中央处理器250可以从NPU 230接收分组。中央处理器250可以从服务处理器240向NAT 260提供用于为分组分配NAT资源的调用。
NAT 260可以包括提供NAT功能并且保护与网络设备220关联的私有网络的设备的网络安全处理器。NAT 260可以包括网关功能、路由器功能、交换机功能、防火墙功能等。NAT 260可以执行安全功能以便保护网络设备220免于在与网络设备220关联的私有网络以外始发的攻击。NAT 260可以从服务处理器240获得用于为用于由服务处理器240处理的分组分配NAT资源的调用。NAT 260可以通过使用具有两级端口位图管理系统的NAT端口管理器来重写在流过NAT260的分组内包括的源网络地址和/或目的地网络地址来执行NAT。NAT 260可以向服务处理器240提供NAT分配的资源。
图2中所示的设备和网络的数目和布置被提供为示例。在实践中,可以存在除了图2中所示的设备和/或网络之外的附加设备和/或网络、更少设备和/或网络、不同设备和/或网络或者不同地布置的设备和/或网络。另外,可以在单个设备内实施图2中所示的两个或者更多个设备,或者图2中所示的单个设备可以被实施为多个分布的设备。附加地或者备选地,环境200的设备集合(例如,一个或者多个设备)可以执行被描述为由环境200的另一设备集合执行的一个或者多个功能。
图3是用于使用NAT端口管理器的示例过程300的流程图,该NAT端口管理器具有使用余数来实现端口映射的两级端口位图管理系统。在一些实现方式中,图3的一个或者多个过程块可以由NAT 260执行。在一些实现方式中,图3的一个或者多个过程块可以由从NAT260分离或者包括NAT 260的另一设备或者一组设备(比如网络设备220、NPU 230、服务处理器240和/或中央处理器250)执行。
如图3中所示,过程300可以包括接收分组(块310)。例如,网络设备220可以经由NPU 230的接口从网络210接收分组。NPU 230可以接收分组、对分组执行健全校验和/或可以将各种筛选(screen)(例如,盘操作系统(DoS)筛选)应用于分组。附加地或者备选地,NPU 230可以分析分组以获得分组信息(例如,源IP地址、目的地IP地址、源端口、目的地端口、IP协议等)。
可以将分组信息形成为元组(例如,4元组、5元组、6元组等)。元组是元素的有限有序列表,其中列表中的元素由逗号分离。附加地或者备选地,NPU 230可以基于分组信息来确定用于分组的元组(例如,确定具有列表=<1.1.1.1,100,2.2.2.2,100,6>中的五个元素的5元组,其中源IP地址=1.1.1.1,源端口=100,目的地IP地址=2.2.2.2,目的地端口=100,并且对于网际协议版本6(IPv6)而言IP协议=6)。
附加地或者备选地,NPU 230可以通过比较通过对元组执行哈希算法(例如,short_XOR函数)而确定的与元组关联的哈希值(例如,原有哈希值)与在与NPU 230关联的会话表中存储的哈希值来确定用于处理分组的会话是否先前由服务处理器240创建(例如,先前创建的用于处置属于相同流的分组的会话)。如果会话处理器240先前为分组创建了会话,则与元组关联的哈希值将匹配在与NPU 230关联的会话表中的存储的哈希值。
如果NPU 230确定先前创建了会话以用于处理分组(例如,现有会话),则NPU 230可以基于与现有会话关联的预先配置的策略(例如,规则)来处理分组,并且向服务处理器240直接地发送分组用于进一步处理(例如,应用用于处理分组的“快速路径”)。然而,如果NPU 230确定先前未创建会话以用于处理分组(例如,流的第一分组),则NPU 230可以在向服务处理器240提供分组之前向中央处理器250提供分组(例如,“慢速路径”)。
中央处理器250可以通过比较与用于分组的元组关联的、通过对元组执行哈希算法而确定的哈希值与在与中央处理器250关联的会话表中的存储的哈希值来验证用于分组的会话不存在。如果中央处理器250基于与元组关联的哈希值匹配在与中央处理器250关联的会话表中的存储的哈希值来确定先前创建了会话以用于处理分组,则中央处理器250可以向先前指派的并且与用于分组的流关联的服务处理器240发送分组。
如果中央处理器250基于用于元组的哈希值未匹配在与中央处理器250关联的会话表中的存储的哈希值来确定先前未创建会话以用于处理分组,则中央处理器250可以对于用于分组的会话创建未决路径(例如,从源IP地址和源端口到目的地IP地址和目的地端口或者a→b的路径)。
附加地或者备选地,中央处理器250可以选择用于创建会话和/或用于执行其它处理功能(例如,智能地分析在网络设备220内的每个服务处理器240上的负载并且使用负载平衡算法例如基于效率、在服务处理器240之间的负载分布等选择服务处理器240,其中属于相同流的分组由相同服务处理器240处理)的服务处理器240(例如,服务处理器1、服务处理器2、服务处理器3等)。
为了选择服务处理器240,中央处理器250可以基于位于网络设备220内的服务处理器240的数量(例如,服务处理器240的数量(sp_num)=4、sp_num=5、sp_num=6等)对哈希值执行模(MOD)运算(例如,由‘%’代表)以获得余数,其中余数=(short_XOR(元组))%服务处理器240的数量(例如,余数=(short_XOR(1.1.1.1,100,2.2.2.2,100,6)%4=2)。哈希值可以是在MOD运算中的被除数,并且服务处理器240的数量可以是在MOD运算中的除数。
附加地或者备选地,中央处理器250可以关联用于服务处理器240的标识符与余数(例如,如果余数=2,则对于服务处理器240而言服务处理器标识符(sp_id)=2;如果余数=3,则对于服务处理器240而言sp_id=3;如果余数=4,则对于服务处理器240而言sp_id=4;等等)。
附加地或者备选地,中央处理器250可以基于余数来向服务处理器240发送分组(例如,如果余数=2,则中央处理器250可以向具有sp_id=2的服务处理器240发送分组;如果余数=3,则中央处理器250可以向具有sp_id=3的服务处理器240发送分组;如果余数=4,则中央处理器250可以向具有sp_id=4的服务处理器240发送分组;等等)。
附加地或者备选地,中央处理器250可以提供通知服务处理器240在服务处理器240上为流本地创建会话的消息。
服务处理器240可以从中央处理器250接收分组。附加地或者备选地,服务处理器240可以通过比较通过执行哈希化算法而确定的与分组关联的哈希值与在与服务处理器240关联的会话表中的存储的哈希值来验证用于分组的会话不存在。如果服务处理器240确定先前创建了会话以用于处理分组(例如,基于哈希值匹配在与服务处理器240关联的会话表中的存储的哈希值),则服务处理器240可以根据与用于分组的流关联的预先配置的策略来处理分组。
如果服务处理器240确定先前未创建会话以用于处理分组(例如,基于哈希值不匹配在与服务处理器240关联的会话表上的存储的哈希值),则服务处理器240可以在创建会话之前调用NAT 260以分配用于分组的NAT资源。附加地或者备选地,服务处理器240可以创建用于处理用于流的分组的队列和/或可以在会话的创建未决时向队列添加来自流的附加分组。
如图3中进一步所示,过程300可以发送用于分配NAT资源的调用(块320)。例如,服务处理器240可以经由中央处理器250向NAT 260发送用于为分组分配NAT资源的调用。附加地或者备选地,服务处理器240可以发送与分组关联的分组信息。分组信息可以包括用于分组的元组(例如,用于分组的5元组=<1.1.1.1,100,2.2.2.2,100,6>)。
如图3中进一步所示,过程300可以包括接收用于分配NAT资源的调用(块330)。例如,NAT 260可以经由中央处理器250从服务处理器240接收用于分配NAT资源的调用。附加地或者备选地,NAT 260可以接收与分组关联的、包括元组的分组信息。
附加地或者备选地,NAT 260可以执行NAT并且可以通过确定转换的目的地IP地址、转换的目的地端口和转换的源IP地址(例如,转换的目的地IP地址=3.3.3.3、转换的目的地端口=205并且转换的源IP地址=4.4.4.4)来分配NAT资源。可以将转换的元组(例如,对元组执行的NAT)表达为<转换的源IP地址,转换的源端口,转换的目的地IP地址,转换的目的地端口,转换的IP协议>,其中尚未确定转换的源端口(例如,转换的5元组=<4.4.4.4,src_xlate_port,3.3.3.3,205,6>,其中转换的源IP地址=4.4.4.4、未确定的转换的源端口=src_xlate_port、转换的目的地IP地址=3.3.3.3、转换的目的地端口=205并且IP协议=6)。
附加地或者备选地,为了发现在执行NAT之后用于反向分组的相同服务处理器240,NAT 260可以基于服务处理器240的数量来确定用于转换的元组的转换的源端口,该转换的源端口在哈希算法被应用于转换的元组以确定反向哈希值之后和在对反向哈希值执行MOD运算之后提供相同余数。
例如,NAT 260可以确定余数,其中余数=(short_XOR(元组))%sp_num=(short_XOR(转换的元组))%sp_num。NAT 260可以将等式表达为余数=(short_XOR(转换的元组))%sp_num=(short_XOR(转换的源IP地址,转换的源端口,转换的目的地IP地址,转换的目的地端口,IP协议))%sp_num(例如,short_XOR(4.4.4.4,转换的源端口,3.3.3.3,205,6)%4=2)。附加地或者备选地,NAT 260可以使用变量(例如,‘D’)以替换在转换的元组中的转换的源IP地址、转换的目的地IP地址、转换的目的地端口和IP协议以便开始求解转换的源端口。
作为结果,NAT 260可以将等式表达为余数=(short_XOR(转换的源端口,D)%sp_num)(例如,short_XOR(转换的源端口,203)%4=2,其中2是从对原有哈希值执行MOD运算而确定的余数),这可以被表达为余数=(short_XOR(转换的源端口)%sp_num)short_XOR(D%sp_num)(例如,(short_XOR(转换的源端口)%4)short_XOR(203%4)=2或者(short_XOR(转换的源端口)%4)XOR 3。附加地或者备选地,NAT 260可以通过将等式表达为short_XOR(转换的源端口)%sp_num=short_XOR(余数(short_XOR(D)%sp_num))(例如,short_XOR(转换的源端口)%4=short_XOR(2short_XOR 3))来隔离转换的源端口。附加地或者备选地,NAT260可以求解short_XOR(转换的源端口)%sp_num或者转换的源端口余数,因为在等式的右侧上的变量(即,余数、D和sp_num)具有已知值(例如,short_XOR(转换的源端口)%4=1,其中1是转换的源端口余数)。
转换的源端口余数可以范围从等于零到在网络设备220中的服务处理器240的数量减去1(例如,如果sp_num=4,则转换的源端口余数可以等于0、1、2或者3;如果sp_num=5,则转换的源端口余数可以等于0、1、2、3或者4;等等)。附加地或者备选地,NAT 260可以通过使用NAT端口管理器来使用转换的源端口余数以确定转换的源端口(例如,选择转换的源端口以便提供与用于分组的原有哈希值相同的用于反向分组的反向哈希值)。
NAT端口管理器是用于选择和/或指派用于转换的源端口的逻辑端口的两级端口位图管理系统。基于转换的源端口余数来布置逻辑端口,从而允许对逻辑端口的高效选择。
在计算机系统中,二进制数(例如,位)是最小数据单位。位具有单个二进制值(即0或者1)。二进制值可以对应于计算机指令的集合。位图是如下表示,在该表示中,在位图中的每项对应于一个或者多个信息位。
在二级位图管理系统中的第一级是高速缓存位图,其中与高速缓存位图关联的每位(例如,高速缓存位)代表用于某个数量的端口位(例如,多个端口位)的端口使用状态(即,端口被使用或者端口未被使用)。每个端口位代表与高速缓存位关联的逻辑端口(例如,8个逻辑端口、32个逻辑端口)。例如,在高速缓存位代表用于32个逻辑端口的逻辑使用状态时,如果使用了所有32个逻辑端口,则将与高速缓存位关联的标识符设置成‘1’。如果未使用所有32个逻辑端口(例如,未使用32个逻辑端口中的至少一个逻辑端口),则将与高速缓存位关联的标识符设置成‘0’。
为了设立高速缓存位图,NAT 260可以从在网络设备220内的另一部件和/或从另一设备获得总逻辑端口范围(例如,[1024,65023],其中1024是用于总逻辑端口范围中的第一端口的标识符并且65023是用于总逻辑端口范围中的最后端口的标识符)。在一些实现方式中,网络设备220的用户可以配置用于网络设备220向NAT 260提供的总逻辑端口范围。
附加地或者备选地,NAT 260可以确定与在网络设备220中的所有服务处理器240关联的逻辑端口的总数量,其中与所有服务处理器240关联的逻辑端口的总数量=(用于总逻辑端口范围中的最后端口的标识符-用于总逻辑端口范围中的第一端口的标识符+1)(例如,与服务处理器240关联的逻辑端口的总数量=(65023-1024+1)=64000,其中逻辑端口范围是[1024,65023])。在一些实现方式中,网络设备220的用户可以配置/提供用于网络设备220向NAT 260提供的、与所有服务处理器240关联的逻辑端口的总数量。
附加地或者备选地,NAT 260可以确定与网络设备220中的服务处理器240中的每个服务处理器关联的逻辑端口的总数量,其中用于每个服务处理器240的逻辑端口的总数量等于与所有服务处理器240关联的逻辑端口的总数量除以服务处理器240的数量(例如,与每个服务处理器240关联的逻辑端口的总数量=64000/4=16000,其中64000是与网络设备220中的所有服务处理器240关联的逻辑端口的总数量并且sp_num=4)。在一些实现方式中,网络设备220的用户可以配置/提供用于网络设备220向NAT 260提供的、与每个服务处理器240关联的逻辑端口的总数量。
附加地或者备选地,NAT 260可以确定与每个服务处理器240关联的高速缓存位的数量以设立高速缓存位图层,其中与每个服务处理器240关联的高速缓存位的数量等于与每个服务处理器240关联的逻辑端口的总数量除以与每个高速缓存位关联的端口位的某个数量(例如,与每个服务处理器240关联的高速缓存位的数量=16000/32=500个高速缓存位,其中16000=与每个服务处理器240关联的逻辑端口的总数量并且其中32个端口位与每个高速缓存位关联)。在一些实现方式中,网络设备220的用户可以配置/提供用于向NAT 260提供的、与每个服务处理器240关联的高速缓存位的数量。
附加地或者备选地,NAT 260可以将高速缓存位的数量表达为范围(例如,范围从0-499位的cache_bit、范围从500-999位的cache_bit、范围从1000-1499位的cache_bit、范围从1500-1999位的cache_bit)。高速缓存位范围可以与转换的源端口余数范围中的余数关联(例如,范围从0-499位的cache_bit可以与转换的源端口余数=0关联;范围从500-999位的cache_bit可以与转换的源端口余数=1关联;范围从1000-1499位的cache_bit可以与转换的源端口余数=2关联;范围从1500-1999位的cache_bit可以与转换的源端口余数=3关联;等等)。
在两级端口位图管理系统中的第二级是端口位图,其中与端口位图关联的位(例如,端口位)与高速缓存位关联并且代表逻辑端口。每个高速缓存位可以具有与每个高速缓存位关联的端口位的某个数量(例如,与每个高速缓存位关联的32个端口位)。NAT 260可以确定用于每个高速缓存位的端口位范围,其中端口位范围等于[n*a,(n+1)*a-1],其中‘n’是正为其确定关联的端口位范围的高速缓存位并且‘a’是与每个高速缓存位关联的端口位的某个数量(例如,高速缓存位[0]包括端口位范围[0,31],其中[0*32,(0+1)*32-1]并且n=0并且a=32;高速缓存位[1]包括端口位范围[32,63],其中[1*32,(1+1)*32-1]并且n=1并且a=32;等等)。
端口位范围中的每个端口位代表逻辑端口(例如,port_bit=0代表逻辑端口号0;port_bit=1代表逻辑端口号4;port_bit=2代表逻辑端口号8;等等)。NAT 260可以确定逻辑端口范围,其中逻辑端口范围等于[n/高速缓存位范围中的高速缓存位的数量+(n%高速缓存位范围中的高速缓存位的数量)*a*sp_num,n/高速缓存位范围中的高速缓存位的数量+((n%高速缓存位范围中的高速缓存位的数量+1)*a-1)*sp_num],其中‘n’是与端口位范围(包括正确定的逻辑端口范围)关联的高速缓存位,并且‘a’是与每个高速缓存位关联的端口位的某个数量(例如,逻辑端口范围=[0/500+(0%500)*32*4,0/500+((0%500+1)*32-1)*4]或者[0,124],其中n=0,a=32,高速缓存位范围中的高速缓存位的数量=500,并且服务处理器240的数量=4)。
可以在由NAT 260和/或另一设备处理任何分组之前在NAT 260内一次建立两级位图管理系统。
如图3中进一步所示,过程300可以包括选择转换的源端口(块340)。例如,NAT 260可以利用转换的源端口余数(例如,0、1、2、3等)以确定用于分配作为转换的源端口的逻辑端口。为了确定逻辑端口,NAT 260可以使用与转换的源端口余数关联的高速缓存位范围(例如,如果转换的源端口余数=0,则NAT 260可以使用与转换的源端口余数=0关联的范围从0-499位的cache_bit以确定逻辑端口;如果转换的源端口余数=1,则NAT 260可以使用与转换的源端口余数=1关联的范围从500-999位的cache_bit以确定逻辑端口;如果转换的源端口余数=2,则NAT 260可以使用与转换的源端口余数=2关联的范围从1000-1499位的cache_bit以确定逻辑端口;如果转换的源端口余数=3,则NAT 260可以使用与转换的源端口余数=3关联的范围从1500-1599位的cache_bit以确定逻辑端口;等等)。
附加地或者备选地,NAT 260可以在高速缓存位范围内搜索具有未使用的端口位的高速缓存位(例如,对于与cache_bit范围500-999关联的转换的源端口余数=1,高速缓存位501被设置成‘0’)。附加地或者备选地,NAT 260可以选择具有未使用的端口位的高速缓存位以用于进一步处理。在一些实现方式中,NAT 260可以在高速缓存位范围内从最低高速缓存位开始,并且递增地考虑高速缓存位范围中的每个下一高速缓存位,直至确定具有未使用的端口位的高速缓存位(例如,对于与cache_bit范围500-999关联的转换的源端口余数=1,NAT260确定高速缓存位500被设置成‘1’并且可能未被使用,然而NAT260确定高速缓存位501被设置成‘0’并且因此具有未使用的端口位)。
附加地或者备选地,NAT 260可以确定用于选择的高速缓存位的端口位范围(例如,如果选择的高速缓存位是501,则端口位范围=[501*32,(501+1)*32-1])。附加地或者备选地,NAT 260可以在端口位范围内确定具有未使用的逻辑端口的未使用的端口位(例如,端口位[501*32+3]被设置成‘0’,其中[501*32]是端口位范围中的第一位并且‘+3’指示端口位范围中的第四端口位)。附加地或者备选地,NAT 260可以确定与端口位范围关联的逻辑端口范围(例如,逻辑端口范围=[501/500+(501%500)*32*4,501/500+((501%500+1)*32-1)*4]或者[129,253],其中n=501,高速缓存位范围中的高速缓存位的数量=500,并且服务处理器240的数量=4)。
附加地或者备选地,NAT 260可以确定用于与端口位关联的并且被确定为具有未使用的逻辑端口的逻辑端口的标识符,其中用于逻辑端口的标识符=用于逻辑端口范围中的第一逻辑端口的标识符+w*(c-1),其中‘w’是用于逻辑端口的标识符的值的递增改变(例如,用于逻辑端口范围中的每个后续逻辑端口的标识符被递增4)并且其中‘c’是用于与端口位关联的并且被确定为具有未使用的逻辑端口的逻辑端口的顺序值(例如,在端口位范围中的第一端口位、在端口位范围中的第二端口位、在端口位范围中的第三端口位,等等)。
例如,用于与端口位范围中的第四端口位关联的并且被确定为具有未使用的逻辑端口的逻辑端口的标识符是(129+4(4-1))=141,其中‘129’是用于逻辑端口范围[129,253]中的第一逻辑端口的标识符,‘w’=4,并且‘c’=4作为端口位范围中的第四位。附加地或者备选地,如果在分配逻辑端口之后,如果与高速缓存位关联的所有端口位被使用,则NAT 260可以将与高速缓存位关联的标识符设置为等于如下值,该值指示与高速缓存位关联的所有逻辑端口被使用(例如,与高速缓存位[501]关联的标识符被设置成‘1’)。通过分配逻辑端口,NAT 260分配关联的端口位。如果在分配逻辑端口之后,如果未使用与高速缓存位关联的所有端口位,则NAT 260可以将与高速缓存位关联的标识符保持为等于如下值,该值指示未使用与高速缓存位关联的所有逻辑端口(例如,与高速缓存位[501]关联的标识符保持被设置成‘0’)。
如图3中进一步所示,过程300可以包括提供分配的NAT资源(包括转换的源端口)(块350)。例如,NAT 260可以向服务处理器240提供包括转换的源端口的分配的NAT资源(例如,向发送了用于分配NAT资源的调用的相同服务处理器240提供分配的NAT资源<4.4.4.4,141,3.3.3.3,205,6>)。
如图3中进一步所示,过程300可以包括确定原有哈希值是否等于反向哈希值(块360)。例如,NAT 260可以向服务处理器240提供包括转换的源端口的NAT分配的资源(例如,提供NAT分配的元组=<4.4.4.4,141,3.3.3.3,205,6>)。附加地或者备选地,服务处理器240可以对NAT分配的资源执行哈希算法(例如,short_XOR函数)以获得反向哈希值,其中反向哈希值=(short_XOR(NAT分配的元组)(例如,short_XOR(4.4.4.4,141,3.3.3.3,205,6))。
附加地或者备选地,服务处理器240可以比较原有哈希和反向哈希值(例如,比较short_XOR(1.1.1.1,100,2.2.2.2,100,6)与short_XOR(4.4.4.4,141,3.3.3.3,205,6))。如果原有哈希值和反向哈希值相同(例如,原有哈希值和反向哈希值相等,这指示转换的源端口被恰当地确定,其中NAT分配的反向分组映射到与用于处理的分组相同的服务处理器240),则服务处理器240可以处理分组。如果原有哈希值和反向哈希值不相同,则服务处理器240可以通过向第二服务处理器240提供用于安装用于与分组关联的反向分组的转发会话的消息来处理分组。
如图3中进一步所示,如果原有哈希值和反向哈希值相同(块360-是),则过程300可以包括标记分组以用于快速路径处理(块370)。例如,服务处理器240可以改变分组内的标志,从而标记分组以用于快速路径处理(例如,标志=‘快速’、标志=1等)而无需安装转发会话。附加地或者备选地,服务处理器240可以继续处理分组和/或输出分组以用于由另一设备的进一步处理。
如图3中进一步所示,如果原有哈希值和反向哈希值不相同(块360-否),则过程300可以包括发送用于安装转发会话的消息(块380)。例如,服务处理器240可以向第二服务处理器240提供用于安装用于与分组关联的反向分组的转发会话的消息(例如,提供如下消息,该消息具有用于安装用于反向分组的转发会话的指令,该消息包含转换的源IP地址、转换的源端口、目的地IP地址、目的地端口和IP协议)。以这一方式,反向分组仍然可以对处理了分组的相同服务处理器240定位。
虽然图3示出了过程300的示例块,但是在一些实现方式中,过程300可以包括除了图3中描绘的块之外的附加块、更少块、不同块或者不同地布置的块。附加地或者备选地,可以并行执行过程300的块中的两个或者更多个块。
图4是与图3中所示的示例过程300有关的示例实现方式400的示图。图4示出了使用两级位图管理系统的NAT端口管理器的示例,该两级位图管理系统使用余数来实现端口映射,这些余数用于选择转换的源端口,从而使得服务处理器240可以处理分组而无需转发为分组而安装的转发会话。
如图4中所示,假设NAT 260获得了可以用于分配逻辑端口的总逻辑端口范围(例如,[1024,65023])。假设在网络设备220中存在四个服务处理器240(例如,sp_num=4)。假设端口范围中的每个逻辑端口与端口位关联。假设32个逻辑端口和/或32个端口位与每个高速缓存位关联。
如图4中用标号410所示,NAT 260通过确定高速缓存位的数量并且将与每个转换的源端口余数关联的高速缓存位的数量(例如,转换的源端口(Sport)%sp_num)表达为范围(例如,与每个服务处理器240关联的高速缓存位的数量=500个高速缓存位,其中高速缓存位范围[0-499位]与Sport%4=0关联,高速缓存位范围[500-999位]与Sport%4=1关联,高速缓存位范围[1000-1499位]与Sport%4=2关联,并且高速缓存位范围[1500-1999位]与Sport%4=3关联)来设立两级位图管理系统的高速缓存位图级(例如,第一级)。
如图4中用标号420所示,NAT 260通过确定用于与第一级中的高速缓存位关联的每个端口位的逻辑端口标识符来设立两级位图管理系统的端口位图级(例如,第二级)。
如以上指示的那样,提供图4仅作为示例。其它示例是可能的并且可以不同于关于图4描述的示例。
图5A至图5D是与图3中所示的示例过程300有关的示例实现方式500的示图。图5A至图5D示出了与图3中所示的示例过程有关的实现方式的示例。
如图5A中所示,假设网络设备220中的服务处理器240的数量等于4(例如,sp_num=4)。如图5A中用标号505所示,网络设备220经由NPU 230的接口从网络210接收分组(例如,M-one)。如图5A中用标号510所示,NPU 230分析分组、获得分组信息(例如,5元组=<1.1.1.1,100,2.2.2.2,100,6>)并且基于分组信息来确定原有哈希值。如图5A中用标号515所示,NPU 230确定不存在为分组而创建的会话(例如,M-one是流中的第一分组)并且向中央处理器250提供分组以用于进一步处理。如图5A中用标号520所示,中央处理器250验证没有为分组创建会话。
如图5A中用标号525所示,中央处理器250通过对分组信息执行哈希算法并且通过对分组信息的哈希算法的结果执行MOD运算来获得余数,其中余数与服务处理器240关联(例如,通过对分组信息执行哈希算法并且通过对哈希算法的结果执行MOD运算而获得的与具有sp_id=2的服务处理器240关联的余数=2)。如图5A中用标号530所示,中央处理器250向服务处理器240-2发送分组,其中与服务处理器240关联的标识符等于余数(例如,向具有sp_id=2的服务处理器240-2发送)。
如图5B中用标号535所示,服务处理器240-2通过比较与分组关联的元组和在与服务处理器240-2关联的会话表中的存储的元组来验证不存在用于分组的会话。如图5B中用标号540所示,服务处理器240-2调用NAT 260以分配用于分组的NAT资源并且向NAT 260发送分组信息(例如,用于分组的5元组=<1.1.1.1,100,2.2.2.2,100,6>)。
如图5C中用标号545所示,NAT 260可以执行NAT并且确定转换的目的地IP地址、转换的目的地端口和转换的源IP地址(例如,转换的目的地IP地址=3.3.3.3,转换的目的地端口=205,并且转换的源IP地址=4.4.4.4)。如图5C中用标号250所示,NAT 260可以基于与服务处理器240关联的标识符来确定余数(例如,NAT 260确定分组是从具有sp_id=2的服务处理器240接收的,由此确定余数=2,因为与sp_id关联的值等于与余数关联的值)。
如图5C中用标号555所示,NAT 260可以通过使用如以上图3和图4中描述的两级端口位图管理系统、基于余数来选择转换的源端口(例如,选择逻辑端口141作为转换的源端口,其中NAT 260在端口位范围内选择与高速缓存位[501]关联的第一未使用的逻辑端口,其中高速缓存位[501]在与基于余数=2确定的转换的源端口余数=1关联的高速缓存位范围内)。
如图5C中用标号560所示,NAT 260向服务处理器240-2提供包括转换的源端口的分配的NAT资源(例如,向具有sp_id=2的服务处理器240-2提供分配的NAT元组<4.4.4.4,141,3.3.3.3,205,6>)。
如图5D中用标号565所示,服务处理器240基于分配的NAT资源来确定反向哈希值,并且确定原有哈希值和反向哈希值相等。
如图5D中用标号570所示,NAT 260可以处理分组,从而标记分组以用于快速路径处理(例如,标志=‘快速’)。在与分组关联的反向分组进入网络设备220时,向服务处理器240-2直接地发送反向分组以用于进一步处理,而无需使用转发会话以对服务处理器240-2定位。
如以上指示的那样,提供图5A至图5D仅作为示例。其它示例是可能的并且可以不同于关于图5A至图5D描述的示例。
通过使用具有两级端口位图管理系统的NAT端口管理器,可以基于NAT端口管理器对NAT资源的分配来向处理了分组的相同服务处理器发送反向分组,而无需向用于安装转发会话的第二服务处理器转发分组。作为结果,NAT端口管理器可以节省处理器和存储器资源并且增加处理速度和效率。
前文公开内容提供了图示和描述,但是未旨在于穷举或者使实现方式限于公开的精确形式。修改和变化按照以上公开内容而有可能或者可以根据实现方式的实践而被要求。
如这里所用,术语部件旨在于被广义地解释为硬件、固件和/或硬件和软件的组合。
这里已经描述和/或在图中已经示出了某些用户界面。用户界面可以包括图形用户界面、非图形用户界面、基于文本的用户界面等。用户界面可以提供信息以用于显示。在一些实现方式中,用户可以比如通过经由设备的输入部件提供输入来与信息交互,该设备提供用户界面以用于显示。在一些实现方式中,用户界面可以由设备和/或用户可配置(例如,用户可以改变用户界面的大小、经由用户界面提供的信息、经由用户界面提供的信息的位置等)。附加地或者备选地,用户界面可以被预先配置成标准配置、基于用户界面被显示在其上的设备的类型的具体配置和/或基于与用户界面被显示在其上的设备关联的能力和/或规范的配置集合。
将清楚,这里描述的系统和/或方法可以被实施在不同形式的硬件、固件或者硬件和固件的组合中。用来实施这些系统和/或方法的实际专门化的控制硬件或者软件代码未限制实现方式。因此,这里未参照具体软件代码描述系统和/或方法的操作和行为——应理解,软件和硬件可以被设计为基于这里的描述来实施系统和/或方法。
即使在权利要求中记载和/或在说明书中公开了特定特征组合,这些组合也未旨在于限制可能的实现方式的公开内容。事实上,可以用未具体地在权利要求中记载和/或在说明书中公开的方式组合这些特征中的许多特征。虽然所附列举的每个从属权利要求可以直接地从属于仅一个权利要求,但是可能实现方式的公开内容与在该套权利要求中的每个其它权利要求组合包括每个从属权利要求。
除非明确地这样描述,否则不应将这里使用的单元、动作或者指令解释为关键或者必需。也如这里所用,冠词“一个/一种”旨在于包括一个或者多个项目并且可以与“一个或者多个”可互换地使用。另外,如这里所用,术语“组”和“集合”旨在于包括一个或者多个项目(例如,有关项目、无关项目、有关项目和无关项目的组合等)并且可以与“一个或者多个”可互换地使用。在仅旨在于一个项目时,使用术语“一个”或者相似措词。也如这里所用,术语“具有”等旨在于是开放式术语。另外,短语“基于”除非另有明示否则旨在于意味着“至少部分基于”。

Claims (20)

1.一种网络设备,包括:
用于从服务处理器接收用于为数据分组分配网络地址转换资源的调用的装置;
用于确定与所述服务处理器关联的标识符的装置;以及
用于基于所述标识符、使用网络地址端口转换管理器来分配网络地址转换资源的装置,
所述网络地址转换端口管理器是为所述数据分组确定转换的源端口的两级端口位图管理系统。
2.根据权利要求1所述的网络设备,其中所述两级端口位图管理系统包括作为所述两级端口位图管理系统的第一级的高速缓存位图层并且包括作为所述两级端口位图管理系统的第二级的端口位图层。
3.根据权利要求2所述的网络设备,其中在所述高速缓存位图层中包括的高速缓存位与多个端口位关联。
4.根据权利要求3所述的网络设备,其中所述多个端口位中的每个端口位与所述网络设备的逻辑端口关联。
5.根据权利要求1所述的网络设备,其中用于分配所述网络地址转换资源的所述装置包括:
用于分配转换的源地址、转换的目的地地址、转换的目的地端口和协议的装置;
用于基于所述标识符来确定转换的源端口余数的装置;以及
用于使用所述两级端口位图管理系统、基于所述转换的源端口余数来确定转换的源端口的装置。
6.根据权利要求5所述的网络设备,其中用于确定所述转换的源端口余数的所述装置包括:
用于对元组执行短XOR运算的装置,
所述元组包括所述转换的源地址、所述转换的目的地地址、所述转换的目的地端口和所述协议;
用于使用所述元组作为用于模运算的被除数和位于所述网络设备内的服务处理器的总数量作为用于所述模运算的除数来执行所述模运算以获得结果的装置;以及
用于将所述结果乘以所述标识符以确定所述转换的源端口余数的装置。
7.根据权利要求5所述的网络设备,其中用于确定所述转换的源端口的所述装置包括:
用于选择与所述转换的源端口余数关联的高速缓存位范围的装置;
用于选择具有一个或者多个未使用的端口位的、与所述高速缓存位范围关联的高速缓存位的装置;
用于确定与所述高速缓存位关联的端口位范围的装置;
用于选择在所述端口位范围中包括的未使用的端口位的装置;以及
用于使用所述端口位范围来确定用于与所述未使用的端口位关联的未使用的逻辑端口的标识符的装置,
用于所述未使用的逻辑端口的所述标识符对应于所述转换的源端口。
8.一种系统,包括:
用于从服务处理器接收用于为数据分组分配网络地址转换资源的调用的装置;
用于确定与所述服务处理器关联的标识符的装置;
用于基于所述标识符、使用网络地址端口转换管理器来分配网络地址转换资源的装置,
所述网络地址转换端口管理器是两层端口位图管理系统;以及
用于向所述服务处理器提供所述网络地址转换资源的装置。
9.根据权利要求8所述的系统,其中用于分配所述网络地址转换资源的所述装置包括:
用于分配转换的源地址、转换的目的地地址、转换的目的地端口和协议的装置;
用于基于所述标识符来确定转换的源端口余数的装置;以及
用于使用两级端口位图管理系统、基于所述转换的源端口余数来确定转换的源端口的装置。
10.根据权利要求9所述的系统,其中用于确定所述转换的源端口的所述装置包括:
用于选择与所述转换的源端口余数关联的高速缓存位范围的装置;
用于选择具有一个或者多个未使用的端口位的、与所述高速缓存位范围关联的高速缓存位的装置;
用于确定与所述高速缓存位关联的端口位范围的装置;
用于选择在所述端口位范围中包括的未使用的端口位的装置;以及
用于使用所述端口位范围来确定用于与所述未使用的端口位关联的未使用的逻辑端口的标识符的装置,
所述标识符对应于用于所述未使用的逻辑端口的所述转换的源端口。
11.根据权利要求10所述的系统,其中用于选择所述高速缓存位的所述装置包括:
用于选择被设置成如下值的所述高速缓存位的装置,所述值指示所述高速缓存位具有一个或者多个未使用的端口位。
12.根据权利要求10所述的系统,其中用于确定与所述高速缓存位关联的所述端口位范围的所述装置包括:
用于确定用于所述高速缓存位的所述端口位范围的装置,其中所述端口位范围等于[n*a,(n+1)*a-1],
‘n’是正为其确定关联的所述端口位范围的所述高速缓存位,
‘a’是与所述高速缓存位关联的端口位的数量。
13.根据权利要求10所述的系统,其中用于选择在所述端口位范围中包括的所述未使用的端口位的所述装置包括:
用于选择具有如下值的所述未使用的端口位的装置,所述值被设置成指示所述高速缓存位具有一个或者多个未使用的端口位。
14.一种方法,包括:
由一个或者多个处理器从服务处理器接收用于为数据分组分配网络地址转换资源的调用,
所述数据分组与分组信息关联,
所述分组信息用来确定第一哈希值;
由所述一个或者多个处理器确定与所述服务处理器关联的标识符;
由所述一个或者多个处理器基于所述标识符、使用两层端口位图管理系统来分配网络地址转换资源,
所述网络地址转换资源与第二哈希值关联,其中所述第一哈希值等于所述第二哈希值;以及
由所述一个或者多个处理器向所述服务处理器提供网络地址转换资源。
15.根据权利要求14所述的方法,还包括:
分配转换的源地址、转换的目的地地址、转换的目的地端口和协议;
基于所述标识符来确定转换的源端口余数;以及
使用所述两层端口位图管理系统、基于所述转换的源端口余数来确定转换的源端口。
16.根据权利要求15所述的方法,还包括:
选择与所述转换的源端口余数关联的高速缓存位范围;
选择具有未使用的端口位的、与所述高速缓存位范围关联的高速缓存位;
确定与所述高速缓存位关联的端口位范围;
选择在所述端口位范围中包括的未使用的端口位;以及
使用所述端口位范围来确定用于与所述未使用的端口位关联的未使用的逻辑端口的标识符,
用于所述未使用的逻辑端口的所述标识符对应于所述转换的源端口。
17.根据权利要求16所述的方法,还包括:
基于与所述高速缓存位关联的所有逻辑端口被使用来将与所述高速缓存位关联的标识符设置为等于指示全‘1’的值。
18.根据权利要求16所述的方法,其中确定用于未使用的逻辑端口的标识符包括:
确定逻辑端口范围;以及
基于所述逻辑端口范围来确定用于所述未使用的逻辑端口的所述标识符。
19.根据权利要求18所述的方法,其中确定所述逻辑端口范围包括:
确定所述逻辑端口范围,其中[n/高速缓存位范围中的高速缓存位的数量+(n%高速缓存位范围中的高速缓存位的所述数量)*a*位于网络设备内的服务处理器的总数量]等于与所述逻辑端口范围关联的第一逻辑端口,并且[n/高速缓存位范围中的高速缓存位的所述数量+((n%高速缓存位范围中的高速缓存位的所述数量+1)*a-1)*位于所述网络设备内的服务处理器的所述总数量]等于与所述逻辑端口范围关联的最后逻辑端口,
‘n’是与所述端口位范围关联的所述高速缓存位,以及
‘a’是与每个高速缓存位关联的端口位的数量。
20.根据权利要求19所述的方法,其中确定所述逻辑端口范围包括:
确定用于所述未使用的逻辑端口的所述标识符,其中用于所述未使用的逻辑端口的所述标识符等于所述逻辑端口范围中的所述第一逻辑端口+w*(c-1),
‘w’是用于所述逻辑端口范围中的逻辑端口的标识符的值的递增改变,
‘c’是用于在所述逻辑端口范围内的所述未使用的端口位的顺序值。
CN201510587816.3A 2015-09-15 2015-09-15 用于管理端口的设备、系统和方法 Active CN106534394B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510587816.3A CN106534394B (zh) 2015-09-15 2015-09-15 用于管理端口的设备、系统和方法
US14/871,408 US9961046B2 (en) 2015-09-15 2015-09-30 NAT port manager for enabling port mapping using remainders

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510587816.3A CN106534394B (zh) 2015-09-15 2015-09-15 用于管理端口的设备、系统和方法

Publications (2)

Publication Number Publication Date
CN106534394A true CN106534394A (zh) 2017-03-22
CN106534394B CN106534394B (zh) 2020-01-07

Family

ID=58257703

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510587816.3A Active CN106534394B (zh) 2015-09-15 2015-09-15 用于管理端口的设备、系统和方法

Country Status (2)

Country Link
US (1) US9961046B2 (zh)
CN (1) CN106534394B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109688237A (zh) * 2018-03-26 2019-04-26 新华三技术有限公司 一种nat转换方法、装置及nat设备
CN115865863A (zh) * 2022-11-23 2023-03-28 北京有竹居网络技术有限公司 源地址转换方法、装置、设备及存储介质
WO2024207842A1 (zh) * 2023-12-13 2024-10-10 天翼云科技有限公司 网络地址端口转换方法及装置、存储介质及电子设备

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109688238B (zh) * 2018-03-26 2020-06-09 新华三技术有限公司 一种nat转换方法、装置及nat设备
CN110417924B (zh) * 2018-04-28 2021-10-01 华为技术有限公司 分布式设备中的报文处理方法和分布式设备
US11363063B2 (en) * 2018-12-28 2022-06-14 Charter Communications Operating, Llc Botnet detection and mitigation
US20190334863A1 (en) * 2019-04-25 2019-10-31 Intel Corporation Lockless stateful network address translation
CN113141633A (zh) * 2021-03-16 2021-07-20 深圳震有科技股份有限公司 一种5g通信数据包转发方法和终端
WO2023244853A1 (en) * 2022-06-17 2023-12-21 Aviatrix Systems, Inc. High-performance communication link and method of operation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102594942A (zh) * 2012-02-23 2012-07-18 汉柏科技有限公司 实现网络地址转换的方法及系统
US20140325636A1 (en) * 2011-02-16 2014-10-30 Fortinet, Inc. Load balancing in a network with session information
CN104506460A (zh) * 2014-12-29 2015-04-08 迈普通信技术股份有限公司 一种实现napt端口资源分配的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560610B1 (en) 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database
US7227862B2 (en) 2000-09-20 2007-06-05 Broadcom Corporation Network switch having port blocking capability
US7227842B1 (en) 2001-04-24 2007-06-05 Tensilica, Inc. Fast IP packet classification with configurable processor
US20070016637A1 (en) * 2005-07-18 2007-01-18 Brawn John M Bitmap network masks
CN101262425A (zh) 2008-04-28 2008-09-10 艾诺通信系统(苏州)有限责任公司 基于网络地址转换的多播转发的方法
EP2337274B1 (en) * 2009-12-17 2014-03-05 Alcatel Lucent Method for processing a plurality of data and switching device for switching communication packets
US9602465B2 (en) * 2014-09-09 2017-03-21 Citrix Systems, Inc. Systems and methods for carrier grade NAT optimization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140325636A1 (en) * 2011-02-16 2014-10-30 Fortinet, Inc. Load balancing in a network with session information
CN102594942A (zh) * 2012-02-23 2012-07-18 汉柏科技有限公司 实现网络地址转换的方法及系统
CN104506460A (zh) * 2014-12-29 2015-04-08 迈普通信技术股份有限公司 一种实现napt端口资源分配的方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109688237A (zh) * 2018-03-26 2019-04-26 新华三技术有限公司 一种nat转换方法、装置及nat设备
CN109688237B (zh) * 2018-03-26 2020-05-12 新华三技术有限公司 一种nat转换方法、装置及nat设备
US11201852B2 (en) 2018-03-26 2021-12-14 New H3C Technologies Co., Ltd. Network address translation
CN115865863A (zh) * 2022-11-23 2023-03-28 北京有竹居网络技术有限公司 源地址转换方法、装置、设备及存储介质
WO2024207842A1 (zh) * 2023-12-13 2024-10-10 天翼云科技有限公司 网络地址端口转换方法及装置、存储介质及电子设备

Also Published As

Publication number Publication date
US20170078245A1 (en) 2017-03-16
CN106534394B (zh) 2020-01-07
US9961046B2 (en) 2018-05-01

Similar Documents

Publication Publication Date Title
CN106534394A (zh) 用于使用余数来实现端口映射的nat端口管理器
EP3281369B1 (en) Server load balancing
US9866540B2 (en) System and method for rule matching in a processor
US11811902B2 (en) Resilient hashing for forwarding packets
US10015090B2 (en) Packet steering
CN102694721B (zh) 用于网络中的分组交换的方法
Xiong et al. Robust dynamic network traffic partitioning against malicious attacks
KR101371858B1 (ko) 복수의 데이터를 프로세싱하기 위한 방법 및 통신 패킷들을 스위칭하기 위한 스위칭 디바이스
CN108833299B (zh) 一种基于可重构交换芯片架构的大规模网络数据处理方法
CN105871741B (zh) 一种报文分流方法及装置
WO2013169949A1 (en) System and method for routing traffic between distinct infiniband subnets based on fat-tree routing
EP2345212A1 (en) Method and apparatus for forwarding data packets using aggregating router keys
CN101421731A (zh) 用于确定数据流的系统和方法
CN1875585A (zh) 利用mac限制来控制动态未知l2泛滥
US20160283290A1 (en) Method and controller for chaining applications in a software defined network
US11621853B1 (en) Protocol-independent multi-table packet routing using shared memory resource
CN105556916A (zh) 网络流的信息统计方法和装置
CN108306832A (zh) 一种网络流量分流方法及装置
CN103179109B (zh) 基于二级会话查询功能的过滤分流装置及其方法
Waldvogel Multi-dimensional prefix matching using line search
CN108270671A (zh) 对分组执行服务
Ren et al. On Scalable Service Function Chaining with $\mathcal {O}(1) $ Flowtable Entries
US8179902B2 (en) Method and system for automatic generation of route distinguishers for virtual private networks
EP3154228A1 (en) Data transfer system, data transfer server, data transfer method, and program recording medium
CN105227357B (zh) 虚拟机策略迁移配置方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant