CN116266141A - 用于使用负载平衡指派和检查反重放序列号的方法和装置 - Google Patents

用于使用负载平衡指派和检查反重放序列号的方法和装置 Download PDF

Info

Publication number
CN116266141A
CN116266141A CN202211503368.0A CN202211503368A CN116266141A CN 116266141 A CN116266141 A CN 116266141A CN 202211503368 A CN202211503368 A CN 202211503368A CN 116266141 A CN116266141 A CN 116266141A
Authority
CN
China
Prior art keywords
packet
packets
sequence number
core
circuitry
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
CN202211503368.0A
Other languages
English (en)
Inventor
N·麦克唐内尔
P·帕塔克
R·沙阿
D·多亨帝
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN116266141A publication Critical patent/CN116266141A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/18Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up

Abstract

公开了用于使用负载平衡指派和检查反重放序列号的方法和装置。用于指派和检查反重放序列号的方法和装置。在一个实施例中,方法包括:通过电路系统为通信量流的分组指派序列号,其中第一序列号基于确定第一分组在映射到第一安全信道的第一通信量流内而被指派到第一分组,并且其中第一序列号在分配给第一安全信道并由电路系统保持的序列号集合中。方法继续在多个处理器核心之间分配要处理的通信量流的分组,以及通过多个处理器核心处理通信量流的分组。

Description

用于使用负载平衡指派和检查反重放序列号的方法和装置
技术领域
本发明的实施例涉及计算系统的领域;并且更具体地,实施例涉及用于使用负载平衡指派和检查反重放序列号的装置和方法。
背景技术
分组处理应用中的运行到完成(Run-To-Completion,RTC)模型将一个或多个网络队列指派到多核心处理器的核心,并允许处理运行到最后。传入流通过散列静态分布到核心。虽然这适用于正常大小的流,但它无法处置高吞吐量流。当单个高带宽流超过核心的处理容量时尤其如此。该模型不能仅仅通过添加更多核心来扩展吞吐量。需要切换到管线模型才能处置高带宽流。为了实现这一目标,处理分解为多个阶段。然而,阶段争用分组缓存行,并且阶段间通信变得至关重要。阶段之间同步的需求限制了使用软件解决方案来解决这个问题。
负载平衡系统可被用来解决多阶段管线的关键需求。负载平衡系统可以在没有任何锁的情况下对传入流进行负载平衡,并可选地恢复原始顺序。例如,网际协议安全性(Internet Protocol Security,IPSec)协议中的通信量流可以在负载平衡系统中处理,这提高了处理通信量流的可扩展性,并且此类可扩展性可能是线性的。虽然管线提供了独立运行各个阶段的灵活性,但它容易受到最慢阶段的性能限制,该阶段往往是需要对通信量流进行原子性处理的阶段。处理IPSec分组包括序列号(sequence number,SN)生成和反重放(anti-replay,AR)检查方案,这是安全性协议的常见部分,可防止第三方将捕捉的分组重放到通信量流中。在IPSec中,在出站处理阶段期间为给定IPSec隧道的每个传出分组生成唯一的序列号,并且在入站处理阶段期间,使用可接受数字的窗口验证序列号。重复或窗口之外的分组在入站处理阶段被丢弃。随着已接受分组的成功解密,此窗口不断移动。
负载平衡系统可以隔离序列号生成阶段并原子性地运行它,以便给定安全性关联(security association,SA)的每个分组获得唯一的序列号。因此,每个SA的序列号生成阶段的原子性要求对出站方向造成了限制。在入站方向上,由于这些过程需要以每个SA的原子性方式完成,因此负载平衡系统还可隔离序列号检查阶段和窗口更新阶段。这在入站方向上对两个不同的原子性阶段提出了要求,并极大地限制了处理IPSec通信量流的性能和可扩展性。此外,管线的每个阶段增加了一些开销,因此原子性阶段在出站和入站方向上稀释负载平衡系统的总体值。
附图说明
通过参考用来示出本发明的实施例的以下描述和附图,可最好地理解本发明。在附图中:
图1是示例多核心计算环境100的图示。
图2是示例多核心计算系统200的示例实现方式的图示,该示例多核心计算系统200包括包含示例动态负载平衡器(dynamic load balancer,DLB)202的示例处理器201。
图3是由包括示例DLB 304的示例多核心计算系统302执行以处理示例通信量流306的示例工作流300的图示。
图4图示出在多核心计算系统中使用原子性阶段的出站负载平衡操作。
图5图示出根据一些实施例的利用负载平衡器在多核心计算系统中执行序列号指派的出站负载平衡操作。
图6图示出在多核心计算系统中使用原子性阶段的入站负载平衡操作。
图7图示出根据一些实施例的利用负载平衡器在多核心计算系统中执行序列反重放窗口检查和更新的入站负载平衡操作。
图8图示出根据一些实施例的反重放检查操作的伪代码。
图9图示出根据一些实施例的使用负载平衡指派和检查反重放序列号的操作流。
图10是根据一些实施例的系统1000的框图。
图11是根据一些实施例的更具体的示例性系统1100的框图。
图12是根据一些实施例的可包括核心1202中的一个或多个核心的示例片上系统(system on a chip,SoC)。
具体实施方式
在以下描述中,陈述了多个具体细节。然而,应当理解,可以在没有这些具体细节的情况下实施本发明的实施例。在其他实例中,未详细示出公知的电路、结构和技术,以免使对本描述的理解模糊。
带括号的文本和具有虚线边界(诸如,长划线、短划线、点划线和点线)的框可用于图示任选操作,这些任选操作将附加特征添加至本发明的实施例。然而,此类标注法不应当认为意指这些是仅有的选项或仅有的任选操作,和/或意指在本发明的一些实施例中具有实线边界的框不是任选的。
说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表明所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可能不一定包括该特定的特征、结构或特性。而且,此类短语不一定是指同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。
以下说明书和所附权利要求书可使用术语“耦合的”和“连接的”及其衍生词。这些术语不旨在作为彼此的同义词。“耦合的”用于指示彼此可以或可以不直接物理接触或电气接触的两个或更多个元件彼此协作或相互作用。“连接的”用于指示彼此耦合的两个或更多个元件之间的通信的建立。如本文中所使用,“集合”是指包括一个项的任何正整数个项。
多核心计算环境和负载平衡
多核心计算系统在各种应用和环境中实现。负载平衡技术已用于多核心计算系统中,并被提供急需的效率改进。以多接入边缘计算(Multi-access edge computing,MEC)作为示例,负载平衡的实现方式可被图示。请注意,虽然MEC被图示为非限制性示例,但本文讨论的负载平衡原则可以在其他计算环境中实现。
MEC是一种网络体系结构概念,其可在网络(诸如,蜂窝网络)的边缘处实现云计算能力和基础设施技术服务环境。使用MEC,数据中心云服务和应用可以在更靠近终端用户或计算设备的位置进行处理,以改善网络操作。
虽然MEC是边缘计算的演进的重要部分,但云和通信服务提供商正在解决变换云和通信服务提供商的网络的需求,为第五代蜂窝网络技术(即,5G)做准备。为了满足支持5G的下一代网络的需求,云服务提供商可以用更敏捷和灵活的方法取代固定功能专有硬件,这些方法依赖于最大限度地利用多核心边缘和数据中心服务器的能力。下一代服务器边缘和数据中心联网可以包括在整个数据中心以及一直到边缘(并且包括边缘)虚拟化并部署联网功能的能力。高分组吞吐量增加了对更好的端到端等待时间、服务质量(Quality ofService,QoS)和通信量管理的需求。此类需求进而推动了跨网络的数据平面管线的各个阶段之间高效数据移动和数据共享的需求。注意,虽然5G被用作新蜂窝网络技术的示例,但本发明的实施例可以在其他新的或现有的蜂窝网络技术(例如,4G/LTE和6G)中实现。
本文所公开的队列管理可以通过减少CPU核心在CPU的核心之间对指向数据结构、数据分组(也称为分组,并且除非另有说明,否则这两个术语可以互换使用)等的指针进行编组所花费的时间来提供网络中的效率。例如,本文公开的硬件队列管理可以通过放弃将数据结构和指针从一个CPU核心传递到另一个CPU核心的开销来提高与跨CPU核心处置网络数据相关的系统性能(例如,网络系统性能、5G系统性能等)。
本文公开的队列管理可以通过硬件队列管理来实现,硬件队列管理在硬件中实行队列管理。在一些公开的示例中,硬件队列管理可以由示例硬件队列管理器(hardwarequeue manager,HQM)或实现为动态负载平衡器(Dynamic Load Balancer,DLB)的HQM来实现。例如,当HQM实现为DLB时,HQM可以实现、实行和/或以其他方式执行动态负载平衡功能、计算或处理任务等。如本文所使用的,术语“硬件队列管理器”、“硬件排队管理器”和“HQM”是等效的并且可互换地使用。如本文所使用的,术语“动态负载平衡器”和“DLB”是等效的且可互换地使用,并且指经由HQM实现的负载平衡器(load balancer,LB)。虽然“DLB”被用作在计算系统中执行负载平衡操作的电路系统/电路的示例,但其他电路系统/电路在实现本文公开的一些实施例中的负载平衡操作时可能带有另一个名称。
在一些公开的示例中,HQM可以启用管线化分组处理,并支持每秒数亿次队列管理和负载平衡操作,以供运行到完成(RTC)和管线化网络处理方法。本文公开的硬件队列管理可以替换软件队列(例如,与软件队列管理相关联的队列),尤其是与多个生产者CPU核心和/或多个消费者CPU核心相关联的软件队列。如本文所使用的,术语“生产者核心”和“生产者CPU核心”可互换地使用,并指创建和/或以其他方式生成用于入列到HQM的元素(例如,队列元素)的核心。如本文所使用的,术语“消费者核心”和“消费者CPU核心”可互换地使用,并指作用于从HQM出列的结果的核心。
与软件队列管理相比,使用本文公开的示例HQM的应用可以经由有效的工作负荷分布从增强的总体系统性能中获益,其中软件排队的最典型用途之一是负载平衡。典型的排队方案可以使用CPU核心来分发工作,这使CPU核心承担排队和重新排序任务,而不是使用CPU核心通过基于硬件的队列管理内置负载平衡功能进行高附加值工作者核心处理,如本文所公开的。本文公开的示例HQM可以移除直接的核心到核心交互,并实行硬件中的负载平衡。
尺寸标注(dimensioning)是指在计算网络或系统体系结构的整个切片上分配、分发和/或以其他方式调度计算应用的过程。在一些实例中,可以通过部署生产者-消费者模型在计算网络中实现尺寸标注。生产者(例如,数据生产者)可以指将某种类型的消息放置到队列(例如,缓冲区、计算队列、计算任务队列等)上的代理(例如,硬件代理、软件代理等)。消费者(例如,数据消费者)可以指相同的代理或不同的代理,该代理可以从队列中移除消息以供处理。在一些实例中,该消息可指代表一个或多个指针(例如,一个或多个标识符)的机器可读数据,该指针与存储器(例如,非易失性存储器、易失性存储器等)中的数据或要执行的计算任务的其他指示相对应。当生产者尝试将消息添加到满队列或消费者尝试从空队列中移除消息时,可能出现问题。
用于在基于MEC的应用和数据中心中部署生产者-消费者模型的现有技术可以包括管理队列的软件,该队列包括由处理器或其他类型的处理器电路系统的一个或多个核心(也称为计算核心、硬件核心、处理核心、处理器核心、CPU核心等)执行的数据。此类现有技术可以随机或者不考虑核心的即时利用将数据分配(例如,静态分配)到要执行的核心。例如,现有技术可以将要处理的传入数据分配给正在经历繁重计算工作负荷的核心,从而由于核心的处理能力或带宽不可用而在处理传入数据时生成瓶颈。在此类示例中,传入数据可以与巨量流或拥挤的通信量流(fat traffic flow)相对应。在一些此类示例中,可以将核心指派给网络接口控制器(network interface controller,NIC),以从NIC接收巨量流的数据分组。NIC可以经由接收侧缩放(receive side scaling,RSS)随机地喷射分组,从而减少与核心和/或更一般地包括核心的处理器相关联的带宽。如本文所使用的,巨量流或拥挤流是单个会话、相对长时间运行的网络连接,其消耗核心和/或更一般地包括核心的处理器的大量或不成比例的量的带宽。巨量流或拥挤流可能非常大(总字节数)或通信量体量很大,并且时间或持续时间非常长。在一些实施例中,通信量流(也称为数据流或流,并且除非另有说明,否则这些术语可以互换使用)被定义为头部与给定的比特模式匹配的分组的集合。流可以通过嵌入到流的一个或多个分组的属性集合来标识。示例性属性集合包括5-元组(源和目的地IP地址、协议类型、源和目的地TCP/UDP端口)。
因此,此类现有技术未考虑计算体系结构(例如,多核心计算体系结构)中计算资源的资源可用性、成本结构等,并且因此可能受到锁等待时间、存储器等待时间、缓存行为、轮询多个队列等的影响,这会增加处理传入数据所需的时间。锁等待时间可以响应于自旋锁或自旋锁条件而发生。自旋锁是指线程(例如,计算线程、核心线程、硬件线程等)尝试获取但在循环中等待(即,自旋)同时重复检查锁是否可用的锁。由于线程保持活动状态,但没有执行有用的任务,因此使用此类锁类似于忙等待。一旦被获取,自旋锁将通常一直保持到它们被显式释放为止,尽管在一些实现方式中,如果等待的线程(例如,保持锁的线程)阻塞或进入睡眠模式,自旋锁可能被自动释放。
自旋锁如果保持持续时间较长,则变得浪费,因为它们可能阻止其他线程运行并需要重新调度。线程保持锁的时间越长,线程在保持锁时将被操作系统(operatingsystem,OS)调度程序中断的风险就越大。如果发生这种情况,其他线程将留在保持模式(即,自旋)(例如,重复尝试获取锁),而保持锁的线程不朝着释放锁的方向行进。结果是无限期延期,直到保持锁的线程可以完成并释放锁为止。在单处理器系统上尤其如此,在单处理器系统中,具有相同优先级的每个等待线程很可能浪费其配额(例如,分配线程可以运行的时间)自旋,直到保持锁的线程最终完成为止。
本文公开的示例包括HQM,用于改进计算机网络体系结构(诸如多核心计算机网络体系结构)中的负载平衡和工作负荷分发。本文公开的示例减少和/或以其他方式消除自旋锁害处。在一些公开的示例中,HQM能够在多个生产者(例如,生产者核心)与多个消费者(例如,消费者核心)之间对数据(例如,蜂窝或其他无线网络中的数据分组)进行管线化处理。生产者核心可以将计算任务的调度迁移到示例HQM,以将生产者核心的工作负荷分配给多个消费者核心的可用消费者核心。通过将调度迁移到示例HQM,生产者核心可变得可用于执行高附加值的核心处理任务。有利地,示例HQM可以移除直接的核到核交互,并在硬件中执行调度和相对应的负载平衡任务。
在一些公开的示例中,HQM实现负载平衡器(例如,DLB),以改进计算机网络体系结构中的负载平衡和工作负荷分发。在此类公开的示例中,DLB可以对用于促进巨量流的分发、传输和/或处理的消费者核心的数量进行升尺度(例如,动态升尺度),以优化和/或以其他方式提高与巨量流相关联的吞吐量、线速(line rate)、带宽等。例如,DLB可以基于调度类型(例如,原子性调度、有序的调度等)来将巨量流分发给一个或多个消费者核心,从一个或多个消费者核心接收经处理的巨量流,以及重新排序和/或聚合经处理的巨量流,以准备分发和/或传输到不同的硬件、不同的逻辑实体等。
注意,“原子性”调度也被称为原子性分发,并且它确保给定流的分组只能在给定时间在单个核心上突出。它将流动态分配(也称为固定)到核心,在需要时将流在核心之间迁移以负载平衡。这预留流顺序,并允许处理软件以免锁方式操作。“有序的”调度也被称为有序的分发,它提供了一种在分组可以在多个核心中同时处理时恢复原始流顺序的手段。软件中可能仍然需要同步机制。如果各个流的带宽接近或超过各个核心的能力,这种类型的处理非常有用。
图1是示例多核心计算环境100的图示。多核心计算环境100包括示例设备环境102、示例边缘网络104、示例核心网络106和示例云网络107。例如,设备环境102可以是5G设备环境,其促进使用诸如基于5G的无线网络(例如,5G蜂窝网络)之类的无线网络执行计算任务。
设备环境102包括示例设备(例如,计算设备或电子设备)108、110、112、114、116。设备108、110、112、114、116包括第一示例设备108、第二示例设备110、第三示例设备112、第四示例设备114和第五示例设备116。第一设备108是启用4G或5G互联网的智能手机(例如,启用4G、5G或下一代IP的智能手机)。或者,第一设备108可以是平板电脑、启用互联网的膝上型电脑等。第二设备110是交通工具(例如,内燃机交通工具、电动交通工具、混合动力电动交通工具等)。例如,第二设备110可以是包括电子控制单元或其他硬件的交通工具,在一些示例中,其可以是自动驾驶、自主驾驶或计算机辅助驾驶的交通工具。
第三设备112是空中交通工具。例如,第三设备112可以是包括在诸如无人机之类的无人空中交通工具(unmanned aerial vehicle,UAV)(例如,自主UAV、人类或用户控制的UAV等)中的处理器或其他类型的硬件。第四设备114是机器人。例如,第四设备114可以是协作机器人或在装配、起重、制造等任务类型中使用的其他类型的机械。
第五设备116是医疗相关联的设备。例如,第五设备116可以是存储和/或处理医疗保健记录的计算机服务器。在其他示例中,第五设备116可以是医疗设备,诸如输液泵、磁共振成像(magnetic resonance imaging,MRI)机器、外科机器人、生命体征监测设备等。在一些示例中,设备108、110、112、114、116中的一个或多个可以是不同类型的计算设备,诸如服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能电话、诸如iPadTM之类的平板)、个人数字助理(personal digital assistant,PDA)、互联网设备、DVD播放器、CD播放器、数字视频记录仪、蓝光播放器、游戏控制台、个人视频记录仪、机顶盒、耳机或其他可穿戴设备、或任何其他类型的计算设备。在一些示例中,可能存在比图1所示更少或更多的设备。
设备108、110、112、114、116,和/或更一般地设备环境102经由第一示例网络118与边缘网络104通信。第一网络118是蜂窝网络(例如,5G蜂窝网络)。例如,第一网络118可以通过天线、无线电塔等和/或其组合来实现和/或以其他方式促进。附加地或替代地,第一网络118中的一个或多个可以是以太网连接、数字订户线(digital subscriber line,DSL)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等和/或其组合。设备环境102中的设备可以通过边缘网络104建立安全通信信道(也称为隧道),以相互通信或与其他设备通信(例如,边缘网络104、核心网络106和/或云网络107中的设备),并且安全通信信道可以通过诸如网际协议安全性(IPSec)协议、传输层安全性(TransportLayer Security,TLS)、加密虚拟专用网络(encrypted virtual private network,EVPN)(例如,WireGuard)或任何其他安全通信协议之类的协议来实现。另请注意,蜂窝网络用于描述多核心计算环境100,本发明的实施例可以在其他无线网络(例如,WiFi、WiMax)、有线网络(例如,通用以太网网络)或有线和无线网络混合的安全性通信中实现。
在图1所图示的示例中,边缘网络104包括第一网络118、示例远程无线电单元(remote radio unit,RRU)120、示例分布式单元(distributed unit,DU)122和示例集中式单元(centralized unit,CU)124。在该示例中,DU 122和/或CU 124是多核心计算系统。例如,DU 122和CU 124中的一个或多个可以包括多个处理器,每个处理器包括多个核心(例如,处理器核心)。在此类示例中,DU 122和/或CU 124是诸如多核心边缘服务器之类的边缘服务器(例如,5G边缘服务器),这些边缘服务器可以实行通过边缘网络104将通信量流(例如,一个或多个分组的流)分发到不同目的地(例如,设备环境102、核心网络106等)。在一些示例中,可以使用比图1所示更少或更多的第一网络118、RRU 120、DU 122和/或CU 124。
在该示例中,RRU 120是无线电基站中的无线电收发器(例如,远程无线电收发器,也称为远程无线电头部(remote radio head,RRH))。例如,RRU 120是可以包括射频(radiofrequency,RF)电路系统、模数转换器/数模转换器和/或连接到运营商(例如,蜂窝运营商或提供商)的网络的上功率转换器/下功率转换器的硬件。在此类示例中,RRU 120可以将数字信号转换为RF,将RF信号放大到期望的功率水平,并且经由天线在空气中辐射放大后的RF信号。在一些示例中,RRU 120可以经由天线从空中接收期望的信号频带并放大接收到的信号。RRU 120被称为远程,因为RRU 120通常安装在与基站硬件物理距离较远的天线杆顶部或塔顶位置,基站硬件通常安装在室内机架安装的位置或装置中。
在图1的所图示示例中,RRU 120与DU 122中的相应一个耦合和/或以其他方式通信。在该示例中,DU 122包括实现实时层1(Layer 1,L1)调度功能(例如,物理层控制)和/或层2(Layer 2,L2)调度功能(例如,无线电链路控制(radio link control,RLC)、介质访问控制(medium access control,MAC)等)的硬件。在该示例中,CU 124包括实现层3调度功能(诸如分组数据聚合控制(packet data convergence control,PDCP)和/或无线电资源控制(radio resource control,RRC)功能)的硬件。在该示例中,CU 124中的第一CU 124是集中单元控制平面(centralized unit control plane,CU-CP),而CU 124中的第二CU 124是集中单元用户平面(centralized unit user plane,CU-UP)。
在该示例中,DU 122中的一个或多个和/或CU 124中的一个或多个中的至少一个实现虚拟化无线电接入网络(virtualized radio access network,vRAN)。例如,DU 122中的一个或多个和/或CU 124中的一个或多个可以基于网络功能虚拟化(Network FunctionsVirtualization,NFV)的原理来在供应商不可知的硬件(例如,商品服务器硬件)上执行、运行和/或以其他方式实现虚拟化基带功能。NFV是一种网络体系结构概念,它使用基础设施技术(infrastructure technology,IT)虚拟化的技术将整个类别的网络节点功能虚拟化为构建块,这些构建块可以连接或链接在一起,以创建通信服务。
在图1的图示示例中,第一网络118与RRU 120之间的(一个或多个)第一连接实现边缘网络104的前传(fronthaul)。DU 122与CU 124之间的(一个或多个)第二连接实现边缘网络104的中传(midhaul)。CU 124与核心网络106之间的(一个或多个)第三连接实现边缘网络104的回传(backhaul)。
在图1的图示示例中,核心网络106包括示例核心设备126。在该示例中,核心设备126是多核心计算系统。例如,核心设备126中的一个或多个可以包括多个处理器,每个处理器包括多个核心(例如,处理器核心)。例如,核心设备126中的一个或多个可以是服务器(例如,物理服务器、虚拟服务器等和/或其组合)。在此类示例中,核心设备126中的一个或多个可以用与DU 122、CU 124等相同的硬件实现。在一些示例中,核心设备126中的一个或多个可以是任何其他类型的计算设备。
核心网络106由不同的逻辑层实现,不同的逻辑层包括示例应用层128、示例虚拟化层130和示例硬件层132。在一些示例中,核心设备126是核心服务器。在一些示例中,应用层128或其(一个或多个)部分、虚拟化层130或其(一个或多个)部分、或硬件层132或其(一个或多个)部分实现核心服务器。例如,核心服务器可以由与核心设备126中的第一核心设备、核心设备126中的第二核心设备等和/或其组合相关联的应用层128、虚拟化层130和/或硬件层132来实现。在该示例中,应用层128可以结合电信网络(诸如图1的多核心计算环境100)的操作来实现业务支持系统(business support system,BSS)、操作支持系统(operations support system,OSS)、5G核心(5G core,5GC)系统、网际协议多媒体核心网络子系统(Internet Protocol multimedia core network subsystem,IMS)等。在该示例中,虚拟化层130可以代表核心设备126的物理硬件资源的虚拟化,诸如处理资源(例如,CPU、图形处理单元(graphics processing unit,GPU)等)、存储器资源(例如,非易失性存储器、易失性存储器等)、存储资源(例如,硬盘驱动器、固态盘驱动器等)、网络资源(例如,NIC、网关、路由器等)等的虚拟化。在本示例中,虚拟化层130可以使用管理程序控制和/或以其他方式管理物理硬件资源的虚拟化,该管理程序可以运行由物理硬件资源的虚拟化构建和/或以其他方式组成的一个或多个虚拟机(virtual machine,VM)。
核心网络106与云网络107通信。在该示例中,云网络107可以是私有或公共云服务提供商。例如,可以使用虚拟和/或物理硬件、软件和/或固件资源来实现云网络107以执行计算任务。
在图1的所图示示例中,描绘了多个示例通信路径134、136、138,包括第一示例通信路径134、第二示例通信路径136和第三示例通信路径138。在该示例中,第一通信路径134是同设备环境102的设备108、110、112、114、116中的一个(或多个)与边缘网络104的第一网络118、RRU 120、DU 122和/或CU 124中的一个(或多个)之间的通信相对应的设备到边缘通信路径。第二通信路径136是同边缘网络104的第一网络118、RRU 120、DU 122和/或CU 124中的一个(或多个)与核心网络106的核心设备126中的一个(或多个)之间的通信相对应的边缘到核心通信路径。第三通信路径138是同设备108、110、112、114、116中的一个(或多个)与核心设备126中的一个(或多个)之间的、经由边缘网络104的第一网络118、RRU 120、DU122和/或CU 124中的一个(或多个)的通信相对应的设备到边缘到核心通信路径。在多核心计算环境100中,通信路径中的每个都可用于在设备之间实现安全通信信道(例如,IPSec隧道)。请注意,本文可以互换使用IPSec隧道和IPSec信道的术语。
在一些示例中,响应于将工作负荷(例如,计算工作负荷)低效地分发到处理器的核心(例如,包括在DU 122、CU 124等和/或其组合中的处理器的核心),与边缘网络104相关联的带宽可以被降低、减少等。例如,DU 122、CU 124等中的每一个可以包括包含多个核心(例如,计算核心、处理核心等)的至少一个处理器。在一些此类示例中,与处理器通信的边缘网络104的NIC可以将巨量流分发到处理器的单个核心。在一些此类示例中,单个核心可能需要额外的时间来处理巨量流。有利地,本文描述的示例通过动态地缩放指派给巨量流的执行的核心的数量来改进边缘网络104和/或更一般地图1的多核心计算环境100中的工作负荷的此类分发。
图2是示例多核心计算系统200的示例实现方式的图示,该示例多核心计算系统200包括包含示例动态负载平衡器(dynamic load balancer,DLB)202的示例处理器201。例如,多核心计算系统200可实现图1的设备108到116、DU 122、CU 124、核心设备126等中的一个。多核心计算系统200包括示例生产者核心204、示例消费者核心206、示例工作者核心208、示例NIC 210和示例应用(例如,固件和/或软件应用)212。
在示例操作中,应用212促进示例通信量流214从示例输入216流向示例输出218。在该示例中,通信量流214是巨量流、拥挤流等。应用212经由NIC 210中的第一NIC将通信量流214从输入216引导到生产者核心204。有利地,多核心计算系统200可以处理与本示例的通信量流214或不同通信量流相关联的不同大小的数据分组。
在示例操作中,DLB 202中的一个或多个可以将数据从生产者核心204入列(例如,将诸如队列元素(queue element,QE)之类的元素添加到队列上和/或以其他方式放置到队列上),并将经入列的数据出列(例如,从队列中移除元素,诸如队列元素)到工作者核心208中的一个(多个),诸如工作者核心208的第一工作者核(W1)、第二工作者核心(W2)和/或第三工作者核心(W3)。例如,DLB 202可以经由由实线表示的第一示例连接220将数据从生产者核心204入列并将数据出列到工作者核心208中的一个(或多个)。在该示例中,经入列的数据和/或经出列的数据包括数据指针(例如,标识符、数据标识符等)、对存储在存储器中的数据(例如,(一个或多个)IPSec分组)的数据引用等。响应于获得经出列的数据,工作者核心208中的一个(或多个)工作者核心从多核心计算系统200的存储器中取回通信量流214的、被引用和/或以其他方式与经出列的数据相对应的(一个或多个)数据分组(或其他数据)。响应于获得(一个或多个)数据分组,工作者核心208中的一个(或多个)工作者核心执行与(一个或多个)数据分组相关联的计算任务、计算操作等。例如,工作者核心208可以执行和/或以其他方式执行任务,诸如深度分组检查任务、防火墙任务、用于处理分组(例如,对分组进行加密或解密)的网际协议安全性(IPsec)任务等。
在示例操作中,响应于执行计算任务,工作者核心208中的一个(或多个)工作者核心可以将与经处理的(一个或多个)数据分组相对应的数据指针入列到DLB 202中的一个(或多个),DLB 202进而将数据指针出列到消费者核心206。响应于将数据指针从DLB 202中的一个(或多个)出列,消费者核心206取回相对应的经处理的(一个或多个)数据分组。响应于取回经处理的(一个或多个)数据分组,消费者核心206可经由NIC 210中的第二NIC和/或应用212将经处理的(一个或多个)数据分组发送到输出218。尽管在图2中描绘了NIC 210的两个实例,但是替代地,这两个实例可以组合成单个实例和/或可以使用不同数量的NIC210。注意,在一些实施例中,一个或多个DLB202可能是在不同阶段与工作者208的子集或全部一起操作的单个DLB。
图3是由包括示例DLB 304的示例多核心计算系统302执行以处理示例通信量流306的示例工作流300的图示。例如,多核心计算系统302可实现图1的设备108到116、DU122、CU 124、核心设备126等中的一个。多核心计算系统302包括示例处理器308,其包括示例生产者核心310、示例消费者核心312、示例工作者核心314以及示例NIC 316。在一些示例中,生产者核心310可与图2的生产者核心204相对应。在一些示例中,消费者核心312可与图2的消费者核心206相对应。在一些示例中,工作者核心314中的一个或多个可与图2的工作者核心208中的一个(或多个)相对应。
在图3的所图示示例中,生产者核心310是接收器(receiver,RX)核心而消费者核心312是发射器(transmitter,TX)核心。在该示例中,尽管分开描述,但生产者核心310和消费者核心312是同一核心,但表示由该同一核心执行的不同功能(例如,接收数据功能或任务、发送数据功能或任务等)。或者,生产者核心310和消费者核心312可以是不同的核心。
在图3的图示示例中,尽管描绘了NIC 316的两个实例,但NIC 316的两个实例在本示例中与同一NIC 316相对应。例如,NIC 316可以向生产者核心310发送数据,并且同一NIC316可以从消费者核心312获得数据。或者,NIC 316的两个实例可以是分开的NIC。在一些示例中,NIC 316中的一个或多个NIC和与图1的边缘网络104和/或核心网络106相关联的NIC相对应。在一些示例中,NIC 316中的一个或多个NIC与图2的NIC 210中的至少一个相对应。
在图3的图示示例中,尽管描绘了DLB 304的两个实例,但DLB 304的两个实例在本示例中与同一DLB 304相对应。例如,DLB 304可以被包括在与生产者核心310和消费者核心312相同的处理器308中。在此类示例中,DLB304可以将数据从生产者核心310入列,并且同一DLB 304可以将数据出列到工作者核心314中的一个(或多个)工作者核心。在一些示例中,可以使用DLB 304中的多于一个DLB。例如,DLB 304的第一实例可以将数据从生产者核心310入列用于第一通信量流,而DLB 304的第二实例可以将数据从生产者核心310入列用于第二通信量流。
在工作流300中,在第一示例操作318期间,NIC 316从设备(例如,图1的设备108、110、112、114、116中的一个(或多个))获得通信量流306(例如,巨量流)。在第二示例操作320期间,生产者核心310从NIC 316获得通信量流306的数据分组和与该数据分组相对应的指针。在第二操作320期间,与生产者核心310相关联的DLB 304使指针入列。在第二操作320期间,工作者核心314中的第一工作者核心使指针从DLB 304(例如,从包括在DLB304中的队列)出列。在第三示例操作322期间,工作者核心314中的第一工作者核心取回由指针标识的数据分组并且对该数据分组执行感兴趣的操作(例如,计算操作)。
在第一工作流300的第四示例操作324期间,DLB 304响应于工作者核314中的第一工作者核心完成对数据分组的操作,将指针从工作者核心314中的第一工作者核心入列。在第四操作324期间,响应于入列,DLB 304将指针和与先前经处理的数据分组相对应的其他指针重新排序和/或聚合。在第四操作324期间,DLB 304将指针出列到消费者核心312。在第五示例操作326期间,消费者核心312取回与指针相对应的经处理的数据分组,并将经处理的数据分组发送到NIC 316,NIC 316进而将经处理的数据分组发送到不同的硬件、固件和/或软件。
有利地,在一些实施例中,DLB 304是NIC不可知的并且可以与来自任何NIC制造商的NIC一起工作和/或以其他方式与其兼容。有利地,当NIC316实行的负载平衡不足时,处理器308可以将调度任务从生产者核心310迁移到DLB 304。有利地,处理器308可以使用DLB304来防止核心过载,诸如工作者核心314中的一个或多个工作者核心的利用率接近利用率上限,而工作者核心314中的其他一个(或多个)工作者核心空闲和/或以其他方式处于睡眠或低功率状态。有利地,DLB 304通过将指针出列到工作者核心314中的可用的一个(或多个)工作者核心以处理通信量流306的数据分组来提供平衡的工作负荷核心利用率。有利地,DLB 304和/或更一般的处理器308可支持不同的工作负荷、通信量流等,诸如短持续时间和小尺寸通信量流、巨量流等。有利地,DLB 304和/或更一般的处理器308可处理不同的工作负荷、通信量流等,以增加和/或以其他方式最大化核心利用率并改进通信量流306的服务质量(QoS)。
使用负载平衡来生成和检查反重放序列号
动态负载平衡器(DLB)被用作专用硬件电路系统(例如,硬件队列管理器(HQM))的示例,用于在多核心计算系统中在核心之间分发要处理的通信量流,以提高处理效率。此类负载平衡系统消除自旋锁处罚,但当需要对通信量流进行原子性处理时,处理通信量流的多阶段管线可能受到性能损害。
例如,多核心计算系统可以实现序列号(sequence number,SN)生成和反重放(anti-replay,AR)检查方案,以处理安全性协议(诸如IPSec协议)中的通信量流。DLB隔离序列号生成阶段并原子性地运行它,以便给定安全性关联(security association,SA)的每个分组获得唯一的序列号。注意,安全性关联(SA)是在两个网络实体之间建立共享安全性属性,以支持通信量流的安全通信。SA映射到安全的通信信道,并可由SA ID标识。由SAID标识的安全通信信道可以是IPSec隧道、TLS会话、EVPN会话或在另一个安全通信协议中实现的安全信道。
SA可包括诸如密码算法和模式、通信量加密密钥以及通过连接传递的网络数据的参数之类的属性。建立安全性关联的框架由互联网安全性关联和密钥管理协议(InternetSecurity Association and Key Management Protocol,ISAKMP)提供。诸如互联网密钥交换(Internet Key Exchange,IKE)和Kerberized互联网密钥协商(Kerberized InternetNegotiation of Keys,KINK)之类的协议提供了经验证的密钥材料。在出站和入站负载平衡操作中实现了序列号(SN)生成和反重放(AR)检查方案,并且这两个部分将在下文中进一步详细解释。
出站负载平衡操作
图4图示出在多核心计算系统中使用原子性阶段的出站负载平衡操作。多核心计算系统402包括接收器(RX)核心410和发射器(TX)核心412(例如,分别与RX核心310和TX核心312相同或相似的核心),多核心计算系统402通过这些核心分别接收和发射通信量流的分组。在一些实施例中,通信量流从一个或多个局域网(LAN)接收端口440被转发到RX核心410,并从TX核心412被发射到一个或多个LAN发射端口442。通信量流的分组在安全通信信道中被转发,安全通信信道诸如多核心计算系统402中的IPSec隧道。虽然IPSec隧道被用作安全通信信道的示例,但其他安全通信信道TLS会话和EVPN会话可在本发明的一些实施例中实现。
在一些实施例中,工作者452包括核心A至D(在其他实施例中工作者包括或更多或更少的核心),并且它们可以是工作者核心208或314中的一个或多个,以及DLB 450可以是DLB 202或304中的一个或多个。处于多阶段分组处理管线的不同阶段的工作者452和DLB450可以是相同或不同的核心和DLB。在第一阶段422处,来自通信量流的分组以DLB 450的有序调度被接收和分发,该调度对分组进行负载平衡。分组的分发包括将队列元素(QE)(例如,指向分组)分配到工作者452的各个核心的处理队列。入列的数据由工作者452处理,该工作者452对流的分组进行分类。分类462确定分组是否需要IPSec处理,并且如果需要,标识与映射到相应分组所属通信量流的IPSec隧道相对应的正确SA。分类可基于映射到分组的元数据。例如,元数据中的反重放标志可以为需要IPSec处理的分组置位。
第一阶段422中工作者452的分类462使用有序负载平衡队列并行完成,以在下一阶段入列处恢复接收顺序。工作者452执行安全性策略(security policy,SP)查找和SA关联查找,并根据分类结果为每个流的分组指派适当的SA ID(例如,映射到相对应的IPSec隧道的SA ID)。然后分组被入列以供下一阶段。
由于来自任何给定SA的分组可以在多个核心(工作者452)上同时处理,因此如果此时尝试生成序列号,则需要昂贵的原子性语义。为了避免这种情况,将第二阶段424添加为序列号指派的原子性阶段(在序列号生成时根据SA)。原子性阶段意味着DLB 450保证来自同一SA(原子性流)的分组不在单独的核心上同时处理。随着阶段的增加,工作者452不需要原子性语义,并且标记464处的序列号指派是简单的运行计数器。然而,每个DLB阶段都有一些开销,估计在50-100个处理周期的范围中。在第二阶段424中,DLB 452将给定SA的所有处理漏(funnel)到单个核心(使用原子性调度),该核心为给定SA执行序列号指派464。
一旦序列号指派464在第二阶段424完成,分组可在第三阶段426被乱序密码化/路由,其中密码化和路由在标记466处执行,其中没有原子性保证,并且DLB 450可以在给定的流中对分组进行负载平衡以由工作者452的多个工作者处理。在一些实施例中,通信量流的分组的密码化和路由包括以下操作中的一个或多个:IPSec封装、密码学准备、密码处理(加密)、IPSec后加密过程、缓存(级别2/3)处理。
在第四阶段428处,原始分组顺序由DLB 450恢复,并且分组使用直接调度被转发到TX核心412,在直接调度中,DLB 450恢复流中的分组,这些分组以与多阶段管线之前的RX核心410处的原始分组顺序被转发。在直接调度中,不同流的分组以与它们进入多阶段管线之前一样的原始分组顺序在单个队列(也称为单个链路)中被处理。
请注意,序列号指派的第二阶段处的原子性调度产生开销,并且由于给定SA的分组在此阶段被聚合到单个核心,因此管线将性能限制在单个核心资源的约束(例如,计算/存储)。序列号指派的另一种方法是,核心使用到共享的序列号的原子性增量(核心根据SA共享序列号)来处理分组,以协作地保持序列号。然而,原子学很昂贵,这取决于竞争程度,该竞争程度可能很高。
为了删除上述第二阶段的原子性操作,DLB可以在负载平衡和对分组进行密码化/路由之前原子性地在出站方向生成和指派序列号。DLB已经用于将高带宽隧道的处理分散到多个核心上,这使得将一些处理从核心迁移到DLB是有意义的。DLB可以根据SA保持单调递增的计数器(以生成和分配序列号)。核心可以在将队列元素(QE)(例如,分组指针)发送到DLB中时提供SA ID,并且DLB将初始化输入SA ID的序列号(例如,从0或其他整数开始)。QE包括映射到流中的分组的元数据,并且元数据包括置位(例如,标志),其指示序列号指派被该分组所需要。当QE被负载平衡到工作者时,正确的序列号将向该工作者提供,以供插入分组中。如果QE代表批量分组,硬件也具有分配覆盖批量中所有分组的连续序列号范围的能力。入列的QE将携载需要为QE分配多少个序列号的需求。
图5图示出根据一些实施例的利用负载平衡器在多核心计算系统中执行序列号指派的出站负载平衡操作。多核心计算系统502与多核心计算系统402相似,并且相同或相似的标记表示具有相同或相似功能的元素或组件。
多核心计算系统502包括三个阶段,并且第一阶段522包括DLB 550处的负载平衡操作和工作者552处的分类操作562,并且这些操作与图4中第一阶段422处执行的操作相似。此外,第三阶段528中的操作与图4中第四阶段428处执行的操作相似。
在图5的第二阶段524处,DLB 550(而不是图4中的工作者452)执行序列号指派,其中序列号根据SA被生成并指派到分组。DLB 550处的序列号指派可以基于序列号指派数据结构554。在序列号指派数据结构554中,序列号基于DLB 550接收映射到给定SA ID的分组的顺序来被顺序地指派给该分组(对应于特定的安全通信信道)。由于第一阶段522保持分组的顺序,因此序列号指派顺序将与进入多核心计算系统502的分组的原始顺序相同。注意,虽然表被显示为序列号指派数据结构554的示例,但序列号指派数据结构也可以被创建为允许DLB 550根据SA映射序列号的地图、列表、数组或文件。
注意,虽然序列号指派数据结构554被显示为在SA ID上被索引,因此每个流中的分组将具有给定流的分组的相对应序列号,但数据结构可能由另一个标识符索引,该另一个标识符唯一地标识流,诸如映射到每个流的流ID或隧道ID。此外,虽然连续的序列号(1、2、3、4……)可以按照流的分组被接收的顺序被指派给这些分组,但在指派给分组时可能跳过一些数字(例如,在指派时只使用偶数或奇数)。此外,指派的序列号可能不是从最小到最大的,反向顺序或其他顺序也可以用来指派序列号,只要指派的序列号可以唯一地标识给定流中的分组顺序。注意,虽然序列号是根据SA讨论的,但当在一些实施例中使用流ID和隧道ID来标识安全通信信道中的分组时,它们是根据流或根据隧道指派的。
将序列号指派迁移到DLB 550从多核心计算系统502的处理管线中删除专用原子性序列号指派阶段。相反,当分组被馈入密码化/路由阶段时,序列号在DLB 550内被生成和分配,并在密码化阶段中的工作者从DLB 550中提取分组时被提供给这些工作者。工作者简单地将DLB指派的序列号复制到通信量流中相对应分组的分组头中。删除原子性序列号指派阶段删除分组处理的一个阶段的开销,并使多核心计算系统中502中的分组处理效率更高(例如,通过减少处理周期)。
在一些实施例中的出站负载平衡实现方式
在一些实施例中,DLB 550可识别出队列元素(QE)的入口上的反重放序列号请求(ARSN_REQ)标志。DLB 550可以设置它支持的SA/流/隧道的数量,并且可以(例如,通过软件)提供与流的分组相对应的SA/流/隧道ID作为QE元数据的一部分。DLB 550可以为每个SA/流/隧道ID设置序列号的范围(例如,可能存储在32/64/128/512比特覆盖的寄存器/存储器位置中的序列号),其中它单调地将不断递增/递减的序列号指派到给定流中的分组。驱动程序软件可以将给定流的序列号初始化为任何初始值,并可以随时读取它们(而其他软件可能无法直接访问序列号)。此外,在一些实施例中,隧道可以分组分配,因为IPSec处理经过优化以在这些实施例中一次处理一组分组(例如,来自同一SA的分组),并且分组减少了每个分组加载IPSec参数的开销。
在一些实施例中,DLB 550在映射到给定流的分组完成分类562后检查这些分组的SA/流/隧道ID。当ARSN_REQ标志(寄存器或另一个存储实体中的一个或多个比特)被置位时(例如,一个或多个比特中的一个比特被置位为一或零)时,DLB 550指派正确的序列号(例如,根据序列号指派数据结构554);当ARSN_REQ标志未被置位时,DLB 550指派标记号(例如,数字零或负数)。对于具有被置位ARSN_REQ标志的QE,DLB 550读取映射到相对应SA/流/隧道ID的下一个唯一序列号,将下一个唯一序列号指派给QE/分组,递增序列号(例如,计数器),并存储映射到SA/流/隧道ID的更新序列号,以指派给队列中给定流的下一个到达QE。
在一些实施例中,RX核心410(生产者核心)为需要序列号指派的分组/QE的ARSN_REQ标志进行置位(例如,与IPSec隧道相对应的相对应流)。所有指派序列号的分组将由DLB550给予序列号,并且完整的序列号范围可由DLB 550在序列号指派中使用。
在一些实施例中,单个QE携载指向多个分组的数据的指针(例如,数据是包括指向多个分组的指针列表的单个分组),并且DLB 550可为QE指派序列号的块。例如,单个QE指向n个分组,DLB 550可将序列号SN、SN+1、……、SN+n指派给QE,因此批量中的每个分组都得到唯一的序列号。
入站负载平衡操作
图6图示出在多核心计算系统中使用原子性阶段的入站负载平衡操作。多核心计算系统602与多核心计算系统402相似,并且相同或相似的标记表示具有相同或相似功能的元素或组件。入站负载平衡操作在多核心计算系统处完成,该系统接收从另一个计算系统(例如,多核心计算系统402或502)发射的分组。由于多核心计算系统经常发射并且也接收分组,因此多核心计算系统602可能与多核心计算系统402或502相同,其中出站多阶段管线如图4或图5所公开地实现,并且入站多阶段管线如图6(或图7)所公开地实现。
多核心计算系统602包括接收器(RX)核心610和发射器(TX)核心612(例如,分别与RX核心310和TX核心312相同或相似的核心),多核心计算系统602通过这些核心分别接收和发射通信量流的分组。在一些实施例中,通信量流从一个或多个局域网(LAN)接收端口640被转发到RX核心610,并从TX核心612被发射到一个或多个LAN发射端口642。通信量流包括从安全通信信道(例如,IPSec隧道)发射并具有上述相对应指派的序列号的分组。
工作者652包括核心A至D(在其他实施例中工作者包括更多或更少的核心),并且它们可以是工作者核心208或314中的一个或多个,DLB 650可以是DLB 202或304中的一个或多个,工作者652和DLB 650类似于工作者452/552和DLB 450/550。
在第一阶段622,DLB 650处使用原子性调度将与接收的通信量流的分组相对应的队列元素(QE)(例如,QE包括指向接收的分组的点)分发给工作者652,并且属于给定SA的QE由工作者652中的同一核心处理。注意,如上文所述,与流的分组相对应的SA/流/隧道ID可以作为QE元数据的一部分提供。
工作者652执行分类和反重放窗口(anti-replay window,ARW)检查632。该分类确定分组是否需要安全(例如,IPSec)处理,并且如果需要,标识分组的正确安全通信信道(例如,IPSec隧道)(例如,基于与分组相对应的SA/流/隧道ID)。
对照映射的SA/流/隧道ID的反重放窗口(ARW)检查接收的分组的序列号。入站方向中反重放窗口的值范围对应于出站方向分配的序列号范围内的特定跨度。ARW中的所有值都是在出站方向的序列号指派阶段中指派的有效值,并且ARW中的值随着已接受分组的成功解密而不断移动。例如,IPSec隧道0的序列号范围可能在出站方向的序列号指派阶段中指派的1至500之间,并且ARW可能在101至140的范围中(即,ARW宽度为40,出站方向的跨度在[1,500]的范围内)。一旦序列号为101的IPSec隧道0的分组通过IPSec隧道0被成功解密,ARW就被更新到102至141的范围(即,出站方向的窗口跨度具有相同的ARW宽度40,但在成功解密当前分组后,跨度内的值向前推进)。
如果接收的分组的序列号在反重放窗口之外(例如,接收分组落后,其中当ARW在101至140的范围中时,序列号为90),则分组被丢弃。如果接收的分组的序列号在反重放窗口内,那么工作者核心检查序列号之前是否曾被较早分组认领过(例如,当ARW在101至140的范围中时,接收到序列号为111的分组,但曾较早地接收到另一个序列号为111的较早分组)。当序列号已被认领时,后来接收的分组将被视为重复分组,并将被丢弃。
ARW检查可以基于比特向量(称为ARW比特向量或比特掩码)来完成,其中每个比特代表接收的有效序列号。如果任何测试(1)至(3)中的任一项失败,分组将被丢弃:(1)分组的序列号在由比特表示的数字之外,(2)分组的序列是重复的(例如,窗口中的相对应比特已由较早分组置位,或(3)序列号未通过完整性检查(其可以在完整分组/QE或在序列号本身上完成)。ARW检查可以使用另一种数据结构(例如,表、地图、列表、数组或文件),以保持有效序列号的范围并检测分组重复,并且此类ARW数据结构按SA保留。请注意,完整分组/QE的完整性检查可以由工作者634在这里完成,也可以在第二阶段进行密码化期间完成。
在分类和ARW检查632后,然后将分组转发到第二阶段624,在第二阶段624处DLB650使用有序调度将通信量流分发给工作者652的核心。工作者652在标记634处执行密码化(解密)、安全性策略(security policy,SP)查找、SA关联查找和路由。操作可能乱序处理,但恢复原始顺序的手段保持不变。分组在此阶段被解密和验证。
然后将分组转发到第三阶段626,在第三阶段处ARW窗口信息由工作者652更新。在更新ARW更新之前,工作者652可重复ARW检查,以确保在并行处理分组的第一阶段和第二阶段之后ARW状态正确。在重复的ARW检查中,一些分组可能因测试(1)至(3)失败而被丢弃。DLB 650使用原子性调度将通信量流分发给工作者652的核心,因为ARW数据结构是按SA保留的,并且ARW数据结构的更新按SA需要是原子性的。多核心计算系统需要确保两个核心不会同时修改同一ARW结构。第二阶段不能使用有序的调度来提供此类原子性。此外,当一些分组在由工作者652并行处理时可能无法通过测试(1)至(3)时,在第二阶段中完成ARW更新是不符合期望的。
因此,按SA的分组(例如,属于同一IPSec隧道的分组)在第三阶段中由单个核心处理,并且单个核心更新ARW数据结构,现在接收的分组被解密和验证,并且分组已经完成了安全通信信道中的传输。ARW数据结构可以被更新,以准备处理要接收的新分组。例如,窗口被移动到新的序列号范围,并且ARW比特向量基于新的序列号范围被重置。
在ARW数据结构按SA更新后,分组被转发到第四阶段628,在第四阶段处应用直接调度,并且不同流的分组按进入多阶段管线之前的原始顺序在单个队列中被处理。
如图6中所示,在多阶段管线中,ARW检查和更新均由工作者652完成,如标记690所示。入站处理管线包括两个原子性阶段。如前所述,每个原子性阶段引入大量开销(例如,50-100个处理周期)。ARW数据结构的实现方式尤其成问题,因为该窗口用于序列号检查阶段(第一阶段),但在分组解密和验证后,通过单独的窗口更新阶段(第三阶段)进行更新。即使没有竞争访问,多阶段访问也导致跨核心窥探,因为ARW数据结构通过检查和更新阶段不断被访问。
因此,期望在入站方向上移除至少一个原子性阶段。图7图示出根据一些实施例的利用负载平衡器在多核心计算系统中执行序列反重放窗口检查和更新的入站负载平衡操作。多核心计算系统702与多核心计算系统602相似,并且相同或相似的标记表示具有相同或相似功能的元素或组件。
多核心计算系统702包括四个阶段,并且第一阶段722包括DLB 750处的负载平衡操作和工作者752处的分类操作732,并且这些操作与图6中第一阶段622处执行的操作相似。
然而,在第二阶段724处,DLB 750在内部保持ARW数据结构(按SA),并执行ARW检查。工作者752提供来自分类732的分组的序列号和SA ID,同时将相对应的QE发送到DLB750中,并且DLB 750执行必要的ARW检查(类似于工作者650在第一阶段操作632所做的)。当QE被负载平衡到工作者752时,如果ARW检查失败(例如,如果:(1)分组的序列号在由比特表示的数字之外,(2)分组的序列是重复的(例如,窗口中的相对应比特已由较早分组置位),或(3)序列号未通过完整性检查),则为相对应的分组提供丢弃指示符,并且丢弃带有丢弃指示符的分组。第二阶段使用有序分布,因此只要保持恢复原始顺序的手段,同一SA的分组就可以由多个核心处理。
在第二阶段724,通过ARW检查的分组由工作者752处理,工作者752在标记734处执行密码化(解密)、安全性策略(SP)查找、SA关联查找和路由(类似于标记634处所做的)。
在第三阶段728处,DLB 750(而不是图6中的工作者)更新ARW窗口信息,并且ARW窗口信息更新与操作636相似,但DLB 750保持ARW并且更新由DLB 750完成。然后分组使用直接调度处理,其中将不同流的分组如操作628转发到发射器核心612。
如标记790所述,DLB 750在入站方向执行ARW检查和更新,并且工作者752不再原子地在多个不相交阶段访问ARW数据结构。将ARW检查迁移并更新到DLB 750减少了处理开销,并且使多阶段入站分组处理更加高效。
在一些实施例中的入站负载平衡实现方式
DLB 750可以设置它支持的SA/流/隧道的数量,并且可以(例如,通过软件)提供与流的分组相对应的SA/流/隧道ID作为QE元数据的一部分。在一些实施例中,额外的标志可被实现,以供在入站方向处理接收的分组。例如,标志ARW_check(ARW_检查)可以按QE置位,以标识QE是否触发ARW检查;并且另一个标志ARW_update(ARW_更新)可以按QE置位,以确定QE是否触发ARW更新。这些标志可以在入列时作为QE元数据的一部分提供(例如,通过软件)。
DLB 750可以按SA保持窗口(W)大小(例如,2^N)(例如,窗口大小可以高达四千到八千),保持映射到窗口大小的比特掩码(bit mask,BM)和/或按SA保持当前窗口位置(current window location,CWL)(边界序列号)。图8图示出根据一些实施例的反重放检查操作的伪代码。注意,序列号使用64个比特,并且有效值在CWL和CWL+MAX_AHEAD范围内。在标记802处,特定序列号的比特位置被标识。如果比特位置由较早分组设置(在标记804处确定),则相对应的分组会被丢弃。
对于反重放窗口更新,DLB 750可验证QE是否首先置位相对应的ARW_check标志和ARW_update标志。如果两个标志都被置位,并且QE的序列号在当前窗口跨度前面,则需要进行窗口更新。在一些实施例中,如果序列号超过前面的整个窗口,那么新窗口与当前没有重叠,并且将都是零,序列号是窗口跨度的上限。否则,窗口向前移动,在接收的序列号为窗口跨度的上限处终止,并将比特掩码重新计算为在新ARW窗口中已经接收相对应分组的任何序列号的位置处为一。
例如,如果ARW的跨度为[100、101、102、103],并且已接收序列号为103的分组,则ARW的ARW比特向量为0001。如果接收序列号为110的分组(其超过整个窗口宽度),则新的ARW窗口的跨度为[107、108、109、110],并且ARW的ARW比特向量被更新为0001。但是,如果接收序列号为105的分组(而不是序列号为110的分组),更新的新ARW窗口的跨度为[102、103、104、105],并且ARW的ARW比特向量被更新为0101,以反映除了分组105外,分组103已经接收。
注意,图5和图7以及相关讨论描述了出站和入站负载平衡操作,负载平衡器执行序列号指派和反重放窗口检查和更新。在一些实施例中,DLB可以在出站和入站方向上执行所描述的操作,并且DLB 550和750是在两个方向上(一个方向用于发射分组,以及另一个方向用于接收分组)操作的同一DLB。在其他实施例中,DLB可以执行所描述的操作,仅在一个方向上移除原子性阶段。
在一些实施例中的操作
图9图示出根据一些实施例的使用负载平衡指派和检查反重放序列号的操作流。这些操作由负载平衡硬件(诸如本文讨论的DLB)执行。用于执行负载平衡操作的电路系统在多核心计算系统中实现,该系统包括电路系统和多个核心。
在标记902处,电路系统(例如,DLB 550)为通信量流的分组指派序列号,其中第一序列号基于确定第一分组位于映射到第一安全信道的第一通信量流内而被指派到第一分组,并且其中第一序列号位于分配给第一安全信道并由电路系统保持的序列号集合中。第一安全信道可以是IPSec隧道、TLS会话、EVPN会话或在另一个安全通信协议中实现的安全信道。
在一些实施例中,电路系统保持数据结构,该结构将第一安全信道与要指派给第一通信量流的分组的序列号集合映射,其中序列号按顺序被指派给第一通信量流内的分组。数据结构是上面讨论的序列号指派数据结构554,并且上面讨论按通信量流(或按相对应的SA/隧道)的顺序序列号指派。在一些实施例中,第一安全信道是基于上面讨论的安全性关联标识符(SA ID)标识的。
在一些实施例中,确定第一分组在映射到第一安全信道的第一通信量流中是基于映射到上面讨论的第一分组的元数据中的信道标识符(例如,信道标识符可以是隧道ID)的。在一些实施例中,在确定元数据指示为第一分组置位反重放标志时,确定第一分组在映射到第一安全信道的第一通信量流中。例如,反重放标志可以是上面讨论的ARSN_REQ标志。
在标记904处,电路系统在多个处理器核心之间分配要处理的通信量流的分组。然后在标记906处,通信量流的分组由多个处理器核心处理。
在标记902至906处的操作位于出站方向,其中序列号被指派给通信量流的分组。可选地在一些实施例中,当分组被指派有序列号时,在入站方向上使用不同的电路系统(当DLB 750与DLB 550不同时)。然而,在其他实施例中,相同的电路系统可在入站方向上处理流的分组(例如,当DLB 750与DLB 550不同时)。在这些实施例中,在标记908处,电路系统进一步基于确定第二分组位于映射到第二安全信道的第二通信量流中,来检查指派给第二分组的第二序列号,并且其中电路系统基于为第二通信量流保持的反重放窗口来处理第二分组。
在标记910处,当第二序列号超出反重放窗口指示的范围或第二序列号被映射到反重放窗口指示的上一个分组时,第二分组将被丢弃。在标记912处,电路系统用于将第二分组转发到多个处理器核心内的核心以供基于检查反重放窗口来进行处理,并且电路系统用于在核心完成第二分组的处理时更新反重放窗口。
在一些实施例中,反重放窗口包括窗口比特向量,并且其中对窗口比特向量内的比特进行置位表示相对应的序列号被映射到已处理的分组。在一些实施例中,电路系统用于存储多个反重放窗口,每个反重放窗口用于装置支持的安全信道。
示例性处理器体系结构
图10-图12是示例性计算机体系结构的框图。本领域中已知的对膝上型电脑、桌面型电脑、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图10,示出根据一些实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(graphics memory controller hub,GMCH)1090和输入/输出中枢(Input/Output Hub,IOH)1050(其可以在分开的芯片上);GMCH 1090包括存储器和图形控制器,存储器1040和DLB 1045耦合到该存储器和图形控制器,DLB 1045包括本文中关于图1至图9描述的一个或多个DLB;IOH 1050将输入/输出(input/output,I/O)设备1060耦合到GMCH 1090。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1040和DLB 1045直接耦合到处理器1010,并且控制器中枢1020与IOH 1050处于单个芯片中。
附加的处理器1015的可任选性在图10中通过虚线来表示。每个处理器1010、1015可包括本文中描述的处理核心中的一个或多个。
存储器1040可以例如是动态随机存取存储器(dynamic random-access memory,DRAM)、相变存储器(phase change memory,PCM)或两者的组合。对于至少一个实施例,控制器中枢1020经由诸如前端总线(frontside bus,FSB)之类的多点分支(multi-drop)总线、诸如快速路径互连(QuickPath Interconnect,QPI)之类的点到点接口、或者类似的连接1095来与(一个或多个)处理器1010、1015进行通信。
在一个实施例中,DLB 1045是专用处理器/电路/电路系统,诸如例如,嵌入式处理器、DSP(数字信号处理器)、现场可编程门阵列等。在一个实施例中,控制器中枢1020可以包括集成图形加速器。
按照包括体系结构、微体系结构、热、功耗特征等优点的一系列度量,处理器1010、1015之间可能存在各种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1010将这些协处理器指令识别为具有应当由附连的DLB 1045执行的类型。因此,处理器1010在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发出到协处理器1045。DLB 1045接受并执行所接收的指令。或者,DLB 1045接受并执行与处理器1010至1015相同的指令集。
现在参考图11。如图11中所示,多处理器系统1100是点到点互连系统,并且包括经由点到点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个可能是处理器1010至1015中的一个或多个的某个版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而DLB 1138是DLB 1045。在另一实施例中,处理器1170和1180分别是处理器1010和处理器1015。
处理器1170和1180示出为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元1172和1182。处理器1170还包括作为其总线控制器单元的部分的点到点(point-to-point,P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可以使用点到点(P-P)接口电路1178、1188经由P-P接口1150来交换信息。如图11中所示,IMC 1172和1182将处理器耦合到相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1170、1180可各自经由使用点到点接口电路1176、1194、1186、1198的各个P-P接口1152、1154来与芯片组1190交换信息。芯片组1190可以任选地经由高性能接口1139来与DLB 1138交换信息。在一个实施例中,DLB 1138是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可以被包括在任一处理器之内或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将处理器置于低功率模式时,可将任一处理器或两个处理器的本地缓存信息存储在该共享缓存中。
芯片组1190可以经由接口1196耦合至第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(Peripheral Component Interconnect,PCI)总线或诸如PCI快速(PCI Express)总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图11所示,各种I/O设备1114可以连同总线桥1118被耦合至第一总线1116,总线桥1118将第一总线1116耦合至第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚计数(low pin count,LPC)总线。各种设备可以被耦合至第二总线1120,在一个实施例中这些设备包括例如键盘和/或鼠标1122、通信设备1127以及存储单元1128,该存储单元1128诸如可包括指令/代码和数据1130的盘驱动器或其他大容量存储设备。此外,音频I/O 1124可耦合到第二总线1120。注意,其他体系结构是可能的。例如,代替图11的点到点体系结构,系统可以实现多点分支总线或其他此类体系结构。
图12是根据一些实施例的可包括核心1202中的一个或多个的示例片上系统(system on a chip,SoC)。本领域中已知的用于膝上型电脑、桌面型电脑、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理设备、数字信号处理设备(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够包含如本文中所公开的处理设备和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图12,示出的是根据本公开的实现方式的SoC 1200的框图。同样,虚线框是更先进的SoC上的特征。在图12中,(一个或多个)互连单元1202被耦合到:应用处理器1210,其包括一个或多个核心的集合1202A-N以及(一个或多个)共享缓存单元1206;系统代理单元1238;(一个或多个)总线控制器单元1216;(一个或多个)集成存储器控制器单元1214;一个或多个DLB的集合1220,其包括在本文中参考图1至图9描述的DLB;静态随机存取存储器(static random access memory,SRAM)单元1230;直接存储器访问(direct memoryaccess,DMA)单元1232;以及用于耦合到一个或多个外部显示器的显示单元1240。出站和入站多阶段管线的实现方式可以在SoC 1200中实现。
进一步的示例
示例1提供了一种示例性装置,包括:电路系统,用于为通信量流的分组指派序列号,其中第一序列号基于确定第一分组位于映射到第一安全信道的第一通信量流中而被指派给第一分组,并且其中第一序列号位于分配给第一安全信道并由电路系统保持的序列号集合中,电路系统用于在多个处理器核心之间分配要处理的通信量流的分组。示例性装置进一步包括用于处理通信量流的分组的多个处理器核心。
示例2包括示例1的实质内容,其中电路系统用于保持映射第一安全信道的数据结构,序列号集合被指派给第一通信量流的分组,其中序列号按顺序被指派给第一通信量流内的分组。
示例3包括示例1至2的实质内容,其中第一安全信道基于安全性关联标识符来标识。
示例4包括示例1至3的实质内容,其中确定第一分组在映射到第一安全信道的第一通信量流中是基于映射到第一分组的元数据中的信道标识符。
示例5包括示例1至4的实质内容,其中在确定元数据指示为第一分组置位反重放标志后,确定第一分组在映射到第一安全信道的第一通信量流中。
示例6包括示例1至5的实质内容,其中电路系统进一步用于基于确定第二分组在映射到第二安全信道的第二通信量流中,来检查被指派给第二分组的第二序列号,并且其中电路系统用于基于为第二通信量流保持的反重放窗口来处理第二分组。
示例7包括示例1至6的实质内容,其中当第二序列号在反重放窗口指示的范围之外或第二序列号被映射到反重放窗口指示的上一个分组时,第二分组被丢弃。
示例8包括示例1至7的实质内容,其中电路系统用于将第二分组转发到多个处理器核心内的核心,以供基于检查反重放窗口来进行处理,并且电路系统用于在核心完成第二分组的处理时更新反重放窗口。
示例9包括示例1至8的实质内容,其中反重放窗口包括窗口比特向量,并且其中对窗口比特向量内的比特进行置位表示相对应的序列号被映射到已处理的分组。
示例10包括示例1至9的实质内容,其中电路系统用于存储多个反重放窗口,每个窗口用于装置支持的安全信道。
示例11提供一种示例性方法,包括:通过电路系统为通信量流的分组指派序列号,其中第一序列号基于确定第一分组在映射到第一安全信道的第一通信量流内而被指派到第一分组,并且其中第一序列号在分配给第一安全信道并由电路系统保持的序列号集合中。方法进一步包括在多个处理器核心之间分配要处理的通信量流的分组,以及通过多个处理器核心处理通信量流的分组。
示例12包括示例11的实质内容,其中电路系统用于保持映射第一安全信道的数据结构,其中序列号集合被指派给第一通信量流的分组,其中序列号按顺序被指派给第一通信量流内的分组。
示例13包括示例11至12的实质内容,其中确定第一分组在映射到第一安全信道的第一通信量流中是基于映射到第一分组的元数据中的信道标识符。
示例14包括示例11至13的实质内容,方法进一步包括基于确定第二分组在映射到第二安全信道的第二通信量流中,来检查指派给第二分组的第二序列号,并且其中电路系统基于为第二通信量流保持的反重放窗口来处理第二分组。
示例15包括示例11至14的实质内容,方法进一步包括当第二序列号在反重放窗口指示的范围之外或第二序列号映射到反重放窗口指示的上一个分组时,第二分组被丢弃。
示例16提供一种存储指令的示例性计算机可读存储介质,该指令在由计算系统的处理器执行能够使计算系统执行以下操作:通过电路系统为通信量流的分组指派序列号,其中第一序列号基于确定第一分组在映射到第一安全信道的第一通信量流内而被指派到第一分组,并且其中第一序列号在分配给第一安全信道并由电路系统保持的序列号集合中。计算系统被使得进一步执行:在多个处理器核心之间分配要处理的通信量流的分组;以及通过多个处理器核心处理通信量流的分组。
示例17包括示例16的实质内容,其中电路系统用于保持第一安全信道的数据结构,其中序列号集合被指派给第一通信量流的分组,其中序列号按顺序被指派给第一通信量流内的分组。
示例18包括示例16至17的实质内容,其中确定第一分组在映射到第一安全信道的第一通信量流中是基于映射到第一分组的元数据中的信道标识符。
示例19包括示例16至18的实质内容,计算系统被使得进一步执行:基于确定第二分组在映射到第二安全信道的第二通信量流中,来检查指派给第二分组的第二序列号,并且其中电路系统基于为第二通信量流保持的反重放窗口来处理第二分组。
示例20包括示例16至19的实质内容,其中用于加密的加密密钥的集合被传输到调试主机计算机以供对跟踪数据进行解密,其中反重放窗口包括窗口比特向量,并且其中对窗口比特向量内的比特进行置位表示相对应的序列号被映射到已处理的分组。
示例21提供了一种示例性设备,包括:用于向通信量流的分组指派序列号的第一装置,其中第一序列号基于确定第一分组在映射到第一安全信道的第一通信量流内而被指派到第一分组,并且其中第一序列号在分配给第一安全信道并由电路系统保持的序列号集合中,第一装置在多个处理器核心之间分配要处理的通信量流的分组。示例性设备进一步包括用于处理通信量流的分组的多个处理装置。
示例22包括示例21的实质内容,其中第一装置用于保持映射第一安全信道的数据结构,其中序列号集合被指派给第一通信量流的分组,其中序列号按顺序被指派给第一通信量流内的分组。
示例23包括示例21至22的实质内容,其中第一安全信道基于安全性关联标识符来标识。
示例24包括示例21至23的实质内容,其中确定第一分组在映射到第一安全信道的第一通信量流中是基于映射到第一分组的元数据中的信道标识符。
示例25包括示例21至24的实质内容,其中在确定元数据指示为第一分组置位反重放标志后,确定第一分组在映射到第一安全信道的第一通信量流中。
示例26包括示例21至25的实质内容,其中第一装置进一步用于基于确定第二分组在映射到第二安全信道的第二通信量流中,来检查指派给第二分组的第二序列号,并且其中第一装置基于为第二通信量流保持的反重放窗口来处理第二分组。
示例27包括示例21至26的实质内容,其中当第二序列号在反重放窗口指示的范围之外或第二序列号映射到反重放窗口指示的上一个分组时,第二分组被丢弃。
示例28包括示例21至27的实质内容,其中第一装置用于将第二分组转发到多个处理器核心内的核心以供基于检查反重放窗口来进行处理,并且第一装置用于在核心完成第二分组的处理时更新反重放窗口。
示例29包括示例21至28的实质内容,其中反重放窗口包括窗口比特向量,并且其中对窗口比特向量内的比特进行置位表示相对应的序列号被映射到已处理的分组。
示例30包括示例21至29的实质内容,其中第一装置用于存储多个反重放窗口,每个窗口用于设备支持的安全信道。
附加的解释
在以上说明书中,已参照本发明的特定示例性实施例描述了本发明的实施例。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛的精神和范围。因此,说明书和附图应被认为是说明性而非限制性意义的。
本发明的实施例可包括上文中已描述的各步骤。这些步骤可以被具体化为机器可执行指令,这些机器可执行指令可以用于使通用或专用处理器执行这些步骤。替代地,这些步骤可由包含用于执行这些步骤的硬接线逻辑的特定硬件部件来执行,或者由经编程的计算机部件和定制硬件部件的任何组合来执行。
如本文中所描述,指令可以指硬件的特定配置,诸如,配置成用于执行某些操作或具有预定功能的专用集成电路(ASIC),或者可以指被存储在以非暂态计算机可读介质具体化的存储器中的软件指令。由此,附图中示出的技术可以使用存储在一个或多个电子设备(例如,终端站、网络元件等)上并在该一个或多个电子设备上执行的代码和数据来实现。此类电子设备使用诸如非瞬态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)之类的计算机机器可读介质和瞬态计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号——诸如载波、红外信号、数字信号等)来(内部地和/或在网络上与其他电子设备之间进行)存储和传递代码和数据。此外,此类电子设备典型地包括耦合到一个或多个其他部件(诸如,一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)、以及网络连接)的一个或多个处理器的集合。处理器的集合与其他部件的耦合典型地通过一个或多个总线和桥接器(也被称为总线控制器)。承载网络通信量的存储设备和信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备典型地存储用于在该电子设备的一个或多个处理器的集合上执行的代码和/或数据。当然,可以使用软件、固件、和/或硬件的不同组合来实现本发明的实施例的一个或多个部分。贯穿此具体实施方式,出于解释的目的,阐述了众多特定细节以便提供对本发明的透彻理解。然而,对于本领域的技术人员而言将显而易见的是,可以在没有这些特定细节中的一些细节的情况下实现本发明。在某些实例中,未详细地描述众所周知的结构和功能以免混淆本发明的主题。因此,本发明的范围和精神应当根据所附权利要求来判定。

Claims (20)

1.一种装置,包括:
电路系统,用于向通信量流的分组指派序列号,其中第一序列号基于确定第一分组在映射到第一安全信道的第一通信量流内而被指派到所述第一分组,并且其中所述第一序列号在分配给所述第一安全信道并由所述电路系统保持的序列号集合中,所述电路系统用于在多个处理器核心之间分配要处理的通信量流的分组;以及
所述多个处理器核心,用于处理所述通信量流的分组。
2.如权利要求1所述的装置,其中,所述电路系统用于保持映射所述第一安全信道的数据结构,其中所述序列号集合被指派给所述第一通信量流的分组,其中序列号按顺序被指派给所述第一通信量流内的分组。
3.如权利要求1或2所述的装置,其中,所述第一安全信道基于安全性关联标识符来标识。
4.如权利要求1至3中任一项所述的装置,其中,确定所述第一分组在映射到所述第一安全信道的所述第一通信量流中是基于映射到所述第一分组的元数据中的信道标识符。
5.如权利要求4所述的装置,其中,在确定所述元数据指示为所述第一分组置位反重放标志时,确定所述第一分组在映射到所述第一安全信道的所述第一通信量流中。
6.如权利要求1至3中任一项所述的装置,其中,所述电路系统进一步用于基于确定所述第二分组在映射到第二安全信道的第二通信量流中,来检查被指派给第二分组的第二序列号,并且其中所述电路系统用于基于为所述第二通信量流保持的反重放窗口来处理所述第二分组。
7.如权利要求6所述的装置,其中,当所述第二序列号在所述反重放窗口指示的范围之外或所述第二序列号被映射到所述反重放窗口指示的上一个分组时,所述第二分组被丢弃。
8.如权利要求6所述的装置,其中,所述电路系统用于将所述第二分组转发到所述多个处理器核心内的核心以供基于检查所述反重放窗口来进行处理,并且所述电路系统用于在所述核心完成所述第二分组的处理时更新所述反重放窗口。
9.如权利要求6所述的装置,其中,所述反重放窗口包括窗口比特向量,并且其中对所述窗口比特向量内的比特进行置位表示相对应的序列号被映射到已处理的分组。
10.如权利要求1至3中任一项所述的装置,其中,所述电路系统用于存储多个反重放窗口,每个窗口用于所述装置支持的安全信道。
11.一种方法,包括:
通过电路系统为通信量流的分组指派序列号,其中第一序列号基于确定第一分组在映射到第一安全信道的第一通信量流内而被指派到所述第一分组,并且其中所述第一序列号在分配给所述第一安全信道并由所述电路系统保持的序列号集合中;
在多个处理器核心之间分配要处理的通信量流的分组;以及
通过所述多个处理器核心处理所述通信量流的分组。
12.如权利要求11所述的方法,其中,所述电路系统用于保持映射所述第一安全信道的数据结构,其中所述序列号集合被指派给所述第一通信量流的分组,其中序列号按顺序被指派给所述第一通信量流内的分组。
13.如权利要求11或12所述的方法,其中,确定所述第一分组在映射到所述第一安全信道的所述第一通信量流中是基于映射到所述第一分组的元数据中的信道标识符。
14.如权利要求11至13中任一项所述的方法,进一步包括:
基于确定所述第二分组在映射到第二安全信道的第二通信量流中,来检查被指派给第二分组的第二序列号,并且其中所述电路系统用于基于为所述第二通信量流保持的反重放窗口来处理所述第二分组。
15.如权利要求14所述的方法,进一步包括:
当所述第二序列号在所述反重放窗口指示的范围之外或所述第二序列号被映射到所述反重放窗口指示的上一个分组时,所述第二分组被丢弃。
16.一种存储指令的计算机可读存储介质,所述指令在由计算系统的处理器执行能够使所述计算系统用于执行以下操作:
通过电路系统为通信量流的分组指派序列号,其中第一序列号基于确定第一分组在映射到第一安全信道的第一通信量流内而被指派到所述第一分组,并且其中所述第一序列号在分配给所述第一安全信道并由所述电路系统保持的序列号集合中;
在多个处理器核心之间分配要处理的通信量流的分组;以及
通过所述多个处理器核心处理所述通信量流的分组。
17.如权利要求16所述的计算机可读存储介质,其中,所述电路系统用于保持映射所述第一安全信道的数据结构,其中所述序列号集合被指派给所述第一通信量流的分组,其中序列号按顺序被指派给所述第一通信量流内的分组。
18.如权利要求16或17所述的计算机可读存储介质,其中确定所述第一分组在映射到所述第一安全信道的所述第一通信量流中,是基于映射到所述第一分组的元数据中的信道标识符。
19.如权利要求16至18中任一项所述的计算机可读存储介质,其中,所述计算系统被使得进一步用于执行:
基于确定所述第二分组在映射到第二安全信道的第二通信量流中,来检查被指派给第二分组的第二序列号,并且其中所述电路系统用于基于为所述第二通信量流保持的反重放窗口来处理所述第二分组。
20.如权利要求16至19中任一项所述的计算机可读存储介质,其中,所述反重放窗口包括窗口比特向量,并且其中对所述窗口比特向量内的比特进行置位表示相对应的序列号被映射到已处理的分组。
CN202211503368.0A 2021-12-16 2022-11-28 用于使用负载平衡指派和检查反重放序列号的方法和装置 Pending CN116266141A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/553,543 US20230198912A1 (en) 2021-12-16 2021-12-16 Method and apparatus to assign and check anti-replay sequence numbers using load balancing
US17/553,543 2021-12-16

Publications (1)

Publication Number Publication Date
CN116266141A true CN116266141A (zh) 2023-06-20

Family

ID=83995163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211503368.0A Pending CN116266141A (zh) 2021-12-16 2022-11-28 用于使用负载平衡指派和检查反重放序列号的方法和装置

Country Status (3)

Country Link
US (1) US20230198912A1 (zh)
EP (1) EP4199469A1 (zh)
CN (1) CN116266141A (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814310B2 (en) * 2003-04-12 2010-10-12 Cavium Networks IPsec performance optimization
US20140269690A1 (en) * 2013-03-13 2014-09-18 Qualcomm Incorporated Network element with distributed flow tables

Also Published As

Publication number Publication date
EP4199469A1 (en) 2023-06-21
US20230198912A1 (en) 2023-06-22

Similar Documents

Publication Publication Date Title
US11575607B2 (en) Dynamic load balancing for multi-core computing environments
US8861434B2 (en) Method and system for improved multi-cell support on a single modem board
US20200356414A1 (en) Data processing unit for stream processing
US8806025B2 (en) Systems and methods for input/output virtualization
EP2638467B1 (en) Lock-less and zero copy messaging scheme for telecommunication network applications
US9813283B2 (en) Efficient data transfer between servers and remote peripherals
KR101636308B1 (ko) 전기 통신 네트워크 애플리케이션들을 위한 코어 추상화 계층
US8504744B2 (en) Lock-less buffer management scheme for telecommunication network applications
US10616116B1 (en) Network traffic load balancing using rotating hash
Freitas et al. A survey on accelerating technologies for fast network packet processing in Linux environments
CN111698274B (zh) 数据处理方法及装置
CN116471242A (zh) 基于rdma的发送端、接收端、数据传输系统及方法
EP4199469A1 (en) Method and apparatus to assign and check anti-replay sequence numbers using load balancing
Kundu et al. Hardware acceleration for open radio access networks: A contemporary overview
Suo et al. Characterizing networking performance and interrupt overhead of container overlay networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication