CN112398762B - 一种网元及网元中的通信方法 - Google Patents

一种网元及网元中的通信方法 Download PDF

Info

Publication number
CN112398762B
CN112398762B CN202010798532.XA CN202010798532A CN112398762B CN 112398762 B CN112398762 B CN 112398762B CN 202010798532 A CN202010798532 A CN 202010798532A CN 112398762 B CN112398762 B CN 112398762B
Authority
CN
China
Prior art keywords
processor
database
packet
processing hardware
packet processing
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.)
Active
Application number
CN202010798532.XA
Other languages
English (en)
Other versions
CN112398762A (zh
Inventor
利昂·利瓦伊
阿维夫·克夫伊尔
伊丹·马大利
拉恩·沙尼
扎奇·哈尔马蒂
尼尔·莫诺维奇
马蒂·卡多什
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies Ltd
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 Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of CN112398762A publication Critical patent/CN112398762A/zh
Application granted granted Critical
Publication of CN112398762B publication Critical patent/CN112398762B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • 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/544Buffers; Shared memory; Pipes
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/102Packet switching elements characterised by the switching fabric construction using shared medium, e.g. bus or ring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及用于上传/下载数据库的硬件加速。一种网元包括用于通过网络进行通信的一个或多个端口、处理器以及分组处理硬件。分组处理硬件被配置用于从端口和向端口传送分组,并且还包括用于与处理器数据传送的数据传送电路。处理器和数据传送电路被配置用于通过(i)由处理器将用于在端口与处理器之间传送的一个或多个通信分组和用于在分组处理硬件与处理器之间传送的一个或多个数据库两者的传送转换成工作元素,以及将工作元素发布在处理器的存储器中的一个或多个工作队列上,以及(ii)使用数据传送电路,执行工作元素,以便传送通信分组和数据库两者,从而在彼此之间传送(i)所述通信分组,以及(ii)所述数据库。

Description

一种网元及网元中的通信方法
技术领域
本发明总体上涉及通信网络,并且尤其涉及硬件与软件之间的数据库高效传送。
背景技术
在通信网元中,数据可以从处理器传送到嵌入在分组处理硬件中的存储器,或者在相反方向上从嵌入在分组处理硬件中的存储器传送到处理器。例如,在美国专利5,644,784中描述了使用线性直接存储器访问(DMA)在CPU与存储器之间传送数据的技术。
发明内容
本文描述的本发明的实施方式提供了一种网元,该网元包括用于通过网络进行通信的一个或多个端口、处理器和分组处理硬件。分组处理硬件被配置用于从端口和向端口传送分组,所述分组处理硬件还包括用于与处理器的数据传送的数据传送电路。处理器和数据传送电路被配置用于通过以下方式在彼此之间传送(i) 用于在端口与处理器之间传送的一个或多个通信分组,以及(ii)用于在分组处理硬件与处理器之间传送的一个或多个数据库:(i)由处理器将通信分组和数据库两者的传送转换成工作元素,并将工作元素发布在处理器的存储器中的一个或多个工作队列上,以及(ii)使用数据传送电路,执行工作元素,以便传送通信分组和数据库两者。
在一些实施方式中,数据库包括以下各项中的一项或多项:(i)配置数据库,其由处理器发送到分组处理硬件以供配置分组处理硬件,以及(ii)硬件状态数据库,其由分组处理硬件发送到处理器。在实施方式中,分组处理硬件包括用于缓冲与通信分组和数据库两者相关联的数据的共享队列。
在示例实施方式中,网元包括网络交换机,并且分组处理硬件被配置用于在端口之间路由分组。在另一个实施方式中,网元包括网络接口,并且分组处理硬件被配置用于在端口和主机系统之间转发分组。
根据本发明的实施方式,还提供了一种网元中的通信方法,该网元包括连接到网络的一个或多个端口、处理器以及分组处理硬件。该方法包括:使用分组处理硬件从端口和向端口传送分组;以及通过以下方式在处理器和分组处理硬件的数据传送电路之间传送(i)用于在端口与处理器之间传送的一个或多个通信分组,以及(ii)用于在分组处理硬件与处理器之间传送的一个或多个数据库:由处理器将通信分组和数据库两者的传送转换成工作元素,并将工作元素发布在处理器的存储器中的一个或多个工作队列上。使用数据传送电路,执行工作元素,以便传送通信分组和数据库两者。
附图说明
通过以下对本发明实施方式的详细描述并结合附图,将会更充分地理解本发明,其中:
图1是示意性地图示根据本发明实施方式,在网元中的路由硬件 (Routing-Hardware,“RH”)配置数据库的传送的框图;
图2是示意性地图示根据本发明实施方式,在网元中的RH状态数据库的传送的框图;
图3是示意性地图示根据本发明实施方式,通过共享缓冲区在处理器与RH 之间的RH数据库的双向传送的框图;
图4是示意性地图示根据本发明实施方式,用于将新的路由表从处理器传送到RH的方法的流程图;以及
图5是示意性地图示根据本发明实施方式,用于将新的状态表从RH传送到处理器的方法的流程图。
具体实施方式
概述
网元(诸如网络交换机)根据路由规则和其他规则,从入口端口接收分组,并将分组转发到出口端口。典型的交换机包括对分组进行路由的路由硬件,以及控制和监视路由硬件操作的处理器。在下文中,将路由硬件(routing hardware)称为“RH”。
通常,RH根据储存在一个或多个表中的数据来处理输入分组。例如,路由表可以储存用于根据分组报头中的字段来对分组进行路由的规则,并且防火墙表可以定义分组的安全策略。
为了监视RH的操作,例如用于诊断,用于实时统计信息收集,用于针对RH可能对其配置进行的任何修改来更新主机,以及用于其他目的,RH通常会生成状态报告数据,该状态报告数据继而被转发到处理器。处理器可以使用这样的状态数据来调整RH的操作(例如,通过修改路由表)以获得更好的性能。
在下文中,将RH配置表称为“RH配置数据库”。在以下描述的上下文中,术语“配置数据库”是指RH可能为其操作所需的任何表格数据,包括 (但不限于)路由表、权限表、服务类表、固件以及队列配置数据。
还将RH可能向处理器发送的任何表格数据称为“RH状态数据库”(或“硬件状态数据库”)。在以下描述的上下文中,术语“RH状态数据库”是指RH可能向处理器发送的任何表格数据,包括(但不限于)监视表、队列长度统计信息、控制状态转储、计数器转储、分组采样转储和/或路由表(路由表有时被RH修改)。RH配置数据库和RH状态数据库统称为“RH数据库”。在一些实际情况下,RH数据库可能非常大,例如,大约10MB或更大。
网络接口(NI)也称为网络接口控制器(NIC),是发送和接收分组的网元的另一示例。典型的NI包括一个或多个端口,向端口和从端口传送分组的分组处理硬件,以及与主机系统通信的处理器。NIC中的分组处理硬件通常根据处理器提供的一个或多个表(也称为数据库)来处理分组。分组处理硬件可以生成向处理器转发的RH状态数据。
在本上下文中,术语“分组处理硬件”是指交换机中的RH、NI中的分组处理硬件,以及其他类型网元中的其他类似硬件。术语“数据库”是指在网元(例如,交换机或NI)的处理器与分组处理硬件之间传送的各种数据库。例如,数据库可以包括交换机中的RH数据库(例如,配置数据库或RH状态数据库),或者NI中用于配置的数据库或状态数据库。
本文提出的本发明的实施方式提供了在处理器与分组处理硬件之间的数据库的加速传送。在一些实施方式中,分组处理硬件包括快速数据传送电路,该快速数据传送电路被配置用于在处理器与网络端口之间以及在处理器与分组处理硬件之间传送数据。举例而言,下面的描述主要涉及交换机中的RH 与处理器之间的交互。所公开的技术能够以类似的方式应用于NIC和其他合适的网元。
在实施方式中,为了将RH配置数据库传送到RH,处理器首先将数据库储存在可由RH访问的存储器中,并且继而在也可由RH访问的队列中写入一个或多个工作队列元素。队列可以位于相同或不同的RH可访问存储器中。工作队列元素(work-queue element,“WQE”)通常(但不一定)是连续的传送指令;例如,将起始于地址0x208C0000的1M字节从位置0x440000传送到表6。处理器继而通知RH已准备好传送配置数据库。
接下来,RH读取WQE并从存储器加载配置数据库。在实施方式中,RH 向处理器发送完成队列元素(completion queue element,“CQE”)以指示出 RH已经完成对应的WQE的执行。在一些实施方式中,RH将CQE写入处理器和RH都可访问的存储器中。
根据实施方式,RH通过快速系统总线(例如,高速外围组件互连 (“PCIe”))向存储器或从存储器传送RH数据库。RH可以预取工作元素并利用快速DMA电路,并且因此RH数据库的传送能够以系统总线所支持的最大速度不间断地进行。
在一些实施方式中,当RH数据库或其部分改变时(例如,新的路由表准备就绪),阻止RH传送分组,直到新表在RH中完全加载。因此,分组在缓冲区中累积,从而增加了时延。在极端情况下,分组可能会被丢弃。因此,将数据库表从处理器高速加载到RH至关重要。
在一些实施方式中,当RH执行加载新配置表的WQE时,处理器通过检查所有相关联的CQE来验证该表已经被完全加载。只有这样,处理器才能向 RH指示出新配置表应当生效。
根据实施方式,RH状态数据库例如可以包括RH变量(诸如队列长度、分组大小等)以及其他状态表的运行时监视。在典型的实施方式中,RH可以用新的状态值不断地更新状态数据库。处理器可能需要例如定期地读取状态表,或者举另一例而言,当一些分组被丢弃时读取状态表。如上所述,本文公开的技术提供了高效的RH数据库传送,包括状态表上传。
在一些实施方式中,尽管并非必须,为通信分组的传送和数据库的传送保持单独的队列。替代地,可以使用给定的工作队列来对与通信分组和数据库两者有关的WQE进行排队,以及/或者可以使用给定的完成队列来对与通信分组和数据库两者有关的CQE进行排队。在一些实施方式中,数据传送电路并行传送(上传和/或下载)两个或更多个数据库。
因此,根据本文提供的本发明实施方式,可以使用还用于在端口与处理器之间发送和接收网络分组的现有DMA电路,从处理器下载或向处理器上传 RH数据库。传送是快速的,并且处理器有效地分担了传送任务。
系统描述
在下面的描述中,术语“网元”通常是指网络交换机;然而,根据本发明的实施方式决不限于网络交换机;相反,根据本发明的实施方式,“网元”是指任何发送和/或接收网络数据的装置,例如路由器或网络接口控制器 (NIC)。
图1是示意性地图示根据本发明实施方式,在网元中的RH配置数据库的传送的框图。网元100包括处理器102、RH 104和系统总线106,该系统总线106耦合到处理器和RH两者(并且可能耦合到网元中未示出的其他单元,例如存储单元)。系统总线例如可以是高速外围组件互连(“PCIe”)。
根据实施方式,处理器108通常(但并非排他地)集成在印刷电路板(PCB) 中。处理器包括CPU 108和随机访问存储器(RAM)110以及未示出的其他单元。
为了将数据从处理器快速传送到RH,处理器在RAM 110中分配区域:缓冲区区域112、工作队列元素(WQE)区域114以及完成队列元素(CQE) 区域116。
根据实施方式,RH 104包括出口端口118、入口端口120(未参考图1 的示例实施方式进行描述)、路由表122以及其他配置表124。为了将数据传送到路由表(和传送到其他配置表)以及传送到出口端口,RH 104还包括数据传送电路126(为简洁起见,在本文中也称为“电路”)和读取队列128(RH 104通常还包括其他单元,例如为清楚起见而未在本文示出的纵横接线器)。
根据实施方式,路由表122、其他配置表124和读取队列128是RAM或其部分。例如,所有读取队列128可以储存在单个RAM模块中,而路由表 122和其他配置表124可以储存在为快速访问而优化的单独的RAM模块中。
电路126被配置用于从RAM 110读取WQE,执行WQE,以及将对应的 CQE写入RAM中。
根据图1的示例实施方式,WQE包括用于从缓冲区传送数据的指令。数据可以指向出口端口118(例如,边界网关协议(Border Gateway Protocol, BGP)、内部控制消息协议(Internal Control Message Protocol,ICMP)),或者指向RH配置表(通过读取队列128),诸如路由表122和其他配置表 124。
在实施方式中,电路执行的与从处理器到路由表的数据传送有关的活动包括:A)通过系统总线106从RAM 110读取WQE;B)通常通过经由系统总线106和经由读取队列128将数据块从缓冲区112传送到路由表122来执行WQE;以及C)将CQE 116写入RAM 110中。
上述结构允许从处理器快速传送数据:CPU干预仅限于传送前(WQE的准备)和传送后(检查CQE);队列和其他硬件(例如,PCIe接口;未示出) 对传送的数据进行组织以实现最大的PCIe传送速率,并且队列允许在数据传送的中断最少或没有中断的情况下预取WQE和流水线操作。
应当注意,当将数据从处理器传送到出口端口118,到路由表122或到其他配置表124时,电路执行相同的活动A到C——区别在于选定的读取队列和最终目的地(在一些实施方式中,网元100可以包括附加路径,以通过出口端口向网络发送分组)。
因此,根据图1中所示和上文描述的示例实施方式,RH中的电路将RH 数据库高效地从处理器传送到任何RH配置表或任何出口端口。特别是,RH 数据库到配置表的传送能够以可与输出出口分组的速度相比的速度,并且在不需要CPU负载或CPU负载很少的情况下高效地完成。
图2是示意性地图示根据本发明实施方式,在网元中的RH状态数据库的传送的框图。网元200包括处理器202、RH 204和系统总线206。包括CPU 208和RAM 210的处理器可以与图1的处理器102、CPU 108和RAM 110相同,并且系统总线206可以与系统总线106相同(RH204通常还包括其他单元,例如为清楚起见而未在本文示出的纵横接线器)。
为了将数据从RH快速传送到处理器,处理器在RAM 210中分配区域:缓冲区区域212、WQE区域214,以及CQE区域216。根据实施方式,RH 204 包括出口端口218(未参考图2的示例实施方式描述)、入口端口220以及状态表222。为了从状态表以及从入口端口传送数据,RH 204还包括数据传送电路224(为简洁起见,在本文中也称为“电路”)和写入队列226。
根据实施方式,状态表222和写入队列226是RAM或其部分。例如,所有写入队列226可以储存在单个RAM模块中,而状态表222可以储存在为快速访问而优化的单独的RAM中。
电路224被配置用于从RAM 202读取WQE,执行WQE以及将对应的 CQE写入RAM中。根据图2的示例实施方式,WQE包括用于将数据传送到缓冲区的指令。数据可以来源于入口端口220(例如,BGP、ICMP)或者来源于RH状态表,例如,状态表222。
上述结构允许将数据快速传送到处理器:CPU干预仅限于传送前(WQE 的准备)和传送后(检查CQE);队列和其他硬件(例如,PCIe接口;未示出)对传送的数据进行组织以实现最大的PCIe传送速率,并且队列允许在数据传送的中断最少或没有中断的情况下预取WQE和流水线操作。
在实施方式中,电路执行的与从状态表到缓冲区的数据传送有关的活动包括:A)通过系统总线206从RAM 210读取WQE;B)通常通过经由写入队列226和系统总线206将数据块从状态表传送到缓冲区212来执行WQE;以及C)将CQE 216写入RAM 210中。
应当注意,当从入口端口218或从状态表222将数据传送到处理器时,电路执行相同的活动A到C——区别在于选定的写入队列和数据源(在一些实施方式中,网元200可以包括附加路径,以通过入口端口从网络接收分组)。
因此,根据图2中所示和上文描述的示例实施方式,RH中的电路高效地将数据从任何RH表或从任何入口端口传送到处理器。特别是,从状态表的数据传送能够以可与输入入口分组的速度相比的速度,并且在不需要CPU负载或CPU负载很少的情况下高效地完成。
可以理解,上述网元100和200、处理器102和202以及RH单元104和 204的结构是以举例方式引用的。根据所公开的技术的网元、处理器和RH单元并不限于以上描述。例如,在备选实施方式中,CPU可以是多个CPU;缓冲区112和212可以是分布式的;在实施方式中,缓冲区可以位于耦合到系统总线的单独的存储器中。在一些实施方式中,CQE和WQE可以储存在发送队列中。
上述阶段A至C的顺序不一定是连续的。例如,在一些实施方式中,电路提前提取WQE组。队列128和226可以储存在单个或分开的RAM中。
图3是示意性地图示根据本发明实施方式,通过共享缓冲区在处理器与 RH之间的RH数据库的双向传送的框图。图3中所示的示例实施方式结合了图1的示例实施方式的数据下载能力和图2的示例实施方式的数据上传能力,并添加了共享缓冲区。
网元300包括处理器302、RH 304,以及系统总线306。处理器302和系统总线306可以等同于处理器102、202和系统总线106、206,并且将不进行描述。
RH 304包括电路306、配置表308、状态表310、入口端口312以及出口端口314。(RH304通常还包括其他单元,例如为清楚起见而未在本文示出的纵横接线器)。
为了节省硅面积,RH 304还包括共享队列316,该共享队列316可以用于所有的数据传送。电路306控制共享队列,该共享队列对从处理器向任何配置表和任何出口端口,以及从任何入口端口或状态表向处理器传送的数据进行缓冲。
因此,根据图3中所示和上文所述的示例实施方式,在CPU的负载很少或没有CPU负载的情况下,以及利用共享RH缓冲区,促进了在处理器与RH 配置表、状态表、入口端口和出口端口之间的高效双向数据传送。
图4是示意性地图示根据本发明实施方式,用于将新的路由表从处理器传送到RH的方法的流程图400。该流程图由CPU和电路(在图1中相应地为108和126)共同执行。
该流程起始于写入路由表步骤402,其中CPU在缓冲区112(图1)中准备新的路由表。CPU继而继续进行写入CQE步骤404,并准备一系列CQE,该一系列CQE将路由表的传送破碎成多个较小的(例如,连续的)数据块传送操作。
CPU在新路由表生效之前执行步骤402和步骤404。在实施方式中,CPU 可以通过编辑先前的表就地准备新的表;在其他实施方式中,CPU可以通过将模板路由表加载到缓冲区以及继而编辑模板表来准备表。
接下来,CPU进入发送门铃步骤406,其中CPU向电路指示出新的路由表已准备好下载。该指示例如可以通过在PCIe总线上发送适当的消息来完成。在一些实施方式中,在发送门铃之前,可以向电路发送通知(在流程图400 中未示出),该通知例如可以描述门铃的性质。
电路在等待门铃步骤410处开始流程,其中电路等待处理器发出步骤406 的门铃。在步骤410中,RH根据储存在先前路由表中的规则对分组进行路由。当电路接收到门铃时,电路进入停止分组路由步骤412,其中RH停止对传入分组进行路由。
从此时起,传入分组在入口队列中累积;至关重要的是减少累积时间,避免分组丢弃,或者备选地避免针对入口队列使用大缓冲区。
在步骤412之后,电路开始下载新的路由表。电路进入读取WQE步骤 414,并从RAM110(图1)读取第一WQE 116;接下来,电路进入执行WQE 步骤416并执行WQE(通常通过读取队列128将连续的数据块从缓冲区112 传送到路由表122)。
在执行WQE之后,电路进入发送CQE步骤418,并将完成队列条目写入CQE区域116(图1)中。CQE可以包括各个字段,这些字段允许CPU验证WQE已成功完成。
接下来,电路进入检查最后WQE步骤420,并检查当前WQE是否为最后的WQE。如果存在更多的CQE,则电路将会重新进入步骤414,以获得下一WQE。
在步骤406中发送门铃之后,CPU进入获取CQE步骤408,并等待来自电路的CQE。重要的是应当注意,在电路执行WQE期间,CPU处于空闲状态(实际上,正在忙于执行其他任务),并且因此CPU的负载很低。当CPU 接收到CQE时,CPU进入检查CQE步骤422,并针对预定义的成功/失败准则来测试CQE(例如,包括CRC签名验证,以及检查所传送的数据的大小)。如果CQE测试失败,则CPU可以中止流程。如果测试通过,则CPU进入检查最后CQE步骤424,并检查当前CQE是否为最后的CQE。如果CQE不是最后的CQE,则CPU将会重新进入步骤408,以获得下一CQE。如果CQE 是最后的CQE,则CPU将会进入通知完成步骤426,并向电路指示出可以开始使用新的路由表。在步骤426之后,CPU结束流程。
如果在步骤420中,电路发现当前WQE是最后的WQE,则电路进入等待完成通知步骤428,并等待处理器发出完成通知。当电路接收到完成通知时,电路进入重新开始分组路由步骤430,其中RH根据新的路由表重新开始分组路由。此后,电路重新进入步骤410,并等待下一配置表加载。
因此,根据图4中所示和上文描述的示例流程图,可以将新的路由表从处理器加载到RH。使用WQE-CQE协议以高速且CPU负载较少的方式完成加载。用于将数据传送到路由表的机制与用于将数据传送到出口端口的机制相同;因此,相对于其他解决方案,实现成本低且性能高。
关联于表上传的流程与下载流程相似;主要区别在于数据传送的方向。图5是示意性地图示根据本发明实施方式,用于将新的状态表从RH传送到处理器的方法的流程图500。该流程图由CPU和电路(在图2中相应地为208 和226)共同执行。
该流程起始于准备表缓冲区步骤502,其中CPU准备用于接收RH状态数据库的缓冲区212(图2)。CPU继而继续进行写入CQE步骤504,并准备一系列CQE,该一系列CQE将状态表的传送破碎成数据块传送操作。
CPU在当前状态表为“有效”(即注册RH状态)的同时执行步骤502和步骤504。为了加载状态表,CPU进入发送门铃步骤506,其中CPU向电路指示出当前状态表应当被冻结并发送给处理器。该指示例如可以通过在PCIe 总线上发送适当的消息来完成。在一些实施方式中,可以在发送门铃之前向电路发送通知(在流程图500中未示出),该通知例如可以描述门铃的性质。
电路在等待门铃步骤510处开始流程,其中电路等待处理器发出步骤506 的门铃。当电路接收到门铃时,电路进入停止状态更新步骤512,其中RH的状态更新停止,并且状态表冻结。
在步骤512之后,电路开始上传冻结的状态表。电路进入读取WQE步骤 514,并从RAM 210(图2)读取第一WQE 216;接下来,电路进入执行WQE 步骤516,并执行WQE(通常通过读取队列226将连续的数据块从状态表222 传送到缓冲区212)。
在执行WQE之后,电路进入发送CQE步骤518,并将完成报告条目写入CQE区域216(图2)中。CQE可以包括各个字段,这些字段允许CPU验证WQE已成功完成。
接下来,电路进入检查最后WQE步骤520,并检查当前WQE是否为最后的WQE。如果存在更多的CQE,则电路将会重新进入步骤514,以获得下一WQE。
在步骤506中发送门铃之后,CPU进入获取CQE步骤508,并等待来自电路的CQE。在电路执行WQE期间,CPU可以自由执行无关的任务,并且因此CPU的负载低。当CPU接收到CQE时,CPU进入检查CQE步骤522,并针对成功/失败准则来测试CQE。如果CQE测试失败,则CPU可以中止流程。如果测试通过,则CPU进入检查最后CQE步骤524,并检查当前CQE 是否为最后一个CQE。如果CQE不是最后一个CQE,则CPU将会重新进入步骤508,以获得下一CQE。如果CQE是最后一个CQE,则CPU将会进入通知完成步骤526,并向电路指示出可以使用新的状态表来重新开始状态更新。在步骤526之后,CPU结束流程。
如果在步骤520中,电路发现当前WQE是最后的WQE,则电路进入等待完成通知步骤528,并等待处理器发出完成通知。当电路接收到完成通知时,电路进入重新开始状态更新步骤530,其中重新开始状态更新,并且将状态注册在新的状态表中。此后,电路重新进入步骤510,并等待下一状态表加载。
因此,根据图5中所示和上文描述的示例流程图,可以将状态表从RH 加载到处理器。在以高速且CPU负载较少的情况下使用WQE-CQE协议完成加载。用于将状态表传送到处理器的机制与用于将数据从入口端口传送到处理器的机制相同;因此,相对于其他解决方案,实现成本低且性能高。
可以理解,上述流程400和流程500是以举例方式引用的。根据所公开的技术的流程不限于以上描述。例如,在备选实施方式中,步骤422和步骤 522中的检查失败可以触发重试而不是中止,并且仅在预设次数的失败重试之后流程才会中止。在一些实施方式中,电路预取多个WQE,并从内部队列执行WQE。
在实施方式中,CPU将进入步骤406的时间推迟到将要加载新路由表的时间(亦即,新表将会准备好下载,但加载将会被推迟)。类似地,在图5 中,电路可以推迟进入步骤506。
在一些实施方式中,当状态表上传发生时,不停止状态更新。类似地,在实施方式中,当加载新的路由表时,不停止路由。
在一些实施方式中,添加超时检查,以便如果CPU未能在预定义的时间限制内发送第二门铃,则停止流程(并恢复起用先前的表)。
包括处理器102、202、302和RH单元104、204、304及其所有子单元的网元100、200和300的配置、方法400和500是示例配置和方法,其纯粹为了概念清晰而示出。在备选实施方式中可以使用任何其他合适的配置和方法。
例如,在一些实施方式中,有时增量地更新RH配置表,并且因此需要与方法400不同的方法。在一些实施方式中,可以使用WQE-CQE以外的协议;例如,可能不需要CQE。
在各个实施方式中,电路126、204和306的不同元件可以使用适当的硬件来实现,诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列 (FPGA),或者ASIC和FPGA的组合。
CPU 108和208中的每一个通常包括通用处理器,该通用处理器以软件编程从而执行本文描述的功能。软件例如可以通过网络以电子形式下载到处理器,或者其可以替代地或另外地提供和/或储存在诸如磁、光或电子存储器等非暂时性有形介质上。
尽管本文所述的实施方式主要涉及交换机中的路由硬件数据库的传送以及总体上涉及NIC中的数据库的传送,但本文所述的方法和系统亦可用于其他应用中,诸如计算和遥测。
因此应当理解,上述实施方式是作为示例引用的,且本发明不受上述的具体图示和描述的限制。相反,本发明的范围包括上述各个特征的组合和子组合,以及本领域技术人员在阅读以上描述时所想到的,且未在现有技术中公开的变化和修改。通过引用并入本专利申请书中的文档应被视为本申请书的组成部分,除非这些并入的文档中所定义的任何术语达到与本说明书中明确或隐含作出的定义相冲突的程度,在此情况下应当仅考虑本说明书中的定义。

Claims (8)

1.一种网元,其包括:
一个或多个端口,其用于通过网络进行通信;
处理器;以及
分组处理硬件,其被配置用于从所述端口和向所述端口传送分组,所述分组处理硬件还包括数据传送电路,该数据传送电路用于与所述处理器的数据传送,
其中所述处理器和所述数据传送电路被配置用于通过以下方式在彼此之间传送(i)用于在所述端口与所述处理器之间传送的一个或多个通信分组,以及(ii)用于在所述分组处理硬件与所述处理器之间传送的一个或多个数据库:
由所述处理器将所述通信分组和所述数据库两者的传送转换成工作元素,以及将所述工作元素发布在所述处理器的存储器中的一个或多个工作队列上;以及
使用所述数据传送电路,执行所述工作元素,以便传送所述通信分组和所述数据库两者,其中,
所述数据库包括以下各项中的一项或多项:(i)配置数据库,其由所述处理器发送到所述分组处理硬件以供配置所述分组处理硬件,以及
(ii)硬件状态数据库,其由所述分组处理硬件发送到所述处理器。
2.根据权利要求1所述的网元,其中所述分组处理硬件包括共享队列,该共享队列用于缓冲与所述通信分组和所述数据库两者相关联的数据。
3.根据权利要求1所述的网元,其中所述网元包括网络交换机,并且其中所述分组处理硬件被配置用于在所述端口之间路由所述分组。
4.根据权利要求1所述的网元,其中所述网元包括网络接口,并且其中所述分组处理硬件被配置用于在所述端口与主机系统之间转发所述分组。
5.一种网元中的通信方法,所述网元包括连接到网络的一个或多个端口、处理器以及分组处理硬件,所述方法包括:
使用所述分组处理硬件从所述端口和向所述端口传送分组;
通过以下方式在所述处理器与所述分组处理硬件的数据传送电路之间传送(i)用于在所述端口与所述处理器之间传送的一个或多个通信分组,以及(ii)用于在所述分组处理硬件与所述处理器之间传送的一个或多个数据库:
由所述处理器将所述通信分组和所述数据库两者的传送转换成工作元素,以及将所述工作元素发布在所述处理器的存储器中的一个或多个工作队列上;以及
使用所述数据传送电路,执行所述工作元素,以便传送所述通信分组和所述数据库两者,其中,传送所述数据库包括以下各项中的一项或多项:(i)将配置数据库从所述处理器传送到所述分组处理硬件以供配置所述分组处理硬件,以及(ii)将硬件状态数据库从所述分组处理硬件传送到所述处理器。
6.根据权利要求5所述的方法,其中传送所述通信分组和所述数据库包括在所述分组处理硬件中的共享队列中缓冲与所述通信分组和所述数据库两者相关联的数据。
7.根据权利要求5所述的方法,其中所述网元包括网络交换机,并且其中传送所述分组包括在所述端口之间路由所述分组。
8.根据权利要求5所述的方法,其中所述网元包括网络接口,并且其中传送所述分组包括在所述端口与主机系统之间转发所述分组。
CN202010798532.XA 2019-08-11 2020-08-11 一种网元及网元中的通信方法 Active CN112398762B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/537,576 US10915479B1 (en) 2019-08-11 2019-08-11 Hardware acceleration for uploading/downloading databases
US16/537,576 2019-08-11

Publications (2)

Publication Number Publication Date
CN112398762A CN112398762A (zh) 2021-02-23
CN112398762B true CN112398762B (zh) 2022-08-05

Family

ID=74188658

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010798532.XA Active CN112398762B (zh) 2019-08-11 2020-08-11 一种网元及网元中的通信方法

Country Status (3)

Country Link
US (1) US10915479B1 (zh)
CN (1) CN112398762B (zh)
DE (1) DE102020210144A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210311895A1 (en) * 2020-11-16 2021-10-07 Intel Corporation Disaggregation of computing devices using enhanced retimers with circuit switching

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105814852A (zh) * 2013-09-19 2016-07-27 华为技术有限公司 降低端到端网络报文传输延迟的传输和接收设备
CN109313618A (zh) * 2016-06-30 2019-02-05 英特尔公司 用于分组传递的图形处理单元(gpu)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644784A (en) 1995-03-03 1997-07-01 Intel Corporation Linear list based DMA control structure
US8051212B2 (en) * 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
US20030065856A1 (en) * 2001-10-03 2003-04-03 Mellanox Technologies Ltd. Network adapter with multiple event queues
US20080002711A1 (en) * 2006-06-30 2008-01-03 Bugenhagen Michael K System and method for access state based service options
US7668984B2 (en) * 2007-01-10 2010-02-23 International Business Machines Corporation Low latency send queues in I/O adapter hardware
US7813339B2 (en) * 2007-05-02 2010-10-12 Tehuti Networks Ltd. Direct assembly of a data payload in an application memory
US10454991B2 (en) * 2014-03-24 2019-10-22 Mellanox Technologies, Ltd. NIC with switching functionality between network ports

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105814852A (zh) * 2013-09-19 2016-07-27 华为技术有限公司 降低端到端网络报文传输延迟的传输和接收设备
CN109313618A (zh) * 2016-06-30 2019-02-05 英特尔公司 用于分组传递的图形处理单元(gpu)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"A survey on design and analysis of robust IoT architecture";B. Dhanalaxmi等;《2017ICIMIA》;20170713;全文 *
"单通道10Gbps在线网络安全处理器设计研究与实现";牛赟;《清华大学博士学位论文》;20150915;全文 *

Also Published As

Publication number Publication date
DE102020210144A1 (de) 2021-02-11
US20210042251A1 (en) 2021-02-11
CN112398762A (zh) 2021-02-23
US10915479B1 (en) 2021-02-09

Similar Documents

Publication Publication Date Title
CN110941576B (zh) 具有多模pcie功能的存储控制器的系统、方法和设备
KR102055535B1 (ko) 탄성 패브릭 어댑터 - 무접속의 신뢰할 수 있는 데이터그램
US8341237B2 (en) Systems, methods and computer program products for automatically triggering operations on a queue pair
US10740162B2 (en) Intercepting socket metadata
US9864606B2 (en) Methods for configurable hardware logic device reloading and devices thereof
Shashidhara et al. {FlexTOE}: Flexible {TCP} Offload with {Fine-Grained} Parallelism
US8843689B2 (en) Concurrent repair of the PCIe switch units in a tightly-coupled, multi-switch, multi-adapter, multi-host distributed system
US20060262796A1 (en) Network acceleration architecture
JP6004079B2 (ja) スイッチ及びプログラム
EP1545088B1 (en) Method and apparatus for providing smart offload and upload of network data
US11294841B1 (en) Dynamically configurable pipeline
JP2008271538A (ja) パケットデータ比較器及びそれを用いたウイルスフィルタ、ウイルスチェッカ、ネットワークシステム
US10601692B2 (en) Integrating a communication bridge into a data processing system
JPWO2009096029A1 (ja) パケット処理装置およびパケット処理プログラム
CN112398762B (zh) 一种网元及网元中的通信方法
JP5402688B2 (ja) パケット転送システム、パケット転送システム内におけるパケット集中回避方法
US7639715B1 (en) Dedicated application interface for network systems
US20200220952A1 (en) System and method for accelerating iscsi command processing
US8516150B2 (en) Systems and methods for multiple computer dataloading using a standard dataloader
US10944634B1 (en) Optimization for network connections
US7764676B1 (en) Method and system for processing network information
US11405324B1 (en) Packet serial number validation
US9736080B2 (en) Determination method, device and storage medium
US11228657B2 (en) Hybrid proxying with user space hold
EP3266175A1 (en) Determining actions to be immediately performed on a network packet with an application specific integrated circuit

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220419

Address after: Israel Yuekeni Mourinho

Applicant after: Mellanox Technologies, Ltd.

Address before: Israel Lai Ananna

Applicant before: Mellanox Technologies TLV Ltd.

GR01 Patent grant
GR01 Patent grant