CN1283077C - 提高网络处理器服务多数据端口转发性能的方法 - Google Patents
提高网络处理器服务多数据端口转发性能的方法 Download PDFInfo
- Publication number
- CN1283077C CN1283077C CNB021483647A CN02148364A CN1283077C CN 1283077 C CN1283077 C CN 1283077C CN B021483647 A CNB021483647 A CN B021483647A CN 02148364 A CN02148364 A CN 02148364A CN 1283077 C CN1283077 C CN 1283077C
- Authority
- CN
- China
- Prior art keywords
- data
- message
- information
- access control
- unit
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种涉及网络数字信息传输的提高网络处理器服务多个数据端口转发性能的方法。该方法包括以下步骤:数据进入网络处理器的某个数据端口,网络处理器的某个空闲线程接收该数据,同时屏蔽该数据端口,网络处理器根据保存在存储信息单元中前一次处理的状态信息,对该数据进行处理,若所接收数据为报文的第一个介质访问控制包,则在数据进行协议处理之前申请缓冲区描述符,提前获得数据存储地址信息,在所述的存储信息单元更新后,立即解除端口屏蔽,使网络处理器可并行进行后续数据的处理。本发明提供的方法,在网络处理器服务多数据端口时,有效提高单端口数据转发速率及网络处理器并行处理能力。
Description
技术领域
本发明涉及网络数字信息的传输,尤其涉及一种提高网络处理器服务多个数据端口时转发性能的方法。
背景技术
随着通信对网络带宽需求的不断扩大,增加和更新网络设备是一种硬解决方案,而与此同时,充分挖掘网络设备的处理能力,提高其处理性能也成为一种节省投资的软解决方案,目前考虑到研发周期、性能及维护等多方面的因素,许多设备都采用了网络处理器(NetworkProcessor)来实现数据的处理,因此,最大限度的提高网络处理器的性能成为实现前面目标的关键,在目前已经投入使用的众多网络处理器中,Intel公司的IXP1200系列提供了一套比较通用、灵活的处理机制,为其性能的提高提供了较大的可扩展空间。
网络处理器是一种可编程的微处理器,经过优化后用于处理数据包,特别地,它可以用于处理开放系统互连OSI的3-7层路由任务,如包头分析、最长匹配或精确匹配等模式匹配、比特域操作、表查找、报文修改、数据搬移(Data Movement)等等,这些任务都必须以很快的速度完成。为了提高数据的并行处理能力,网络处理器内部一般都包含多个称为微引擎(Microengine)的微型处理器,微引擎通常是多线程的(Multithreaded),通常一个网络处理器会服务多个数据端口,一般用空闲的线程去服务有数据的端口,线程和端口不绑定,这样,每个微引擎在处理当前报文的时候,通常有一个或多个报文处于“挂起”状态,如果由于过度地访问存储器等原因,当前报文需要暂停处理,则微引擎将立刻切换到其它处于“挂起”状态的报文继续处理,这样,微引擎将不会浪费时间去等待存储器返回的结果,可以以较高的效率进行操作。
在目前的慢速端口工作模式下,IXP1200系列网络处理器通过外挂的介质访问控制MAC芯片可以同时服务于多个10/100Mbps数据端口,当某个端口的报文数据在介质访问控制MAC芯片的先进先出缓冲区FIFO中积累到一定的门限时,介质访问控制MAC芯片就会将报文状态寄存器的相应端口比特置位,设置状态寄存器状态位为有效,以表示该端口的数据已经就绪了,网络处理器则会不断地检测该寄存器,一旦发现某个端口的数据就绪,就会分配空闲的接收线程去处理这些数据,线程的一次读取操作所对应的数据称为一个介质访问控制包MPKT,即MACPacket,一个MPKT单元通常小于等于64字节,一个报文包含多个MPKT单元的数据。由于报文状态寄存器的置位、查询以及数据读取的操作是由MAC芯片和网络处理器中多个接收线程异步进行的,而报文状态寄存器当前状态的更新需要花费一定的周期,接收处理线程的查询频率又很高,因此,在慢速端口处理模式下,某个时刻的状态标志极有可能被多个接收处理线程获得,导致相同的MPKT被处理了多次,即产生了接收重入现象,为了确保报文所有MPKT的顺序、正确处理,防止其他线程对同一端口进行非法的异步操作,因此采用端口调度屏蔽机制,前一个MPKT处理完成以后才会解屏蔽接收端口,确保网络处理器在每次查询同一标志时,相应的比特都是被更新过的。
此外,由于报文是以MPKT为单位逐段被读取到网络处理器中进行处理的,因此,相邻MPKT之间在处理时间上必然存在着一定的先后顺序,同时在处理过程中会产生一些中间状态信息,这些信息需要在MPKT之间进行传递,现有的网络处理器中采用MPKT之间的通信邮箱机制,用于在MPKT之间传递信息,报文的所有MPKT都共享一个信息单元,该信息单元主要用于保存报文在动态随机存取存储器SDRAM中的存储地址、报文的输出端口、报文在进行协议处理时的结果状态信息等信息,当前MPKT完成处理以后就保存这些信息,下一个MPKT再从该单元中恢复这些信息,以供存储数据和报文入队列时使用。
数据的转发首先需要将要转发的数据全部接收并保存在网络处理器外部的动态随机存取存储器SDRAM中,再根据转发要求把数据从动态随机存取存储器SDRAM中读出并发送出去。MPKT数据被接收以后首先存放在网络处理器的接收先进先出缓冲器RFIFO中,然后根据MPKT的属性进行不同的操作,分别完成协议处理、数据的转存储、报文入发送端口队列以及通信单元信息的保存等处理。第一个MPKT通常包含有报文的开放系统互连OSI第2层和第3层的信息,是确定报文下一跳路由的核心处理对象,除此以外,它还要在完成协议处理以后,进行转存储之前申请缓冲区描述符BD(Buffer Descriptor),并计算出报文在动态随机存取存储器SDRAM中的存放地址,以供报文的其他MPKT存储时使用,缓冲区描述符BD是对一个报文的描述,包括报文的存放地址和长度等信息,存放在网络处理器外部的静态随机存取存储器SRAM中,其地址,即BD指针,与动态随机存取存储器SDRAM中的报文存储地址一一对应;中间的MPKT不用进行协议处理,通常只是进行转存储,即简单地将MPKT从RFIFO复制到SDRAM中;最后一个MPKT标志着整个报文已经接收完毕,可以将其置入指定的输出端口队列里,等待发送处理。
如图1所示,现有的处理机制如下:
1)报文数据被介质访问控制MAC芯片接收到对应端口的先进先出缓冲区FIFO中,然后介质访问控制MAC芯片设置状态寄存器状态位为有效。
2)网络处理器查询端口状态,发现某端口的数据就绪以后就立即分配一个空闲线程来接收、处理这些数据,与此同时,设置端口掩码,屏蔽掉当前的端口,防止其他接收线程的非法异步操作。
3)后续的MPKT取出前一次处理保存在芯片内存储单元中的数据状态信息,完成数据的转存储等处理。
4)第一个MPKT需要进行协议处理,后续的MPKT则直接完成数据从接收先进先出缓冲器RFIFO到动态随机存取存储器SDRAM的转存储。
5)第一个MPKT在完成协议处理以后,进行转存储之前申请BD。
6)当前MPKT处理的状态信息保存在芯片内存储单元中,供后续数据处理时调用。
7)为了确保处理的顺序,只有当前MPKT完成处理以后才能够解屏蔽端口,以继续接收、处理下一个MPKT。
在现行处理机制中,第一个MPKT在协议处理完成以后才申请BD,然后存储当前MPKT的数据,直到该MPKT彻底完成处理以后才解屏蔽端口,接着又进行报文下一个MPKT的处理,中间MPKT的处理虽然没有涉及到协议处理,但也基本上是在该MPKT完成处理以后才解屏蔽端口,如图2所示为在现有模式下报文的处理过程示意图,报文处理的时间为TPacket,这种处理方式的好处是设计思想和处理过程比较清晰,并且能够充分确保每次查询时状态信号都是更新过的,但是这种根据MPKT的处理周期来解屏蔽端口的策略可能很不精确,结果很可能是状态寄存器的更新没有用到这么长的时间,网络处理器在状态更新以后、端口解屏蔽之前的这段时间里一直在等待,这样就浪费了很多处理周期,牺牲了处理的效率,使单端口数据转发的速率较低。
发明内容
本发明所要解决的技术问题是:提供一种在网络处理器服务多数据端口时,有效提高单端口数据转发速率及网络处理器并行处理能力的方法。
本发明所采用的方法为:这种提高网络处理器服务多数据端口转发性能的方法,包括以下步骤:
A、数据进入网络处理器的某个数据端口,网络处理器的某个空闲线程接收该数据,同时屏蔽该数据端口;
B、网络处理器根据保存在存储信息单元中前一次处理的状态信息,对该数据进行处理,若所接收数据为报文的第一个介质访问控制包,则在数据进行协议处理之前即申请缓冲区描述符,提前获得数据存储地址信息;
C、在所述的存储信息单元更新后,立即解除端口屏蔽,网络处理器并行进行后续数据的处理。
所述的存储信息单元有两个:报文信息单元和介质访问控制包MPKT信息单元,报文第一个介质访问控制包MPKT的处理状态信息保存在报文信息单元中,后续的介质访问控制包MPKT的处理状态信息保存在介质访问控制包MPKT信息单元中。
所述的报文第一个介质访问控制包的处理状态信息包括:报文路由的下一跳地址信息、输出端口信息。
所述的存储地址信息存储在介质访问控制包信息单元中。
若所接收数据为报文后续的介质访问控制包MPKT,则根据所述的介质访问控制包MPKT信息单元中前一次处理所保存的存储地址信息,将该数据存储在动态随机存取存储器SDRAM中。
若所接收数据为报文的最后一个介质访问控制包MPKT,则根据所述的报文信息单元中保存的第一个介质访问控制包MPKT的处理状态信息,完成报文入发送队列操作。
本发明的有益效果为:在本发明中,在数据进行协议处理前即申请了缓冲区描述符BD,提前获得了数据的存储地址,且每个数据在MPKT信息单元更新后,立即解除端口屏蔽,这样接收处理线程会根据实际情况尽早地解屏蔽端口,尽量实现每当MPKT信息单元更新以后就能够立即处理下一个数据,有效提高了单端口数据转发速率及网络处理器的并行处理能力,且采用双重的信息单元保护机制,确保了报文数据之间的处理顺序和正确性,提高了处理的效率,利用本发明,在协议处理更复杂、分支流程更多的情况下,报文的转发速率有了显著提高。
附图说明
图1为现有模式下的报文转发处理原理示意图;
图2为现有模式下报文的处理过程示意图;
图3为本发明报文转发处理流程图;
图4为本发明中报文的处理过程示意图。
具体实施方式
下面根据附图和实施例对本发明作进一步详细说明:
如图3所示,数据报文进入网络处理器的某个数据端口,以介质访问控制包MPKT为单位逐段被读取到网络处理器中进行处理,每一个MPKT的处理过程至少需要具备两个前提条件,第一,物理端口处于非屏蔽状态,并且状态寄存器的对应比特被置位;第二,能够及时获得前一个MPKT处理完成以后的状态信息,报文的第一个MPKT可能只需要这些信息中的有效标志,以表示新的报文可以开始处理了,其他的MPKT在处理过程中主要是进行数据从接收先进先出缓冲器RFIFO到动态随机存取存储器SDRAM的转存储操作,因此需要获得在SDRAM中的存储地址,而这个地址是在第一个MPKT处理过程中通过申请缓冲区描述符BD获得的;对于最后一个MPKT,还需要获得第一个MPKT处理完成以后的其他信息,以便将报文置入目的端口的发送队列里,等待发送线程的处理。
本发明中,当所接收数据为报文的第一个MPKT时,在该数据进行协议处理前申请缓冲区描述符BD,获得该数据的存储地址,同时,采用一种比较复杂但是更有效的邮箱通信机制,数据经网络处理器处理后,状态信息保存在与该数据端口对应的网络处理器内存储单元中,内存储单元中设置有两个信息单元:报文信息单元和MPKT信息单元,报文信息单元用于保存第一个MPKT的处理状态信息,如报文路由的下一跳地址、输出端口等信息,报文的最后一个MPKT会使用这些信息决定报文将被放到哪个输出队列中;MPKT信息单元用于保存中间MPKT数据的存储地址信息,用于每个MPKT之间的通信,这样,在报文的所有MPKT之间共享两个不同的信息单元,为报文的高效、正确处理提供了双重保证机制,采用这两个信息单元以后,可以最大限度地实现MPKT之间的并行处理:当前MPKT可以计算出报文的存储地址,然后将这些信息保存到MPKT信息单元,并且在适当的时候解屏蔽端口,接着完成后继的处理,下一个MPKT被接收后,根据共享MPKT信息单元中的数据又可以计算出自己的存储地址,同样按照前面的操作进行类似处理,当最后一个MPKT被接收后,需要等待上述两个信息单元中的信息,以此获得自身的存储地址和整个报文的出口信息,并完成报文入队列的操作。
本发明中,网络处理器对当前MPKT进行处理时,在MPKT信息单元更新后就立即解除端口屏蔽,以及时启动下一个MPKT的接收处理,在后续的MPKT的处理过程中,也基本上遵循这一原则,即在允许的条件下尽可能早地解屏蔽端口,从而最大限度地实现MPKT之间的并行处理,解屏蔽端口的具体时间需通过测试后获得,只有当当前MPKT处理到一定程度的时候才能够解屏蔽端口,如果太早的话有可能导致相同MPKT被重复处理,从而产生错误,如果太晚的话又会影响处理效率。
如图4所示为本发明报文的处理过程示意图,从图中可以看出,每一个MPKT启动下一个MPKT进行处理的时间都尽可能地提前了,这主要是因为在本发明中及时地提供了下一个MPKT处理所需的信息并且及时解屏蔽了物理端口,报文处理的时间为TPacket,在接收处理线程等资源足够多的状态下,相同报文的处理时间可以缩短t1+t2+t3+...+tn,这样也就在一定程度上实现了报文转发处理性能的提高。
Claims (6)
1.一种提高网络处理器服务多数据端口转发性能的方法,包括以下步骤:
A、数据进入网络处理器的某个数据端口,网络处理器的某个空闲线程接收该数据,同时屏蔽该数据端口;
B、网络处理器根据保存在存储信息单元中前一次处理的状态信息,对该数据进行处理,若所接收数据为报文的第一个介质访问控制包,则在数据进行协议处理之前即申请缓冲区描述符,提前获得数据存储地址信息;
C、在所述的存储信息单元更新后,立即解除端口屏蔽,网络处理器并行进行后续数据的处理。
2.根据权利要求1所述的提高网络处理器服务多数据端口转发性能的方法,其特征在于:所述的存储信息单元有两个:报文信息单元和介质访问控制包信息单元,报文第一个介质访问控制包的处理状态信息保存在报文信息单元中,后续的介质访问控制包的处理状态信息保存在介质访问控制包信息单元中。
3.根据权利要求2所述的提高网络处理器服务多数据端口转发性能的方法,其特征在于:所述的报文第一个介质访问控制包的处理状态信息包括:报文路由的下一跳地址信息、输出端口信息。
4.根据权利要求2或3所述的提高网络处理器服务多数据端口转发性能的方法,其特征在于:所述的存储地址信息存储在介质访问控制包信息单元中。
5.根据权利要求2或3所述的提高网络处理器服务多数据端口转发性能的方法,其特征在于:若所接收数据为报文后续的介质访问控制包,则根据所述的介质访问控制包信息单元中前一次处理所保存的存储地址信息,将该数据存储在动态随机存取存储器中。
6.根据权利要求2所述的提高网络处理器服务多数据端口转发性能的方法,其特征在于:若所接收数据为报文的最后一个介质访问控制包,则根据所述的报文信息单元中保存的第一个介质访问控制包的处理状态信息,完成报文入发送队列操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021483647A CN1283077C (zh) | 2002-11-11 | 2002-11-11 | 提高网络处理器服务多数据端口转发性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021483647A CN1283077C (zh) | 2002-11-11 | 2002-11-11 | 提高网络处理器服务多数据端口转发性能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1499792A CN1499792A (zh) | 2004-05-26 |
CN1283077C true CN1283077C (zh) | 2006-11-01 |
Family
ID=34233147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021483647A Expired - Lifetime CN1283077C (zh) | 2002-11-11 | 2002-11-11 | 提高网络处理器服务多数据端口转发性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1283077C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100542103C (zh) * | 2006-10-25 | 2009-09-16 | 华为技术有限公司 | 一种热升级网络处理器的方法及装置 |
CN101188560B (zh) * | 2007-12-18 | 2010-04-21 | 杭州华三通信技术有限公司 | 基于转发能力动态检测的板间流控方法和装置 |
CN108833299B (zh) * | 2017-12-27 | 2021-12-28 | 北京时代民芯科技有限公司 | 一种基于可重构交换芯片架构的大规模网络数据处理方法 |
CN116319610B (zh) * | 2023-05-23 | 2023-08-29 | 南京芯驰半导体科技有限公司 | 数据传输方法、装置、电子设备及存储介质 |
-
2002
- 2002-11-11 CN CNB021483647A patent/CN1283077C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1499792A (zh) | 2004-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8856379B2 (en) | Intelligent network interface system and method for protocol processing | |
EP2074756B1 (en) | Method, system, and computer program product for resequencing of data segments received over a bonding channel set | |
EP1116118B1 (en) | Intelligent network interface device and system for accelerating communication | |
US7546399B2 (en) | Store and forward device utilizing cache to store status information for active queues | |
US20050232303A1 (en) | Efficient packet processing pipeline device and method | |
US20070067497A1 (en) | Network interface device that fast-path processes solicited session layer read commands | |
US20040111535A1 (en) | Intelligent network interface system and method for accelerated protocol processing | |
CN102299843B (zh) | 一种基于gpu和缓冲区的网络数据处理方法及系统 | |
KR20130099185A (ko) | 단일 모뎀 보드 상의 개선된 멀티-셀 지원을 위한 방법 및 시스템 | |
US20040054837A1 (en) | Controlling flow of data between data processing systems via a memory | |
EP1014649A2 (en) | Method and system of data transfer control | |
US8996724B2 (en) | Context switched route look up key engine | |
CN1802836A (zh) | 网络协议卸载引擎存储器管理 | |
CN112084136A (zh) | 队列缓存管理方法、系统、存储介质、计算机设备及应用 | |
US20020073243A1 (en) | Intercommunication preprocessor | |
EP1508100A2 (en) | Inter-chip processor control plane | |
CN1283077C (zh) | 提高网络处理器服务多数据端口转发性能的方法 | |
EP1631906B1 (en) | Maintaining entity order with gate managers | |
US6389478B1 (en) | Efficient non-contiguous I/O vector and strided data transfer in one sided communication on multiprocessor computers | |
Feldmeier | A survey of high performance protocol implementation techniques | |
US20080040494A1 (en) | Partitioning a Transmission Control Protocol (TCP) Control Block (TCB) | |
KR20100097705A (ko) | 통신 방법 및 디바이스 | |
US7272139B2 (en) | Fast path routing in a large-scale virtual server computing environment | |
Woodside et al. | Alternative software architectures for parallel protocol execution with synchronous IPC | |
CN100484136C (zh) | 网络协议引擎 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C57 | Notification of unclear or unknown address | ||
DD01 | Delivery of document by public notice |
Addressee: Wang Huotao Document name: Notice of first review |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20061101 |