TWI690185B - 高速資料平面封包聚合及解聚合方法 - Google Patents
高速資料平面封包聚合及解聚合方法 Download PDFInfo
- Publication number
- TWI690185B TWI690185B TW108121596A TW108121596A TWI690185B TW I690185 B TWI690185 B TW I690185B TW 108121596 A TW108121596 A TW 108121596A TW 108121596 A TW108121596 A TW 108121596A TW I690185 B TWI690185 B TW I690185B
- Authority
- TW
- Taiwan
- Prior art keywords
- packet
- header
- switch
- packets
- message
- Prior art date
Links
- 238000004220 aggregation Methods 0.000 title claims abstract description 145
- 238000000034 method Methods 0.000 title claims abstract description 123
- 230000002776 aggregation Effects 0.000 title claims abstract description 108
- 230000008569 process Effects 0.000 claims abstract description 16
- 230000009471 action Effects 0.000 claims description 66
- 230000010076 replication Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 12
- 238000004064 recycling Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 13
- 238000013461 design Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 4
- 238000006116 polymerization reaction Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/324—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一種高速資料平面封包聚合及解聚合方法,該方法包含以下步驟:藉由P4交換器接收複數個封包;藉由使用解析圖解析各複數個封包;藉由使用匹配動作表來決定複數個封包的類型;在P4交換器的管線執行封包聚合及解聚合程序;將聚合封包或原始資料封包傳送到P4交換器的逆解析器;以及通過P4交換器輸出聚合封包或原始資料封包。
Description
本發明是關於一種高速資料平面封包聚合及解聚合方法,特別是關於一種藉由使用協議獨立數據封包處理程式語言(Programming Protocol-Independent Packet Processor, P4)交換器來傳送資料封包之封包聚合及解聚合方法,資料封包可稱為訊息封包。
由於物聯網(Internet of Things, IoT)的快速發展,預期在未來將有大量的物聯網裝置配置於各種環境中,作為不同的物聯網應用。一個物聯網的應用範例是智能之水/瓦斯/電力量測,其大量的智能量測表定期的回報最新的用量至這些公共事業公司的總部以作為計費或節能的目的。
在這樣的物聯網應用當中,大量的智能量測表(或者物聯網裝置)定期傳送封包(包括感測資料或訊息)到伺服器或雲端資料庫,使得當中所攜帶的資料能被智慧地處理、分析及運用。因為回傳到伺服器之使用數據是短的,這些物聯網封包的大小大部分是非常短的。例如,著名的低功率廣域網路(Low-Power Wide Area Network, LPWAN)技術(如Sigfox協定)支援物聯網應用,提供僅12位元組(byte)負載的上傳訊息和8位元組(byte)負載的下載訊息。對於像使用這樣LPWAN技術的物聯網裝置,僅能產生及傳送小的物聯網封包。
相對於其全部長度,小的物聯網封包的封包表頭佔據整個封包非常大的部分。結果當這些小的物聯網封包經由網路傳送時,有非常大比例的網路頻寬被浪費在傳送這些表頭。封包聚合能藉由在多個被聚合的封包之間僅共用一個相同封包表頭來降低這樣的比例。封包聚合是在網路中傳送小封包的一種有效的機制。
然而,習知的封包聚合及解聚合方法仍有其限制及缺陷。因此,發明人提供一種高速資料平面封包聚合及解聚合方法,針對現有技術之缺失加以改善,進而增進產業上之實施利用。
有鑑於上述習知技術之問題,本揭露之目的就是在提供一種高速資料平台封包聚合和解聚合之方法,其能在資料平面(data-plane)中進行封包的聚合及解聚合,而不是在控制平面(control-plane)中藉由中央處理器來執行軟體程式,從而降低成本及提升傳輸效率。
根據本發明之一目的,提出一種高速資料平台封包聚合方法,藉由使用協議獨立數據封包處理程式語言(Programming Protocol-Independent Packet Processor, P4)交換器來傳送資料封包,封包聚合方法包含以下步驟:藉由P4交換器接收複數個封包,複數個封包傳送至P4交換器之解析器;藉由在P4交換器之交換器組態所定義之解析圖將各複數個封包解析為乙太網路表頭、網際網路協定表頭、用戶資料協定表頭、旗標表頭以及訊息表頭,旗標表頭表示複數個封包之類型而訊息表頭代表複數個封包之資料負載(payload);藉由在P4交換器之交換器組態所定義之匹配動作表來檢查複數個封包之旗標表頭,決定複數個封包是否為訊息封包,匹配動作表定義複數個匹配欄位以及對應複數個匹配欄位之複數個控制動作,用以執行在P4交換器之入口管線的控制程序;藉由使用匹配動作表儲存訊息封包之訊息表頭於P4交換器之記憶體空間;藉由使用匹配動作表在P4交換器之出口管線聚合預設數量之訊息表頭作為聚合表頭並修改網際網路協定表頭及用戶資料協定表頭以產生聚合封包;以及藉由P4交換器傳送聚合封包至P4交換器之逆解析器且輸出聚合封包。
較佳地,訊息封包可包含藉由物聯網裝置收集之感測資料。
較佳地,匹配動作表之複數個控制動作可包含取得計數器(get counter),用於計算用來產生聚合封包之訊息封包目前接收之數量。
較佳地,匹配動作表之複數個控制動作可包含儲存訊息(save message),將訊息表頭儲存在訊息池中。
較佳地,匹配動作表之複數個控制動作可包含移動訊息(move message)以組合儲存之訊息表頭為聚合表頭,以及更新長度(update length)以修改網際網路協定表頭及用戶資料協定表頭之校驗和。
根據本發明之另一目的,提出一種高速資料平台封包解聚合方法,藉由使用協議獨立數據封包處理程式語言(Programming Protocol-Independent Packet Processor, P4)交換器來傳送資料封包,封包解聚合方法包含以下步驟:藉由P4交換器接收複數個封包,複數個封包傳送至P4交換器之解析器;藉由在P4交換器之交換器組態所定義之解析圖將各複數個封包解析為乙太網路表頭、網際網路協定表頭、用戶資料協定表頭、旗標表頭以及聚合表頭,旗標表頭表示複數個封包之類型而聚合表頭代表複數個封包之資料負載;藉由在P4交換器之交換器組態所定義之匹配動作表來檢查複數個封包之旗標表頭,決定複數個封包是否為聚合封包,匹配動作表定義複數個匹配欄位以及對應複數個匹配欄位之複數個控制動作,用以執行在P4交換器之入口管線的控制程序;藉由使用匹配動作表複製聚合封包並將複製封包儲存於P4交換器之記憶體空間;藉由使用匹配動作表在P4交換器之出口管線修改複製封包之聚合表頭,並修改複製封包之網際網路協定表頭及用戶資料協定表頭以產生原始訊息封包;以及藉由P4交換器傳送原始訊息封包至P4交換器之逆解析器且輸出原始訊息封包。
較佳地,原始訊息封包可由P4交換器輸出且傳送至物聯網伺服器。
較佳地,封包解聚合方法可進一步包含以下步驟:傳送複製封包至出口管線;在複製封包內增加新訊息表頭且將此次要解聚合出的封包複製入新訊息表頭內;將聚合表頭由複製封包內移除;;以及設定再循環旗標以表示聚合封包需要再循環回到解析器來執行另一複製程序直到複製程序之數量等於預設數量。
較佳地,封包解聚合方法可進一步包含以下步驟:傳送複製封包至出口管線;增加新訊息表頭且移動在聚合封包之聚合表頭中之被分割的訊息至新訊息表頭以作為原始訊息表頭,並且移除複製封包之聚合表頭以產生原始訊息封包;以及設定計數器以表示施加於聚合封包之複製程序之次數且重新提交聚合封包回到解析器以執行另一複製程序直到次數達到預設解聚合數量。
較佳地,匹配動作表之複數個控制動作可包含設置群播(multicast)以產生預設數量之聚合封包複製品,且定義預設數量之複製品至相同輸出端口。
承上所述,依本揭露之高速資料平台封包聚合及解聚合方法可具有一或多個下述優點:
(1) 高速資料平台封包聚合及解聚合方法能藉由共用一個佔用在封包當中的相同表頭來結合多個小的物聯網訊息封包形成較大的聚合封包,從而減少網路頻寬浪費在傳送這些表頭上的比例。
(2) 高速資料平台封包聚合及解聚合方法可在交換器的資料平面當中執行封包聚合及解聚合,其避免使用到中央處理器(CPU)來執行軟體程式並提供高速的傳輸速率。
(3) 高速資料平台封包聚合及解聚合方法可使用P4交換器來執行本揭露之方法,無需增加額外的硬體裝置,因而能以低成本來提供封包的聚合及解聚合。
為利於瞭解本揭露之技術特徵、內容與優點及其所能達成之功效,茲將本揭露配合附圖,並以實施例之表達形式詳細說明如下。另一方面,其中所使用之圖式,其主旨僅為示意及輔助說明書之用,未必為本揭露實施後之真實比例與精準配置。因此,不應就所附之圖式的比例與配置關係解讀、侷限本揭露於實際實施上的權利範圍。
依據本發明的實施例,其中所描述之元件、流程步驟及/或資料結構可使用各種形式的作業系統、運算平台、電腦程式及/或一般用途的機器來實現。此外,所屬技術領域中通常知識者將理解的是,那些較不具通用性質的裝置,例如固線式裝置、現場可程式邏輯閘陣列(FPGAs)、特定應用積體電路(ASICs)等,也可在不背離本文中所揭露之發明概念的範圍及精神下使用。當一個方法包含一系列的流程步驟,可藉由電腦、機器來實現,並且這些流程步驟可儲存在一系列機器可讀取的指令當中,可儲存於有形的媒體當中,例如電腦記憶體裝置(如唯讀記憶體(ROM)、可程式唯讀記憶體(PROM)、電子可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體、Jump Drive等)、磁性儲存媒體(如磁帶、磁碟機等)、光學儲存媒體(如CD-ROM、DVD-ROM、紙卡及紙帶等)及其他已知類型之程式記憶體。
第1圖係為依據本揭露說明封包聚合及解聚合之網路架構之示意圖。如圖所示,物聯網(Internet of Things, IoT)裝置包含第一物聯網裝置10、第二物聯網裝置11…及第N物聯網裝置12。這些物聯網裝置可為智慧電視、冷氣、冰箱等,其可包含感應器來收集這些裝置或環境的資料。這樣的資料藉由訊息封包傳送並經由廣域網路(wide area network, WAN)送至物聯網伺服器。物聯網伺服器也可包含第一物聯網伺服器20、第二物聯網伺服器…及第N物聯網伺服器22。在本實施例當中,一個物聯網伺服器對應於一個物聯網裝置。然而,本揭露不侷限於這樣的設定。物聯網伺服器可為一或多個資料收集器對應於每一個物聯網裝置,或者可為具有多個傳輸端口的雲端資料庫,其用於接收訊息封包及儲存感測資料。
在傳送期間,連續的訊息封包p1、 p2、…、 pN抵達第一協議獨立數據封包處理程式語言(Programming Protocol-Independent Packet Processor, P4)交換器100。第一P4交換器100執行封包聚合程序來聚合小的訊息封包p1、 p2、…、pN成為大的聚合封包pA。聚合封包pA經由廣域網路(WAN)傳送,且將在到達物聯網伺服器前通過第二P4交換器200。第二P4交換器200接著將聚合封包pA解聚合成為原始訊息封包p1、 p2、…、pN,並將其轉發至物聯網伺服器。聚合封包pA是有效的網際網路協定封包且能通過多個交換器及路由器。聚合封包pA結合許多小的訊息封包成為較大的封包。執行封包聚合的原因如第2圖所示。
請參閱第2圖,其係為依據本揭露之訊息封包及聚合封包之示意圖。如圖所示,物聯網訊息封包包含乙太網路(Ethernet)表頭、網際網路協定(IP)表頭、用戶資料協定(UDP)表頭、旗標(flag)表頭(b)及訊息(message)表頭(a)。聚合封包也包含乙太網路(Ethernet)表頭、網際網路協定(IP)表頭、用戶資料協定(UDP)表頭及旗標(flag)表頭(b)。多個訊息表頭(a)可被結合成為一個聚合(aggregated)表頭(c)。在本實施例中,聚合的數量可為8個。也就是說,8個訊息封包聚合成為一個聚合封包。然而,聚合的數量不侷限於本實施例之數字。另外,乙太網路訊框(Ethernet frame)的最短長度為64位元組,而旗標表頭具有40位元的填充(padding)欄。為了滿足這個要求,本實施例讓旗標表頭的長度為6位元組,使得14位元組的乙太網路表頭、20位元組的網際網路協定表頭、8位元組的用戶資料協定表頭以及16位元組的訊息合起來,物聯網訊息封包的總長為64位元組。乙太網路表頭、網際網路協定表頭、用戶資料協定表頭及旗標表頭是用來描述封包資訊、封包類型、輸出端口等之協議。訊息表頭則表示訊息封包所攜帶的感測資料或者訊息。將封包的負載視為表頭的原因是因為P4交換器僅能操縱由封包所解析出的表頭。P4交換器必須操縱封包的負載來將其聚合或解聚合,因此本實施例中所使用的方法是將封包的負載視為表頭。
基於上述封包格式,訊息表頭僅佔了16位元組而其他表頭合起來佔了48位元組。換句話說,當傳送一個物聯網訊息封包,有非常大比例的網路頻寬是浪費在傳送這些其他表頭。封包聚合藉由共用在多個聚合的訊息封包當中的一個相同表頭能降低這樣的比例。當負載的尺寸小時,藉由封包聚合可使得封包表頭上的減少非常顯著。舉例來說,當封包聚合未執行時,在Sigfox協定的上行連接當中根據16位元組的負載大小使用量,42位元組的表頭負擔(包含14位元組的乙太網路表頭加上20位元組的網際網路協定表頭加上8位元組的用戶資料協定表頭)造成的比例為42/(42+16) = 72%。當執行封包聚合時,聚合封包的相同42位元組的表頭負擔造成的比例為42/(42+16*8) = 25%。因此,傳送效率可明顯的提升。
雖然封包聚合及解聚合對於資料傳輸具有這樣的功效,習知的做法是利用伺服器的中央處理器或者交換器的中央處理器來執行軟體程式,在控制平面(control-plane)當中執行這些程序,造成低的吞吐量。藉由程式化硬體P4交換器的資料平面(data-plane)管線,本揭露實現了純粹在交換器的特定應用積體電路(ASIC)的管線當中的封包聚合及解聚合。結果在封包聚合的吞吐量達到使用的P4交換機的100 Gbps的線路速率,其為最高的封包聚合吞吐量。詳細的聚合程序將藉由以下之實施例來說明。
以下的段落將說明高速資料平面封包聚合方法的程序,其係藉由使用協議獨立數據封包處理程式語言(P4)交換器來傳送資料封包。
第3圖係為依據本揭露之高速資料平面封包聚合方法之流程圖。如圖所示,此方法包括以下步驟(S01-S06):
步驟S01:藉由P4交換器接收複數個封包。如前述實施例所提,物聯網裝置可收集感測資料且將資料藉由訊息封包的方式傳送到P4交換器。由於物聯網裝置是設定在預設時間周期當中收集資料,大量的資料將會連續地產生。因此,複數個訊息封包會被送到P4交換器的輸入端口且傳送到P4交換器的解析器。
請參閱第4圖,其係為依據本揭露說明P4交換器之架構之示意圖。如第4圖所示,P4交換器300包含輸入端口30、解析器31、入口管線32、流量管理器33、出口管線34、逆解析器35以及輸出端口36。在上述元件外,P4交換器300進一步提供交換器組態40,其包含解析圖41、控制程序42以及匹配動作(match-action)表組態43。在本實施例當中,輸入端口30可連接至物聯網裝置以接收訊息封包,而訊息封包傳送到解析器31。以下的步驟也將參考第4圖中P4交換器的架構來說明。
步驟S02:藉由使用在P4交換器之交換器組態中所定義之解析圖解析各個封包。解析圖41可以加載至P4交換器300之交換器組態40。解析圖41定義封包的乙太網路表頭、網際網路協定表頭、用戶資料協定表頭、旗標表頭以及訊息表頭。旗標表頭表示不同封包之類型,而訊息表頭則代表封包之資料負載。解析器31可藉由使用解析圖41將訊息封包解析成不同的表頭。如前述實施例所提,P4交換器300能夠操作不同的表頭。基於解析的結果,不僅乙太網路表頭、網際網路協定表頭及用戶資料協定表頭可以被操作來決定輸出資訊,訊息封包所包含的訊息也能藉由識別為訊息表頭而進行操作。
步驟S03:藉由在P4交換器之交換器組態所定義之匹配動作表來檢查複數個封包之旗標表頭,決定複數個封包是否為訊息封包。P4交換器300之交換器組態40包含控制程序42以及匹配動作表組態43。控制程序42能使定義的表頭移動及識別以執行封包聚合或解聚合。這樣的控制程序42及各個操作步驟能被編譯及定義於匹配動作表組態43。匹配動作表組態43定義複數個匹配欄位以及對應複數個匹配欄位之複數個控制動作,用以執行在P4交換器300之入口管線32及出口管線34的控制程序42。當P4交換器300接收訊息封包,控制程序是發生在P4交換器300的硬體管線中,結果是訊息封包不需要達到由交換器之中央處理器所運行軟體的控制平面來進行分析。基於這樣的設計,封包聚合或解聚合的表現能提升數十倍。
回到步驟當中,當封包進入到入口管線32,入口管線32將檢查封包的旗標表頭已決定封包是否為訊息封包。如果封包的類型指出封包為訊息封包,則繼續以下的聚合程序。如果封包的類型指出封包是包含多個訊息的聚合封包,則入口管線32將執行解聚合程序,解聚合程序將於後續實施例中說明。
步驟S04:藉由使用匹配動作表儲存訊息封包之訊息表頭於P4交換器之記憶體空間。當封包確認為訊息封包時,入口管線32將每個封包的訊息表頭儲存在P4交換器之記憶體空間。入口管線32定義記憶體空間內預設數量之訊息池以依序地儲存訊息表頭。入口管線32也創建一個計數器來計算進入入口管線32之封包訊息數量,其用於產生目前的聚合封包。當數量達到預設數量,則執行下一步驟S05。
步驟S05:藉由使用匹配動作表在P4交換器之出口管線聚合預設數量之訊息表頭作為聚合表頭並修改網際網路協定表頭及用戶資料協定表頭以產生聚合封包。當到達出口管線34,預設數量的訊息表頭依序地排列以產生聚合表頭。聚合表頭是一個新的表頭,其包含每一個小訊息封包的資料負載。由於聚合表頭具有較大尺寸,對應的網際網路協定表頭及用戶資料協定表頭需要做適當的改變。也就是說,封包長度及校驗和應被修正以形成有效的聚合封包來進行傳送。
步驟S06:藉由P4交換器傳送聚合封包至P4交換器之逆解析器且輸出聚合封包。當聚合封包產生,封包將通過P4交換器300之逆解析器35,且從P4交換器300之輸出端口36輸出。聚合封包經由廣域網路傳送至物聯網伺服器或者雲端資料庫做進一步的分析。
請參閱第5圖,其係為依據本揭露之封包聚合程序之流程圖。此流程圖是例示性的說明如何聚合8個訊息封包成為1個聚合封包。如圖所示,提供封包聚合的詳細控制程序。此流程圖包含判斷及操作訊息封包的幾個步驟(S001-S015)。本實施例聚合8個訊息封包成為1個聚合封包,這裡稱之為”N-封包(N-packet)”,在本實施例中N=8。然而,聚合數量不侷限於本實施例的8個,聚合的數量依據攜帶資訊的大小可有所改變。
當物聯網封包抵達,如步驟S001所示,整個封包被解析成多個表頭而沒有任何負載(因為負載被提取作為訊息表頭)。解析器提取乙太網路、網際網路、用戶資料協定、旗標及訊息等表頭。當遇到旗標表頭時,解析器檢查”類型(type)”欄位之數值。根據此數值,解析器從封包的負載提取訊息表頭或者聚合表頭。如果進入的封包是訊息封包,則藉由本實施例所示將其聚合。如果封包是聚合封包,則將如後續實施例(第6圖至第8圖)所示將其解聚合。除此之外,其他的封包則送至路由程序(步驟S004)來進行正常路由。
步驟S002檢查進入的封包是否為物聯網封包(是否具有有效的訊息表頭)。如是,聚合步驟藉由使用稱為”agg_metadata”的元資料(metadata)來執行聚合步驟,其具有”cnt”及”saved”之欄位。元資料是一種暫存器(register),其依序通過管線中的表以共享它們之間的資訊。在”agg_metadata”當中,”cnt”欄位是一個3位元的整數,範圍從0至7。當封包通過”取得計數器(getCounter)”表時,其值將被設定。”saved”欄位則用來表示正在被處理的封包是否已被操作過且已經被儲存在暫存池中。物聯網封包藉由以下之程式來聚合,其中apply(
TableName)的陳述指出封包需要通過
TableName的表及藉此來處理。
藉由這樣的程式碼,封包將依序通過取得計數器(getCounter)的表,7個儲存或取出訊息(saveOrRetrieveMsg)的表(這7個表並不相同但具有相似功能)以及移動訊息至第8訊息(moveMsgToMsg8)的表。取得計數器的表的動作是讀取暫存器”c”目前的數值,其計算目前已經收集來進行聚合的物聯網封包數量。暫存器”c”的初始值為0且其值會在一個物聯網封包聚合之前增加1(步驟S006)。因為是N=8的範例,此暫存器僅需要三個位元,在計數到7後,會溢位而從0重新開始。
當”agg_metadata.cnt”通過這些表時,它被用作為匹配的欄位以匹配這些表中的特定條目。在本實施例當中,適當的流規則必須事先安裝至這些表中,使得封包的”agg_metadata.cnt”能僅匹配於各個表中的單一條目。由於一個條目是關於一個藉由本實施例定義的動作,當通過這些表時,不同的動作能被施加於這些封包。這是特別針對P4的匹配動作(match-action)表架構的新的聚合設計。
當封包依序地通過7個儲存或取出訊息(saveOrRetrieveMSg(
i))的表,如果”agg_metadata.cnt”的值為
i,當其通過第
i個儲存或取出訊息的表,其負載(訊息表頭)將被儲存在第
i池的暫存池,其中
i=1, 2, … , 7 (步驟S007及步驟S009)。另外,”agg_metadata.saved”設為1以表示這一個物聯網封包已儲存在緩衝池中(步驟S007及步驟S009)。藉由這些旗標的設定,之後物聯網封包將被丟棄(步驟S008)而不傳送。須注意當封包通過所有其他第
i個儲存或取出訊息的表其指標
i不同於”agg_metadata.cnt”的值時,將不會對其執行操作。當”agg_metadata.cnt”的值為0(即溢位後從0從新開始),意指目前封包是用於N-封包聚合程序之第N個封包(例如本範例之N=8)。在這種情況下,當封包依次通過7個儲存或取出訊息(saveOrRetrieveMSg(
i))的表時,當封包通過第
i個儲存或取出訊息的表,儲存在第
i池(pool[
i])的負載將被提取並放進N-封包之訊息(msg(
i)) (步驟S010及步驟S011)。最後,第N個封包移動到訊息(msg(8))以形成完整的N-封包(當N=8)。”agg_metadata.saved”設為0(步驟S012)且修改網際網路協定表頭及用戶資料協定表頭(步驟S013)。接著,形成的N-封包傳送到路由程序將其路由到下一站(hop)。
步驟S003檢查進入之封包是否為有效的網際網路協定封包及”agg_metadata.saved”是否為0。如是,則封包不儲存在緩衝池且執行一般的路由程序(步驟S004)。接著,封包應通過流量器(traffic machine, TM)(步驟S005)、出口管線(步驟S014)及逆解析器(步驟S015)。經過上述程序,通過P4交換器輸出聚合封包。
以下的段落將說明高速資料平面封包解聚合方法的程序,其係藉由使用協議獨立數據封包處理程式語言(P4)交換器來傳送資料封包。
第6圖係為依據本揭露之高速資料平面封包解聚合方法之流程圖。如圖所示,此方法包括以下步驟(S11-S16):
步驟S11:藉由P4交換器接收複數個封包。請再次參閱第1圖,複數個訊息封包從物聯網裝置傳送到第一P4交換器100。如前述實施例所述,執行封包聚合程序以形成聚合封包pA。當聚合封包pA通過廣域網路傳送,第二P4交換器200接收這些聚合封包pA並執行封包解聚合將聚合封包pA轉回原始訊息封包。第二P4交換器200類似於第一P4交換器100。複數個聚合封包送至P4交換器300之輸入端口30,然後傳送到P4交換器300之解析器31,如第4圖所示。
步驟S12:藉由在P4交換器之交換器組態所定義之解析圖解析各複數個封包。解析圖41可以加載到P4交換器300之交換器組態40。解析圖41定義封包的乙太網路表頭、網際網路協定表頭、用戶資料協定表頭、旗標表頭、訊息表頭以及聚合表頭。如第2圖所示,旗標表頭表示不同封包之類型,決定封包為訊息封包或是聚合封包。如果封包是訊息封包,其訊息表頭代表訊息封包之資料負載。另一方面。若封包為聚合封包,其聚合表頭表示封包之資料負載。在本實施例當中,解析器31可藉由使用解析圖41將聚合封包解析成不同的表頭。解析後的聚合表頭已聚合多個訊息表頭,減少在多個訊息封包上傳送相同網際網路協定表頭及用戶資料協定表頭的浪費。如上所述,P4交換器300能操作不同的表頭。因此,藉由解析器31解析的聚合表頭可執行以下之封包解聚合程序。基於這樣的解析結果,乙太網路表頭、網際網路協定表頭、用戶資料協定表頭能被操作以決定輸出資訊,而聚合表頭能被操作以代表原始的多個訊息表頭。
步驟S13:藉由在P4交換器之交換器組態所定義之匹配動作表來檢查複數個封包之旗標表頭,決定複數個封包是否為聚合封包。在此步驟中,將會檢查旗標表頭來確認封包的類型。不同類型的封包可具有不同的類型數字,其加載於入口管線32。匹配動作表組態43定義複數個匹配欄位以及對應複數個匹配欄位之複數個控制動作,用以執行在P4交換器300之入口管線32的控制程序42。當封包確認為聚合封包時,控制程序發生在P4交換器300的硬體管線中。換句話說,聚合封包不需要到達由交換器之中央處理器所運行軟體的控制平面來進行分析。基於這樣的設計,封包聚合或解聚合的表現能提升數十倍。
步驟S14:藉由使用匹配動作表複製聚合封包並將複製封包儲存於P4交換器之記憶體空間。為了將複製的聚合封包解聚合成為預設數量的原始訊息封包,本實施例利用複製的技術來複製聚合封包以達到預設數量。複製封包的聚合表頭依序的分為原始訊息表頭,使得對應的封包能產生並儲存在P4交換器300的記憶體空間。複製程序及選擇程序藉由使用入口管線32來執行,詳細的解聚合處理規則將於以下的實施例說明。
步驟S15:藉由使用匹配動作表在P4交換器之出口管線修改複製封包之聚合表頭,並修改複製封包之網際網路協定表頭及用戶資料協定表頭以產生原始訊息封包。類似於聚合程序,每個原始訊息封包可具有本身的訊息表頭,其小於複製封包。因此,在複製封包中使用的網際網路協定表頭及用戶資料協定表頭需要做適當的改變。也就是說,網際網路協定表頭及用戶資料協定表頭當中的封包長度及校驗和應被修正以形成有效的聚合封包來進行傳送。
步驟S16:藉由P4交換器傳送原始訊息封包至P4交換器之逆解析器且輸出原始訊息封包。當原始訊息封包產生,封包將通過P4交換器300之逆解析器35,且從P4交換器300之輸出端口36輸出。原始訊息封包傳送到物聯網伺服器或者雲端資料庫,各個訊息封包的資訊將被儲存以做更進一步的分析。
請參閱第7A圖至第7B圖,其係為依據本揭露之再循環(recirculate)及基於複製之封包解聚合方法之流程圖。這個流程是作為例示性的範例來說明如何解聚合1個聚合封包為8個訊息封包。如圖所示,流程圖包含再循環及基於複製之聚合封包解聚合的幾個步驟(S101-S118)。本實施例同樣將聚合封包解聚合,其聚合表頭中包含8個訊息封包。然而,聚合封包的聚合數量不侷限於本實施例的8個,可依據聚合程序的設定而改變。
如圖所示,本實施例使用N-封包(如第2圖所示的聚合封包)之旗標表頭中的”flag.padding[0]”來代表已完成N-封包回到入口管線再循環的數量。當N-封包第一次到達P4交換器,在”flag.padding[0]”當中的值為0。在當中的值將在每次封包再循環回到入口管線時加1(藉由”add_to_field(flag.padding[0], 1”,即步驟S114中的指令)。當N-封包進入P4交換器或當其再循環回到入口管線時,這個值將會被存取及儲存在變數C當中,以作為後續入口管線與出口管線的程序之用(步驟S101)。步驟S102檢查封包是否為有效的網際網路協定封包,如是,則傳送至路由程序(步驟S104);若否,則傳送到步驟S103來檢查封包是否為聚合封包。步驟S105檢查C的值,當C=0,其代表N-封包第一次進入P4交換器,封包不需要被複製但需要將其”recirculate_flag”設為1,然後進入出口管線(步驟S109及步驟S110)。因為目前C=0,將會執行步驟S114且N-封包的訊息”msg(i)”儲存在池”pool[i], i = 1, 2,…, 7”中。這7個儲存的訊息藉由指令”remove_header(agg)”從N-封包移除,最後的訊息則”msg8”儲存在增加的訊息表頭(藉由指令”add_header(msg)”)之訊息欄位中。接著,尺寸變小的N-封包,其僅具有一個訊息表頭而不是原始聚合表頭,再循環回到入口管線。
當再循環的N-封包進入入口管線且C=1, 2,…, 7,尺寸較小的N-封包需要被複製且複製的副本將進入出口管線(步驟S106)。此外,N-封包本身也將進入出口管線。在出口管線中,根據目前的C之值(步驟S110),複製的尺寸較小的N-封包將取得儲存在池”pool[C]”中的物聯網封包(步驟S114)且儲存在其” msg.msg field”當中(步驟S115)。接著,這個複製的封包,在修改其網際網路協定表頭及用戶資料協定表頭的長度(步驟S116)完成後,將會進入步驟S117並送出P4交換器。因為C將會從1增加至7,這代表7個複製封包將依序夾帶原始N-封包之訊息1(msg1)、訊息2(msg2)…至訊息7(msg7)離開P4交換器。因此,達到將N-封包解聚合成為其包含的物聯網封包的目標。
當再循環的N-封包進入入口管線且C=1, 2,…, 6,封包需要再一次的再循環,因此再循環旗標”recirculate-flag”設為1(於步驟S108當中)。當C=7時(步驟S107),尺寸較小的N-封包不需要再一次的再循環。因為其欄位” msg.msg field”中已包含最後的物聯網封包(即msg8),其係在C=0時藉由步驟S114的指令”msg.msg = agg.msg8”儲存在這,在出口管線中僅需更新其網際網路協定表頭及用戶資料協定表頭的長度及重設”flag.padding[0]”為初始值0(步驟S116),然後就將其送出P4交換器。
藉由這樣的設計,所有聚合在N-封包中的物聯網封包(訊息1(msg1)、訊息2(msg2)…至訊息8(msg8))能被解聚合且各自在正確的順序下被送出。此外,需要被複製及再循環至入口管線的位元組數量可大幅降低。
請參閱第8圖,其係為依據本揭露之重新提交(resubmit)及基於複製之封包解聚合方法之流程圖。此方法也能如同第7A圖至第7B圖所示的方法來解聚合聚合封包。然而,此方法的效率稍微低於第7A圖至第7B圖所示的方法。如圖所示,流程圖包含重新提交及基於複製之聚合封包解聚合的幾個步驟(S201-S214)。如第8圖所示之本實施例提供了另一種方法來解聚合1個聚合封包,其包含8個訊息封包於聚合表頭。聚合封包的聚合數量不侷限於本實施例的8個,可依據聚合程序的設定而改變。
在本方法當中,在入口管線的尾端,N-封包重新提交回解析器N次,且每次N-封包都被複製並將複製的N-封包傳送到出口管線以從其中提取不同的物聯網封包。接著提取的物聯網封包傳送到特定輸出端口來送出。本實施例由儲存在N-封包之訊息(msg(i), i = 1, 2,…, 8 ) 依序提取物聯網封包,並將其形成為完整的封包以單獨傳送。在現有的P4交換器上,在入口管線僅能對封包進行一次複製操作。當封包在入口管線時,複製操作無法執行N次。這是為何本方法必須重新提交封包回到解析器N次,而每次僅能製作一個複製的封包。
類似於封包聚合方法,”cnt”元資料欄位用來記錄N-封包已重新提交到解析器的次數,且由變數C來表示。對於每個第一次進入入口管線的N-封包,”cnt”欄位的初始值為0而其值會在重新提交(步驟S208)前增加1(步驟S205)。當封包重新提交到解析器,目前”cnt”元資料的值能被帶到解析器做為連續的使用。在複製程序後,如果這個欄位的值到達(N-1),則指封包已被複製N次,因此封包應被丟棄(步驟S206)。在本實施例中N=8,”cnt”欄位的值僅會增加至7。
複製的N-封包將先進入流量器TM(步驟S209)後接著進入出口管線。在出口管線中,封包第一次檢查是否為複製封包(步驟S210)。
P4交換器使用”standard_metadata.intance_type”欄位來表示封包是否為複製的,如果對於封包來說其值為0,則此封包為複製的封包。這樣的測試是用來在封包通過出口管線時施行不同的動作。僅有複製的N-封包需要通過”moveSpecificMsgToMsg1”及”formIoTMsg”之表來作進一步的程序。對於非N-封包,它們並不會通過這些表,且取而代之的將是基於一般路由程序(步驟S203)送出。
以下示出”moveSpecificMsgToMsg1”表的設計,包含匹配欄位及施加於通過封包之可能的動作。
在這個表中,使用在”disagg_metadata”元資料內的”cnt”欄位作為匹配欄位來決定N-封包的聚合表頭內哪個訊息應該被移到”agg.msg1”(步驟S211)。”disagg_metadata.cnt”之值從0到7,當複製程序發生時此值會被設定成入口管線之C值。目的是移動訊息(msg(C+1))至訊息(msg1),即將訊息(msg1)覆蓋為訊息(msg(C+1)),使得要被提取的物聯網封包總是儲存在聚合表頭的起始處。這將促進在”formIoTMsg”表實行的動作。
當C之值為0,不操作(No Operation)的動作”no_op”被執行,執行此動作並不會改變封包的內容,,這是因為想提取的訊息(msg1)已經存在聚合表頭的起始處。對於C=1, 2,…, 7,則應該執行動作”move_msg(C+1)”以將訊息(msg(C+1))移到聚合表頭的第一訊息位置(即”agg.msg1”)。例如C=1,動作”move_msg2”應被執行,在聚合表頭中移動訊息(msg2)至訊息(msg1)。
為了達到上述的設計目的,許多個流規則應預先安裝在此表中,因為流程進入之此表具有(匹配欄位值,相關動作)的格式,這些預先安裝的規則可如下所示:(0, no_op), (1, move_msg2), (2, move_msg3), (3, move_msg4), … , (7, move_msg8)。
另一個在解聚合程序中使用的表是”formIoTMsg”。因為本方法想要所有通過的N-封包接受相同的處理,這個表具有不匹配欄位且僅須預先安裝一個規則於此。這個規則相關的動作是藉由”extract_msg_and_update_header”定義的動作。在這個動作中,訊息表頭首先會被加入正在被處理的N-封包中。接著,聚合表頭中的訊息(msg1),亦即從”moveSpecificMsgToMsg1”表提取的物聯網封包,會被複製到新增訊息表頭的訊息欄位中,最後N-封包的聚合表頭被移除(步驟S212)。
藉由上述操作,現在複製的N-封包被轉換成完整的物聯網封包。這個封包的用戶資料協定表頭的長度設為30,其為用戶資料協定表頭長度為8加上旗標表頭長度6及物聯網封包負載16。封包的網際網路協定表頭的長度設為50,其為上述用戶資料協定表頭的長度30加上網際網路協定表頭的長度20。在這些欄位更新後,用戶資料協定表頭的校驗和欄位重新計算。最後,修改這個封包的旗標表頭之類型以表示這個封包是物聯網封包(步驟S213),解聚合程序在此完成。這完整的物聯網封包接著被傳送至路由程序進行正常的路由。
除了重新提交及基於複製的方法與再循環及基於複製的方法這兩個方法之外,在這也可提供另一種基於群播(multicast)的方法。在這個方法當中,在入口管線的N-封包將通過名為”setMulticast”的表。這個動作對封包設定群播的群組至某特定的端口。須注意的是”intrinsic_metadata”為一個P4交換器所提供的特別元資料。它包含必要的元資料讓使用者啟用一些P4交換器的功能。在這個範例中,需要設定”intrinsic_metadata.mcast_grp”以讓交換器知道封包應該通過特定的群播群組來進行群播。
在經由”setMulticast”表處理後,封包離開入口管線進入流量器,流量器會根據群播的索引設定(即”intrinsic_metadata.mcast_grp”)將封包群播至多個端口。一般而言,對於群播的應用,封包將被送到不同輸出端口。然而,在本封包解聚合設計當中,配置群播的群組使得所有群播的N-封包會被送至相同輸出端口,即它們應該被送出的地方。須注意這樣的群播群組的配置需要在封包解聚合程序開始前完成。
經由這樣的設定,當N-封包經過流量器,P4交換器將產生8個副本(在本實施例中N=8),然後將它們送到相同的輸出端口。當這些封包進入輸出管線,它們將被修改成為8個不同的物聯網封包,即想要從N-封包中提取的物聯網封包。如同在重新提交及基於複製的解聚合方法所呈現的,必須界定各個N-封包的群播副本並決定哪個訊息(msg(
i),
i= 1, 2, .. , 8)應從其聚合表頭中提取。
這樣的設計目標可藉由使用” intrinsic_metadata.egress_rid”元資料來達成。這個元資料是在流量器中自動設定以幫助界定各個群播封包的副本。在本實施例中,會產生N-封包的8個群播的副本,且”intrinsic_metadata.egress_rid”所帶之這些副本範圍從0至7。類似於前一解聚合方法,在”moveSpecificMsgToMsg1”表中,不操作的動作”no_op”在”intrinsic_metadata.egress_rid”為0的時候被執行。讓變數C作為”intrinsic_metadata.egress_rid”,C= 1, 2, .. , 7,執行移動訊息的動作”move_msg(C+1)”來移動特定訊息(msg(C+1)),從原本位置到聚合表頭的起始處(msg1)。接著,這些封包將進入”formIoTMsg”表且在聚合表頭中的訊息(msg1)將被提取以形成完整且不同的物聯網封包。因為基於群播的解聚合方法類似於重新提交及基於複製的解聚合方法,其差異僅在於是使用複製操作或是群播操作來形成N-封包的N個副本,因此文中不再另外提供基於群播之解聚合方法的流程圖。
基於上述的封包聚合及解聚合方法,封包聚合演算法及封包解聚合演算法已實現在P4交換器(EdgeCore),其使用”Barefoot wedge 100BF-65X Tofino”之晶片作為交換器之特定應用積體電路(ASIC)。這個6.5Tbps Tofino晶片之面板頻寬被分為64個100Gbps之QSFP28端口。有一個硬體封包產生器兼效能量測設備被稱為測試中心(TestCenter),它使用100Gbps之線路卡(FX3-100GQ-T2)來產生由小的物聯網封包所組成的100Gbps負載,這些負載封包被灌入P4交換器(EdgeCore)來測量封包聚合及解聚合方法的最大吞吐量。
測試中心(TestCenter)的封包計數器被用來調查本聚合方法在不導致P4交換器中任何丟失封包情況下之最大聚合吞吐量。通過封包計數資訊,利用二元搜尋基準測試方法來找出最大負載,其在封包聚合期間在P4交換器內不會有物聯網封包或N-封包遺失。
在實驗的參數上設定N為物聯網封包被聚合的個數而物聯網封包負載的大小為S,其中N=1, 2, 4, 及 8而 S = 22, 26, 34, 42, 及46 位元組。表1示出本封包聚合方法各種N及S的組合在沒有任何封包丟失情況下的最大吞吐量。在表中,如在特定參數組合中並無數字示出,表示P4編譯器無法成功編譯這些組合的P4編碼。
表1中指出除了兩個情況下,本聚合方法之最大聚合吞吐量都能達到100Gbps,也就是P4交換器的線路速率。兩個例外情況發生在N=2及S=42及46的情況下。在這些狀況下,最大吞吐量稍微降至95 Gbps及98 Gbps。這樣的吞吐量下降是因為Tofino晶片的內部設計。總結來說,當使用的全部緩衝空間能容納於Tofino晶片,聚合的P4編碼能被成功編譯且其傳輸吞吐量可到達P4交換器線路速率的100Gbps。
至於聚合N個物聯網封包所需的時間,由於太小所以測試中心無法準確量測。如表中所示,因為聚合是在100Gbps線路速率執行,聚合N個具有S負載的物聯網封包所需的時間可計算大約為N * S * 8 (bits) / 100 Gbps。基於這個方程式,當N=8而S=22時,僅需要14奈秒(nanoseconds),是相當的小。
表2列出基於重新提交及複製之封包解聚合方法之最大吞吐量,以及相較於當交換器線路速率為100Gbps時,藉由任何封包解聚合能達到的最大理論吞吐量的百分比例。在解聚合程序過後,因為產生之物聯網封包的總位元數量將會明顯大於聚合的N-封包,N-封包的輸入速率無法為P4交換器的線路速率,否則產生的物聯網封包,由於端口頻寬不足,將被P4交換器的輸出端口丟棄。為防止這種現象,N-封包的輸入速率必須從線路速率降低到較小的速率,直到這個問題消失。表中所列降低後的輸入速率是依據N與S值的組合計算而得,至於所列百分比值則是實際獲得解聚合最大吞吐量除以解聚合方法的最大理論傳輸率而得。在這表中,本方法提供最佳的效率且在所有組合情況下都能達到100%的最大理論吞吐量。其效率的提升是藉由減少需要複製及重新回傳至入口管線的數量而達成。
雖然在本揭露當中是藉由參考附圖描述特定實施例的方法,對於所屬技術領域中具有通常知識者而言,在未脫離本案在申請專利範圍中所揭露的範圍及精神下,可作各種修改及變更。這些修改及變更應藉由本揭露之說明書限制在一定範圍內。
10:第一物聯網裝置
11:第二物聯網裝置
12:第N物聯網裝置
20:第一物聯網伺服器
21:第二物聯網伺服器
22:第N物聯網伺服器
30:輸入端口
31:解析器
32:入口管線
33:流量管理器
34:出口管線
35:逆解析器
36:輸出端口
40:交換器組態
41:解析圖
42:控制程序
43:匹配動作表組態
44:傳送時間傳送規則
100:第一P4交換器
200:第二P4交換器
300:P4交換器
a:訊息表頭
b:旗標表頭
c:聚合表頭
p1、p2、…、pN:原始訊息封包
pA:聚合封包
S01-S06、S001-S015、S11-S16、S101-S118、S201-S214:步驟
WAN:廣域網路
第1圖係為依據本揭露說明封包聚合及解聚合之網路架構之示意圖。
第2圖係為依據本揭露之訊息封包及聚合封包之示意圖。
第3圖係為依據本揭露之高速資料平面封包聚合方法之流程圖。
第4圖係為依據本揭露說明P4交換器之架構之示意圖。
第5圖係為依據本揭露之封包聚合程序之流程圖。
第6圖係為依據本揭露之高速資料平面封包解聚合方法之流程圖。
第7A圖至第7B圖係為依據本揭露之再循環及基於複製之封包解聚合方法之流程圖。
第8圖係為依據本揭露之重新提交及基於複製之封包解聚合方法之流程圖。
S01-S06:步驟
Claims (10)
- 一種高速資料平台封包聚合方法,係藉由使用協議獨立數據封包處理程式語言(Programming Protocol-Independent Packet Processor, P4)交換器來傳送資料封包,該封包聚合方法包含以下步驟: 藉由該P4交換器接收複數個封包,該複數個封包傳送至該P4交換器之一解析器; 藉由在該P4交換器之一交換器組態所定義之一解析圖將各該複數個封包解析為一乙太網路表頭、一網際網路協定表頭、一用戶資料協定表頭、一旗標表頭以及一訊息表頭,該旗標表頭表示該複數個封包之類型而該訊息表頭代表該複數個封包之資料負載; 藉由在該P4交換器之該交換器組態所定義之一匹配動作表來檢查該複數個封包之該旗標表頭,決定該複數個封包是否為訊息封包,該匹配動作表定義複數個匹配欄位以及對應該複數個匹配欄位之複數個控制動作,用以執行在該P4交換器之一入口管線的一控制程序; 藉由使用該匹配動作表儲存該訊息封包之該訊息表頭於該P4交換器之一記憶體空間; 藉由使用該匹配動作表在該P4交換器之一出口管線聚合一預設數量之訊息表頭作為一聚合表頭並修改該網際網路協定表頭及該用戶資料協定表頭以產生一聚合封包;以及 藉由該P4交換器傳送該聚合封包至該P4交換器之一逆解析器且輸出該聚合封包。
- 如申請專利範圍第1項所述之高速資料平台封包聚合方法,其中該訊息封包包含藉由一物聯網裝置收集之感測資料。
- 如申請專利範圍第1項所述之高速資料平台封包聚合方法,其中該匹配動作表之該複數個控制動作包含取得計數器,用於計算用來產生該聚合封包之該訊息封包目前接收之數量。
- 如申請專利範圍第1項所述之高速資料平台封包聚合方法,其中該匹配動作表之該複數個控制動作包含儲存訊息,係將該訊息表頭儲存在一訊息池中。
- 如申請專利範圍第1項所述之高速資料平台封包聚合方法,其中該匹配動作表之該複數個控制動作包含移動訊息以組合儲存之訊息表頭為該聚合表頭,以及更新長度以修改該網際網路協定表頭及該用戶資料協定表頭之校驗和。
- 一種高速資料平台封包解聚合方法,係藉由使用協議獨立數據封包處理程式語言(Programming Protocol-Independent Packet Processor, P4)交換器來傳送資料封包,該封包解聚合方法包含以下步驟: 藉由該P4交換器接收複數個封包,該複數個封包傳送至該P4交換器之一解析器; 藉由在該P4交換器之一交換器組態所定義之一解析圖將各該複數個封包解析為一乙太網路表頭、一網際網路協定表頭、一用戶資料協定表頭、一旗標表頭以及一聚合表頭,該旗標表頭表示該複數個封包之類型而該聚合表頭代表該複數個封包之資料負載; 藉由在該P4交換器之該交換器組態所定義之一匹配動作表來檢查該複數個封包之該旗標表頭,決定該複數個封包是否為聚合封包,該匹配動作表定義複數個匹配欄位以及對應該複數個匹配欄位之複數個控制動作,用以執行在該P4交換器之一入口管線的一控制程序; 藉由使用該匹配動作表複製該聚合封包並將複製封包儲存於該P4交換器之一記憶體空間; 藉由使用該匹配動作表在該P4交換器之一出口管線修改該複製封包之該聚合表頭,並修改該複製封包之該網際網路協定表頭及該用戶資料協定表頭以產生一原始訊息封包;以及 藉由該P4交換器傳送該原始訊息封包至該P4交換器之一逆解析器且輸出該原始訊息封包。
- 如申請專利範圍第6項所述之封包解聚合方法,其中該原始訊息封包由該P4交換器輸出且傳送至一物聯網伺服器。
- 如申請專利範圍第6項所述之封包解聚合方法,進一步包含下步驟: 傳送該複製封包至該出口管線; 在複製封包內增加新訊息表頭且將此次要解聚合出的封包複製入新訊息表頭內; 將聚合表頭由複製封包內移除; 以及 設定一再循環旗標以表示該聚合封包需要再循環回到該解析器來執行另一複製程序直到複製程序之數量等於該預設數量。
- 如申請專利範圍第6項所述之封包解聚合方法,進一步包含下步驟: 傳送該複製封包至該出口管線; 增加一新訊息表頭且移動在該聚合封包之該聚合表頭中之一訊息封包至該新訊息表頭以作為該原始訊息表頭,並且移除該複製封包之該聚合表頭以產生該原始訊息封包;以及 設定一計數器以表示施加於該聚合封包之複製程序之數量且重新提交該聚合封包回到該解析器以執行另一複製程序直到該數量等於一預設解聚合數量。
- 如申請專利範圍第6項所述之封包解聚合方法,其中該匹配動作表之該複數個控制動作包含設置群播以產生該聚合封包之預設複製數量且定義該預設複製數量之相同輸出端口。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/374,071 | 2019-04-03 | ||
| US16/374,071 US11190628B2 (en) | 2019-04-03 | 2019-04-03 | High-speed data-plane packet aggregation and disaggregation method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI690185B true TWI690185B (zh) | 2020-04-01 |
| TW202038592A TW202038592A (zh) | 2020-10-16 |
Family
ID=71134235
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108121596A TWI690185B (zh) | 2019-04-03 | 2019-06-20 | 高速資料平面封包聚合及解聚合方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US11190628B2 (zh) |
| TW (1) | TWI690185B (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI745034B (zh) * | 2020-08-18 | 2021-11-01 | 國立陽明交通大學 | 封包聚合及解聚合方法 |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2022056510A1 (en) * | 2020-09-10 | 2022-03-17 | Microchip Technology Incorporated | Aggregation of data for frames or disaggregation of data from frames |
| US11949605B2 (en) * | 2021-10-28 | 2024-04-02 | Avago Technologies International Sales Pte. Limited | Systems for and methods of unified packet recirculation |
| CN115225711A (zh) * | 2022-06-01 | 2022-10-21 | 裕太微(上海)电子有限公司 | 一种高效传输的以太网设备 |
| CN116708318B (zh) * | 2023-04-28 | 2026-01-20 | 中国科学院计算技术研究所 | 基于硬件可编程交换机的tcp连接聚合方法及系统 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI261441B (en) * | 2004-06-28 | 2006-09-01 | Nokia Corp | Method and apparatus for packet aggregation in a wireless communication network |
| CN102210126A (zh) * | 2008-11-07 | 2011-10-05 | 爱立信电话股份有限公司 | 使用聚集路由器密钥转发数据分组的方法和设备 |
| US20170195224A1 (en) * | 2012-03-09 | 2017-07-06 | Ray W. Sanders | Apparatus and methods of routing with control vectors in a synchronized adaptive infrastructure (sain) network |
| JP2018011289A (ja) * | 2016-04-21 | 2018-01-18 | 富士通株式会社 | 分離光トランスポートネットワークスイッチングシステム |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8228954B2 (en) * | 2007-11-13 | 2012-07-24 | Cisco Technology, Inc. | Routing operations using sensor data |
| US20110271008A1 (en) * | 2010-04-29 | 2011-11-03 | International Business Machines Corporation | Selective TCP Large Receive Aggregation Based On IP Destination Address |
| WO2012050360A2 (en) * | 2010-10-12 | 2012-04-19 | Samsung Electronics Co., Ltd. | Method and system of transmitting packet data units of machine type communication devices over a network interface in a long term evolution network |
| US9825884B2 (en) * | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
| US9413859B2 (en) * | 2014-01-17 | 2016-08-09 | Gigamon Inc. | Systems and methods for processing packets |
| US9606781B2 (en) * | 2014-11-14 | 2017-03-28 | Cavium, Inc. | Parser engine programming tool for programmable network devices |
| US9838286B2 (en) * | 2014-11-20 | 2017-12-05 | Telefonaktiebolaget L M Ericsson (Publ) | Passive performance measurement for inline service chaining |
| US10687246B2 (en) * | 2015-05-29 | 2020-06-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods for compression and decompression of headers of internet protocol packets, devices, computer programs and computer program products |
| US9891898B1 (en) * | 2015-06-04 | 2018-02-13 | Netronome Systems, Inc. | Low-level programming language plugin to augment high-level programming language setup of an SDN switch |
| US10230810B1 (en) * | 2016-03-18 | 2019-03-12 | Barefoot Networks, Inc. | Storing packet data in mirror buffer |
| US10848430B2 (en) * | 2016-12-30 | 2020-11-24 | Intel Corporation | Flexible packet processing |
| US10516728B2 (en) * | 2017-03-10 | 2019-12-24 | Microsoft Technology Licensing, Llc | Virtual filtering platform in distributed computing systems |
| US10645029B1 (en) * | 2017-03-20 | 2020-05-05 | Barefoot Networks, Inc. | Fast reconfiguration of the data plane of a hardware forwarding element |
| US10454833B1 (en) * | 2017-06-30 | 2019-10-22 | Barefoot Networks, Inc. | Pipeline chaining |
| US10892953B2 (en) * | 2018-02-23 | 2021-01-12 | Nec Corporation | Network-based application acceleration |
| US11451609B2 (en) * | 2018-03-16 | 2022-09-20 | Intel Corporation | Technologies for accelerated HTTP processing with hardware acceleration |
| US11223708B2 (en) * | 2018-06-26 | 2022-01-11 | Microsoft Technology Licensing, Llc | Scalable sockets for QUIC |
-
2019
- 2019-04-03 US US16/374,071 patent/US11190628B2/en active Active
- 2019-06-20 TW TW108121596A patent/TWI690185B/zh active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI261441B (en) * | 2004-06-28 | 2006-09-01 | Nokia Corp | Method and apparatus for packet aggregation in a wireless communication network |
| CN102210126A (zh) * | 2008-11-07 | 2011-10-05 | 爱立信电话股份有限公司 | 使用聚集路由器密钥转发数据分组的方法和设备 |
| CN102210126B (zh) | 2008-11-07 | 2014-12-10 | 爱立信电话股份有限公司 | 使用聚集路由器密钥转发数据分组的方法和设备 |
| US20170195224A1 (en) * | 2012-03-09 | 2017-07-06 | Ray W. Sanders | Apparatus and methods of routing with control vectors in a synchronized adaptive infrastructure (sain) network |
| JP2018011289A (ja) * | 2016-04-21 | 2018-01-18 | 富士通株式会社 | 分離光トランスポートネットワークスイッチングシステム |
Non-Patent Citations (1)
| Title |
|---|
| A. Koike, T. Ohba, R. Ishibashi, "IoT Network Architecture Using Packet Aggregation and Disaggregation," 2016 5th IIAI International Congress on Advanced Applied Informatics (IIAI-AAI), 10-14 July 2016. * |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI745034B (zh) * | 2020-08-18 | 2021-11-01 | 國立陽明交通大學 | 封包聚合及解聚合方法 |
| US11343360B2 (en) | 2020-08-18 | 2022-05-24 | National Chiao Tung University | Packet aggregation and disaggregation method |
Also Published As
| Publication number | Publication date |
|---|---|
| US20200322465A1 (en) | 2020-10-08 |
| TW202038592A (zh) | 2020-10-16 |
| US11190628B2 (en) | 2021-11-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI690185B (zh) | 高速資料平面封包聚合及解聚合方法 | |
| TWI745034B (zh) | 封包聚合及解聚合方法 | |
| US8681819B2 (en) | Programmable multifield parser packet | |
| JP3651783B2 (ja) | パターン範囲比較実行方法、コンピュータ可読媒体および装置 | |
| CN110383777B (zh) | 端口扩展器设备的灵活处理器 | |
| US9426071B1 (en) | Storing network bidirectional flow data and metadata with efficient processing technique | |
| US7984038B2 (en) | Longest prefix match (LPM) algorithm implementation for a network processor | |
| US6675163B1 (en) | Full match (FM) search algorithm implementation for a network processor | |
| US20100085891A1 (en) | Apparatus and method for analysing a network | |
| CN104753885B (zh) | 一种流表匹配的方法、装置和OpenFlow交换系统 | |
| CN105022671A (zh) | 一种用于流式数据并行处理的负载均衡方法 | |
| WO2016106591A1 (zh) | 一种抽取数据报文的方法及装置 | |
| Hua et al. | Brick: A novel exact active statistics counter architecture | |
| CN115917473A (zh) | 用分布式lpm实现的高度可扩展算法构建数据结构的系统 | |
| WO2023087600A1 (zh) | 一种分布式数据平面验证方法 | |
| Bonelli et al. | A purely functional approach to packet processing | |
| US8195710B2 (en) | Method for summarizing data in unaggregated data streams | |
| CN113225227B (zh) | 一种兼顾简单性与准确性的基于简图的网络测量方法和装置 | |
| CN120567954A (zh) | 电力系统的报文处理方法、装置、计算机设备、可读存储介质和程序产品 | |
| CN117978719B (zh) | 一种保障服务质量的最小费用差异路由方法及装置 | |
| CN120200924A (zh) | 基于图卷积神经网络的计算机网络性能评估方法及系统 | |
| WO2024082670A1 (zh) | 通信方法、系统及服务器 | |
| TWI805005B (zh) | 圖像檢測方法、電子設備及存儲介質 | |
| Tang et al. | High-performance implementation for graph-based packet classification algorithm on network processor | |
| CN117135086A (zh) | 数据聚合方法、装置和控制服务器 |