CN113472688B - 应用在网络装置中的电路及网络装置的操作方法 - Google Patents
应用在网络装置中的电路及网络装置的操作方法 Download PDFInfo
- Publication number
- CN113472688B CN113472688B CN202010238787.0A CN202010238787A CN113472688B CN 113472688 B CN113472688 B CN 113472688B CN 202010238787 A CN202010238787 A CN 202010238787A CN 113472688 B CN113472688 B CN 113472688B
- Authority
- CN
- China
- Prior art keywords
- packet
- memory
- content
- processor
- transmission
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0083—Formatting with frames or packets; Protocol or part of protocol for error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
Abstract
本发明揭露了一种应用在网络装置中的电路及网络装置的操作方法,电路包含有多个端口、一处理器端口、一封包缓冲器、一控制电路以及一分析器,其中该处理器端口通过一总线连接至一内存以及一处理器。在该电路的操作中,该封包缓冲器储存通过该多个端口中的其一所接收的一封包,该分析器对该封包进行分析以判断该封包的处理方式,以及当该分析器判断该封包决定传送软件处理时,该控制电路将该封包的内容多次分段或一次全部通过该处理器端口传送至该内存,以供该处理器进行分析。
Description
技术领域
本发明涉及一种应用在将网络封包传送给处理器的装置中的电路。
背景技术
在位于交换机(switch)或是路由器(router)内的网络通信装置中,网络装置会具有多个端口(port)以接收或输出封包,当网络装置接收到封包时,会先通过内部的硬件电路及查找表(look-up table)做查询,以决定要将封包从哪个端口传送出去;而若是硬件电路判断需要软件介入处理,则硬件电路会将封包送往中央处理器,以通过软件处理的方式来决定是否对封包进行修正或是判断出封包的目的地。如上所述,通过硬件电路来转送(forward)封包较为快速,但若是查找表内没有所接收的封包的相关信息或是硬件无法辨识封包格式时,硬件电路便无法处理而需要通过软件来处理封包;软件转送可以处理所有的封包格式,但是在实际操作上硬件电路在处理失败时会先将整笔封包搬移到处理器可以存取的内存中,之后中央处理器再从内存中读取封包内容进行软件分析以进行适当处置。然而,此传统做法会需要使用到较多的内存空间且占用较多的总线带宽,因而使得系统效能变差,特别是巨型长封包(Jumbo frame)对效能影响更严重。
发明内容
因此,本发明的目的之一在于提出一种应用在网络装置中的技术,其可以有效地降低中央处理器在以软件处理封包时对于系统效能的影响,以解决先前技术中的问题。
在本发明的一个实施例中,揭露了一种应用在一网络装置中的电路,其包含有至少一个端口、一处理器端口、一封包缓冲器、一控制电路以及一分析器,其中该处理器端口通过一总线连接至一内存以及一处理器。在该电路的操作中,该封包缓冲器储存通过该至少一个端口中的其一所接收的一封包,该分析器对该封包进行分析以判断该封包的处理方式,以及当该分析器无法判断该封包的处理方式或决定该封包需要软件处理时,该控制电路可以由软件设定控制将该封包的一部分内容分批传送或一次将全部内容通过该处理器端口传送至该内存,以供该处理器进行进一步处理。
在本发明的另一个实施例中,揭露了一种网络装置的操作方法,其包含有以下步骤:接收一封包;将该封包储存至一封包暂存缓冲器之中;对该封包进行分析以判断该封包的处理方式;以及当无法判断该封包的处理方式或决定该封包需要软件处理时,可以由软件设定控制将该封包的一部分内容分批传送或一次将全部内容传送至一内存,以供一处理器进行软件处理。
附图说明
图1为根据本发明一实施例的网络装置的示意图。
图2A、图2B为根据本发明一实施例的网络装置的操作的流程图。
图3为电路所接收的封包的结构示意图。
具体实施方式
图1为根据本发明一实施例的网络装置100的示意图,其中在本实施例中网络装置100可以是一交换机或是一路由器。如图1所示,网络装置100包含了一处理器102、一内存控制器104以及一DRAM 106,其中电路110包含了一处理器端口112、多个端口114_1~114_N、一封包缓冲器120、一控制电路130、一分析器(parser)140、包含至少一查找表152的内存150、以及一直接内存访问(Direct Memory Access,DMA)控制器160。特别说明,本图仅作为例示性说明,网络装置100不限于是交换机或是路由器。在另一实施例中,该装置所包含的端口可以至少包含一实体端口。在电路110中,处理器端口112用来通过至少一总线108连接至处理器102以及内存控制器104(例如,处理器端口112和内存控制器104之间使用一个总线;处理器102和内存控制器104之间使用一个总线),多个端口114_1~114_N分别用以通过局域网络或是广域网连接至其他电子装置,封包缓冲器(或封包缓存器)120用来暂存由外部进来并等待转送的封包,内存控制器104用来接收总线108上的指令并对DRAM 106做写入或读取操作。
需注意的是,在图1所示的实施例中,DRAM 106可以是任何处理器102可以直接存取的内存,例如静态随机存取内存(Static Random Access Memory,SRAM)。
图2A、图2B为根据本发明一实施例的网络装置100的操作的流程图。在步骤200中,电路110通过多个端口114_1~114_N中的其一,例如第一端口114_1,以自局域网络或是广域网接收一长度为P字节(Bytes)的封包,并将封包储存至封包缓冲器120。在步骤202,分析器140解析封包缓冲器120中所储存的封包内容,并寻找相关查找表152,由于分析器140与查找表搜寻的相关内容为本领域具有通常知识者所熟知,故细节在此不赘述。在步骤204中,控制电路130根据分析器140的判断及查找表搜寻结果来决定如何处理封包。若不需要软件处理则流程进入步骤206的一般硬件转送流程。相关内容为本领域具有通常知识者所熟知,故细节在此不赘述。若需要软件处理(例如,分析器无法判断该封包要由哪一个端口传送出去)则进入步骤208,电路110首先将待传送封包的长度变量M初始化为该封包总长度P,并根据软件设定决定每次DMA传送的基本单位长度(亦即,DMA控制器160的传送基本单位长度)为L字节。
在步骤208中,关于DMA的传送基本单位长度L,详细来说,先参考图3所示的电路110所接收的封包300的结构示意图,封包300主要包含了一报头(header)、一有效载荷(payload)以及一循环冗余校验码(Cyclic redundancy check code,CRC code),而一般来说,封包查询和处理所需要的信息几乎都包含在报头中,而只有少数封包需要分析到有效载荷的内容,因此,为了降低总线108的带宽以及功率消耗,控制电路130控制DMA控制器160,并仅将封包的一部分内容通过内存控制器104传送至DRAM106并储存在其中。在一实施例中,控制电路130可以仅将封包300的报头传送至DRAM 106中,而封包缓冲器120中仍然储存了封包300的完整内容。在另一实施例中,控制电路130可以将封包300由报头开始的固定长度的内容,例如封包300的前8字节或是前12字节(可能包含所有报头内容或是仅包含一部分报头内容),传送至DRAM 106中。在另一实例中,查找表152可以包含了一第一传送长度查找表,其中该第一传送长度查找表可以包含多个帧(frame)/封包(packet)类型以及对应的DMA传送基本单位长度(L),举例来说,帧/封包类型可以包含了无线局域网络(wirelesslocal area network,wireless LAN)帧、互联网控制消息协议(Internet ControlMessage Protocol,ICMP)帧、用户数据报协议(User Datagram Protocol,UDP)封包、传输控制协议(Transmission Control Protocol,TCP)、……等等,每一种帧/封包类型具有对应的DMA传送基本单位长度,例如TCP封包对应到12字节、ICMP帧对应到16字节;而控制电路130以及DMA控制器160可以根据所接收的封包300的帧/封包类型来决定要传送多少字节(L)至DRAM 106。在另一实例中,查找表152可以包含了一第二传送长度查找表,其中该第二传送长度查找表包含了多个优先级以及对应的DMA传送长度(L),举例来说,具有最高优先级的封包对应到4个字节、次高优先级的封包对应到6个字节、第三高优先级的封包对应到8个字节、……等等;而控制电路130以及DMA控制器160可以根据所接收的封包300的重要性或是优先级来决定要DMA传送多少字节至DRAM 106,其中封包300的重要性或是优先级可以由封包300的类型、由哪个端口进入到电路110中、来源地址、目的地址、标头信息、…或任何其他相关信息来决定。在另一实施例中,查找表152同时包含了上述的该第一传送长度查找表以及该第二传送长度查找表,而控制电路130以及DMA控制器160可以根据该第一传送长度查找表以及该第二传送长度查找表来决定要传送多少字节至DRAM 106,例如若是同时在该第一传送长度查找表以及该第二传送长度查找表都查找到传送长度,则选取较长的传送长度值;设定该第一传送长度查找表以及该第二传送长度查找表的优先次序,亦即若是同时在该第一传送长度查找表以及该第二传送长度查找表都查找到传送长度,则选取具有较高优先次序的传送长度查找表所决定出的传送长度。
接着进入步骤210判断待传送封包长度变量M是否小于DMA传送基本单位长度L。若M小于或等于L,则流程进入步骤212,以将封包剩余全部内容传送到DRAM 106;否则流程进入步骤214。在步骤214中将该封包依据前次DMA传送后接续的L字节内容传送到DRAM 106。若该封包第一次由DMA控制器160传送数据到DRAM 106则是传送由报头开始的L字节内容。
在控制电路130以及DMA控制器160将封包的一部分内容传送至DRAM 106之后,控制电路130可以通过处理器端口112来通知处理器102,并告知封包300的一部分内容已传送至DRAM 106。特别说明的是,在另一实施例中此DRAM 106可以被替换为其他任何类型内存。
接着进入步骤216,软件读取已传送到DRAM 106封包内容,并进行分析以判断是否需要继续读取位于封包缓冲器内剩余的该封包内容,若是,流程进入步骤218以更新待传送封包长度变量M(将原M数值减去先前DMA传送到DRAM 106的L字节),并再次进入步骤210。请参考前面描述此不赘述。在另一实施例中,此DMA传送基本单位长度L可以在每一次DMA中由软件设定为不同数值。
当于步骤216中判断不需要继续读取位于封包缓冲器内剩余的该封包内容时,流程进入步骤220。同样于步骤212后续接着也是进入步骤220,代表该封包内容从DMA控制器160到DRAM 106的程序已完成。
请参考图2B,步骤220中软件读取DRAM 106中由DMA控制器160传送来的封包部分或全部内容,并进行分析与修正。接着,流程进入步骤222以判断封包300是否需要通过多个端口114_1~114_N中的其一转传至其他电子装置,若是则进入步骤224,否则进入步骤228。
在步骤228中,软件下命令让封包缓冲器120释放该封包占用的内存空间。接续于步骤230中进入一般传统软件运作方式,此不赘述。
于步骤224中,软件下令通过DMA控制器160将DRAM 106上已修正完的部分封包内容写回封包缓冲器,覆盖原该封包的部分内容完成更新;接着于步骤226经由目的端口转送该封包出去。
需注意的是,上述有关于软件分析的内容已为本领域技术人员所熟知,再加上本实施例的重点在于将封包300分段传输以供处理器102进行软件分析,故有关于软件分析的细节在此不赘述。
简要归纳本发明,在本发明的应用在网络装置中的电路,当封包无法通过硬件电路判断出转传信息或是转传到处理器端口时,可以只将封包的一部分内容传送至DRAM以供处理器进行软件分析,而在一实施例中,该部分内容包含大部分封包查询所需要信息(例如,报头),因此,在大部分的情形下,处理器可以仅读取与通过封包的该部分内容便可以决定出封包的后续处理方法,不需完整分析整笔封包内容;因此可以有效地减少使用DRAM的带宽,且也可以增加相关电路的执行效率并减少功率消耗。
以上所述仅为本发明的优选实施例,凡依本发明权利要求范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
【符号说明】
100:网络装置
102:处理器
104:内存控制器
106:DRAM
108:总线
110:电路
112:处理器端口
114_1:第一端口
114_2:第二端口
114_N:第N端口
120:封包缓冲器
130:控制电路
140:分析器
150:内存
152:查找表
160:DMA控制器
200~230:步骤
300:封包。
Claims (6)
1.一种应用在一网络装置中的电路,该电路包括:
至少一个端口;
一处理器端口,用以通过一总线连接至一内存以及一处理器;
一封包缓冲器,用以储存通过该至少一个端口所接收的一封包;
一控制电路,用以控制该电路的操作;
一内存,包含第一传送长度查找表和第二传送长度查找表;以及
一分析器,用以对该封包进行分析并搜寻该第一传送长度查找表和该第二传送长度查找表以判断该封包从哪个端口传送出去;
其中当该分析器判断该封包需要传送给软件处理时,该控制电路将该封包的一部分内容通过该处理器端口传送至该内存,以供该处理器进行分析,其中,将该封包的一部分内容通过该处理器端口传送至该内存包括:当该封包的长度大于每次传送的固定长度时,将该封包由一报头开始的具有该固定长度的内容传送至该内存,以及当确定需要继续读取更多内容时,持续将该内容之后的数据内容通过该处理器端口分段传送至该内存,直到该处理器不需要对后续数据进行分析或是该封包的内容已全部传送至该内存;
其中,一第一传送长度查找表,记录了多个帧/封包类型以及对应的传送长度,该控制电路根据该封包的一帧/封包类型来决定出一传送长度;一第二传送长度查找表,记录了多个优先级以及对应的传送长度,该控制电路根据该封包的重要性或是优先级来决定出一传送长度;设定该第一传送长度查找表以及该第二传送长度查找表的优先次序,同时在该第一传送长度查找表以及该第二传送长度查找表都查找到传送长度,则选取具有较高优先次序的传送长度查找表所决定出的传送长度。
2.根据权利要求1所述的电路,其中,该封包的该部分内容包含了该封包的一报头。
3.根据权利要求1所述的电路,其中,在该控制电路将该封包的该一部分内容通过该处理器端口传送至该内存之后,在收到来自该处理器的一通知之后,该控制电路根据储存在该内存中该处理器对于该封包的该部分内容的一修正内容,以修正储存在该封包缓冲器中的该封包以产生一修正后封包;以及该控制电路将该修正后封包传送至位于该网络装置外的一电子装置。
4.根据权利要求1所述的电路,其中,在该控制电路仅将该封包的一部分内容通过该处理器端口传送至该内存之后,该封包缓冲器仍然储存了该封包的完整内容。
5.根据权利要求1所述的电路,其中,根据该处理器的要求,该控制电路将该封包的剩余全部内容通过该处理器端口传送至该内存,以供该处理器进行分析。
6.一种网络装置的操作方法,该方法包括:
接收一封包;
将该封包储存至一封包缓存器之中;
对该封包进行分析并搜寻一内存所包含的第一传送长度查找表和第二传送长度查找表以判断该封包从哪个端口传送出去;以及
判断该封包需要传送给软件处理时,仅将该封包的一部分内容传送至该内存,以供一处理器进行软件分析,其中,将该封包的一部分内容传送至该内存包括:当该封包的长度大于每次传送的固定长度时,将该封包由一报头开始的具有该固定长度的内容传送至该内存,以及当确定需要继续读取更多内容时,持续将该内容之后的数据内容通过处理器端口分段传送至该内存,直到该处理器不需要对后续数据进行分析或是该封包的内容已全部传送至该内存;
其中,在第一传送长度查找表中记录了多个帧/封包类型以及对应的传送长度,根据该封包的一帧/封包类型来决定出一传送长度;在第二传送长度查找表中记录了多个优先级以及对应的传送长度,根据该封包的重要性或是优先级来决定出一传送长度;设定该第一传送长度查找表以及该第二传送长度查找表的优先次序,同时在该第一传送长度查找表以及该第二传送长度查找表都查找到传送长度,则选取具有较高优先次序的传送长度查找表所决定出的传送长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010238787.0A CN113472688B (zh) | 2020-03-30 | 2020-03-30 | 应用在网络装置中的电路及网络装置的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010238787.0A CN113472688B (zh) | 2020-03-30 | 2020-03-30 | 应用在网络装置中的电路及网络装置的操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113472688A CN113472688A (zh) | 2021-10-01 |
CN113472688B true CN113472688B (zh) | 2023-10-20 |
Family
ID=77865150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010238787.0A Active CN113472688B (zh) | 2020-03-30 | 2020-03-30 | 应用在网络装置中的电路及网络装置的操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113472688B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200303666A (en) * | 2001-12-19 | 2003-09-01 | Agere Systems Inc | Processor with reduced memory requirements for high-speed routing and switching of packets |
CN107005467A (zh) * | 2014-12-24 | 2017-08-01 | 英特尔公司 | 用于在交换机中路由数据的装置和方法 |
CN110546620A (zh) * | 2017-04-14 | 2019-12-06 | 华为技术有限公司 | 数据处理方法、存储系统和交换设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7237036B2 (en) * | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6665725B1 (en) * | 1999-06-30 | 2003-12-16 | Hi/Fn, Inc. | Processing protocol specific information in packets specified by a protocol description language |
US7685319B2 (en) * | 2004-09-28 | 2010-03-23 | Cray Canada Corporation | Low latency communication via memory windows |
-
2020
- 2020-03-30 CN CN202010238787.0A patent/CN113472688B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200303666A (en) * | 2001-12-19 | 2003-09-01 | Agere Systems Inc | Processor with reduced memory requirements for high-speed routing and switching of packets |
CN107005467A (zh) * | 2014-12-24 | 2017-08-01 | 英特尔公司 | 用于在交换机中路由数据的装置和方法 |
CN110546620A (zh) * | 2017-04-14 | 2019-12-06 | 华为技术有限公司 | 数据处理方法、存储系统和交换设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113472688A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8059680B2 (en) | Offload system, method, and computer program product for processing network communications associated with a plurality of ports | |
US7461164B2 (en) | Medium access control with software -and hardware- based components in a wireless network | |
JP2737399B2 (ja) | パケット送信システム内でパケット・シーケンスを維持するための方法および装置 | |
US20080256271A1 (en) | Methods and apparatus for reducing storage usage in devices | |
US10701190B2 (en) | Efficient parsing of optional header fields | |
KR100798926B1 (ko) | 패킷 스위치 시스템에서의 패킷 포워딩 장치 및 방법 | |
EP1675323B1 (en) | Buffer control method in a communication system | |
US7356034B2 (en) | Terminal device, method for processing communication data inside the terminal device, and program for implementing the method | |
US20060174058A1 (en) | Recirculation buffer for semantic processor | |
KR20070085272A (ko) | Rx fifo 버퍼를 사용하여 고속 네트워크애플리케이션에서 rx 패킷을 프로세싱하는 시스템 및방법 | |
JP2000242588A (ja) | イーサネットコントローラのメモリ管理装置及びその管理方法 | |
GB2462237A (en) | Packet switch device | |
JPH0824320B2 (ja) | 通信制御装置における緩衝域連鎖の方法およびその装置 | |
US7761587B2 (en) | Apparatus and method for transmitting packet IP offload | |
CN1953418A (zh) | 处理信息分组的方法和使用该方法的电信设备 | |
CN113472688B (zh) | 应用在网络装置中的电路及网络装置的操作方法 | |
US5948079A (en) | System for non-sequential transfer of data packet portions with respective portion descriptions from a computer network peripheral device to host memory | |
JP2007274056A (ja) | データグラム再組立装置 | |
WO2008073493A2 (en) | Methods and apparatus for reducing storage usage in devices | |
JP2021532636A (ja) | 確認パケット伝送方法および通信デバイス | |
US8625619B2 (en) | Domain gateway control system and method thereof | |
TWI825293B (zh) | 應用在網路裝置中的電路 | |
CN101151870B (zh) | 用于减少主机以太网适配器中的延迟的系统和方法 | |
US20240163726A1 (en) | Mechanism for receive ordering buffer control operation | |
CN114422437B (zh) | 一种异构报文的转发方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |