TWI825293B - 應用在網路裝置中的電路 - Google Patents
應用在網路裝置中的電路 Download PDFInfo
- Publication number
- TWI825293B TWI825293B TW109109765A TW109109765A TWI825293B TW I825293 B TWI825293 B TW I825293B TW 109109765 A TW109109765 A TW 109109765A TW 109109765 A TW109109765 A TW 109109765A TW I825293 B TWI825293 B TW I825293B
- Authority
- TW
- Taiwan
- Prior art keywords
- packet
- memory
- processor
- content
- control circuit
- Prior art date
Links
- 239000000872 buffer Substances 0.000 claims abstract description 20
- 230000005540 biological transmission Effects 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 9
- 238000003672 processing method Methods 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000011017 operating method Methods 0.000 claims description 2
- 238000004458 analytical method Methods 0.000 claims 2
- 230000004044 response Effects 0.000 claims 1
- 238000000034 method Methods 0.000 abstract description 14
- 238000012546 transfer Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/42—Centralised routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
- H04L45/566—Routing instructions carried by the data packet, e.g. active networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本發明揭露了一種應用在一網路裝置中的電路,其包含有多個埠、一處理器埠、一封包緩衝器、一控制電路以及一分析器,其中該處理器埠透過一匯流排連接至一記憶體以及一處理器。在該電路的操作中,該封包緩衝器儲存透過該多個埠中的其一所接收之一封包,該分析器對該封包進行分析以判斷該封包的處理方式,以及當該分析器判斷該封包決定送給軟體處理時,該控制電路將該封包的內容多次分段或一次全部透過該處理器埠傳送至該記憶體,以供該處理器進行分析。
Description
本發明係有關於一種應用在將網路封包傳送給處理器之裝置中的電路。
在位於交換機(switch)或是路由器(router)內的網路通訊裝置中,網路裝置會具有多個埠(port)以接收或輸出封包,當網路裝置接收到封包時,會先透過內部的硬體電路及查找表(look-up table)做查詢,以決定要將封包從哪個埠傳送出去;而若是硬體電路判斷需要軟體介入處理,則硬體電路會將封包送往中央處理器,以透過軟體處理的方式來決定是否對封包進行修正或是判斷出封包的目的地。如上所述,透過硬體電路來轉送(forward)封包較為快速,但若是查找表內沒有所接收之封包的相關資訊或是硬體無法辨識封包格式時,硬體電路便無法處理而需要透過軟體來處理封包;軟體轉送可以處理所有的封包格式,但是在實作上硬體電路在處理失敗時會先將整筆封包搬移到處理器可以存取的記憶體中,之後中央處理器再從記憶體中讀取封包內容進行軟體分析以進行適當處置。然而,此傳統作法會需要使用到較多的記憶體空間且占用較多的匯流排頻寬,因而使得系統效能變差,特別是巨型長封包(Jumbo frame)對效能影響更嚴重。
因此,本發明的目的之一在於提出一種應用在網路裝置中的技術,其可以有效地降低中央處理器在以軟體處理封包時對於系統效能的影響,以解決先前技術中的問題。
在本發明的一個實施例中,揭露了一種應用在一網路裝置中的電路,其包含有至少一個埠、一處理器埠、一封包緩衝器、一控制電路以及一分析器,其中該處理器埠透過一匯流排連接至一記憶體以及一處理器。在該電路的操作中,該封包緩衝器儲存透過該至少一個埠中的其一所接收之一封包,該分析器對該封包進行分析以判斷該封包的處理方式,以及當該分析器無法判斷該封包的處理方式或決定該封包需要軟體處理時,該控制電路可以由軟體設定控制將該封包的一部分內容分批傳送或一次將全部內容透過該處理器埠傳送至該記憶體,以供該處理器進行進一步處理。
在本發明的另一個實施例中,揭露了一種網路裝置之操作方法,其包含有以下步驟:接收一封包;將該封包儲存至一封包暫存緩衝器之中;對該封包進行分析以判斷該封包的處理方式;以及當無法判斷該封包的處理方式或決定該封包需要軟體處理時,可以由軟體設定控制將該封包的一部分內容分批傳送或一次將全部內容傳送至一記憶體,以供一處理器進行軟體處理。
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:封包
第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傳送至DRAM 106並儲存在其中。在一實施例中,控制電路130可以僅將封包300的檔頭傳送至DRAM 106中,而封包緩衝器120中仍然儲存了封包300的完整內容。在另一實施例中,控制電路130可以將封包300由檔頭開始之固定長度的內容,例如封包300之前8位元組或是前12位元組(可能包含所有檔頭內容或是僅包含一部分檔頭內容),傳送至DRAM 106中。在另一實例中,查找表152可以包含了一第一傳送長度查找表,其中該第一傳送長度查找表可以包含多個訊框/封包型式以及對應的DMA傳送基本單位長度(L),舉例來說,訊框
/封包型式可以包含了無線區域網路(wireless local area network,wireless LAN)訊框、網際網路控制訊息協定(Internet Control Message 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控制器
Claims (7)
- 一種應用在一網路裝置中的電路,包含有:至少一個埠;一處理器埠,用以透過一匯流排連接至一記憶體以及一處理器;一封包緩衝器,用以儲存透過該至少一個埠所接收之一封包;一控制電路,用以控制該電路的操作;以及一分析器,用以對該封包進行分析以判斷該封包的處理方式;其中當該分析器判斷該封包需要送給軟體處理時,該控制電路僅將該封包的一部分內容透過該處理器埠傳送至該記憶體,而不會將該封包的全部內容傳送至該記憶體,以供該處理器進行分析;其中該控制電路將該封包由一檔頭開始之具有固定長度的內容做為該部分內容傳送至該記憶體中,且該控制電路持續將該部分內容之後的一酬載與一循環冗餘校驗碼透過該處理器埠分段傳送至該記憶體,直到該處理器不需要對後續資料進行分析或是該封包的內容已全部傳送至該記憶體。
- 如申請專利範圍第1項所述之電路,另包含有:一第一傳送長度查找表,其記錄了多個訊框/封包型式以及對應的傳送長度;其中該控制電路根據該封包的一訊框/封包型式來決定出一傳送長度,並將該封包中具有該傳送長度的該部分內容傳送至該記憶體中。
- 如申請專利範圍第1項所述之電路,另包含有:一第二傳送長度查找表,其記錄了多個優先順序以及對應的傳送長度;其中該控制電路根據該封包之重要性或是優先順序來決定出一傳送長度, 並將該封包中具有該傳送長度的該部分內容傳送至該記憶體中。
- 如申請專利範圍第1項所述之電路,其中在該控制電路將該封包的該部分內容透過該處理器埠傳送至該記憶體之後,在收到來自該處理器的一通知之後,該控制電路根據儲存在該記憶體中該處理器對於該封包的該部分內容的一修正內容,以修正儲存在該封包緩衝器中之該封包以產生一修正後封包;以及該控制電路將該修正後封包傳送至位於該網路裝置外的一電子裝置。
- 如申請專利範圍第1項所述之電路,其中在該控制電路僅將該封包的該部分內容透過該處理器埠傳送至該記憶體之後,該封包緩衝器仍然儲存了該封包的完整內容。
- 如申請專利範圍第1項所述之電路,其中因應該處理器的要求,該控制電路將該封包的剩餘全部內容透過該處理器埠傳送至該記憶體,以供該處理器進行分析。
- 一種網路裝置之操作方法,包含有:接收一封包;將該封包儲存至一封包暫存器之中;對該封包進行分析以判斷該封包的處理方式;以及判斷該封包需要送給軟體處理時,僅將該封包的一部分內容傳送至一記憶體,而不會將該封包的全部內容傳送至該記憶體,以供一處理器進行軟體分析; 其中判斷該封包需要送給軟體處理時,僅將該封包的該部分內容傳送至該記憶體,而不會將該封包的全部內容傳送至該記憶體,以供該處理器進行軟體分析的步驟包含有:將該封包由一檔頭開始之具有固定長度的內容做為該部分內容傳送至該記憶體中;以及持續將該部分內容之後的一酬載與一循環冗餘校驗碼透過該處理器埠分段傳送至該記憶體,直到該處理器不需要對後續資料進行分析或是該封包的內容已全部傳送至該記憶體。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109109765A TWI825293B (zh) | 2020-03-24 | 2020-03-24 | 應用在網路裝置中的電路 |
US17/203,707 US20210306266A1 (en) | 2020-03-24 | 2021-03-16 | Circuitry applied in network device and associated operating method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109109765A TWI825293B (zh) | 2020-03-24 | 2020-03-24 | 應用在網路裝置中的電路 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202137737A TW202137737A (zh) | 2021-10-01 |
TWI825293B true TWI825293B (zh) | 2023-12-11 |
Family
ID=77857345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109109765A TWI825293B (zh) | 2020-03-24 | 2020-03-24 | 應用在網路裝置中的電路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210306266A1 (zh) |
TW (1) | TWI825293B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200531500A (en) * | 2003-10-29 | 2005-09-16 | Sonicwall Inc | Method and apparatus for datastream analysis and blocking |
CN1822568A (zh) * | 2005-02-18 | 2006-08-23 | 美国博通公司 | 一种网络设备以及在该网络设备中处理数据的方法 |
CN101068205A (zh) * | 2006-05-05 | 2007-11-07 | 美国博通公司 | 互联网通信架构、网络设备及执行数据包内容分析的方法 |
CN101068206A (zh) * | 2006-05-05 | 2007-11-07 | 美国博通公司 | 分组交换机、网络节点、分组交换架构及数据包路由方法 |
TW201324168A (zh) * | 2011-12-05 | 2013-06-16 | Asix Electronics Corp | 高效率傳輸機制之通用序列匯流排裝置 |
US20160057070A1 (en) * | 2014-08-20 | 2016-02-25 | Citrix Systems, Inc. | Systems and methods for implementation of jumbo frame over existing network stack |
-
2020
- 2020-03-24 TW TW109109765A patent/TWI825293B/zh active
-
2021
- 2021-03-16 US US17/203,707 patent/US20210306266A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200531500A (en) * | 2003-10-29 | 2005-09-16 | Sonicwall Inc | Method and apparatus for datastream analysis and blocking |
CN1822568A (zh) * | 2005-02-18 | 2006-08-23 | 美国博通公司 | 一种网络设备以及在该网络设备中处理数据的方法 |
CN101068205A (zh) * | 2006-05-05 | 2007-11-07 | 美国博通公司 | 互联网通信架构、网络设备及执行数据包内容分析的方法 |
CN101068206A (zh) * | 2006-05-05 | 2007-11-07 | 美国博通公司 | 分组交换机、网络节点、分组交换架构及数据包路由方法 |
TW201324168A (zh) * | 2011-12-05 | 2013-06-16 | Asix Electronics Corp | 高效率傳輸機制之通用序列匯流排裝置 |
US20160057070A1 (en) * | 2014-08-20 | 2016-02-25 | Citrix Systems, Inc. | Systems and methods for implementation of jumbo frame over existing network stack |
Also Published As
Publication number | Publication date |
---|---|
US20210306266A1 (en) | 2021-09-30 |
TW202137737A (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 | |
TWI406133B (zh) | 資料處理設備及資料傳送方法 | |
EP1732285B1 (en) | Apparatus and methods for a high performance hardware network protocol processing engine | |
JP4942375B2 (ja) | ネットワーク処理装置 | |
KR101018575B1 (ko) | Rx fifo 버퍼를 사용하여 고속 네트워크애플리케이션에서 rx 패킷을 프로세싱하는 시스템 및방법 | |
US10237130B2 (en) | Method for processing VxLAN data units | |
KR100798926B1 (ko) | 패킷 스위치 시스템에서의 패킷 포워딩 장치 및 방법 | |
US20080256271A1 (en) | Methods and apparatus for reducing storage usage in devices | |
WO2017000593A1 (zh) | 报文处理方法及装置 | |
US20060174058A1 (en) | Recirculation buffer for semantic processor | |
JPH11261649A (ja) | データ処理装置及びそれを適用したルータ・ブリッジ | |
US7969977B2 (en) | Processing apparatus and method for processing IP packets | |
US20060062229A1 (en) | Terminal adapter device capable of performing IEEE1394-to-Ethernet conversion | |
TWI825293B (zh) | 應用在網路裝置中的電路 | |
EP2201740B1 (en) | High speed packet processing in a wireless network | |
US7310337B2 (en) | Packet header alignment | |
JP2007274056A (ja) | データグラム再組立装置 | |
US8625619B2 (en) | Domain gateway control system and method thereof | |
JPWO2011033562A1 (ja) | 通信装置 | |
WO2008073493A2 (en) | Methods and apparatus for reducing storage usage in devices | |
CN113472688B (zh) | 应用在网络装置中的电路及网络装置的操作方法 | |
CN101151870B (zh) | 用于减少主机以太网适配器中的延迟的***和方法 | |
WO2002059757A1 (en) | Communications processor | |
CN108600406B (zh) | 处理不同类型请求的网络装置 | |
JP3508057B2 (ja) | レイヤ3スイッチ |