CN113454949A - 用于云计算系统的可靠虚拟化网络功能系统 - Google Patents

用于云计算系统的可靠虚拟化网络功能系统 Download PDF

Info

Publication number
CN113454949A
CN113454949A CN202080014730.0A CN202080014730A CN113454949A CN 113454949 A CN113454949 A CN 113454949A CN 202080014730 A CN202080014730 A CN 202080014730A CN 113454949 A CN113454949 A CN 113454949A
Authority
CN
China
Prior art keywords
vnf
key
physical
instance
application
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
Application number
CN202080014730.0A
Other languages
English (en)
Inventor
B·拉杜诺维克
M·J·巴尔克威尔
N·A·拜恩布雷格
张永光
A·卡特萨拉基斯
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN113454949A publication Critical patent/CN113454949A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • H04L41/0897Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities by horizontal or vertical scaling of resources, or by migrating entities, e.g. virtual resources or entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

可靠网络功能虚拟化(rVNF)系统包括虚拟化网络功能(VNF)应用实例,VNF应用实例包括多个物理VNF实例。负载均衡器提供客户端与VNF应用实例之间的接口。负载均衡器接口促进与特定用户上下文有关的分组向同一物理VNF实例的传递。通信接口促进客户端与VNF应用实例之间的通信。应用存储装置存储与VNF应用实例相关联的会话数据。

Description

用于云计算系统的可靠虚拟化网络功能系统
背景技术
网络功能虚拟化(NFV)是将传统上在专用(并且通常是专有的)硬件上运行的网络服务虚拟化的努力。利用NFV,例如路由、负载均衡、以及防火墙等功能被打包为商品硬件上的虚拟机(VM)。个体虚拟化网络功能或VNF,是NFV架构的重要组件。
大多数蜂窝虚拟化网络功能(VNF)维持控制平面与数据平面之间的严格分离。例如,在4G蜂窝控制平面中,服务网关(SGW)和分组数据网络网关(PGW)是数据平面功能的示例,而移动性管理实体(MME)、家庭订阅服务器(HSS)以及策略和计费规则功能(PCRF)是控制平面功能的示例。类似的拆分在2G、3G和5G蜂窝核心以及电话系统(例如,IP多媒体子系统(IMS)、LTE语音承载(VoLTE))、计费系统等中也被观察到。这与诸如网络地址转换(NAT)、防火墙等的常规互联网VNF(或中间件)形成对比,在这些常规互联网VNF中流从数据分组被隐式地标识。
大多数蜂窝VNF在控制平面上操作。它们负责设立和拆除针对不同应用的流和呼叫、管理移动性、计费、认证、设立服务质量(QoS)等。控制平面的主要的明显特征中的一个特征是相对低的业务体量。移动设备(例如,智能电话)通常交换一些控制消息来设立数据连接,并且然后数据分组会流过数据平面VNF。控制平面的另一明显特征是针对高可用性的需求。控制平面上的任何临时故障都可以在故障期间丢弃所有呼叫尝试,其被最终用户视为故障。这与典型传输协议可以从其容易地恢复的临时数据平面故障形成对比。
为了达到高可用性,虚拟化蜂窝VNF装置使用特殊的硬件和软件以及层2(数据链路层)网络抽象。然而,许多云计算系统假设商品硬件、层3(网络层)网络抽象,以及跨多个故障和更新域的完全地被复制的软件。由于这些(和其他)差异,在云计算系统中实现针对蜂窝VNF的控制平面架构可以是困难的。
发明内容
本文公开了一种用于云计算系统的可靠虚拟化网络功能(rVNF)系统。根据本公开的rVNF系统包括虚拟化网络功能(VNF)应用实例,该VNF应用实例包括多个物理VNF实例。负载均衡器提供客户端与VNF应用实例之间的接口。负载均衡器接口促进与特定用户上下文有关的分组向同一物理VNF实例的传递。通信接口促进客户端与VNF应用实例之间的通信。应用存储装置存储与VNF应用实例相关联的会话数据。
附图说明
图1图示了根据本公开的可靠VNF(rVNF)系统的示例。
图2图示了在多个物理VNF实例上被复制的负载均衡器和应用存储装置。
图3图示了示出负载均衡器接口可以如何促进与特定用户上下文有关的所有分组向同一物理VNF实例的传递的示例。
图4A-图4B图示了负载均衡器接口的另一示例。
图5图示了根据本公开的可以结合SCTP协议使用的套接字接口的方面。
图6图示了根据本公开的可以由套接字接口利用的通用套接字架构的示例。
图7图示了用于SCTP套接字示例的消息交换。
图7A图示了虚拟化RESTful API的示例。
图7B图示了可以利用虚拟化RESTful API的系统的示例。
图8A-图8D图示了可以在事务性键值存储库(key-value store)中被实现的主备份设计原理的方面。
图9图示了在物理VNF实例从rVNF系统被移除之后键重新分配的示例。
图10图示了响应于被添加到rVNF系统的新物理VNF实例的键重新分配的示例。
图11图示了在事务的开始处创建被访问的键和值对的本地副本的示例。
图12图示了涉及关于键的主节点和两个备份节点的备份过程的示例。
图13图示了用于GTP-C协议的元数据处理的示例。
图14图示了示出键的所有权从一个虚拟机(VM)向另一VM的更改的示例。
图15图示了示出其中两个事务以不同顺序请求键的所有权的场景的示例。
图16图示了用于提供用于云计算系统的网络功能虚拟化系统的方法的示例。
图17图示了可以被包括在计算机系统内的某些组件。
具体实施方式
本公开总体上涉及可以在云计算平台抽象之上达到高可用性和可靠性的控制平面架构。根据本公开的一个方面,可靠VNF(rVNF)系统实现负载均衡器(LB)接口,该LB接口向位于标准传输层协议之上的各种协议提供定制应用层负载均衡。这促进被复制的应用存储装置设计,如将在后面讨论的。
根据本公开的rVNF系统还可以包括通信接口,该通信接口可以促进经由HTTP、REST等的通信。通信接口可以被复制并且是可靠的,使得被接收和被确认的任何分组可以被存储在可靠的存储装置中,并且由物理VNF实例中的任一物理VNF实例可访问。
根据本公开的rVNF系统还可以提供快速的、被复制的应用存储装置。应用存储装置可以采取键值存储库(KVS)的形式,其在本文中可以被称为rVNF KVS。该KVS可以被设计为与现有的VNF类型应用进行接口,这些现有的VNF类型应用是利用用于多进程/多线程环境的标准操作系统(OS)锁编写。应用存储装置也可以依赖于标准存储器API用于分配和释放内存块。
图1示出了根据本公开的rVNF系统100的示例。rVNF系统100被配置为在云计算系统中被实现。rVNF系统100包括虚拟化网络功能(VNF)应用实例102,VNF应用实例102可以实现与蜂窝控制平面相关联的一个或多个功能。VNF应用实例102包括多个物理VNF实例104a-104c。物理VNF实例104a-104c可以是,例如虚拟机(VM)、容器、或者VM和容器的组合。
rVNF系统100还包括负载均衡器106,负载均衡器106提供客户端108与VNF应用实例102之间的接口。客户端108可以是与VNF应用实例通信的任何实体,诸如另一VNF或用户设备。
负载均衡器(LB)接口110促进将与特定用户上下文有关的所有分组向同一物理VNF实例的传递。例如,如果与特定用户上下文有关的第一被接收分组最初向第二物理VNF实例104b被传递,则LB接口110确保与相同的用户上下文有关的后续分组也向第二物理VNF实例104b被传递。LB接口110在本文中可以被称为rVNF LB。
通信接口112可以促进经由HTTP、REST等的通信。在一些实施例中,通信接口112可以实现跨不同物理VNF实例104a-104c共享状态和功能的虚拟化传输协议。在一些实施例中,通信接口112可以包括套接字接口,该套接字接口在本文中可以被称为rVNF套接字。
rVNF系统100还包括存储装置114,存储装置114在本文中可以被称为应用存储装置114。应用存储装置114存储与VNF应用实例102相关联的会话数据116。如下文将更详细讨论的,在一些实施例中,应用存储装置114可以被实现为事务性键值存储库(KVS),该KVS在本文中可以被称为rVNF KVS。
为简单起见,图1所示的rVNF系统100包括单个VNF应用实例102。然而,根据本公开的rVNF系统可以包括多个VNF应用实例102。每个VNF应用实例102可以具有它自己的负载均衡器106的实例和它自己的应用存储装置114的实例。为了可缩放性和可靠性,负载均衡器106和应用存储装置114可以被实现为在多个虚拟机(VM)之上运行的分布式软件。
为了促进可靠性,负载均衡器和应用存储装置可以在物理VNF实例上被复制。VNF应用实例也可以被复制。这在图2中被图示,图2示出了第一物理VNF实例204a、第二物理VNF实例204b,和第三物理VNF实例204c。第一物理VNF实例204a包括负载均衡器的第一实例206a、应用存储装置的第一实例214a和VNF应用的第一实例202a。第二物理VNF实例204b包括负载均衡器的第二实例206b、应用存储装置的第二实例214b,和VNF应用的第二实例202b。第三物理VNF实例204c包括负载均衡器的第三实例206c、应用存储装置的第三实例214c和VNF应用的第三实例202c。
如上所指示,LB接口促进与特定用户上下文有关的所有分组向同一物理VNF实例的传递。其示例将结合图3中所示的LB接口310被讨论。
LB接口310可以包括存储装置318,存储装置318在本文中可以被称为LB存储装置318。到达LB接口310的分组可以包括标识特定用户上下文的元数据。LB存储装置318可以包括被包括在所接收的分组中的元数据与特定物理VNF实例之间的关联。LB存储装置318可以是非事务性的(与应用存储装置114相反,如下面将讨论的,应用程序存储器114是事务性的)。
响应于接收到传入分组320,LB接口310解析传入分组320并且从传入分组320提取元数据。LB接口被示为具有用于提供该功能性的解析组件322。LB接口310然后在LB存储装置318中针对元数据进行搜索。如果搜索成功、并且元数据在LB存储装置318中被找到,则LB接口310标识与LB存储装置318中的元数据相关联的物理VNF实例,并且向所标识的物理VNF实例转发传入分组320。然而,如果搜索不成功、并且元数据在LB存储装置318中未被找到,则LB接口310基于其他标准来表示应当接收传入分组320的物理VNF实例,诸如与物理VNF实例相关联的负载信息(例如,哪个物理VNF实例具有最多容量)。LB接口310然后向所标识的物理VNF实例转发传入分组320,并且在LB存储装置318中将元数据与所标识的物理VNF实例相关联。
在一些实施例中,LB接口310可以在LB存储装置318中针对元数据或元数据的子集进行搜索。也就是说,不同的子过滤器可以结合在LB存储装置318中针对元数据的搜索来被应用。例如,最初可以做出匹配srcIP:srcPort,dstIP:dstPort的尝试。如果这失败,则可以做出匹配*:*,dstIP:dstPort(其中*表示任何)的尝试。如果这失败,则其他标准可以被用于选择应当接收传入分组320的物理VNF实例,如上所述。
在所描绘的示例中,传入分组内的元数据被示出为元数据1。LB接口310解析传入分组320并且从传入分组320提取元数据1。LB接口310然后在LB存储装置318中针对元数据1进行搜索。在所描绘的示例中,LB存储装置318包括将元数据1与第一物理VNF实例304a相关联的记录324a。在找到记录324a后,LB接口310标识与元数据1相关联的物理VNF实例,在该示例中是第一物理VNF接口304a。LB接口310然后向第一物理VNF实例304a转发传入分组320。
另一方面,如果将元数据1与第一物理VNF实例304a相关联的记录324a不存在、并且针对元数据1的搜索不成功,则LB接口310会选择物理VNF实例304a-304c中的一个物理VNF实例来接收传入分组320。如果LB接口310选择第一物理VNF接口304a,则LB接口310会向第一物理VNF接口304a转发传入分组320,并且在LB存储装置318中将元数据1与第一物理VNF实例304a相关联(例如,通过创建图3中所示的记录324a)。
物理VNF实例304a-304c可以能够向LB存储装置318中插入路由条目。例如,图3示出了第二物理VNF实例304b发送传出分组326。传出分组326内的元数据将被称为元数据2。第二物理VNF实例304b可以在LB存储装置318中创建将元数据2与第二物理VNF实例304b相关联的记录324b。这向LB接口310指示包括元数据2的未来传入分组应当向第二物理VNF实例304b被路由。
图4A-图4B示出了LB接口410的另一示例。首先参考图4A,图4A示出了使用多个虚拟机(VM)428a-428c所实现的LB接口410。LB VM 428a-428c接收在它们之间共享的所有VNF网络业务。LB接口410包括键值存储库(KVS)418,键值存储库是图3中所示的LB存储装置318的示例。KVS 418可以是非事务性的。LB接口410还包括解析应用编程接口(API)422,该应用编程接口422是图3中所示的解析组件322的示例。在所描绘的示例中,LB接口410与客户端408之间的通信经由云计算系统LB 430发生,云计算系统LB 430包括多个多路复用器432a-432c。备选地,LB接口410与客户端408之间的通信可以经由具有多路复用器的边缘实例发生。VNF应用实例402被示出为具有多个应用VM 404a-404c,应用VM 404a-404c是图3中所示的物理VNF实例304a-304c的示例。
图4B图示了传入分组可以如何被LB接口410处理。解析API 422从传入分组提取元数据。解析API 422允许VNF应用开发者插入简单的无状态函数以处理传入分组并且以单个字符串的形式从中提取一些元数据。这可以像提取5元组一样简单,也可以像解析3GPP协议报头一样复杂。解析函数返回具有被提取的元数据的分组。
如果元数据已经在KVS 418中与特定应用VM相关联,则元数据向该应用VM被转发。否则,LB接口410选择应用VM 404a-404c中的一个应用VM来接收分组,并且在KVS 418中将元数据与该应用VM相关联。应用VM 404a-c还能够将向KVS 418中插入路由条目。
如上所指示,根据本公开的套接字接口实现跨不同物理VNF实例共享状态和功能的虚拟化传输协议。传输协议抽象经常提供分组重传、拥塞控制和其他特征,其涉及针对每个连接保持一些状态信息。在已知的实现中,这通常在操作系统内核中被完成并且难以访问。因此,当对应的VM出现故障时,连接状态丢失并且连接被丢弃,这可以引起对控制平面性能的可见负面后果。
根据本公开的rVNF套接字接口为VNF应用实例提供可靠的套接字API。rVNF套接字接口可以保持对传输协议状态的显式控制,并且为了可靠性而跨rVNF套接字VM实例复制该状态。出于示例的目的,三种传输协议将被讨论:用户数据报协议(UDP)、流控制传输协议(SCTP)和传输控制协议(TCP)。
UDP是一种无状态协议,并且因此没有必要按连接存储任何与UDP有关的状态。然而,覆盖协议可以实现一些重传和故障检测功能性。
与UDP不同,SCTP存储每连接的状态,该状态包含在飞行中的分组的序列号和不同关联(路径)的拥塞窗口大小,等等。根据本公开的套接字接口可以在每个SCTP操作(例如,分组接收/传输、超时)之后复制整个SCTP协议状态。
图5图示了根据本公开的可以结合SCTP协议使用的套接字接口的方面。如上所指示,根据本公开的rVNF系统提供客户端508与VNF应用实例之间的接口,该接口在所描绘的示例中包括多个应用VM 504。套接字接口包括传输协议应用的多个实例,在所描绘的示例中,这些实例被表示为SCTP实例534a-534c。使用事务性KVS 514和非事务性KVS 518,传输协议(SCTP)状态跨SCTP实例534a-534c而被复制。多个LB接口510a-510c被示出为与SCTP实例534a-534c通信
特定SCTP实例从对应的LB接口接收分组。例如,第一SCTP实例534a从第一LB接口510a接收分组。第一SCTP实例534a使用事务性KVS 514(其是图1中所示的应用存储装置114的示例,并且将在下面更详细地讨论)用于数据复制。LB接口510a-510c基于分组中的元数据将分组向不同的SCTP实例534a-634c多路复用,使得来自同一流的所有分组向同一SCTP实例被传递。SCTP实例510a-510c还访问KVS 518(其是图3中所示的LB存储装置318的示例)以访问跨所有流共享的少量状态。
在一些实施例中,LB接口510a-510c中的每个LB接口公布其自己的IP地址而不是通过多路复用器。这使得客户端508能够显式管理跨不同IP地址的故障转移。在一些实施例中,一旦特定LB接口接收SCTP分组,LB接口就向用户模式的SCTP实例534a-534c中的一个用户模式的SCTP实例转发分组,这些实例可以在同一VM或不同的VM上运行。
响应于从LB接口接收到分组,SCTP实例处理该分组,更新流状态,并且向LB接口发送回任何响应。响应可以包括网络分组和应用套接字响应。网络分组响应的一个示例是向另一SCTP端点所发送的确认(ACK)。应用套接字响应的一个示例是必须通过套接字API被传递给应用的新接收的SCTP分组。网络分组被转发回给LB接口,LB接口通过网络传送网络分组。应用套接字分组也被转发回给LB接口,在那里它们以与被接收的UDP数据报被处理的方式相同的方式被处理:解析API在分组上运行,以确定目的地,并且然后分组被转发给该目的地。
套接字接口与应用VM 504之间的API可以不同于标准套接字,因为它可以允许可靠的分组传递。应用VM 504可以从套接字接口读取分组,并且一旦处理被完成,应用VM 504就可以通过单独的API调用来删除该分组。这允许额外的可靠性。如果应用VM 504在处理整个分组之前出现故障,则另一应用VM 504将能够获取同一分组并且继续处理。
TCP架构可以基本上类似于SCTP架构。一个例外是TCP架构可以包括多路复用器或边界网关协议(BGP)发言方(speaker),以向LB接口的所有实例提供同一IP地址,因为标准TCP仅支持一个IP地址。
图6图示了根据本公开的可以由套接字接口利用的通用套接字架构的示例。VNF应用实例在一个或多个线程中运行rVNF套接字引擎636。应用使用标准套接字接口来注册套接字。特别地,当应用发布套接字绑定(bind)请求时,该请求创建针对新套接字的循环队列,一个循环队列用于传送,一个循环队列用于接收,并且在本地查找表640中添加套接字元数据(例如,源IP地址和目的地IP(dstIP)地址、源端口和目的地端口(port)、以及协议ID)。之后,当新的分组到达时,该分组被放在对应的接收队列中。被放在传送队列中的每个分组(通过调用套接字send()的应用)通过网络接口卡(NIC)638被传输。
在一些实施例中,套接字接口可以支持套接字的多线程无锁版本,其中多个线程可以绑定到同一套接字元组。rVNF套接字引擎636然后针对该套接字创建多个独立的队列对,并且跨队列随机地且均等地分发该套接字的被接收分组。rVNF套接字引擎636还收集用于从两个队列传输的分组。
图7图示了用于SCTP套接字示例的消息交换。该示例结合SCTP应用734和移动性管理实体(MME)应用702被讨论。MME应用702是VNF应用的示例。
在图7中,隧道化分组以矩形表示。实线矩形表示一条隧道,而虚线矩形表示另一隧道。可靠消息被用实线表示,而不可靠消息被用虚线表示。
考虑具有源地址SA、目的地地址DA、源端口SP和目的地端口DP的SCTP分组到达LBVM中的一个LB VM(分组1)。然后,该分组将被隧道化并且向SCTP应用的实例被转发(分组2)。然后SCTP执行SCTP操作并且向LB转发所接收的具有相同报头的数据报(分组3),该数据报然后向MME应用的一个实例被转发(分组4),后者使用不同的隧道。来自MME的响应将向任一LB实例被转发(分组5),并且然后基于路由KVS向适当的SCTP实例被转发(分组6)。在对分组执行(多个)SCTP操作之后,SCTP应用将向任何LB实例转发该分组(分组8),并且进一步向目的地转发该分组。返回分组还可以被合并成一个传输(5和6、7和8),并且LB选择可以基于负载被随机化。此外,倘若应用与LB实例被并置,图7中的所有传输都可以通过共享存储器队列而不是网络被完成。
术语“5G”是指最新的一组蜂窝移动通信标准。5G标准广泛使用RESTful接口。术语REST表示表示性状态转移(REST),是软件架构风格,它定义了一组用于创建网络(Web)服务的约束。符合REST架构风格的Web服务可以被称为RESTful Web服务。RESTful Web服务允许请求的系统通过使用一组统一和预定义的无状态操作来访问和操纵Web资源的表示。在RESTful接口被使用的实施例中,RESTful API可以被虚拟化为单独的应用,类似于SCTP被虚拟化的方式(如上所述)。
参考图7A,rVNF LB 710可以向RESTful应用774转发传入分组。图7A示出了RESTful应用774的多个实例774a-774b。rVNF LB 710可以使用元数据(诸如IP元组)用于转发以确保一个TCP连接总是落在RESTful应用774的同一实例上。RESTful应用774接收和移除报头(例如,TCP和HTTPS报头),提取纯REST请求,潜在地从REST消息中提取所需的元数据,并且通过rVNF LB 710向VNF应用节点704a-704c中的一个VNF应用节点转发REST请求。rVNF LB 710使用由RESTful应用774供应的元数据来向VNF应用节点704a-704c中的正确的一个节点转发分组。
根据至少一些实施例,RESTful应用774本身不被复制。如果RESTful应用774的一个或多个实例774a-774b发生故障,则连接可以简单地被重新打开。
图7A还示出了共享RESTful层抽象772,共享RESTful层抽象772包括本地RESTful应用的多个实例772a-772c。这些RESTful应用实例772a-772c在VNF应用节点704a-704c上运行。
如上所指示,应用存储装置存储与VNF应用实例相关联的会话数据。在一些实施例中,应用存储装置采取包括多个键值对的键值存储库(KVS)的形式。
图7B示出了可以利用虚拟化RESTful API的系统的示例。该系统包括访问和移动性管理功能(AMF)782的逻辑实例,其可以使用多个物理AMF实例784a-784b被实现。AMF 782还可以包括可靠SCTP套接字层794、共享RESTful层抽象795和可靠存储器796。该系统还包括多个网络仓储功能(NRF)实例786和多个非结构化数据存储网络功能(UDSF)实例788。该系统包括会话管理功能(SMF)790的逻辑实例,会话管理功能790可以使用多个物理SMF实例792a-792b被实现。SMF 790包括共享RESTful层抽象797和可靠存储器798。
可靠SCTP套接字层794使得无线通信系统内的节点(例如,基站789a-789c)能够经由多个IP地址、跨不同的访问链路连接到AMF 782,以及到不同的VM。AMF逻辑实例782和SMF逻辑实例790可以被实现,使得它们是有状态的和快速的(例如,使用本地读/写)。在一些实施例中,仅持久数据被备份。在AMF 782内的共享RESTful层抽象795与SMF 790内的共享RESTful层抽象797之间可以存在HTTP连接。该HTTP连接可以在缩放和/或故障时被重新建立。会话状态可以在AMF 782和SMF 790两者处被本地复制。关于AMF 782内的共享RESTful层抽象795与NRF实例786之间的接口,切片搜索返回单个逻辑SMF地址。
在一些实施例中,应用存储装置是事务性KVS。事务可以由应用程序定义。在事务期间,应用可以发布多个对键值对的读和写。一旦事务被提交,这些读和写就会被原子性地更新,如果这不可能,则事务将被回滚。
在一些实施例中,每个值可以具有不同的大小。这使得根据本公开的KVS比常规KVS更灵活。在一些实施例中,每个键可以采取存储器地址的形式。与特定键的对应的值可以被存储在与该键表示的存储器地址对应的存储器部分中。
在一些实施例中,KVS实现一种主备设计原理,其中每个键在任何给定时间只有一个物理VNF实例作为所有者,并且只有键的所有者才被允许访问该键和与该键对应的值。换句话说,只有键的所有者才能读或写该键。如果另一物理VNF实例想要对键执行操作,则该物理VNF实例必须首先成为该键的所有者。
主备份设计的益处中的一个益处是,如果针对同一组键的所有请求都在同一物理VNF实例上被处理,则事务完全是本地的并且非常有效率。所有读和写都是本地的,并且物理VNF实例在事务结束处向指定的备份物理VNF实例一次传输经修改的键值对。
将结合图8A-8D讨论主备份设计原理的示例。首先参考图8A,图8A示出了跨多个物理VNF实例804a-804c而被复制的KVS。特别地,第一物理VNF实例804a包括KVS的第一实例814a。第二物理VNF实例804b包括KVS第二实例814b。第三物理VNF实例804c包括KVS的第三实例814c。
图8B示出了所有者表848,所有者表848标识KVS中每个键的所有者。在所描绘的示例中,第一物理VNF实例804a是键1的所有者,第二物理VNF实例804b是键2的所有者,第三物理VNF实例804c是键3的所有者,等等。
现在参考图8C。假设第一物理VNF实例804a对包括键1的键值对执行写操作844。写操作844将值1更改为值1A。此时只有第一物理VNF实例804a能够执行写操作844,因为第一物理VNF实例804a是键1的所有者。
当特定键的所有者对键值对执行写操作时,该写操作将作为备份被复制到KVS的其他实例。例如,现在参考图8D,在对KVS的第一实例814a执行写操作844之后,然后对KVS的其他实例814b-814c执行写操作844的复制846作为备份。
在某些情况下,物理VNF实例可以从rVNF系统中被删除。例如,物理VNF实例可以出现故障(停止正常工作)或被扩展到系统之外。在一些实施例中,当特定物理VNF实例不再是rVNF系统的一部分时,指向该物理VNF实例的所有键可以被重新分配给其他物理VNF实例。
将关于图9讨论示例,图9示出了键重新分配发生之前的所有者表948a和键重新分配发生之后的所有者表948b。参考键重新分配发生之前的所有者表948a,假设物理VNF实例之间的键的所有权初始分配如下。第一物理VNF实例最初是键1、键5、键7、键8和键10的所有者。第二物理VNF实例最初是键2、键4、键6和键9的所有者。第三物理VNF实例最初是键3的所有者。
假设第二物理VNF实例出现故障。作为响应,由第二物理VNF实例当前拥有的键的所有权(即,在本示例中为键2、键4、键6和键9)可以被重新分配。所有者表948b指示在该重新分配已经被做出之后键的所有权。先前由第二物理VNF接口(即键2)拥有的键中的一个键现在由第一物理VNF接口拥有。以前由第二物理VNF接口(即键4、键6和键9)拥有的其他键现在由第三物理VNF接口拥有。
在该示例中,至少部分地基于与物理VNF接口有关的负载信息,键的所有权被重新分配。在第二物理VNF接口的故障之前,第一物理VNF接口比第三物理VNF接口负载更重(第一物理VNF接口是五个键的所有者,而第三物理VNF接口只是单个键的所有者)。因此,当第二物理VNF实例拥有的键被重新分配时,这些键中的大部分键都被分配给第三个物理VNF接口,因为它的负载较轻。
在一些实施例中,当新的物理VNF实例被添加时,一些键的所有权可以被重新分配给新的物理VNF实例。将关于图10讨论示例,图10示出了键重新分配发生之前的所有者表1048a和键重新分配发生之后的所有者表1048b。
参考键重新分配发生之前的所有者表1048a,假设物理VNF实例之间的键的所有权初始分配如下。第一物理VNF实例最初是键1、键3、键5、键7、键8和键10的所有者。第二物理VNF实例最初是键2、键4、键6和键9的所有者。
假设现在第三物理VNF实例被添加到系统。作为响应,某些键的所有权可以被重新分配给新添加的第三物理VNF实例。所有者表1048b指示在该重新分配已经被做出之后键的所有权。先前由第一物理VNF接口拥有的键中的两个键(即键5和键8)现在由第三物理VNF接口拥有。此外,先前由第二物理VNF接口(即键9)拥有的键中的一个键现在由第三物理VNF接口拥有。
在该示例中,至少部分地基于与物理VNF接口有关的负载信息,键的所有权被重新分配。在第三物理VNF接口被添加之前,第一物理VNF接口比第二物理VNF接口负载更重。特别地,第一物理VNF接口是六个键的所有者,而第二物理VNF接口只是四个键的所有者。因此,当键被分配给新添加的第三物理VNF实例时,这些键中的大部分键是从负载较重的第一物理VNF接口中取得的。
当物理VNF接口(或节点)被添加或删除时,不必直接修改所有权表(例如,如图9和图10所示)。而是,路由表(例如,如图3中的LB存储装置318中所示)可以被更新,使得将请求被发送给不同的物理VNF接口。随后,物理VNF接口可以自己执行所有权转移。这让渡了LB直接管理所有权的需求。因此,当一个或多个键的所有权被重新分配时,这可以涉及LB更新路由表和受影响的物理VNF接口随后执行适当的所有权转移。
应用存储装置(例如,rVNF KVS)可以促进事务处理、所有权管理以及故障检测和恢复。事务处理将首先被讨论。rVNF KVS事务通常从接收来自rVNF LB接口的分组的接收开始。如上所讨论,分组还携带由LB供应的元数据,用于标识事务的上下文。
rVNF KVS可以基于对操作系统锁定/解锁API的调用来标识事务。由于大多数VNF装置已经是多线程/多进程的,这些锁已经被插入以保护隐式事务。分组元数据也与事务相关联,这简化了锁管理,如之后被描述的。备选地,rVNF KVS可以通过其他机制来标识事务,包括但不限于显式注释事务。
事务从第一次锁API调用开始,并且在最后一次解锁时结束。在单个事务期间,可以有多个嵌套锁。在最后一次解锁发生时,事务被提交。备选地,程序员可以显式注释代码以标记事务的开始和结束。
现在参考图11。在事务开始时,被访问的键值对的本地副本的(初始)空列表1150被创建。应用程序第一次访问键1152时,键1152及其当前值1154被复制到列表1150中。图11示出了键1152的副本1152'和列表1150中的值1154的副本1154'。在事务期间,应用仅修改列表1150中的副本(由键1152'和值1154'表示)。原始存储器位置(由键1152表示)保持不变,使得事务可以被回滚。下次应用访问同一事务中的相同键时,应用将使用已经被创建的键值对的副本(由键1152'和键1154'表示)。
单个节点可以在多个CPU核上并发执行多个事务。在一些实施例中,并发事务可以不被允许访问同一键。当事务访问键时,事务将其ID写入键的元数据中。如果新事务尝试访问同一键并且发现事务已经获得了该键,则它会暂停并且等待先前的事务完成。
为了防止这种等待,系统可以被配置为避免调度具有相同元数据的事务。元数据可能包括表示不同上下文的对象数组。在尝试调度新事务之前,系统可以检查所有正在运行的事务以确定它们中的任何一个是否包含与候选事务一起存在的元数据对象中的任何元数据对象。如果它们包含这样的元数据对象,则新的候选事务可以被选择。由于请求的性质,可能会有许多其他传入请求未访问同一上下文,因此用于并行的机会不太可能被错过。
例如,假设rVNF应用正在处理具有元数据R1={teid1,enb1}的请求,并且它接收具有以下元数据的请求:R2={teid1,enb1},R3={teid2,enb1},R4={teid3,enb2}。在一些实施例中,直到请求R1被完成为止,应用才会调度请求R2,因为它们共享相同元数据。应用也不会调度请求R3与R1并发,因为R1和R3共享一部分元数据(键enb2)。它将接受并发地调度请求R1和R4,因为元数据键没有重叠。
在事务的结束处,rVNF KVS将所有经修改的键和值备份到所有其他节点(物理VNF实例)。在一些实施例中,所有键可以在所有节点上被复制,特别地如果被存储在rVNF KVS中的键数目相对较小使得所有键都可以适应主存储器。在备选实施例中,每个键的复本数目可以有限制。
在一些实施例中,一旦所有备份节点(物理VNF实例)确认事务,就假设交易成功。此时所有的网络响应都被传输,并且被接收的分组从套接字中被清除。这使得维护可靠性模型成为可能,该模型授权如同仅发生网络丢失的行为。如果节点在事务期间出现故障,事务可以在不同的节点上被重复(例如,在SCTP的情况下,其中被接收的分组已经被确认),或者被忽略(例如,在UDP的情况下,这会相当于初始网络分组丢失)。如果节点在事务之后和网络消息之前出现故障,则这会等同于在网络上丢失响应分组。
一旦来自所有备份的确认被接收,主节点就不需要验证事务。因此整个备份需要一个往返时间。代替地,所有最近的备份都被视为未决的(pending)。一旦较新的备份被提交,先前未决的备份就被视为有效。
图12图示了备份过程的示例,该示例涉及主节点(P)和关于键k1的两个备份节点(B1和B2)。在该上下文中,术语“节点”是指物理VNF实例。k1的值(由v1表示)最初为0。作为事务的一部分,主节点P将k1的值更改为1。当事务被提交时,在B1和B2上k1的值被更改为1。作为后续事务的一部分,主节点P将k1的值更改为5。但是,直到该后续事务被提交为止,B1和B2上的k1值保持为1。
现在将讨论元数据存储装置和处理。如前所讨论,rVNF LB和rVNF应用在各个步骤处使用元数据。该元数据既可以被存储在LB的键值存储库中也可以被存储在应用侧上。为了最小化时延和开销,元数据可以尽可能靠近应用侧而被存储。例如,如果部分元数据被需要用于路由,则该元数据可以被存储在LB KVS中。否则,该元数据可以被存储在应用节点处。被存储在应用侧处的元数据不必被复制(尽管可以)。元数据被用于针对性能优化的提示,并且不影响执行的正确性。元数据的任何复制都可以降低常规运行时性能。在故障的情况下,新节点从新事务中重新学习元数据。
图13中给出了针对GTP-C协议的元数据处理的示例。将结合MME(其是客户端108的示例)和SPGW应用(其是VNF应用实例102的示例)来讨论该示例。SPGW应用(App)1是指SPGW应用的第一实例(例如,第一物理VNF实例104a)。SPGW LB是LB接口110的示例。
当第一分组到来时,该第一分组是针对新会话的创建会话请求1356,元数据不存在,因此查找失败。分组被向任何物理VNF实例转发。在创建会话请求1356的处理期间,SPGW应用代码将GTP-C隧道ID 200和GTP-U隧道ID 300指派给新会话。然后,用户检测代码以将两个元数据(“rt:200”和“rt:300”)添加到路由KVS,并且还注册元依赖(元/元(meta/metas)表1358),所有这些在LB处,意味着“rt:200”可能请求与“rt:300”相同的键,反之亦然。每个NFV_APP_SET/GET调用自动地从分组调用中获取被提供的元数据。对于第一分组,该元数据为空。图13示出了从SPGW应用向MME发送的创建会话响应1360。
从MME到SPGW的下一个分组,修改承载请求1362,携带teid 200,teid 200已经在LB路由KVS中,因此分组被正确路由到SPGW应用实例1。在处理修改承载请求时,SPGW应用现在具有由应用上下文提供的元数据(“rt:200”和“rt:300”),因此下次NFV_APP_SET/GET被调用时,对应的元数据和键自动地被添加到元/键表。
接下来,数据分组1364与teid 300一起到来。由于“rt:300”在LB路由表中,因此该分组被路由到正确的LB实例。这里数据路径被用于说明如何将来自不同ID的两个不同接口的数据链接,这是控制平面协议中的常见情况。然而,实际上可能不希望将rVNF框架用于数据路径,因为数据路径需要更高的性能。
如果在事务期间以前不存在的新键被创建,则所有权可能不会立即被注册,而是仅在事务被提交时被注册。这是为了减少在事务期间当许多新键被创建时的开销。这些键可能将是唯一的,并且将不会与其他事务冲突。如果它们这样做,竞争事务中的一个竞争事务(随机地被选择)可能会被回滚。
接下来将讨论键所有权的更改。即使在LB引导业务的情况下,偶尔也将发生键所有权应当被更改的情况。一个示例是节点故障,另一例子是向内/外扩展(scale in/out)。重要的是要注意LB和rVNF KVS不必显式地被同步。如果LB向“错误”的应用VNF节点(不是所有者的节点)发送分组,则该节点将在处理它之前请求所有权。如果路由更改发生一次,这将相当于最优的数据重新分配。如果路由多次切换,则系统将仍然可以正确地工作,但会因额外的切换而承受性能损失。
图14中图示了所有权更改的简单示例。两个VM被示出,VM1 1404a和VM2 1404b。这些VM 1404a-1404b是物理VNF实例的示例。在所描绘的示例中,VM2 1404b想要锁定与VM11404a相同的键。由于VM1 1404a是所有者,因此VM2 1404b无法开始事务。因此,VM2 1404b首先请求所有权转移,并且一旦所有权转移被授予就继续进行事务。在这种情况下,所有权转移被延迟,直到VM1 1404a上正在进行的事务完成。
现在将描述所有权转移的两个进一步优化。首先,每个所有权转移请求还包含与发起所有权更改的网络请求有关的元数据。当所有者从另一节点接收所有权请求时(例如,通过非事务性KVS,如下所述),它将首先检查是否存在包含相同元数据子集的本地被列队的请求。如果存在,则所有者将在让渡所有权之前首先处理所有相关请求。这将减少跨可能处理同一键的节点的所有权的弹回。
其次,每次在非事务性KVS处对键执行所有权更改请求时,键可以与元数据对象一起被记录日志。所有元数据对象的列表可以在键值存储库中被维护,并且在每次请求所有权更改时,键可以被添加到所有相关元数据对象。通过添加或移除键,列表可以在任何进一步的所有权更改时被更新。这允许一旦第一键所有权被请求,所有键的所有权就被主动更改。
为了说明这一点,再次参考图13中所示的示例。想象在示例的结束处,系统会向内/外扩展,并且针对“rt:300”的目的地更改。这意味着LB更改了针对“rt:300”键和所有依赖键(在本示例中为“rt:200”)的路由决策。假设它们现在指向SPGW应用实例2。当应用实例2接收请求时,它将开始处理该请求,并且可能像先前的代码一样需要访问NFV_APP_SET(a,vala)。在访问之前,应用实例2会从LB请求键a的所有权,LB转而从实例1请求键a的所有权。所有权请求还将包含相关元数据(在本示例中为“rt:200”和“rt:300”),并且实例1现在不仅会根据请求更改键a的所有权,还会更改被链接到元数据的所有其他键(在这种情况下是键b)的所有权。
主动更改所有权不会影响正确性,因为错误的更改只会影响性能。但是主动更改所有权可以基本上减少时延。如果事务执行10次读取并且每次读取都需要所有权更改,则这可能需要长达500us(假设单个所有权更改花费50us)。但是,如果它们全部被一起成批处理,则时延会减少10倍。当用户上下文从一个物理位置移动到另一物理位置(例如,从边缘位置到数据中心)时,这特别有用,由于往返延迟时间长,每个所有权更改都非常昂贵。
键所有权可以由rVNF套接字上的非事务性KVS管理。在一些实施例中,应用VNF可以连同针对所有权的请求一起供应分组元数据。
在某些情况下,两个事务可能需要不同顺序的不同所有权,如图15所示。在这种情况下,两个节点以不同的顺序请求k1和k2的所有权,这种场景通常会引起死锁。为了解决这个问题,两个事务中的一个事务可以被中止,并且另一个事务可以被继续。一般而言,所有潜在死锁的情况都可以通过使参与事务中的一个或所有参与事务失败而被解决。然而,这些情况不太可能经常发生,因为大多数事务以相同的顺序打开很少的锁(否则,底层多线程代码可能会产生死锁)。
现在将讨论故障检测和恢复。与所有权管理类似,rVNF KVS依赖于rVNF LB及其非事务性KVS来管理其组成员资格和恢复协议。所有rVNF KVS实例定期向rVNF LB报告其健康状况,并且rVNF维护一致的组成员资格。如果应用虚拟机实例1在一段时间内无法联系到应用VNF实例2,为了执行备份,它将向rVNF LB报告故障。然后rVNF LB必须决定从组成员资格中删除两个实例中的哪一个实例。
一旦rVNF系统从组成员资格中移除应用实例时,它就会通知所有其他rVNF KVS实例。rVNF系统也会停止转发消息并且将忽略来自该实例的进一步所有权请求。这将有效地隔离可疑实例并且立即阻止其进一步活动。
在一些实施例中,所有实例备份所有键。备选地,可以选择哪些键备份在哪里。在这种情况下,会需要针对备份在从组中被删除的节点上的键选取附加的备份节点,以针对每个键维护相同数目的复本。
一旦节点出现故障,其作为主节点的键的值应被恢复。所有最近的备份通常都是未决的。如果键的所有备份复本都具有相同的事务ID,则该值可以被用作是有效的。如果不是,则最高的事务ID可以被使用。
图16图示了用于提供用于云计算系统的网络功能虚拟化系统的方法1600的示例。将结合图1中所示的rVNF系统100来讨论方法1600。
步骤1602表示提供包括多个物理VNF实例104a-104c的虚拟化网络功能(VNF)应用实例102。VNF应用实例102可以实现与蜂窝控制平面相关联的一个或多个功能。物理VNF实例104a-104c可以是例如虚拟机(VM)、容器、或者虚拟机和容器组合。
步骤1604表示提供客户端108与VNF应用实例102之间的接口。在图1所示的rVNF系统100中,该接口由负载均衡器106提供。
步骤1606表示促进与特定用户上下文有关的分组向同一物理VNF实例的传递。在图1所示的rVNF系统100中,该功能性由LB接口110提供。如上所述,到达LB接口110的分组可以包括标识特定用户上下文的元数据。LB接口110可以利用存储装置(例如,LB存储装置310,LB存储装置310可以被实现为非事务性KVS)来存储被包括在所接收的分组中的元数据与特定物理VNF实例之间的关联。
步骤1608表示实现跨不同物理VNF实例104a-104c共享状态和功能性的虚拟化传输协议。在图1所示的rVNF系统100中,该功能性由套接字接口112提供。
步骤1610表示存储与VNF应用实例102相关联的会话数据。在图1所示的rVNF系统100中,该功能性由应用存储装置114提供。如上所讨论,在一些实施例中,应用存储装置114可以被实现为事务性KVS。
根据本公开的rVNF系统,包括rVNF套接字和rVNF应用存储装置(例如,rVNF KVS),可以被提供为用于云计算系统的平台服务,具有允许多个VNF供应商与不同类型的控制平面VNF(例如,AMF、SMF、MME、SGW-C、PGW-C、HSS、PCRF、P-CSCF、S-CSCF、I-CSCF)连接的标准接口。通过将VNF与云计算平台元件进行接口,符合云计算系统的VNF实例可以被创建。这可以提供许多益处。
例如,连接到符合云计算系统的VNF的标准VNF,将无法同时感知一个或有限数量的组件的故障。任何故障都会潜在地仅表现其自身为网络上一些分组丢失的暂时“网络”故障(这些分组将自然地被当前的传输和应用层协议重传)。
作为另一示例,符合云计算系统的VNF将能够在没有外部被连接的标准VNF观察到行为的任何更改的情况下,通过添加和移除数个物理VNF实例(例如,VM、容器)来扩展和缩减。但是,通过提供快速的KVS和套接字层,单个VNF实例的性能将与比得上其独立的对应体。
另一潜在的益处是,通过抽象网络和存储器接口,网络编排器将能够在云计算平台的不同部分上无缝地分配和重新分配不同的物理VNF实例。
图17图示了可以被包括在计算机系统1700内的某些组件。一个或多个计算机系统1700可以被用于实现本文所描述的各种设备、组件和系统。
计算机系统1700包括处理器1701。处理器1701可以是通用单片或多片微处理器(例如,高级RISC(精简指令集计算机)机器(ARM))、专用微处理器(例如,数字信号处理器(DSP))、微控制器、可编程门阵列等。处理器1701可以被称为中央处理单元(CPU)。尽管在图17的计算机系统1700中仅示出了单个处理器1701,但是在备选配置中,处理器(例如,ARM和DSP)的组合可以被使用。
计算机系统1700还包括与处理器1701电子通信的存储器1703。存储器1703可以是能够存储电子信息的任何电子组件。例如,存储器1703可以被体现为随机存取存储器(RAM)、只读存储器(ROM)、磁盘存储介质、光学存储介质、RAM中的闪存设备、处理器包括的板载存储器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)存储器、寄存器等,包括它们的组合。
指令1705和数据1707可以被存储在存储器1703中。指令1705可以由处理器1701执行以实现本文所公开的步骤、操作、动作或其他功能性中的一些或全部。执行指令1705可以涉及对被存储在存储器1703中的数据1707的使用。本文所描述的模块和组件的各种示例中的任何示例可以部分地或全部地被实现为被存储在存储器1703中、并且由处理器1701执行的指令1705。本文所描述的数据的各种示例中的任何示例可以在被存储在存储器1703中、并且在处理器1701执行指令1705期间被使用的数据1707之中。
计算机系统1700还可以包括用于与其他电子设备通信的一个或多个通信接口1709。(多个)通信接口1709可以基于有线通信技术、无线通信技术、或者有线通信技术和无线通信技术两者。通信接口1709的一些示例包括通用串行总线(USB)、以太网适配器、根据电气和电子工程师协会(IEEE)1702.11无线通信协议操作的无线适配器、
Figure BDA0003213312740000231
无线通信适配器和红外线(IR)通信端口。
计算机系统1700还可包括一个或多个输入设备1711和一个或多个输出设备1713。输入设备1711的一些示例包括键盘、鼠标、麦克风、遥控设备、按钮、操纵杆、轨迹球、触摸板和光笔。输出设备1713的一些示例包括扬声器和打印机。通常被包括在计算机系统1700中的一种特定类型的输出设备是显示器设备1715。与本文公开的实施例一起使用的显示器设备1715可以利用任何合适的图像投影技术,诸如液晶显示器(LCD)、发光二极管(LED)、气体等离子体、电致发光等。还可以提供显示器控制器1717,用于将被存储在存储器1703中的数据1707转换成在显示器设备1715上示出的文本、图形和/或移动的图像(视情况而定)。
计算机系统1700的各个组件可以通过一个或多个总线被耦合在一起,该一个或多个总线可以包括电源总线、控制信号总线、状态信号总线、数据总线等。为了清楚起见,各种总线在图17中被图示为总线系统1719。
除非具体描述为以特定方式实现,否则本文所描述的技术可以以硬件、软件、固件或其任何组合来实现。被描述为模块、组件等的任何特征也可以在集成逻辑设备中一起被实现或者被单独实现为分立但可互操作的逻辑设备。如果以软件实现,则这些技术可以至少部分地通过其上存储有计算机可执行指令的非瞬态计算机可读介质来实现,当由至少一个处理器执行时,该计算机可执行指令执行本文所公开的步骤、操作、动作或其他功能性中的一些或者全部。指令可以被组织成例程、程序、对象、组件、数据结构等,其可以执行特定任务和/或实现特定数据类型,并且可以在各种实施例中根据需要被组合或被分布。
在不脱离权利要求的范围的情况下,本文描述的方法的步骤、操作和/或动作可以彼此互换。换言之,除非所描述的方法的正常运行需要步骤、操作和/或动作的特定顺序,否则可以修改特定步骤、操作和/或动作的顺序和/或使用而不脱离权利要求的范围。
术语“确定”(及其语法变体)包含多种动作,因此,“确定”可以包括计算(calculating)、计算(computing)、处理、推导、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择(selecting)、选择(choosing)、建立等。
术语“包括(comprising)”、“包括(including)”和“具有(having)”旨在是包括性的,并且意味着除了所列元素之外可能还有其他元素。此外,应当理解,对本公开的“一个实施例(one embodiment)”或“实施例(an embodiment)”的引用并不旨在被解释为排除也结合了所述特征的附加实施例的存在。例如,在兼容的情况下,关于本文实施例所描述的任何元素或特征可以与本文所描述的任何其他实施例的任何元素或特征组合。
本公开可以在不脱离其精神或特性的情况下以其他具体形式体现。所描述的实施例被认为是说明性的而非限制性的。因此,本公开的范围由所附权利要求而不是由前述说明指示。在权利要求的等效含义和范围内的变化应包含在其范围内。

Claims (15)

1.一种用于云计算系统的可靠网络功能虚拟化(rVNF)系统,所述系统包括:
虚拟化网络功能(VNF)应用实例,所述虚拟化网络功能应用实例包括多个物理VNF实例;
负载均衡器,所述负载均衡器提供客户端与所述VNF应用实例之间的接口;
负载均衡器接口,所述负载均衡器接口促进与特定用户上下文有关的分组向同一物理VNF实例的传递;
通信接口,所述通信接口促进所述客户端和所述VNF应用实例之间的通信;以及
应用存储装置,所述应用存储装置存储与所述VNF应用实例相关联的会话数据。
2.根据权利要求1所述的rVNF系统,其中所述负载均衡器和所述应用存储装置在所述多个物理VNF实例中的每个物理VNF实例上被复制。
3.根据权利要求1所述的rVNF系统,其中响应于接收传入分组,所述负载均衡器接口:
解析所述传入分组并且从所述传入分组提取元数据;
在负载均衡器存储装置中,针对所述元数据进行搜索并且标识与所述元数据相关联的物理VNF实例;以及
向经标识的所述物理VNF实例转发所述传入分组。
4.根据权利要求1所述的rVNF系统,其中响应于接收所述传入分组,所述负载均衡器接口:
解析所述传入分组并且从所述传入分组提取元数据;
在负载均衡器存储装置中,针对所述元数据或所述元数据的子集进行搜索不成功;
基于与所述多个物理VNF实例相关联的负载信息,标识应接收所述传入分组的物理VNF实例;
向经标识的所述物理VNF实例转发所述传入分组;以及
将所述元数据与所述负载均衡器存储装置中的经标识的所述物理VNF实例相关联。
5.根据权利要求1所述的rVNF系统,其中:
所述负载均衡器接口包括负载均衡器存储装置;并且
所述物理VNF实例向所述负载均衡器存储装置中插入路由条目。
6.根据权利要求1所述的rVNF系统,其中所述应用存储装置促进事务处理、所有权管理以及故障检测和恢复。
7.根据权利要求1所述的rVNF系统,其中:
所述应用存储装置包括键值存储库,所述键值存储库包括多个键值对;并且
所述键值存储库中的不同值具有不同的大小。
8.根据权利要求7所述的rVNF系统,其中:
所述键值存储库中的键包括存储器地址;
与特定键对应的值被存储在与所述键表示的存储器地址对应的存储器的部分中。
9.根据权利要求1所述的rVNF系统,其中:
所述负载均衡器接口包括非事务性键值存储库;并且
所述应用存储装置包括事务性键值存储库。
10.根据权利要求1所述的rVNF系统,其中:
所述应用存储装置包括事务性键值存储库(KVS);并且
所述事务性KVS从锁定应用编程接口(API)调用和提交状态来推断事务。
11.根据权利要求1所述的rVNF系统,其中:
所述应用存储装置包括键值存储库;
在任何给定时间,每个键只有一个物理VNF实例作为所有者;
只有键的所述所有者被允许访问所述键和与所述键对应的值;并且
当所述所有者对键值对执行写操作时,所述写操作被复制到所述键值存储库的其他实例作为备份。
12.根据权利要求1所述的rVNF系统,其中:
所述应用存储装置包括事务性键值存储库;
在事务的开始处,被访问的键值对的本地副本列表被创建;并且
直到事务被提交为止,对被访问的键值对的修改在所述本地副本列表中被做出。
13.根据权利要求1所述的rVNF系统,其中响应于检测到物理VNF实例不再是所述网络功能虚拟化系统的一部分,指向所述物理VNF实例的所有键的所有权被重新分配给其他物理VNF实例。
14.根据权利要求13所述的rVNF系统,其中所有键的所述所有权的所述重新分配至少部分地基于与所述多个物理VNF实例有关的负载信息。
15.一种用于提供用于云计算系统的可靠虚拟化网络功能(rVNF)系统的方法,包括:
提供包括多个物理虚拟化网络功能(VNF)实例的VNF应用实例;
提供客户端与所述VNF应用实例之间的接口;
促进与特定用户上下文有关的分组向同一物理VNF实例的传递;
实现虚拟化传输协议,所述虚拟化传输协议跨不同的物理VNF实例共享状态和功能性;以及
存储与所述VNF应用实例相关联的会话数据。
CN202080014730.0A 2019-02-21 2020-01-28 用于云计算系统的可靠虚拟化网络功能系统 Pending CN113454949A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/282,183 US11080118B2 (en) 2019-02-21 2019-02-21 Reliable virtualized network function system for a cloud computing system
US16/282,183 2019-02-21
PCT/US2020/015281 WO2020171917A1 (en) 2019-02-21 2020-01-28 Reliable virtualized network function system for a cloud computing system

Publications (1)

Publication Number Publication Date
CN113454949A true CN113454949A (zh) 2021-09-28

Family

ID=69724135

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080014730.0A Pending CN113454949A (zh) 2019-02-21 2020-01-28 用于云计算系统的可靠虚拟化网络功能系统

Country Status (4)

Country Link
US (3) US11080118B2 (zh)
EP (1) EP3912309B1 (zh)
CN (1) CN113454949A (zh)
WO (1) WO2020171917A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102371810B1 (ko) 2017-10-20 2022-03-10 삼성전자주식회사 다중 무선 접속 기술(Multi-Radio Access Technology)을 지원하는 무선 접속 시스템에서 단말이 데이터를 송수신하기 위한 방법 및 장치.
US20220217225A1 (en) * 2021-01-06 2022-07-07 Parallel Wireless, Inc. Handling of SCTP Packets with T-bit Set at SCTP Load Balancer

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106797323A (zh) * 2014-09-25 2017-05-31 英特尔Ip公司 网络功能虚拟化
CN107566440A (zh) * 2016-06-30 2018-01-09 丛林网络公司 软件定义的网络环境中服务的自动发现和自动扩缩
CN108449214A (zh) * 2018-03-21 2018-08-24 大连理工大学 一种基于Click的虚拟网元在线编排方法
CN109218383A (zh) * 2017-07-01 2019-01-15 英特尔公司 虚拟网络功能负载平衡器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8873398B2 (en) 2011-05-23 2014-10-28 Telefonaktiebolaget L M Ericsson (Publ) Implementing EPC in a cloud computer with openflow data plane
US20150074070A1 (en) * 2013-09-09 2015-03-12 Yahoo! Inc. System and method for reconciling transactional and non-transactional operations in key-value stores
US20150124622A1 (en) 2013-11-01 2015-05-07 Movik Networks, Inc. Multi-Interface, Multi-Layer State-full Load Balancer For RAN-Analytics Deployments In Multi-Chassis, Cloud And Virtual Server Environments
US9356866B1 (en) * 2014-01-10 2016-05-31 Juniper Networks, Inc. Receive packet steering for virtual networks
US10148575B2 (en) * 2014-12-22 2018-12-04 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive load balancing in packet processing
US10846279B2 (en) * 2015-01-29 2020-11-24 Hewlett Packard Enterprise Development Lp Transactional key-value store
US10812393B2 (en) * 2015-12-28 2020-10-20 Hewlett Packard Enterprise Development Lp Packet distribution based on an identified service function
IL248285B (en) * 2016-10-10 2018-01-31 Adva Optical Networking Israel Ltd A method and system for the secure operation of a virtual network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106797323A (zh) * 2014-09-25 2017-05-31 英特尔Ip公司 网络功能虚拟化
CN107566440A (zh) * 2016-06-30 2018-01-09 丛林网络公司 软件定义的网络环境中服务的自动发现和自动扩缩
CN109218383A (zh) * 2017-07-01 2019-01-15 英特尔公司 虚拟网络功能负载平衡器
CN108449214A (zh) * 2018-03-21 2018-08-24 大连理工大学 一种基于Click的虚拟网元在线编排方法

Also Published As

Publication number Publication date
US20200272525A1 (en) 2020-08-27
EP3912309A1 (en) 2021-11-24
US20210357283A1 (en) 2021-11-18
US11080118B2 (en) 2021-08-03
EP3912309B1 (en) 2024-06-05
WO2020171917A1 (en) 2020-08-27
US11687390B2 (en) 2023-06-27
US20230350741A1 (en) 2023-11-02

Similar Documents

Publication Publication Date Title
US20230350741A1 (en) Reliable virtualized network function system for a cloud computing system
US10831574B2 (en) Remote procedure call method for network device and network device
US10156986B2 (en) Gang migration of virtual machines using cluster-wide deduplication
US10255147B2 (en) Fault tolerance for containers in a virtualized computing environment
US20110231578A1 (en) Techniques for synchronizing application object instances
KR102340296B1 (ko) 트랜잭셔널 환경에서 리소스 관리자(rm) 인스턴스 인지에 기초하여 공통 트랜잭션 식별자(xid) 최적화 및 트랜잭션 친화성을 지원하기 위한 시스템 및 방법
US9424325B2 (en) Recording medium, distribution controlling method, and information processing device
US8458284B2 (en) Systems and methods for efficient live application migration within bandwidth constrained networks
EP3079313A1 (en) Data splitting method and splitter
US7657787B2 (en) Method of restoring communication state of process
US20130191831A1 (en) Transparent high availability for stateful services
JPWO2016121973A1 (ja) ノードシステム、サーバ装置、スケールリング制御方法及びプログラム
US10764364B2 (en) Live migration of partitions
Kończak et al. JPaxos: State machine replication based on the Paxos protocol
US20160112514A1 (en) Methods for migrating data between heterogeneous storage platforms and devices thereof
Naik et al. libVNF: Building virtual network functions made easy
US20220210086A1 (en) Managing network state for high flow availability within distributed network platform
US20220200952A1 (en) Network address translation between networks
Katsarakis et al. rVNF: Reliable, scalable and performant cellular VNFs in the cloud
US20120266211A1 (en) Transparent database connection reconnect
JP5945543B2 (ja) ミドルウェアマシン環境を含むシステム
US7613825B2 (en) Hierarchical packet processing system and method, relay device and server
Guay et al. Early experiences with live migration of SR-IOV enabled InfiniBand
Vasconcelos et al. Dynamic and coordinated software reconfiguration in distributed data stream systems
US20240036996A1 (en) Methods and systems to improve input/output (i/o) resumption time by batching multiple non-conflicting operations during a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system

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