CN114553876A - 利用周边nat的分组内版本标记的方法和系统 - Google Patents
利用周边nat的分组内版本标记的方法和系统 Download PDFInfo
- Publication number
- CN114553876A CN114553876A CN202111372886.9A CN202111372886A CN114553876A CN 114553876 A CN114553876 A CN 114553876A CN 202111372886 A CN202111372886 A CN 202111372886A CN 114553876 A CN114553876 A CN 114553876A
- Authority
- CN
- China
- Prior art keywords
- packet
- network
- version identifier
- computer
- backend
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000002093 peripheral effect Effects 0.000 title claims abstract description 52
- 238000013519 translation Methods 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 50
- 238000003860 storage Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 26
- 238000012545 processing Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 230000006855 networking Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 239000000284 extract Substances 0.000 description 5
- 238000011330 nucleic acid test Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 235000014510 cooky Nutrition 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
-
- 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/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- 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/56—Routing software
- H04L45/566—Routing instructions carried by the data packet, e.g. active networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2514—Translation of Internet protocol [IP] addresses between local and global IP addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2517—Translation of Internet protocol [IP] addresses using port numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- 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/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种利用周边NAT的分组内版本标记的方法和系统。各种实施例涉及:在接收设备处从第一网络中的节点接收分组;确定该分组的版本标识符;将该版本标识符编码到分组中;以及将包含所编码的版本标识符的分组发送到第二网络中的负载平衡设备。版本标识符可以被编码到分组的目的地端口字段中。接收设备可以是周边网络地址转换设备。在该负载平衡设备处接收分组,其中,版本标识符被提取,并且执行源地址信息的散列。该版本和散列被用于选择第二网络中的后端设备。该分组被发送到所选择的后端设备。
Description
技术领域
本发明的实施例涉及在网络之间发送数据,并且更具体地,涉及在接收数据的网络中维持流亲合性而不考虑版本或状态改变。
背景技术
维持流亲合性确保了相关的数据分组或“数据流”将被转发到相同的目的地,例如,在特定网络中的客户机与不同网络中的后端服务器之间的通信。维持跨网络的数据流亲和性是支持多个目的地和/或多个路径的网络转发功能(例如,负载平衡系统)的期望网络属性。例如,来自相同传输控制协议(TCP)连接的数据分组需要亲合性以避免连接丢失,来自相同源IP地址的数据分组需要亲合性以允许简化的传输层安全(TLS)握手,以及来自相同客户机计算设备的数据分组需要亲合性以支持应用特定的优化和会话状态。
发明内容
本发明的实施例利用连接跟踪设备的连接跟踪能力,以便由转发设备做出亲和性保持决定。诸如在每个连接发起时的配置版本的相关信息可以由连接跟踪设备传递到转发设备。连接跟踪设备可以在源(例如,客户机)与转发设备之间的路径上的任何位置。连接跟踪设备可以在源网络的周边或者在转发设备的网络的周边。连接跟踪设备和转发设备可以是也执行网络地址转换(NAT)或负载平衡的设备,但是可以是任何其他网络设备,其中连接跟踪设备进行连接跟踪,而转发设备做出基于亲和性的决定。
可以以不影响连接的任何方式来完成连接跟踪设备与转发设备之间的通信以传递版本信息。一个实施例包括将版本标识符编码在每个分组的目的地端口中,这是一种有利地不改变分组大小的方法,是标准的网络地址和端口转换(NAPT)操作,并且可以由转发设备容易地执行逆向操作,因此该操作对于客户机和后端服务器是透明的。在另一个实施例中,在连接跟踪设备与转发设备之间可以存在覆盖隧道,诸如虚拟专用网(VPN)。在该实施例中,版本信息可以被编码到覆盖中而不是每个单独的分组中,其中可以为特定版本创建隧道,并且版本标识符可以被附加到报头中的隧道标签。
各种实施例涉及一种计算机实现的方法。在一个实施例中,所述方法可以包括:在连接跟踪设备处从第一网络中的节点接收分组;确定所述分组的版本标识符;将所述版本标识符编码到所述分组中;以及将包含所编码的版本标识符的所述分组发送到转发设备。这些操作可以由所述连接跟踪设备执行。在一个实施例中,所述转发设备基于客户机连接亲和性来选择第二网络中的后端设备;以及将所述分组发送到所选择的后端设备。所述版本标识符可以被编码到第一分组的目的地端口字段中。所述连接跟踪设备可以是周边(perimeter)网络地址转换(NAT)设备。所述转发设备可以是负载平衡设备。所述连接跟踪设备可以指示它自己的时间戳,所述负载平衡设备可以跟踪时间戳与版本的相关性。这可能不是完全同步的,但是如果时间戳的更新比版本快得多,则这是可接受的。负载平衡设备只需一种针对连接的所有其它分组而重复针对该连接的第一分组做出的决定的方式。连接跟踪设备可以确保相同的时间戳被用于单个连接的所有分组。时间戳必须足够快地更新,以允许当负载平衡设备版本改变时不同地映射新连接。如果足够快,则使用旧版本映射的分组的数量就小。
在一个实施例中,所述版本标识符与在所述第二网络中当前可操作的一组后端设备相对应。在各种实施例中,当前版本是基于时间,并且确定所述版本标识符可以包括:确定当前版本标识符已经被使用的时间段;以及当所确定的时间段超过针对更新所述版本标识符而指定的时间段时,更新所述版本标识符。
在各种实施例中,当前版本是基于分组的数量,并且确定所述版本标识符包括:确定在所述连接跟踪设备处接收到的已经使用了特定版本标识符的分组的数量;以及当所确定的分组的数量超过针对更新所述版本标识符而指定的特定分组数量时,更新所述版本标识符。与上述时间戳到版本的相关性一样,负载平衡设备只需一种针对连接的所有其它分组而重复针对该连接的第一分组做出的决定的方式。连接跟踪设备可以确保相同的版本用于单个连接的所有分组。时间戳必须足够快地更新,以允许当负载平衡设备版本改变时不同地映射新连接。如果足够快,则使用旧版本映射的分组的数量就小。
在各种实施例中,确定所述版本标识符包括:由所述连接跟踪设备从另一个节点接收控制消息;以及响应于所述控制消息而更新所述版本标识符。
在各种实施例中,确定所述版本标识符包括:由所述连接跟踪设备接收返回分组,其中,响应于将包含所编码的版本标识符的所述分组发送到所述转发设备,所述返回分组被发送到所述连接跟踪设备,并且用版本标识符对所述返回分组进行编码。基于被编码在所述返回分组中的版本标识符,更新当前版本。
在各种实施例中,所述版本标识符与由所述第二网络中的所述负载平衡设备使用的散列函数或由所述负载平衡设备采用的策略相对应。
在另一个实施例中,一种计算机实现的方法包括由第二网络的网络设备从第一网络的网络设备接收分组。转发设备和至少一个后端设备可以被包括在所述第二网络中。所述方法可以包括:由所述转发设备从所述分组中提取所述分组的版本标识符。此外,所述方法可以包括:由所述转发设备从所述分组中提取源地址和源端口,并且基于所提取的源地址和源端口,使用特定散列函数来确定散列值。此外,所述方法可以包括:由所述转发设备使用所述散列值来选择与通过将整数散列值除以后端设备的数量而生成的余数(remainder)相对应的后端设备的网络地址;由所述转发设备将所选择的网络地址编码到所述分组中作为目的地地址;以及由所述转发设备将包含所选择的网络地址的所述分组发送到具有所选择的网络地址的后端设备。
在一些实施例中,用于确定所述散列值的所述特定散列函数是基于所述分组的所述版本标识符从两个或更多个散列函数中选择的。
在一些实施例中,当前在所述第二网络中可操作的特定一组后端设备是基于所述分组中包括的所述版本标识符而从两组或更多组后端设备中选择的。
其它实施例涉及用于执行本文所公开的方法的系统、设备或计算机程序产品。
提供本“发明内容”以便以简化的形式介绍将在以下“具体实施方式”中进一步描述的一些概念。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图说明
图1描绘了根据本发明的实施例的云计算环境;
图2描绘了根据本发明的实施例的抽象模型层;
图3是描绘根据本发明的实施例的可用作图4的网络设备的计算设备的框图;
图4是示出根据本发明的实施例的示例计算环境的功能框图;
图5是示出根据本发明的实施例的在网络之间的数据流的功能框图;
图6A是在网络之间的分组流的示例的框图;
图6B是根据本发明的各种实施例的在网络之间的分组流的框图;
图7A是根据本发明的各种实施例的用于由网络网关(在此称为“周边NAT”或“连接跟踪”设备)处理分组的过程的流程图;
图7B是根据本发明的各种实施例的用于由负载平衡器(在此也称为“转发”设备)处理分组的过程的流程图;以及
图8是根据本发明的各种实施例的在负载平衡器处的分组路由的框图。
具体实施方式
在诸如云和其他网络的分布式效用计算环境中,确保提供计算服务的资源能够根据客户机计算设备施加的服务负载而弹性地增长和收缩是有利的。当客户机服务负载增加时,期望网络通过分配更多资源并增加服务容量来适应,使得客户机计算设备不经历由增加的服务负载引起的网络干扰。当客户机服务负载减小时,期望网络通过及时释放不需要的资源来适应,以降低总运营成本,并通过在别处分配资源来提高总资源利用率。资源弹性通常通过后端网络服务节点(例如,后端网络服务器)的可扩展池来实现。添加和移除后端网络服务节点以使所分配的资源容量与总的客户机施加的服务负载对准。可以将附加实体(负载平衡器)添加到分布式计算环境以接收客户机请求并在池中的后端网络服务节点之间复用这些客户机请求。
通常,负载平衡器被配置为提供对针对计算服务的客户机请求的平衡分布并通过网络将它们转发到后端网络服务节点。确定用于转发网络客户机数据分组的路由路径的负载平衡算法必须考虑若干动态参数,例如后端网络服务节点池大小、资源利用率、资源容量、以及网络客户机请求特性。为了确保负载平衡器不是单个故障点或服务瓶颈,负载平衡器还可以被实现为使用负载平衡器节点池的弹性服务。负载平衡器节点池也可以是动态的,因为负载平衡器可以响应于负载平衡器故障或网络负载的改变而被添加到池中或被从池中移除。在这种情况下,来自同一个数据流(即,来自同一个网络客户机计算设备)的数据分组可以由不同的负载平衡器节点进行负载平衡。在弹性负载平衡器池中,通常试图维持客户机与负载平衡器之间的亲和性。
当实施网络负载平衡时,重要的是并且经常要求来自同一个网络客户机计算设备的相关数据分组(“数据流”)被路由到同一个后端网络服务节点目的地。将数据流从客户机计算设备路由到同一个后端网络服务节点目的地的实践在此被称为“客户机连接亲和性”。在大型网络和大型云环境中保持亲和性会带来显着的可扩展性问题,并可能导致网络瓶颈问题。这些问题在其中网络组件可被添加、修改、移除或变得不可用的动态网络中进一步复杂化。负载平衡器转发决定必须改变,但仍保持亲和性。例如,当添加新的后端网络服务节点(例如,后端网络服务器)时,可以将新数据流转发到新的后端网络服务节点。然而,如果可能的话,现有的数据流必须继续被路由到它们现有的后端网络服务节点目的地。作为另一示例,在利用负载平衡器节点池的网络环境中,可能存在被动态添加或移除的多个负载平衡器节点,并且所得到的每个流的转发决定必须跨所有负载平衡器节点是一致的。
连接跟踪可用于通过跟踪活动连接来维持大规模动态网络中的亲和性。连接跟踪记住在其整个生命期中每个数据流的转发决定。例如,可以在整个TCP流生命期间跟踪每个传输控制协议(TCP)5元组,并且将转发决定条目作为转发规则记录在转发表中。术语5元组是指发起通过因特网协议(IP)的连接所必需的一组五个不同值,这些值是源IP地址/端口号、目的地IP地址/端口号以及使用中的网络协议。应当注意,“IP地址”是指可以在网络层中由诸如网际协议(IP)之类的协议使用以标识特定客户机的地址,“端口”是指可以在传输层中分配到给定服务的端口号,例如,远程登录协议使用端口23,还应当注意,本发明的实施例不需要特定协议;可以使用任何协议,例如TCP或用户数据报协议(UDP)。
可以在负载平衡器处实现连接跟踪。对于连接跟踪,首先通过参考每个新的输入IP分组的5元组来检查每个新的输入IP分组,以查看它是否是现有数据流的一部分,并且如果找到,则应用现有转发规则。然而,采取这种方式的连接跟踪是不可扩展的,因为系统存储器需求和转发决定条目查找时间都随着数据流的数量而增加。连接跟踪的另一个缺点是它需要在所有负载平衡器节点之间同步连接跟踪状态。可以捕获诸如负载平衡器配置的“版本”的最小状态,但是仍然需要某种机制来将业务流一致地映射到特定版本。
另一种维持亲合性的方式是基于散列的路由选择。在这种方法中,负载平衡器基于可操作的后端服务器的数量来计算流属性的散列。只要后端服务器的数量是静态的,基于散列的路由选择的使用就保持了亲和性。当添加或移除后端服务器时,亲和性丢失。
通过使用“一致散列”改进了基于散列的路由选择,“一致性散列”是一种独立于后端服务器数量来运行的分布式散列方案。在这种方法中,负载平衡器计算流属性的一致散列,并将散列结果用于路由决定;一致散列确保对于大多数流,即使当添加或移除服务实例时,散列也将在大多数时间保持不变。一致散列的一些缺点是,它消耗具有高计算要求的过高的存储器量,并且它是对大多数流而不是所有流的解决方案。
用于维持亲和性的其它方法是已知的,例如使用cookie,但是这些方法具有各种缺点。例如,cookie的使用要求客户机通过将cookie插入消息中来在保持亲和性方面进行协作,这又向客户机暴露了路由决定,并因此暴露了后端服务器的IP地址。这可能不利地影响网络安全性。另一个缺点是由负载平衡器引起的性能开销,因为需要解析和操纵协议消息,使得cookie以适合于该协议的方式被客户机插入。
因此,需要一种技术,其提供在部署在效用计算系统中的多节点服务的不同版本之间的快速且可靠的转换,在版本的更广泛意义上,这包括诸如配置改变、节点的硬件或软件升级以及节点的添加或移除(即,服务池大小的弹性改变)之类的改变。
在此描述的新颖实施例的优点包括在包括多个客户机的第一网络(例如专用网络)的周边使用网络设备。在第一网络周边使用网络设备减轻了在第二网络中的负载平衡器处对连接跟踪的需要,该第二网络诸如托管多个后端服务器的网络。其它优点是减少了第二网络中的负载平衡器处的处理和存储器需求。另一优点在于,在此描述的新颖实施例对于客户机和后端设备是透明的。
本通信系统和方法的实施例可以通过将连接跟踪功能卸载到另一网络设备来提供这种能力。许多联网环境具有周边网关设备(例如,路由器或交换机)以隔离单独的网域(例如,私有相对于公共网络地址)之间的不同属性。周边网关设备的一个常见功能是网络地址转换(NAT),其在每个分组中用外部IP地址替换内部IP地址(反之亦然)。NAT要求连接跟踪以确保同一连接的所有分组经历相同的地址转换,并且能够转换回返回分组,这意味着NAT固有地保持流亲和性。因为这些周边网关设备通常执行NAT,所以它们在此也被称为“周边NAT”。除了IP地址转换之外,周边NAT还可以转换或修改端口号。周边NAT可以维持分布式负载平衡网络的“版本”,并将当前版本插入到给定分组内的字段(诸如目的地端口字段)中。负载平衡器然后可以被配置为每当当前版本的状态改变时记录当前版本。负载平衡器还可查看分组内的所分配的字段以确定在发起连接时使用的版本(即,与数据流中的第一分组相关联的版本),并将该信息与分组的5元组内的其它字段一起使用以确定分组应被路由到的后端服务器。
应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特性如下:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
业务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图1所显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图2,其中显示了云计算环境50(图1)提供的一组功能抽象层。首先应当理解,图2所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66,例如负载平衡器。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供一个抽象层,该层可以提供下列虚拟实体的示例:虚拟服务器71;虚拟存储72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,这些资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能85:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;以及其它应用96,例如驻留在图3的存储器308中的程序。
参考图3,示出了其中可以实现在此描述的实施例中涉及的过程的计算设备300的框图。计算设备300通常是编程的通用计算机系统,诸如嵌入式处理器、片上系统、个人计算机、工作站、服务器系统以及小型计算机或大型计算机。同样,计算设备300可以在诸如网络交换机、路由器等的通信设备中实现。计算设备300可以包括一个或多个处理器(CPU)302A-B、输入/输出电路304、网络适配器306和存储器308。CPU 302A-B执行程序指令以便实现本通信系统和方法的功能。图3示出了其中计算设备300被实现为单个多处理器计算机系统的实施例,其中多个处理器302A-B共享系统资源,诸如存储器308、输入/输出电路304和网络适配器306。然而,本通信系统和方法还包括其中计算设备300被实现为多个联网计算机系统的实施例,这些联网计算机系统可以是单处理器计算机系统、多处理器计算机系统、或它们的混合。
输入/输出电路304提供向计算设备300输入数据或从计算设备300输出数据的能力。例如,输入/输出电路可以包括诸如键盘、鼠标、触摸板、轨迹球、扫描仪、模数转换器等输入设备,诸如视频适配器、监视器、打印机等输出设备,以及诸如调制解调器等输入/输出设备。网络适配器306将计算设备300与网络310连接,网络310可以是任何公共或专有LAN或WAN,包括但不限于因特网。
存储器308存储由CPU 302A-B执行的程序指令以及由CPU 302A-B使用和处理的数据,以执行计算设备300的功能。存储器308可以包括例如电子存储设备,诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、闪存等,以及机电存储器,诸如磁盘驱动器、磁带驱动器、光盘驱动器等,其可以使用集成驱动电子(IDE)接口,或者其变型或增强,诸如增强IDE(EIDE)或超直接存储器访问(UDMA),或者基于小型计算机系统接口(SCSI)的接口,或者其变型或增强,诸如快速SCSI、宽SCSI、快速和宽SCSI等,或者串行高级技术附件(SATA),或其变型或增强,或者光纤通道仲裁环路(FC-AL)接口。
存储器308的内容可以根据计算设备300被编程以执行的功能而变化。在图3所示的示例中,示出了示例存储器内容,其表示用于本文描述的过程的实施例的例程和数据。然而,可以认识到,这些例程以及与这些例程相关的存储器内容可以不被包括在一个系统或设备上,而是可以基于公知的工程考虑而分布在多个系统或设备之间。本通信系统和方法可以包括任何和所有这样的布置。
在图3所示的示例中,对于其中计算设备300实现周边NAT 430的示例,存储器308可包括周边NAT程序324。对于其中计算设备300实现负载平衡节点450的示例,存储器308可包括负载平衡程序326。在另外的示例中,如果计算设备300实现客户机410,则存储器308可以包括客户机程序320,或者如果计算设备300实现后端节点470,则存储器308可以包括后端程序322。这些和其它示例可以包括操作系统328。例如,周边NAT程序324可以包括例程和数据,其提供通过替换目的地IP地址和端口或任何其他分组字段来操纵分组的能力。负载平衡程序322可以包括例程和数据,其提供将数据业务散布到诸如后端节点470的其它设备的能力。操作系统328可以提供整体系统功能。
如图3所示,本通信系统和方法可以包括在提供多处理器、多任务、多进程和/或多线程计算的一个或多个系统上的实现,以及在仅提供单处理器、单线程计算的系统上的实现。多处理器计算涉及使用多于一个处理器来执行计算。多任务计算涉及使用多于一个操作系统任务来执行计算。任务是操作系统概念,其指的是正被执行的程序和操作系统所使用的簿记信息的组合。无论何时执行程序,操作系统都为其创建新任务。该任务类似于程序的信封,因为它用任务号来标识该程序并向程序附加其它簿记信息。许多操作系统能够同时运行许多任务,并且被称为多任务操作系统。多任务是操作系统同时执行多于一个可执行程序的能力。每个可执行程序在它自己的地址空间中运行,这意味着可执行程序无法共享它们的任何存储器。这具有优点,因为任何程序不可能破坏正在系统上运行的任何其它程序的执行。然而,除了通过操作系统(或通过读取存储在文件系统上的文件)之外,程序无法交换任何信息。多进程计算类似于多任务计算,因为术语‘任务’和‘进程’经常可互换地使用,尽管一些操作系统在两者之间进行区分。
参考图4,示出了根据本发明的实施例的系统400的功能框图。系统400可以包括多个客户机,例如客户机410A、410B、410C,多个周边NAT,例如周边NAT430,多个负载平衡器,例如负载平衡器450,以及多个后端,例如后端节点470A、470B,所有这些都经由网络310互连。在图4所示的示例中,客户机410可以属于特定网络,而后端节点470可以属于不同的网络。为了清楚起见,这两个网络也可以被称为“源”网络和“目的地”网络。另外,虽然在图4的示例中示出了两个网络,但是应当理解,在其他实施例中可以涉及多于两个网络。特别地,应当理解,周边NAT 430和负载平衡器450可以但不是必须驻留在源网络或目的地网络中的任一个上,即,周边NAT 430不必驻留在与客户机410相同的网络中,以及负载平衡器450不必驻留在与后端节点470相同的网络中。连接跟踪设备(例如周边NAT430)可以在源(客户机410)与后端设备之间的路径上的任何位置。在各种实施例中,连接跟踪设备可以在源网络的周边或者在包含后端设备的网络的周边。
在各种实施例中,网络310可以表示例如内联网、局域网(LAN)、诸如因特网的广域网(WAN)或两者的组合。网络310可以包括例如有线、无线或光纤连接。通常,根据本发明的实施例,网络310可以是支持在客户机410A-C、周边NAT 430、负载平衡器450和后端节点470A-B之间的通信的连接和协议的任何组合。
客户机410A-C可以表示能够托管客户机应用的网络计算设备。例如,客户机410A-C和周边NAT 430可以被包括在专用网络中。客户机410A-C可以包括客户机程序320。在一个示例实施例中,客户机410可以是台式计算机、笔记本、膝上型计算机、平板计算机、手持式设备、智能电话、瘦客户机、或能够经由网络110通过周边NAT 430向诸如负载平衡器450或后端470等其它计算设备发送数据并从其接收数据的任何其它电子设备或计算系统。如图5中的示例图示所描绘的,客户机410可以使用多个设备来实现,这些设备被称为客户机410A、客户机410B和客户机410C等。
在各种实施例中,客户机程序320可以是程序或包含在程序中的子例程,其可以允许客户机410的用户经由周边NAT 430、网络310和负载平衡器450向后端网络服务器节点470A-B请求和利用服务。客户机程序320可以包括用于将数据发送到位于周边NAT 430上的应用的组件。在示例实施例中,客户机程序320可以将TCP数据分组作为数据流的一部分发送到周边NAT 430。客户机410A-C发送到周边NAT 430的数据分组包括目的地地址,该目的地地址可以是内部地址。
周边NAT 430可以表示能够托管地址转换程序的网络组件或设备。此外,周边NAT430可以表示能够跟踪连接的网络组件或设备,并且因此,可以在此被称为“连接跟踪”设备。周边NAT程序324可以执行网络地址转换(NAT)和连接跟踪功能。周边NAT 430允许数据从一个网络流到另一个网络,例如从包括多个客户机410A-C的网络流到网络110。周边NAT430隔离域之间的属性,例如,在内部网络(例如,包括客户机410A-C的内部网络)与外部网络之间的属性。周边NAT 430跟踪在特定网络客户机与特定后端网络服务节点之间的数据流中的分组的连接。周边NAT 430可以从客户机410A-C、负载平衡器450、后端节点470A-B或其它源接收数据分组。周边NAT 430接收的每个数据分组包括目的地址。周边NAT 430可以用另一地址替换该目的地地址。例如,在由客户机410A-C发送到周边NAT 430的数据分组中,周边NAT 430可以用外部地址替换内部地址。除了修改网络地址之外,周边NAT 430可以修改端口号。由客户机410A-C发送到周边NAT 430的分组可以是形成来自客户机410A-C的数据流的若干相关数据分组之一。
负载平衡器450可表示能够做出保持客户机连接亲和性的分组路由决定的网络组件或设备。负载平衡器450可以托管负载平衡程序326。在示例实施例中,负载平衡器450可以是台式计算机、联网计算机设备、服务器刀片、专用计算机服务器、或能够托管负载平衡程序326的任何其他电子设备或计算系统。如图5中的示例图示所描绘的,负载平衡器450可以使用多个设备(分布式负载平衡)来实现,这多个设备被称为负载平衡器450A和负载平衡器450B。负载平衡器450是分组转发设备的示例。
在各种实施例中,负载平衡器程序326可以是程序或包含在程序中的子例程,其可以实现提供网络客户机请求的平衡分布并通过网络将它们转发到后端网络服务节点的功能。负载平衡程序326可以根据具有保持客户机连接亲和性和平衡工作负载的目标的算法来做出分组转发决定。负载平衡程序326可以将客户机连接亲和性保持到可行的程度。在示例实施例中,负载平衡器程序326可经由网络310从客户机程序320接收数据分组,并且将所接收的数据分组转发到后端程序322。所接收的数据分组可以是形成来自客户机410A-C的数据流的若干相关数据分组之一。
后端节点470A-B可以表示能够托管一个或多个资源以供诸如客户机410A-C之类的另一计算设备使用的计算平台。后端节点470A-B可以包括后端程序322。在示例实施例中,后端节点470A-B可以是台式计算机、联网计算机设备、服务器刀片、专用计算机服务器、或能够经由网络310向诸如客户机410A-C、周边NAT 430和负载平衡器450等其它计算设备发送数据并从其接收数据的任何其它电子设备或计算系统。后端节点470A-B可以包括执行相同软件的服务器集群,以共同处理和监视诸如客户机410A-C之类的其它计算设备的请求。后端节点470A-B可以使用多个设备来实现,这些设备被称为后端节点470A、后端节点470B、后端节点470C以及后端节点470D。
在各种实施例中,后端程序322可以是程序或包含在程序中的子例程,其可以促进经由负载平衡器程序326从客户机程序320接收的数据请求。在示例实施例中,后端程序322可以从负载平衡器程序326接收数据分组。所接收的数据分组可以源自客户机程序320,并且表示来自客户机410A-C的数据流的一部分。后端程序326可以服务所接收到的数据分组。
现在参考图5,示出了图示示例联网环境500的功能框图,该联网环境可以包括如先前关于图4所描述的多个客户机410A-F、如先前关于图4所描述的多个周边NAT430A-B、如先前关于图4所描述的多个负载平衡器450A-N、以及如先前关于图4所描述的多个后端节点470A-N。联网环境500还示出了由客户机410A-F向可以包括客户机410A-C和NAT周边430A的专用网络420的周边NAT 430A、或者可以包括客户机410D-F和周边NAT 430B的专用网络440的周边NAT 430B发送的示例数据流。根据本发明的各种实施例,数据流由周边NAT 430A-B转发到负载平衡器450A-N,负载平衡器450A-N随后将数据流转发到后端节点470A-N。在此描述的数据流转发可以由图4的系统400来实现。
负载平衡节点450A-N可以均将业务分散到其他设备,例如后端节点470A-N,其通常可以包括后端web服务器或其他服务器、存储装置或计算设备。负载平衡节点的数量可以改变。在本示例中,最初有2个负载平衡节点450A-B,但是负载平衡节点的数量可以变为N,从而导致负载平衡节点450A-N。同样,后端节点的数量可以改变。在本示例中,最初有4个后端节点470A-D,但是后端节点的数量可以变为N,从而导致后端池节点470A-N。
在一个实施例中,负载平衡器450A可将从客户机410A通过周边NAT 430A发送的数据(流502)转发到后端节点470A。此外,由客户机410C发送并由周边NAT430A转发的流504可以由负载平衡器450A和负载平衡器450B两者转发到后端470D。另外,在一个实施例中,负载平衡器450A可将从客户机410D通过周边NAT430B发送的数据(流506)转发到后端470B。此外,由客户机410F发送并由周边NAT 430B转发的流508可以由负载平衡器450A和负载平衡器450B两者转发到后端470C。
还应当注意,网络交换机、路由器和其他设备(图5中未示出)可以存在于联网环境500中。例如,在负载平衡节点450A-B与后端节点470A-D之间可以存在网络交换机,以便提供期望的网络连接。
参考图6A,从网络分组的角度示出了已知TCP/IP联网过程的功能框图。客户机610可以在家庭的专用网络上或者在到企业网络的虚拟专用网络(VPN)连接上,并且希望经由公共因特网与驻留在一个或多个后端640上的web服务进行通信。图6A所示的示例对应于虚拟专用端点(VPE)或类似服务,其可以通过向网络分组添加适当的头部来创建在源与目的地之间的VPN隧道连接。客户机610发送到周边NAT 620的网络分组612包括作为源地址的客户机610的IP地址、所选择的源端口、作为目的地地址的周边NAT620的专用网络接口的IP地址、以及作为目的地端口的分配给所选择的因特网协议(例如对应于端口80的超文本传输协议(HTTP))的目的地端口。在该示例中,周边NAT620接收该分组612,并执行网络地址转换(NAT)处理以允许数据流在另一网络上继续,然而,应当理解,本发明并不要求连接跟踪设备执行NAT处理。在该示例中,NAT过程将分组612变换成修改后的分组622,并且如上所述,这要求周边NAT跟踪它转发的每个分组的连接。在其他示例中,分组612在与任何NAT过程分离且不同的过程中被变换成修改后的分组622。
该修改后的分组622具有作为其源IP地址的周边NAT 620的IP地址、新选择的源端口、作为目的地IP地址的负载平衡器630的IP地址、以及与分组612相同的目的地端口。该分组622被转发到负载平衡器630,负载平衡器630确定具有分组622正在试图请求的服务的后端640。在该示例中,负载平衡器630可以通过将目的地IP地址改变为后端640的地址来修改分组622,从而产生分组632。负载平衡器630将分组632转发到后端640。后端640接收分组632,并且现在使用它自己的用于源信息和周边NAT信息的地址和端口作为目的地地址和端口,经由周边NAT 620直接响应客户机610。
参考图6B,还从网络分组的角度示出了本发明的实施例的功能框图。分组652、662和672可以包括数据(未示出)和报头信息,该报头信息包括源网络地址(“SRC”)和目的地网络地址(“DST”)。分组652、662和672可以包括用于源和目的地端口号的字段。分组652、662和672可以包括相同的数据,但是包括不同的源和目的地网络地址信息,以及源和目的地端口字段中的不同数据。例如,分组652包括目的地网络地址10.240.10.10和端口号80。客户机410、周边NAT 430、负载平衡器450和后端470的网络地址在图6B中示出。例如,负载平衡器450的地址是161.26.0.30。可以看出,分组652的目的网络地址与周边NAT 430的网络地址相同。如先前关于图4所描述的,客户机410可以将分组652转发到周边NAT 430。
在一些实施例中,响应于接收到分组652,周边NAT 430可以执行NAT。另外,根据各种实施例,周边NAT 430可以将目的地端口改变为版本标识符。在该示例中,版本标识符81被编码在分组662中。版本标识符81替换分组652中的目的地端口号80。周边NAT 430将修改后的分组662转发给负载平衡器450,负载平衡器450从分组662中确定版本。负载平衡器450根据该版本运行适当的散列函数,如下面进一步描述的。负载平衡器450使用所提取的版本标识符和散列函数来选择目的地后端470,如下面进一步描述的。负载平衡器450将目的地端口恢复到80,其是在由周边NAT 430修改之前的端口号。负载平衡器450将分组672转发到所选择的后端470。后端470可以接收分组672,并且现在使用它自己的用于源信息和周边NAT信息的地址和端口作为目的地地址和端口,经由周边NAT 430直接响应客户机410。
参考图7A,示出了用于用版本号来标记网络分组的过程700的流程图。过程700可以由连接跟踪网络设备(诸如周边NAT、网关、虚拟专用端点(VPE)、虚拟专用网络(VPN)入口服务器、软件定义网络(SDN)出口设备、或基于SDN节点的NAT)来执行。
在702,由连接跟踪设备从客户机计算设备(例如客户机410)接收数据分组。分组可以经由TCP连接被接收。在一个实施例中,连接跟踪设备被配置为执行NAT。在一个实施例中,分组中的源地址和端口标识它们所属的内部网络(例如专用网络)中的设备。设备可以使用NAT以将私有源地址和端口改变为公共地址空间(例如,另一网络)中的地址。
在704,可以确定分组的版本标识符。在一个实施例中,连接跟踪设备(例如周边NAT 430)将在存储器中维护版本和相应的版本标识符。在704如何确定版本标识符取决于所接收的分组是正在维持其连接亲和性的分组序列中的第一个分组还是后续分组。如果所接收的分组是序列中的第一个分组,则建立或设置版本标识符。如果所接收的分组是序列中的后续分组,则通过将该分组标识为属于现有(被跟踪的)连接并从存储器中获取该序列的版本标识符来确定版本标识符。根据各种实施例,版本信息可以改变。在一些实施例中,当前版本是基于时间或数量条件被更新的。例如,当前版本可以在网络设备已经接收或发送特定数量的分组(例如每10,000个分组)之后递增,。作为另一个例子,当前版本可以在经过一段时间后递增,例如每5秒递增。在其他实施例中,响应于接收到指示网络中可操作设备的数量的改变的消息,更新当前版本。网络是动态的。例如,网关、负载平衡器、端点或其他网络设备的数量可以改变。在一些实施例中,每个特定网络配置可以与版本相对应。在其他实施例中,策略改变而不是后端容量改变可以与版本相对应。因此,版本标识符可以响应于接收到消息而改变。该消息可以是来自软件定义网络(SDN)的控制消息。该消息可以来自负载平衡器450,例如互联网控制消息协议(ICMP)消息或另一带外消息。在一些实施例中,当前状态或版本可以经由对服务的DNS查找或使用假SYN来获取。在又一示例中,负载平衡器450可以将当前版本编码为返回分组中的源端口。
在706,版本标识符可被编码到分组中。当前版本号可以被插入到所接收的网络分组中的任何适当字段中。在一些实施例中,版本标识符被编码到目的地端口字段中。在此阶段,被编码到分组中的版本标识符被保存在周边NAT的存储器中,以便与分组序列(即,同一个数据流)中的后续分组一起使用。
在708,包含所编码的版本标识符的分组被发送到转发网络设备,例如负载平衡设备。
图7B是根据本发明的各种实施例的用于由负载平衡器处理分组的过程720的流程图。过程720可以由具有转发能力的任何合适的网络设备(例如,负载平衡器450)来执行。在722处,转发设备接收数据分组。例如,可以从周边NAT 430接收分组。分组可以经由TCP连接被接收。接收设备和至少一个后端设备可以被包括在同一个网络中。
在724,可以从接收到的分组中提取版本标识符。在一个实施例中,版本标识符可以被编码在目的地端口字段中。在其他实施例中,版本标识符可以被编码在分组的任何其他合适的部分中。另外,可以从分组中提取源IP地址/端口号、目的地IP地址/端口号和在使用中的网络协议。
在726,选择分组应当被路由到的目的地(即,后端服务器)。例如,特定的散列函数可以用于使用所提取的源地址和源端口号作为散列函数的输入来确定散列值。同时,可以基于从分组中提取的版本标识符来选择后端服务器地址的表。该表存储特定版本的可用后端的列表。该散列值被除以后端设备网络中当前可操作的后端设备的特定数量(由所选择的表中的行数来确定)。确定由除法运算产生的余数,并且该余数对应于将被使用的所选择的表的行号。在该表行中的后端设备的网络地址被选择为分组的目的地。下面在图8中讨论该技术的更具体的示例。当负载平衡器450经历状态改变时,它可以注意到在它正在处理的每个流的指定字段中的版本,并且相应地更新它的转发规则。
在728,将所选择的网络地址编码到第一分组中作为目的地地址。此外,发起节点的源端口可被编码到第一分组中作为源端口,以用在该分组中发起的节点的源端口来替换版本标识符。将包含所选择的网络地址的第一分组发送到具有所选择的网络地址的后端设备。
图8是根据各种实施例的在负载平衡器(或转发设备)处的分组路由的框图。负载平衡设备450从NAT设备430接收分组862。在一个实施例中,客户机410和NAT设备430可以是第一网络的一部分。在另一实施例中,NAT设备430、负载平衡设备450以及后端470A和470B可以是第二网络的一部分。
负载平衡设备450从分组862中提取分组862的版本标识符。在该示例中,负载平衡设备450从分组862的目的地端口字段中提取版本标识符81。
此外,负载平衡设备450从分组862中提取源地址和源端口。在此示例中,负载平衡设备450提取165.20.10.10作为源地址,提取35017作为源端口。负载平衡设备450使用特定散列函数来确定散列值,该特定散列函数是基于版本标识符来选择的并且使用所提取的源地址和源端口作为输入。该特定散列函数可以是任何现在已知的或以后开发的散列函数。
散列函数可以是产生余数的散列函数或不产生余数的散列函数。对于这两个示例,图8假设负载平衡设备450确定散列值71。负载平衡设备450在将散列值71除以可操作后端设备的特定数量(从在发起连接时的当前版本标识符来确定)之后确定余数。尽管在图8中仅示出了两个后端设备(为了简化附图),但是应当理解,即使在图中未示出,任何数量的后端设备都是可操作的。在使用产生余数的散列函数并且版本标识符为81的第一示例中,假设三(3)个后端设备当前可操作。将71除以3得到余数2(71=23*3+2)。负载平衡设备450使用余数2作为表804中的行的索引。在此实例中,余数2指向行2。行2列出后端服务器的地址10.131.10.3。
如果所使用的散列函数产生余数,则负载平衡设备450从与可应用版本的余数相对应的表行中选择后端设备的网络地址。如果散列函数不产生余数,则由该散列函数产生的结果可被用于从表中选择一行。继续其中散列函数产生散列值71的示例,负载平衡设备450从行2选择具有用于版本标识符81的地址10.131.10.3的后端设备470A。
在图8中示出的具有版本标识符82的第二示例中,假设四(4)个后端设备当前是可操作的。此外,假设负载平衡设备450从分组862中提取版本标识符82。将散列值71除以4,得到余数3(71=17*4+3)。负载平衡设备450使用余数3作为表804中的行的索引。在第二示例中,余数3指向行3。行3列出后端服务器的地址10.131.10.4。在第二示例中,负载平衡设备450从行3选择具有用于版本标识符82的地址10.131.10.4的后端设备470B。
负载平衡设备450将所选择的网络地址编码到分组中作为目的地地址,并将包含所选择的网络地址的分组发送到具有该地址的后端设备。继续这些示例,如果所选地址是10.131.10.3,则分组872被发送到后端设备470A。如果所选择的地址是10.131.10.4,则分组874被发送到后端设备470B。
负载平衡设备450可以将发起节点(客户机410)的源端口号编码到分组872、874中作为源端口。NAT设备用版本标识符替换分组862中的始发节点的源端口号。通过将源端口号编码到分组872、874中,分组被恢复到后端设备470A、470B所期望的格式。后端设备470A、470B在服务于该分组时(例如在生成应答时)可以使用分组862中的发起节点的源端口号。
在一些实施例中,用于确定散列值的特定散列函数是基于第一分组的版本标识符从两个或更多个散列函数中选择的,在一些实施例中,可使用一致散列。
在一些实施例中,当前在第二网络中可操作的特定数量的后端设备是基于第一分组的版本标识符从两个或更多个数量的后端设备中选择的。
当负载平衡功能采用多于单个负载平衡设备450时,每个负载平衡设备实例需要知道与每个版本相对应的一组后端设备。因此,各种实施例提供了将与特定版本相对应的一组后端设备分发给负载平衡设备实例中的每一个负载平衡设备实例。
本发明可以是任何可能的集成技术细节水平的系统、方法和/或计算机程序产品。计算机程序产品可包含存储计算机可读程序指令的计算机可读存储介质(或媒体),这些计算机可读程序指令用于使得处理器执行本发明的方面。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下项:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构),以及上述项的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光缆的光脉冲)、或通过导线传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,集成电路的配置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的Smalltalk、C++等编程语言,以及过程式编程语言,例如“C”编程语言或类似的编程语言。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的方面。
本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得指令经由计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可被存储在可引导计算机、可编程数据处理装置和/或其他设备以特定方式工作的计算机可读存储介质中,使得存储指令的计算机可读存储介质包括一件制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,以使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在此方面,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,连续示出的两个框实际上可以作为一个步骤来实现,同时、基本同时、以部分或全部时间重叠的方式被执行,或者这些框有时可以以相反的顺序被执行,这取决于所涉及的功能。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
Claims (17)
1.一种计算机实现的方法,包括:
在连接跟踪设备处从第一网络中的节点接收分组;
由所述连接跟踪设备确定所述分组的版本标识符;
由所述连接跟踪设备将所述版本标识符编码到所述分组中;
由所述连接跟踪设备将包含所编码的版本标识符的所述分组发送到转发设备,其中,所述转发设备基于客户机连接亲和性来选择后端设备;以及
由所述转发设备将所述分组发送到所述后端设备,其中,所述后端设备在第二网络中。
2.根据权利要求1所述的计算机实现的方法,其中,将所述版本标识符编码到所述分组中包括:将所述版本标识符编码到所述分组的目的地端口字段中。
3.根据权利要求1所述的计算机实现的方法,其中,将所述版本标识符编码到所述分组中包括:将所述版本标识符编码到分组报头内的字段中。
4.根据权利要求1所述的计算机实现的方法,其中,所述连接跟踪设备是周边网络地址转换NAT设备。
5.根据权利要求1所述的计算机实现的方法,其中,所述版本标识符与所述第二网络中的一组后端设备相对应。
6.根据权利要求1所述的计算机实现的方法,其中,当前版本是基于时间,并且确定所述版本标识符包括:
确定当前版本标识符已经被使用的时间段;以及
当所确定的时间段超过针对更新所述版本标识符而指定的时间段时,更新所述版本标识符。
7.根据权利要求1所述的计算机实现的方法,其中,当前版本是基于分组的数量,并且确定所述版本标识符包括:
确定在所述连接跟踪设备处接收到的已经使用了特定版本标识符的分组的数量;以及
当所确定的分组的数量超过针对更新所述版本标识符而指定的特定分组数量时,更新所述版本标识符。
8.根据权利要求1所述的计算机实现的方法,其中,当前版本是基于由所述连接跟踪设备接收的控制消息。
9.根据权利要求1所述的计算机实现的方法,还包括:
由所述连接跟踪设备接收返回分组,其中,响应于将包含所编码的版本标识符的所述分组发送到所述转发设备,所述返回分组被发送到所述连接跟踪设备,并且用版本标识符对所述返回分组进行编码;以及
响应于所述返回分组,更新所述版本标识符。
10.根据权利要求1所述的计算机实现的方法,其中,所述版本标识符与由所述转发设备使用的散列函数或由所述转发设备采用的策略相对应。
11.一种计算机实现的方法,包括:
由第二网络中的转发设备从第一网络中的连接跟踪设备接收分组,其中,所述第二网络包括至少一个后端设备;
由所述转发设备从所述分组中提取所述分组的版本标识符;
由所述转发设备从所述分组中提取源地址和源端口号,并且基于所提取的源地址和源端口号,使用特定散列函数来确定散列值;
由所述转发设备使用所述散列值来选择与余数相对应的后端设备的网络地址:
由所述转发设备将所选择的网络地址编码到所述分组中作为目的地地址;以及
由所述转发设备将包含所选择的网络地址的所述分组发送到具有所选择的网络地址的后端设备。
12.根据权利要求11所述的计算机实现的方法,其中,用于确定所述散列值的所述特定散列函数是基于所述分组的所述版本标识符从两个或更多个散列函数中选择的。
13.根据权利要求11所述的计算机实现的方法,其中,当前在所述第二网络中可操作的特定一组后端设备是基于所述分组的所述版本标识符从两组或更多组后端设备中选择的。
14.一种计算系统,包括:
一个或多个处理器;
存储器,其耦合到所述处理器中的至少一者;以及
一组计算机程序指令,其存储在所述存储器中并且可操作以由所述处理器中的至少一个执行以执行权利要求1-10中的任一项中的操作。
15.一种计算系统,包括:
一个或多个处理器;
存储器,其耦合到所述处理器中的至少一者;以及
一组计算机程序指令,其存储在所述存储器中并且可操作以由所述处理器中的至少一个执行以执行权利要求11-13中的任一项中的操作。
16.一种计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有体现于其中的计算机可读程序代码,所述计算机可读程序代码当在处理器上执行时实现权利要求1-10中的任一项中的步骤。
17.一种计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有体现于其中的计算机可读程序代码,所述计算机可读程序代码当在处理器上执行时实现权利要求11-13中的任一项中的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/102741 | 2020-11-24 | ||
US17/102,741 US11616721B2 (en) | 2020-11-24 | 2020-11-24 | In-packet version tagging utilizing a perimeter NAT |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114553876A true CN114553876A (zh) | 2022-05-27 |
Family
ID=79164843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111372886.9A Pending CN114553876A (zh) | 2020-11-24 | 2021-11-18 | 利用周边nat的分组内版本标记的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11616721B2 (zh) |
JP (1) | JP2022083431A (zh) |
CN (1) | CN114553876A (zh) |
DE (1) | DE102021125850A1 (zh) |
GB (1) | GB2604971B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102347898A (zh) * | 2010-07-26 | 2012-02-08 | 丛林网络公司 | 有关网络内路由选择的方法和设备 |
US20150009995A1 (en) * | 2013-07-08 | 2015-01-08 | Nicira, Inc. | Encapsulating Data Packets Using an Adaptive Tunnelling Protocol |
CN104718733A (zh) * | 2012-10-22 | 2015-06-17 | 瑞典爱立信有限公司 | 基于分组的标识符定位符网络协议(ilnp)负载平衡和路由选择的方法和系统 |
CN106464564A (zh) * | 2014-05-27 | 2017-02-22 | 谷歌公司 | 网络分组封装和路由 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW501008B (en) * | 2001-05-03 | 2002-09-01 | Via Tech Inc | Symmetric dual-slot type data hash method and its related network switching device |
US7636917B2 (en) | 2003-06-30 | 2009-12-22 | Microsoft Corporation | Network load balancing with host status information |
US7693050B2 (en) | 2005-04-14 | 2010-04-06 | Microsoft Corporation | Stateless, affinity-preserving load balancing |
US10848811B2 (en) * | 2007-07-05 | 2020-11-24 | Coherent Logix, Incorporated | Control information for a wirelessly-transmitted data stream |
US9071608B2 (en) | 2008-04-28 | 2015-06-30 | International Business Machines Corporation | Method and apparatus for load balancing in network based telephony application |
US8423625B2 (en) * | 2011-02-28 | 2013-04-16 | Verizon Patent And Licensing Inc. | Session management using a customized pilot packet for stateful devices |
US9667447B2 (en) * | 2013-07-08 | 2017-05-30 | Nicira, Inc. | Managing context identifier assignment across multiple physical domains |
US9660904B2 (en) * | 2015-02-10 | 2017-05-23 | Alcatel Lucent | Method and system for inserting an openflow flow entry into a flow table using openflow protocol |
US20160373294A1 (en) * | 2015-06-18 | 2016-12-22 | Fortinet, Inc. | Flow management in a link aggregation group system |
GB2550622B (en) | 2016-04-19 | 2018-10-24 | Cisco Tech Inc | Information centric networking routing in an IP network |
US11178217B2 (en) | 2017-01-09 | 2021-11-16 | International Business Machines Corporation | DNS-based in-packet service version tagging |
US10541909B2 (en) | 2017-06-23 | 2020-01-21 | International Business Machines Corporation | Distributed affinity tracking for network connections |
US10616321B2 (en) | 2017-12-22 | 2020-04-07 | At&T Intellectual Property I, L.P. | Distributed stateful load balancer |
US10540207B1 (en) | 2018-07-18 | 2020-01-21 | International Business Machines Corporation | Fast, low memory, consistent hash using an initial distribution |
-
2020
- 2020-11-24 US US17/102,741 patent/US11616721B2/en active Active
-
2021
- 2021-10-05 DE DE102021125850.2A patent/DE102021125850A1/de active Pending
- 2021-11-10 GB GB2116119.5A patent/GB2604971B/en active Active
- 2021-11-18 CN CN202111372886.9A patent/CN114553876A/zh active Pending
- 2021-11-22 JP JP2021189545A patent/JP2022083431A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102347898A (zh) * | 2010-07-26 | 2012-02-08 | 丛林网络公司 | 有关网络内路由选择的方法和设备 |
CN104718733A (zh) * | 2012-10-22 | 2015-06-17 | 瑞典爱立信有限公司 | 基于分组的标识符定位符网络协议(ilnp)负载平衡和路由选择的方法和系统 |
US20150009995A1 (en) * | 2013-07-08 | 2015-01-08 | Nicira, Inc. | Encapsulating Data Packets Using an Adaptive Tunnelling Protocol |
US20190036820A1 (en) * | 2013-07-08 | 2019-01-31 | Nicira, Inc. | Encapsulating data packets using an adaptive tunnelling protocol |
CN106464564A (zh) * | 2014-05-27 | 2017-02-22 | 谷歌公司 | 网络分组封装和路由 |
Also Published As
Publication number | Publication date |
---|---|
GB2604971A (en) | 2022-09-21 |
US20220166719A1 (en) | 2022-05-26 |
US11616721B2 (en) | 2023-03-28 |
GB2604971B (en) | 2023-09-20 |
JP2022083431A (ja) | 2022-06-03 |
DE102021125850A1 (de) | 2022-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11150963B2 (en) | Remote smart NIC-based service acceleration | |
US10680946B2 (en) | Adding multi-tenant awareness to a network packet processing device on a software defined network (SDN) | |
US11882017B2 (en) | Automated route propagation among networks attached to scalable virtual traffic hubs | |
US10142226B1 (en) | Direct network connectivity with scalable forwarding and routing fleets | |
US11570244B2 (en) | Mirroring network traffic of virtual networks at a service provider network | |
US9473369B2 (en) | Application topology based on network traffic | |
US10355940B2 (en) | Compiler for and method of software defined networking, storage and compute performing operations | |
US9880870B1 (en) | Live migration of virtual machines using packet duplication | |
WO2022005992A1 (en) | Validating network flows in a multi-tenanted network appliance routing service | |
US20180375758A1 (en) | Distributed affinity tracking for network connections | |
US11177974B2 (en) | Consistent provision of member node group information on virtual overlay network | |
JP7012079B2 (ja) | オンプレミスとオフプレミスとの通信方法、システム、プログラム | |
US11178217B2 (en) | DNS-based in-packet service version tagging | |
US11184277B1 (en) | Reducing routing rules used to route traffic | |
US20190363990A1 (en) | Distributed affinity tracking for network connections | |
US11627169B2 (en) | Network-based Media Processing (NBMP) workflow management through 5G Framework for Live Uplink Streaming (FLUS) control | |
Duan et al. | Virtualized software-defined networks and services | |
US11652736B2 (en) | Transmitting network traffic to a pool of redundant network appliances | |
US20160241643A1 (en) | Protocol independent storage discovery and enablement | |
US20240015140A1 (en) | Systems and Methods for Redirecting Service and API Calls for Containerized Applications | |
US11616721B2 (en) | In-packet version tagging utilizing a perimeter NAT | |
US11316765B2 (en) | Load balancing across bandwidth carrying circuits | |
US11875202B2 (en) | Visualizing API invocation flows in containerized environments | |
KR20230109660A (ko) | 발행-구독 시스템에서의 키 순환 | |
Voderhobli | Adoption of a Legacy Network Management Protocol for Virtualisation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |