TWI392288B - 用於多核心通訊處理的系統及方法 - Google Patents

用於多核心通訊處理的系統及方法 Download PDF

Info

Publication number
TWI392288B
TWI392288B TW097103094A TW97103094A TWI392288B TW I392288 B TWI392288 B TW I392288B TW 097103094 A TW097103094 A TW 097103094A TW 97103094 A TW97103094 A TW 97103094A TW I392288 B TWI392288 B TW I392288B
Authority
TW
Taiwan
Prior art keywords
queue
data packet
receiving
hardware
packet
Prior art date
Application number
TW097103094A
Other languages
English (en)
Other versions
TW200847694A (en
Inventor
Claude Basso
Jean L Calvignac
Chih Jen Chang
Philippe Damon
Herman D Dierks Jr
Christoph Raisch
Jan-Bernd Themann
Natarajan Vaidhyanathan
Fabrice J Verplanken
Colin B Verrilli
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of TW200847694A publication Critical patent/TW200847694A/zh
Application granted granted Critical
Publication of TWI392288B publication Critical patent/TWI392288B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

用於多核心通訊處理的系統及方法
本申請案大體上涉及經改良之資料處理系統及方法。更特定而言,本申請案係關於用於多核心通訊處理之系統及方法。
對於高速網路連接變成必要條件之現代計算系統,多個處理核心(亦即處理器)通常駐留於單一系統內。儘管可提供多個處理核心,但是通常該高速網路連接中之資料封包之處理限於處置接收側及發送側操作之單一處理器。關於高速網路連接機制之接收側處理,單一處理器或核心通常執行接收中斷處置。關於發送側處理,已知系統通常在單一處理器或核心上將網路裝置驅動程式中之發送側處理之傳輸部分串行化。複數個處理器可設法在複數個連接上發送資料,但此等操作將在裝置驅動程式中串行化一次。
使用單一核心處置通訊處理導致通訊瓶頸。隨著通訊速度提高(例如在10 Gbps),例如TCP/IP堆疊之通訊堆疊之處理耗用使得使用單一處理核心來處置通訊處理不可行。亦即,單一處理核心不能維持媒體速度頻寬,亦即利用全部通訊鏈路容量。
Microsoft Corporation提供之一解決方案稱為接收側調節(Receive-Side Scaling;RSS)且例如描述於"Scalable Networking:Eliminating the Receive Processing Bottleneck- Introducing RSS",WinHEC 2004版本,2004年4月14日RSS解決方案涉及使用雜湊函數及迂迴表(indirection table)以將資料封包分布遍及複數個處理器以便處理。基於所接收之資料封包來產生雜湊,且所得雜湊值之最低有效位元用以在迂迴表中索引。迂迴表儲存將資料封包引導至複數個處理器中之一者之輸入項。隨後資料封包由所選擇之處理器來處理。
RSS解決方案有助於分布通訊封包之接收側處理。然而,RSS不提供增強通訊封包之發送側處理的任何機制。相反地,RSS完全信賴於提高接收側處理處理量以便允許發送側處理速度增加之被動效應。
說明性實施例提供用於資料處理裝置之間之通訊之多核心處理(在本文中稱為多核心調節(MCS))的系統及方法。藉由說明性實施例之機制,MCS被提供為一組技術,其使得能夠藉由將傳輸及接收側之處理分布在多個處理核心上來維持媒體速度。此等技術亦使得能夠設計多線緒網路介面控制器(NIC)硬體,其有效地隱藏與輸入/輸出(I/O)匯流排上之資料封包轉移相關之直接記憶體存取(DMA)操作之潛時。
根據說明性實施例之機制,MCS藉由允許在兩個關鍵層級(軟體層級(例如TCP/IP堆疊層級)及硬體層級(例如NIC層級))上進行並行封包處理來提供一媒體速度通訊協定(例如TCP/IP處理)。基本概念基於通訊鏈路載有很大程度上彼 此無關之流(亦即連接)的事實。因此,此等來自或前往單一實體或虛擬埠之流可在多個處理核心上被並行處理。在NIC層級,多線緒允許屬於不同流之封包由不同硬體線緒同時處理。
在接收側,可在NIC中在通訊協定堆疊中之媒體存取控制(MAC)層上的一層級中執行流識別。每一流可隨後由NIC內部之不同硬體線緒來同時處理且使用佇列及專用於每一流之中斷來引導至不同處理核心。在傳輸側上,流識別可由軟體(例如通訊協定堆疊及/或裝置驅動程式)來執行。每一流與專用發送佇列有關且每一發送佇列可由NIC內部之不同硬體線緒來處理。
藉由說明性實施例之機制,NIC被提供有複數個發送佇列管理器(SQM),其為對經提交至相關發送佇列以由NIC傳輸之封包進行處理的硬體元件。主機系統之處理核心將封包置於相關發送佇列中,SQM使用直接記憶體存取(DMA)操作來處理來自該相關發送佇列之資料封包,且經由相關實體或虛擬埠來傳輸資料封包。
NIC另外被提供有提供於硬體中之複數個接收封包處理器(RPP),以便處理經由相關實體或虛擬埠接收之封包。RPP與硬體實施之流分類器引擎(其操作以將經由同一實體或虛擬埠到達之資料流分出)協同工作。基於由流分類器引擎執行之分類,選擇接收佇列。在任何給定時間,排程器引擎可選擇將配合給定接收佇列使用之RPP,且排程器引擎隨後將確保不存在同時對同一接收佇列進行操作之兩 個RPP。將資料封包提供至處理所選擇之接收佇列之封包的RPP中之一者。中斷或者輪詢技術可用以向與接收佇列相關之處理器通知新資料封包已到達以便處理。
處理核心執行用於處置發送及接收佇列利用之軟體以傳輸及接收資料封包。此軟體在通訊協定堆疊層級上操作且可實施為例如通訊協定堆疊之部分或者獨立裝置驅動程式。在一說明性實施例中,軟體實施為無需TCP/IP堆疊之任何改變即可操作之NIC裝置驅動程式。
在接收側處理上,軟體可響應於指示接收資料封包之中斷之產生而操作且可用來將所接收之資料封包傳遞至通訊協定堆疊(例如TCP/IP堆疊)以便處理。在發送側處理上,軟體可操作以選擇資料封包待發送至之發送佇列且將資料封包排入所選擇之發送佇列中。軟體可隨後設置與發送佇列相關之門鈴(doorbell)以由此通知NIC該資料封包準備好被發送。
軟體機制所執行之發送及接收側處理可彼此並行且與由執行於其他處理核心上之軟體之其他執行個體所執行之其他發送及接收側處理並行執行。除在因為多個TCP/IP執行個體可能對作為同一資料流之部分之連接操作,所以TCP/IP堆疊需要存取發送佇列之情況(亦即多個TCP/IP堆疊可能需要存取同一發送佇列且由此可能需要鎖定)之外,該處理並不需要鎖定。
因此,說明性實施例之MCS機制藉由使得能夠在通訊流之傳輸及接收側上進行同時處理而提供高效能。此外, MCS機制藉由使得能夠在NIC及處理核心上進行同時處理來允許實現高效能。此外,MCS機制藉由在流與處理器快取記憶體之間形成親和性(affinity)來允許實現高效能。所有此等益處使得說明性實施例之MCS機制很適合高速媒體應用(包括10 Gbps及以上之高速媒體頻寬),使得可利用全部通訊鏈路容量。
在一說明性實施例中,提供用於傳輸資料封包之方法。該方法可包含在處理核心中產生待傳輸至外部裝置之資料封包及基於自資料封包之標頭中提取之連接資訊來選擇用於傳輸資料封包之發送佇列。方法可另外包含在所選擇之發送佇列中產生用於資料封包之輸入項且藉由網路配接器之相關硬體實施之發送佇列管理器來處理所選擇之發送佇列中之輸入項以由此將資料封包傳輸至外部裝置。相關硬體實施之發送佇列管理器可為提供於網路配接器中之複數個硬體實施之發送佇列管理器中之一者。複數個硬體實施之發送佇列管理器中之每一硬體實施之發送佇列管理器可與不同發送佇列相關。
處理核心可為複數個處理核心中之一者。可關於複數個處理核心中之每一者以並行方式來實施該方法。
選擇用於傳輸資料封包之發送佇列可包含自系統記憶體擷取發送緩衝描述符資訊且基於連接資訊及發送緩衝描述符資訊來確定發送佇列是否已先前分配給與資料封包相關之連接。選擇發送佇列可另外包含若發送佇列已先前分配給連接,則選擇先前經分配之發送佇列。若發送佇列並未 先前分配給連接,則該方法可包含對於連接資訊執行雜湊運算以產生雜湊值,基於所產生之雜湊值在投送表資料結構中索引,且基於儲存於投送表資料結構中之與雜湊值相關之輸入項之值來選擇發送佇列。
選擇用於傳輸資料封包之發送佇列及產生所選擇之發送佇列中之用於資料封包之輸入項可由執行於處理核心上之軟體來進行。軟體可為獨立於通訊協定堆疊之網路介面裝置驅動程式。或者,軟體可為通訊協定堆疊之一部分。
方法可另外包含在資料處理系統之網路介面中接收傳入之資料封包且使用硬體實施之資料流分類器引擎來處理傳入之資料封包以選擇將傳入之資料封包置於其中之接收佇列。此外,方法可包含由硬體實施之接收封包處理器基於資料流分類器引擎所執行之選擇而將傳入之資料封包置於所選擇之接收佇列中。
資料流分類器引擎可藉由判定藉以接收傳入之資料封包之連接的接收佇列先前是否已經分配及若接收佇列已先前分配給連接則選擇先前經分配之接收佇列來選擇接收佇列。若用於該連接之接收佇列先前並未經分配,則資料流分類器引擎可自傳入之資料封包中提取連接資訊,對於所提取之連接資訊執行雜湊運算以產生雜湊值,且基於所產生之雜湊值在投送表(routing table)中索引,以選擇將傳入之資料封包投送至其之接收佇列。
接收封包處理器可為複數個接收封包處理器中之一者。接收封包處理器可由排程器引擎基於複數個接收封包處理 器中之接收封包處理器之可用性來選自複數個接收封包處理器。
方法可另外包含將一中斷發送至與所選擇之接收佇列相關之處理核心且在與所選擇之接收佇列相關之接收完成佇列中記入完成事件輸入項。此外,方法可包含藉由通訊協定堆疊處理置於所選擇之接收佇列中之傳入之資料封包。
在另一說明性實施例中,提供包含至少一處理核心及與至少一處理核心耦接之網路配接器的設備。至少一處理核心可產生待傳輸至外部裝置之資料封包、基於自資料封包之標頭中提取之連接資訊來選擇用於傳輸資料封包之發送佇列,且產生所選擇之發送佇列中之用於資料封包之輸入項。所選擇之發送佇列中之輸入項可由網路配接器之相關硬體實施之發送佇列管理器來處理以由此將資料封包傳輸至外部裝置。相關硬體實施之發送佇列管理器可為提供於網路配接器中之複數個硬體實施之發送佇列管理器中之一者。複數個硬體實施之發送佇列管理器中之每一硬體實施之發送佇列管理器可與不同發送佇列相關。
至少一處理核心可為複數個處理核心中之一者。複數個處理核心中之每一者可以並行方式執行產生及選擇操作中之一或多者。
至少一處理核心可藉由自系統記憶體中擷取發送緩衝描述符資訊、基於連接資訊及發送緩衝描述符資訊來判定發送佇列是否已先前分配給與資料封包相關之連接,及若發送佇列已先前分配給連接則選擇先前經分配之發送佇列來 選擇用於傳輸資料封包之發送佇列。若發送佇列並未前分配給連接,則至少一處理核心可藉由對於連接資訊執行雜湊運算以產生雜湊值,基於所產生之雜湊值在投送表資料結構中索引,且基於儲存於投送表資料結構中之與雜湊值相關之輸入項之值來選擇發送佇列。
至少一處理核心可藉由執行至少一處理核心中之軟體來選擇用於傳輸資料封包之發送佇列及產生所選擇之發送佇列中之用於資料封包之輸入項。軟體可為獨立於通訊協定堆疊之網路介面裝置驅動程式。或者,軟體可為通訊協定堆疊之一部分。
網路配接器可在資料處理系統之網路介面中接收傳入之資料封包且使用硬體實施之資料流分類器引擎來處理傳入之資料封包以選擇將傳入之資料封包置於其中之接收佇列。此外,網路配接器可另外藉由硬體實施之接收封包處理器基於資料流分類器引擎所執行之選擇而將傳入之資料封包置於所選擇之接收佇列中。
資料流分類器引擎可藉由判定藉以接收傳入之資料封包之連接的接收佇列是否先前已經分配及若接收佇列已先前分配給連接則選擇先前經分配之接收佇列來選擇接收佇列。若用於該連接之接收佇列先前並未經分配,則資料流分類器引擎可自傳入之資料封包中提取連接資訊,對於所提取之連接資訊執行雜湊運算以產生雜湊值,且基於所產生之雜湊值在投送表(routing table)中索引以選擇將傳入之資料封包投送至其之接收佇列。
接收封包處理器可為複數個接收封包處理器中之一者。接收封包處理器可由排程器引擎基於複數個接收封包處理器中之接收封包處理器之可用性來選自複數個接收封包處理器。
接收封包處理器可將一中斷發送至與所選擇之接收佇列相關之處理核心。接收封包處理器可另外在與所選擇之接收佇列相關之接收完成佇列中記入完成事件輸入項。至少一處理核心之通訊協定堆疊可處理置於所選擇之接收佇列中之傳入之資料封包。
在另一說明性實施例中,提供包括複數個處理核心及一網路配接器之系統。複數個處理核心中之每一處理核心可執行通訊協定堆疊執行個體及網路介面裝置驅動程式執行個體。網路配接器可包含複數個硬體實施之發送佇列管理器及複數個硬體實施之接收封包處理器。複數個硬體實施之發送佇列管理器可處理由複數個處理核心置於發送佇列中之資料封包。複數個硬體實施之接收封包處理器可處理由網路配接器經由網路配接器之埠接收之資料封包。
複數個處理核心中之每一處理核心可對於每一處理核心傳輸至外部裝置之相應資料封包以大體上並行方式執行以下操作:產生待傳輸至外部裝置之資料封包;基於自資料封包之標頭中提取之連接資訊選擇用於傳輸資料封包之發送佇列;及產生所選擇之發送佇列中之用於資料封包之輸入項。
網路配接器可藉由相關硬體實施之發送佇列管理器來處 理所選擇之發送佇列中之輸入項以由此將資料封包傳輸至外部裝置。相關硬體實施之發送佇列管理器可為複數個硬體實施之發送佇列管理器中之一者。複數個硬體實施之發送佇列管理器中之每一硬體實施之發送佇列管理器可與不同發送佇列相關。
每一處理核心可藉由自系統記憶體中擷取發送緩衝描述符資訊、基於連接資訊及發送緩衝描述符資訊來判定發送佇列是否已先前分配給與資料封包相關之連接,及若發送佇列已先前分配給連接則選擇先前經分配之發送佇列來選擇用於傳輸資料封包之發送佇列。若發送佇列並未先前分配給連接,則每一處理核心可對於連接資訊執行雜湊運算以產生雜湊值,基於所產生之雜湊值在投送表資料結構中索引,且基於儲存於投送表資料結構中之與雜湊值相關之輸入項之值來選擇發送佇列。
網路配接器可在資料處理系統之網路介面中接收傳入之資料封包,使用硬體實施之資料流分類器引擎來處理傳入之資料封包以選擇將傳入之資料封包置於其中之接收佇列,且藉由複數個接收封包處理器中之一硬體實施之接收封包處理器來基於資料流分類器引擎所執行之選擇將傳入之資料封包置於所選擇之接收佇列中。
資料流分類器引擎可藉由判定藉以接收傳入之資料封包之連接的接收佇列是否先前已經分配及若接收佇列已先前分配給連接則選擇先前經分配之接收佇列來選擇接收佇列。若用於該連接之接收佇列先前並未經分配,則資料流 分類器引擎可自傳入之資料封包中提取連接資訊,對於所提取之連接資訊執行雜湊運算以產生雜湊值,且基於所產生之雜湊值在投送表索引以選擇將傳入之資料封包投送至其之接收佇列。接收封包處理器可由網路配接器之排程器引擎基於複數個接收封包處理器中之接收封包處理器之可用性來選自複數個接收封包處理器。
接收封包處理器可將一中斷發送至與所選擇之接收佇列相關之處理核心且在與所選擇之接收佇列相關之接收完成佇列中記入完成事件輸入項。一相應處理核心之通訊協定堆疊執行個體可處理置於所選擇之接收佇列中之傳入之資料封包。
在另一說明性實施例中,提供包含具有電腦可讀程式之電腦可用媒體的電腦程式產品。電腦可讀程式當執行於計算裝置上時導致計算裝置在處理核心中產生待傳輸至外部裝置之資料封包且基於自資料封包之標頭中提取之連接資訊來選擇用於傳輸資料封包之發送佇列。電腦可讀程式可另外導致計算裝置產生所選擇之發送佇列中之用於資料封包之輸入項且藉由網路配接器之相關硬體實施之發送佇列管理器來處理所選擇之發送佇列中之輸入項以由此將資料封包傳輸至外部裝置。相關硬體實施之發送佇列管理器可為提供於網路配接器中之複數個硬體實施之發送佇列管理器中之一者。複數個硬體實施之發送佇列管理器中之每一硬體實施之發送佇列管理器可與不同發送佇列相關。
本發明之此等及其他特徵及優點將描述於本發明之例示 性實施例之以下詳細描述中,或將鑒於本發明之例示性實施例之以下詳細描述而變得為一般熟習此項技術者所瞭解。
將參照以下結合附圖閱讀之說明性實施例之詳細描述來最佳瞭解本發明以及其較佳使用模式及其他目標及優點。
說明性實施例提供用於多核心通訊處理之系統及方法。因而,說明性實施例之機制較佳地實施於多核心或多處理器資料處理裝置(其經由分布式資料處理系統中之一或多個資料網路而彼此通訊)中。因此,為了提供理解說明性實施例之機制可實施於其中之例示性環境之背景,在下文提供圖1-2作為分布式資料處理系統及多核心或多處理器資料處理裝置之實例。其後的諸圖係針對可實施於此例示性環境中之說明性實施例之特定機制。應瞭解圖1-2並不意欲陳述或暗示說明性實施例可實施於其中之資料處理環境之類型或組態之任何限制且僅意欲為例示性的。可在沒有悖離本發明之精神及範疇的情況下,進行所描述之環境的許多修改。
現在參看諸圖,圖1描述說明性實施例之態樣可實施於其中之例示性分布式資料處理系統之圖示。分布式資料處理系統100可包括說明性實施例之實施例可實施於其中之電腦網路。分布式資料處理系統100含有至少一網路102,其為用於在分布式資料處理系統100之內連接在一起之多種裝置及電腦之間提供通訊鏈路的媒體。網路102可包括 諸如導線、無線通訊鏈路或光纜之連接。
在所描述之實例中,伺服器104及伺服器106連同儲存單元108一起連接至網路102。另外,用戶端110、112及114亦連接至網路102。此等用戶端110、112及114可例如為個人電腦、網路電腦或其類似物。在所描述之實例中,伺服器104將諸如引導檔案、作業系統影像及應用程式之資料提供至用戶端110、112及114。在所描述之實例中,用戶端110、112及114為伺服器104之用戶端。分布式資料處理系統100可包括未圖示之額外伺服器、用戶端及其他裝置。
在所描述之實例中,分布式資料處理系統100為具有網路102之網際網路,其表示使用傳輸控制協定/網際網路協定(TCP/IP)協定組來彼此通訊之網路及閘道器之全球集合。網際網路之心臟部位為在由數千投送資料及訊息之商用、政府、教育及其他電腦系統組成之主要節點或主機電腦之間之高速資料通訊線路之主幹。當然,分布式資料處理系統100亦可經實施以包括若干不同類型之網路,例如企業內部網路、區域網路(LAN)、廣域網路(WAN)或其類似物。如上所述,圖1意欲作為本發明之不同實施例之一實例,而非作為本發明之不同實施例之結構限制,且因此展示於圖1中之特定元件不應視為對於本發明之說明性實施例可實施於其中之環境具有限制性。
圖2為本發明之態樣可實施於其中之資料處理裝置之例示性方塊圖。展示於圖2中之例示性資料處理裝置為一類 型之多核心或多處理器資料處理裝置之實例,然而如一般熟習此項技術者一旦閱讀以下描述後所容易瞭解,本發明不侷限於此實例。實際上,說明性實施例之機制適用於任何多核心或多處理器資料處理裝置。其他多核心或多處理器資料處理裝置與展示於圖2中者相比可具有顯著不同之架構,然而應視為處於不侷限於任一多核心或多處理器架構之本發明之精神及範疇之內。
圖2為根據說明性實施例可實施為圖1所描述之伺服器或用戶端計算裝置之對稱多處理器(SMP)資料處理裝置之更詳細方塊圖。雖然SMP資料處理裝置在本文中得以描述,但是應瞭解說明性實施例之機制可用於不同處理核心執行不同指令集的異質多核心或多處理器資料處理裝置,而不悖離本發明之精神及範疇。例如,說明性實施例之機制可實施於異質多處理器系統晶片(system-on-a-chip)中,諸如可購自International Business Machines Corporation,Armonk,New York之Cell寬頻引擎(CBE)。
參看圖2,資料處理裝置200包括連接至系統匯流排206之複數個處理器202及204。亦連接至系統匯流排206者為記憶體控制器/快取記憶體208,其提供與區域記憶體209之介面。I/O匯流排橋接器210連接至系統匯流排206且提供與I/O匯流排212之介面。記憶體控制器/快取記憶體208及I/O匯流排橋接器210可如所描述經整合。
連接至I/O匯流排212之周邊組件互連(PCI)匯流排橋接器214提供與PCI區域匯流排216之介面。許多數據機可連接 至PCI匯流排216。典型PCI匯流排實施將支援四個PCI擴充槽或內插式連接器。可經由藉由內插式板連接至PCI區域匯流排216之數據機218及網路配接器220來提供圖1中之網路電腦108-112之通訊鏈路。
額外PCI匯流排橋接器222及224提供可藉以支援額外數據機或網路配接器之用於額外PCI匯流排226及228之介面。以此方式,資料處理裝置200允許連接至多個網路電腦。記憶體映射圖形配接器230及硬碟232亦可直接或間接如所描述地連接至I/O匯流排212。
一般熟習此項技術者應理解描述於圖2中之硬體可不同。例如,亦可附加地或代替所描述之硬體來使用諸如光碟機及其類似物之其他周邊裝置。所描述之實例並不意欲暗示關於本發明之結構限制。
描述於圖2中之資料處理裝置可例如為執行進階互動式執行(AIX)作業系統之IBM RISC/System 6000系統,其為International Business Machines Corporation(Armonk,New York)之產品。當然,可代替展示於圖2中者來利用執行其他作業系統之其他資料處理裝置,只要其實施下文所描述且如獨立項所闡明之說明性實施例之機制中之一或多者即可。
說明性實施例提供用於資料處理裝置之間之通訊之多核心處理(在本文中稱為多核心調節(MCS))的系統及方法。藉由說明性實施例之機制,MCS提供使得能夠藉由將傳輸及接收側之處理分布在多個處理核心上來維持媒體速度的 一組技術。另外,此等技術亦使得能夠設計多線緒網路介面控制器(NIC)硬體,其有效地隱藏與輸入/輸出(I/O)匯流排上之資料封包轉移相關之直接記憶體存取(DMA)操作之潛時。
根據說明性實施例之機制,MCS藉由使得能夠在兩個關鍵層級(軟體層級(例如TCP/IP堆疊層級)及硬體層級(例如NIC層級))上進行並行封包處理來提供媒體速度通訊協定(例如TCP/IP處理)。基本概念基於通訊鏈路載有很大程度上彼此無關之流(亦即連接)的事實。因此,來自或前往單一實體或虛擬埠之此等流可在多個處理核心上被並行處理。在NIC層級上,多線緒允許屬於不同流之封包由不同硬體線緒來同時處理。
圖3為說明根據一說明性實施例之MCS實施之例示性硬體及軟體元件之例示性方塊圖。如圖3中所示,複數個處理核心310-314及340-344提供於多核心資料處理裝置中,每一處理核心310-314及340-344執行通訊協定堆疊320、350(其在所描述之實例中為TCP/IP堆疊)之獨立執行個體。另外,每一處理核心310-314及340-344執行說明性實施例之態樣可實施於其中之網路介面卡(NIC)裝置驅動程式325、355之獨立執行個體(執行線緒)。應瞭解雖然展示於圖3中之說明性實施例描述說明性實施例之軟體態樣以獨立NIC裝置驅動程式325、355形式來實施,但是在其他說明性實施例中,說明性實施例之軟體態樣可實施為通訊協定堆疊320、350之部分。
NIC裝置驅動程式325、355操作以與藉以將資料封包發送至NIC 370或自NIC 370接收資料封包之發送佇列(SQ)330-336及接收佇列(RQ)360-366介面連接。SQ 330-336及RQ 360-366可為保持在可由處理核心310-314、340-344及NIC 370存取之記憶體或其他儲存器中(例如在系統記憶體中)之資料結構。SQ 330-336及RQ 360-366通常以由一發送佇列及一接收佇列組成之佇列對(QP)形式分配至一或多個處理核心310-314及340-344。例如,可根據通常在此項技術中已知且於www.infinibandta.org/specs/處自InfiniBand貿易協會獲得之InfiniBand規範來分配及維護QP。此外,QP之使用另外描述於例如共同讓渡之於2004年4月13日頒予Boyd等人之美國專利第6,721,806號及於2006年3月7日頒予Arndt等人之美國專利第7,010,633號中。
NIC 370可為藉以使得與一或多個資料網路之通訊可用之任何類型之網路介面或配接器。NIC 370不必為獨立"卡"但可為藉以可發送及/或接收資料封包之任何裝置,無論其獨立於主機系統或與主機系統形成一體。NIC 370包括一或多個發送佇列管理器(SQM)引擎372、佇列對(QP)內容儲存器376、調度器引擎378、一或多個接收封包處理器(RPP)引擎380、排程器引擎390、流分類器引擎392及一或多個埠399。
SQM 372為處理經提交至相關發送佇列330-336之封包以便由NIC 370經由埠399傳輸之硬體元件。主機系統之處理 核心將封包置於相關發送佇列330-336中,SQM 372使用直接記憶體存取(DMA)操作來處理來自相關發送佇列之資料封包,且經由相關實體或虛擬埠399來傳輸資料封包。調度器引擎378在特定時間選擇SQM 372以處置來自特定發送佇列330-336之資料流。調度器引擎378另外確保每次僅一個SQM處置來自特定發送佇列330-336之資料流,以使得兩個SQM 372不能同時向來自同一發送佇列330-336之資料流提供服務。
RPP 380為彼此並行操作以處理經由相關實體或虛擬埠399所接收之資料封包的硬體實施之引擎。RPP 380與硬體實施之流分類器引擎392(其操作以將經由同一實體或虛擬埠399到達之資料流分出)協同工作。基於由流分類器引擎392執行之分類,選擇接收佇列360-366。在任何給定時間,排程器引擎390可選擇待配合給定接收佇列360-366一起使用之RPP 380且排程器引擎390隨後將確保不存在同時對同一接收佇列360-366操作之兩個RPP 380。隨後將資料封包提供至所選RPP 380,其將處理所選擇之接收佇列360-366之封包。中斷或者輪詢技術可用以向與接收佇列360-366相關之處理核心340-344通知新資料封包已到達以便處理。
視情況,可提供排程器引擎390以便選擇哪一RPP 380將處理所接收之資料封包。藉由該實施,流分類器引擎392可判定哪一接收佇列360-366將接收資料封包。可將此選擇之接收佇列360-366提供至排程器引擎390,其隨後基於 RPP 380之可用性(亦即RPP 380之當前工作負荷)來選擇RPP 380以處理所接收之資料封包。因此,多個RPP 380可處理引導至同一接收佇列360-366之資料封包,但是並非同時進行此處理。排程器引擎390之作用為確保每次僅一個RPP 380處理特定接收佇列360-366之資料封包。
QP內容儲存器376儲存可由SQM 372、調度器引擎378、流分類器引擎392、排程器引擎390及RPP 380利用以確定來自發送佇列330-336及前往接收佇列360-366之資料封包之投送路徑選擇的佇列對內容資訊。此QP內容資訊可包括例如關於QP本身之結構資訊(例如指標、鏈路、組態參數等)、用以管理置放所接收之資料封包的接收記憶體之資訊、錯誤偵測暫存器資訊,及軟體介面暫存器資訊(例如門鈴暫存器及其類似物)。在InfiniBand規範中,QP內容包括大約40個資訊欄位,其將不在本文中詳細描述。
應注意雖然圖3展示資料封包發送至其且自其中接收資料封包之單一埠399,但是說明性實施例不限於此。實際上,SQM 372、調度器引擎378、流分類器引擎392、排程器引擎390及RPP 380可對發送至多個埠/自多個埠接收之資料封包進行操作而不悖離本發明之精神及範疇。此外,如以上簡單涉及,此等埠399可實施為實體及/或虛擬埠。
另外應注意雖然圖3說明處置資料封包之傳輸或發送側處理之獨立處理核心310-314及處置資料封包之接收側處理之獨立處理核心340-344,但是說明性實施例不限於此。實際上,同一處理核心可執行資料封包之傳輸或發送 側處理及接收側處理,而不悖離本發明之精神及範疇。獨立處理核心310-314及340-344僅出於易於說明根據說明性實施例之用於傳輸或發送側處理及接收側處理之資料流的目的而提供於圖3中。
在一說明性實施例中,NIC裝置驅動程式325及TCP/IP堆疊320為執行於處理核心310-314及340-344上之軟體過程,其目的為處置用於傳輸及接收資料封包之發送佇列330-336及接收佇列360-366的利用。此軟體在通訊協定堆疊層級(亦即TCP/IP堆疊320層級)上操作且如所說明可實施為通訊協定堆疊之部分或者獨立裝置驅動程式。應瞭解,勝於在軟體中實施此等過程,可提供與每一處理核心310-314及340-344相關之專用硬體裝置以便執行下文描述的與可歸因於此等軟體過程320及325之操作相同的操作。此外,硬體及軟體元件之組合可用於執行軟體過程320及325之此等操作。
根據一說明性實施例,在傳輸或發送側處理上,TCP/IP堆疊320以通常在此項技術中已知且幾乎沒有修改之方式操作。然而,NIC裝置驅動程式325操作以選擇資料封包待發送至其之發送佇列330-336且將資料封包排入所選擇之發送佇列330-336中。NIC裝置驅動程式325可隨後設置與發送佇列相關之門鈴(諸如在QP內容儲存器376中),以由此通知NIC 370資料封包準備好自所選擇之發送佇列330-336發送。SQM 372由調度器引擎378(其確保在一給定時間沒有兩個SQM 372對同一發送佇列進行操作)選擇。所選擇 之SQM 372隨後使用DMA操作來處理在所選擇之發送佇列330-336中之資料封包且經由埠399傳輸資料封包。
在接收側處理上,NIC裝置驅動程式355可響應於由例如RPP 380所產生的指示在接收佇列360-366中接收資料封包之中斷而操作且可用來將所接收之資料封包傳遞至通訊協定堆疊(例如TCP/IP堆疊350)以便處理。在接收側處理期間,NIC裝置驅動程式355可視特定所要實施而基於中斷或輪詢技術來操作。
軟體機制所執行之發送及接收側處理可彼此並行且與由執行於其他處理核心310-314及340-344上之軟體之其他執行個體所執行之其他發送及接收側處理並行執行。亦即,處理核心310中之NIC裝置驅動程式325及TCP/IP堆疊320可操作以便實際上同時發送及接收資料封包,由此提高處理核心310關於資料通訊之處理量及處理能力。此外,處理核心310之NIC裝置驅動程式325及TCP/IP堆疊320可與處理核心340之TCP/IP堆疊及NIC裝置驅動程式執行個體350及355一起實際上同時發送及接收資料封包。
除在因為多個TCP/IP執行個體320、350可能對作為同一資料流之部分之連接進行操作,所以TCP/IP堆疊需要存取發送佇列330-336之情況之外,該處理並不需要鎖定。亦即,僅在兩個TCP/IP堆疊必須存取同一SQ 330-336的情況下,才需要鎖定。
現在將參看圖4-7更詳細地描述根據說明性實施例之資料封包之傳輸或發送側處理及資料封包之接收側處理。資 料封包之傳輸或發送側處理及接收側處理之描述將依據TCP/IP堆疊處理來描述,但不限於此。實際上,說明性實施例之機制可配合任何資料通訊協定使用,而不悖離本發明之精神及範疇。
圖4為說明根據一說明性實施例之資料封包之接收側處理之例示性方塊圖。如圖4中所示,當資料封包經由埠399到達時,將資料封包提供至硬體實施之流分類器引擎392。流分類器引擎392剖析所接收之資料封包中之標頭資訊且檢查以判定資料封包所使用之通訊協定,例如TCP、UDP、IPv4、IPv6等。此資訊通知流分類器引擎392標頭資訊之格式,以使得可提取用於確定資料封包至適當接收佇列360-366之投送路徑選擇的必要資訊。通訊協定之判定可基於資料封包中之預定標頭資訊欄位(其識別與資料封包相關之通訊協定)來進行。
已判定所使用之通訊協定,流分類器引擎392自資料封包中提取例如6元組之標頭資訊,其包括(例如)IP目的地位址、IP源位址、目的地埠、源埠、協定埠、虛擬埠等。基於此資訊,流分類器引擎392存取QP內容儲存器376,或者執行可能需要存取系統記憶體440中之連接資訊資料結構460之連接查找操作,且判定在連接建立時接收佇列360-366是否已特定地與此資料流相關。連接資訊資料結構460含有諸如(例如)呈樹狀結構形式之描述所有經分配之連接的輸入項,其可用以查找給定連接搜尋資料之QP識別符(若其存在)。或者,可將識別哪一接收佇列360-366與特定 連接有關之資訊儲存於QP內容儲存器376中。
基本上,QP內容或連接查找操作係對於自資料封包標頭中提取之特定連接資訊之雜湊來執行,且若對於與雜湊值對應之連接,存在一QP識別符,則將QP識別符傳回,由此識別該連接之接收佇列360-366。若在連接建立時,特定接收佇列360-366已特別地與此資料流相關,則流分類器引擎392選擇例如RQ 362之此接收佇列,資料封包將投送至此接收佇列。
若接收佇列360-366並未特定地與此資料流相關,則流分類器引擎392對於所提取之例如6元組之標頭資訊執行雜湊運算,且所得雜湊值用以選擇供投送資料封包之接收佇列360-366。例如,雜湊值可用作投送表資料結構410中之索引,其識別與資料封包待投送至之接收佇列360-366對應之儲存位置之位址。
流分類器引擎392對接收佇列360-366之識別導致將接收佇列識別符提供至可選排程器引擎390。若可選排程器引擎390未被使用,則流分類器引擎392可將資料封包提供至特定接收封包處理器(RPP)380。可選排程器引擎390可用於例如多個RPP 380可向同一接收佇列提供服務之實施中,以確保在一給定時間僅一RPP對特定接收佇列進行操作。可選排程器引擎390可基於RPP 380之當前負載在可向所識別之接收佇列360-366提供服務之多個RPP 380之間選擇且隨後將所選擇之RPP 380與至所選擇之接收佇列之資料流相關聯。僅提供可選排程器引擎390以進一步增加資 料封包之處理速度且對於說明性實施例之操作並非為必不可少的。
經由流分類器引擎392所執行之選擇特定接收佇列360-366之流分類及視實施而定由可選排程器引擎390或流分類器引擎392選擇RPP 380,資料封包由所選擇之RPP 380記入於所選擇之接收佇列360-366。可藉由使用存在於所選擇之接收佇列360-366中之接收緩衝描述符中之資訊來執行資料封包之記入。例如,此接收緩衝描述符可含有在系統記憶體440中DMA(直接記憶體存取)資料封包於之位址。所選擇之RPP 380可隨後將完成事件輸入項記入於與所選擇之接收佇列360-366相關之接收完成佇列(RCQ)420-426中。例如,此完成事件輸入項可含有所接收之資料封包之長度。
在一說明性實施例中,每一接收佇列360-366在一對一的基礎上,與接收完成佇列420-426相關。完成事件輸入項識別其中有新資料封包可用於處理之所選擇之接收佇列360-366以及在所選擇之接收佇列360-366中之待處理之資料封包之數目。
中斷與一或多個接收完成佇列420-426有關。一中斷與唯一處理核心340-344或一組處理核心340-344有關。與同一中斷相關之所有接收完成佇列420-426由同一處理核心340-344或同一組處理核心340-344來處理。為最大化快取記憶體親和性,同一資料流可始終由同一處理核心340-344或同一組處理核心340-344來處理。
RPP 380除將完成事件輸入項記入於接收完成佇列420-426之外,可對與接收完成佇列420-426相關之處理核心340-344觸發中斷。該中斷通知處理核心340-344,新接收完成佇列完成事件輸入項可用於處理。該中斷觸發NIC裝置驅動程式355,該NIC裝置驅動程式355將所接收之資料封包之資料封包資訊(例如記憶體中之位址、長度等)傳遞至相關TCP/IP堆疊350。多個以不同處理核心 340-344為目標之中斷可由RPP 380同時發出。因此,此等中斷觸發在每一處理核心340-344上同時執行NIC裝置驅動程式執行個體355。NIC裝置驅動程式355的每一執行個體可處理不同接收完成佇列420-426之完成事件輸入項。每一NIC裝置驅動程式執行個體355可隨後調度不同TCP/IP堆疊執行個體350。因此,每一TCP/IP堆疊執行個體可對如流分類器引擎392所識別之不同組TCP連接進行操作。
或者,可使用輪詢操作代替中斷操作。在該說明性實施例中,多個TCP/IP使用者空間線緒可同時執行於不同處理核心340-344上。每一線緒可輪詢與該線緒所執行於之特定處理核心340-344相關之接收完成佇列420-426之集合。若該線緒識別待處理之新完成事件輸入項,則向與彼處理核心340-344相關之NIC裝置驅動程式執行個體355通知該新完成事件輸入項,隨後該NIC裝置驅動程式執行個體355相應地對其進行處理。
NIC裝置驅動程式355可恰好在TCP/IP堆疊350之媒體存取控制(MAC)層以上操作,亦即在TCP/IP堆疊350之資料 鏈路層與網路層之間操作,且因此可將所擷取之接收完成佇列完成事件輸入項提供至TCP/IP堆疊350之網路層以供處理。基於完成事件輸入項,TCP/IP堆疊350可擷取及處理來自相關接收佇列360-366之相關資料封包。
自上文中應瞭解,與所選擇之實施(亦即中斷或輪詢實施)無關,在NIC裝置驅動程式355中或在TCP/IP堆疊350中不存在在接收側處理期間鎖定接收佇列、接收完成佇列或所使用之其他資源之鎖定要求。因為不存在鎖定要求,所以資源並不予以鎖定直至資料封包之處理完成為止,且因此,使得NIC裝置驅動程式355之多個執行個體及TCP/IP堆疊350執行個體對於資料封包之同時處理成為可能。
圖5為說明根據一說明性實施例之資料封包之傳輸或發送側處理之例示性方塊圖。如圖5中所示,當資料封包將自處理核心310-314經由NIC 370發送至一或多個資料網路上時,TCP/IP堆疊320或NIC裝置驅動程式325(視NIC裝置驅動程式325之操作是否整合至TCP/IP堆疊320中而定)選擇發送佇列330-336以將待傳輸之資料封包予以記入。為達成所說明之實施例之目的,將假定NIC裝置驅動程式325之操作並未整合至TCP/IP堆疊320中且因此TCP/IP堆疊320基本上與已知系統中者相同。
發送佇列330-336之選擇可基於資料封包為其一部分之資料流之先前經分配之發送佇列330-336或基於提供於資料封包之標頭中之連接資訊之雜湊來執行。例如,NIC裝置驅動程式325可能已接收來自通訊堆疊之關於此資料流 已具有經分配之發送佇列的資訊(例如以發送佇列索引之形式)。若發送佇列已分配給資料流,則NIC裝置驅動程式325選擇彼發送佇列為資料封包待投送至其中之發送佇列。
若發送佇列並未分配給資料流,則NIC裝置驅動程式325對於資料封包標頭之連接資訊(例如IP目的地位址、IP源位址、目的地埠、源埠及協定埠)執行雜湊運算。應注意此雜湊運算不必為與先前所描述之在接收側處理上所執行者相同的雜湊運算。亦即,可對於傳輸或發送側處理及接收側處理使用兩個不同雜湊函數且可執行兩個不同雜湊運算。應注意待用於傳輸或發送側處理及接收側處理中之特定雜湊函數以及對其執行雜湊運算之連接資訊之種類可程式化於流分類器引擎392及NIC裝置驅動程式325中,以使得當認為必要時可將其進行變化或修改。
一旦發送佇列選擇由NIC裝置驅動程式325執行,則NIC裝置驅動程式325將資料封包排入所選擇之發送佇列330-336中。其藉由將發送緩衝描述符寫入所選擇之發送佇列(例如發送佇列332)中而將資料封包排入所選擇之發送佇列330-336中。發送緩衝描述符含有資料封包在系統記憶體510中之位址及長度。發送緩衝描述符中之資訊由NIC 370用來執行資料封包標頭及有效負載之DMA讀取操作。
NIC裝置驅動程式325隨後觸發與所選擇之發送佇列相關的"門鈴"以通知NIC資料封包被讀取待發送。基本上,將一值寫入NIC 370中之與所選擇之發送佇列332相關之門鈴 暫存器560中。此值通知NIC,在與門鈴暫存器560相關之發送佇列中,存在一可用於處理之資料封包的發送緩衝描述符。
響應於將值寫入此門鈴暫存器560,調度器引擎378喚醒所選擇之發送佇列管理器引擎(SQM)372以處理所選擇之發送佇列332之資料封包。SQM 372執行DMA操作以由此直接記憶體存取(DMA)與門鈴暫存器560相關之所選擇之發送佇列332之頭部的發送緩衝描述符。SQM 372隨後使用存在於發送緩衝描述符中之位址及長度參數而自系統記憶體510中直接記憶體存取(DMA)資料封包。
應注意發送側處理可對於不同發送佇列330-336來同時執行。此外,發送側處理可對於不同處理核心310-314來同時執行。另外,SQM 372可同時對不同發送佇列330-336進行操作。使多個SQM 372並行執行允許了NIC 370隱藏與系統記憶體510之DMA操作相關之潛時。以此方式,能夠實現在資料網路媒體上具有零封包間空隙之連續資料封包傳輸。
圖6A、6B及7為說明根據一說明性實施例之傳輸及接收操作之流程圖。應瞭解流程圖說明之每一方塊及流程圖說明中之方塊組合可實施於硬體中或藉由電腦程式指令來實施。可將此等電腦程式指令提供至處理器或其他可程式化資料處理設備以產生一機器,以使得執行於處理器或其他可程式化資料處理設備上之指令產生用於實施流程圖方塊中指定之功能的構件。此等電腦程式指令亦可儲存於電腦 可讀記憶體或儲存媒體中,該電腦可讀記憶體或儲存媒體可引導處理器或其他可程式化資料處理設備以特定方式起作用,以使得儲存於電腦可讀記憶體或儲存媒體中之指令產生一製品,其包括實施流程圖方塊中所指定之功能的指令構件。
因此,流程圖說明之方塊支援用於執行所指定功能之構件組合、用於執行所指定功能之步驟組合及用於執行所指定功能之程序指令構件。亦將瞭解流程圖說明之每一方塊及流程圖說明中之方塊組合可由執行所指定功能或步驟之特殊用途的基於硬體之電腦系統來實施或由特殊用途的硬體及電腦指令之組合來實施。
此外,提供流程圖以展示在說明性實施例內所執行之操作。流程圖並不意欲陳述或暗示關於特定操作或更特定而言操作之順序的限制。流程圖之操作可經修改以適合一特定實施,而不悖離本發明之精神及範疇。
圖6A及6B為概述根據一說明性實施例之用於接收資料封包之例示性操作之流程圖。如圖6A及6B中所示,操作以經由網路介面卡(NIC)或其他資料網路配接器之實體及/或虛擬埠來接收資料封包開始(步驟610)。NIC或配接器之流分類器引擎判定與資料封包相關之通訊協定(步驟615)。基於所判定之通訊協定,流分類器引擎自資料封包之標頭中提取連接資訊(步驟620)。流分類器引擎隨後執行連接查找操作以識別與資料封包對應之連接之QP(步驟625),且基於所提取連接資訊及所執行連接查找操作,判定一接收 佇列是否已分配給資料封包為其一部分之資料流(步驟630)。倘若如此,則流分類器引擎選擇分配給該資料流之接收佇列作為該資料封包待投送至其中之接收佇列(步驟635)且排程器引擎基於所選擇之接收佇列來選擇RPP(步驟650)。
若接收佇列並未分配給該資料流,則流分類器引擎對於自資料封包之標頭中提取之連接資訊執行雜湊運算(步驟640)。所得雜湊值隨後由流分類器引擎用來在投送表資料結構中索引,從而識別資料封包待投送至其中之接收佇列(步驟645)。
流分類器引擎或可選排程器引擎(若包括)選擇用於處理所選擇之接收佇列之資料封包之接收封包處理器(RPP)(步驟650)。若使用排程器引擎,則其將確保同一接收佇列不同時調度給兩個不同RPP。流分類器引擎或排程器引擎隨後將資料封包提供至所選擇之RPP供處理(步驟655)。
所選擇之RPP自系統記憶體中讀取接收佇列內容(步驟660)。若接收佇列並未被產生或處於不允許接收資料封包之狀態中(步驟665),則丟棄資料封包(步驟680)且操作結束。否則,RPP自系統記憶體中擷取接收佇列之下一個接收緩衝描述符(步驟670)。若不存在此接收緩衝描述符(步驟675),則丟棄資料封包(步驟680)且過程結束。否則RPP藉由使用存在於接收緩衝描述符中之資訊(含有執行DMA之位置的系統記憶體位址)來將資料封包置於所選擇之接收佇列中,且將完成事件輸入項(例如寫入資料封包 長度)記入於與所選擇之接收佇列相關之接收完成佇列(步驟685)。
其後,假定正在使用基於中斷之實施,RPP可將一中斷發送至與記入有該完成事件輸入項之接收完成佇列相關之該或該等處理核心(步驟690)。處理核心之NIC裝置驅動程式響應於接收該中斷而自接收完成佇列中擷取完成事件輸入項(步驟695)且將完成事件輸入項資訊及資料封包提供至與NIC裝置驅動程式相關之通訊協定堆疊執行個體(步驟697)。通訊協定堆疊執行個體隨後基於完成事件輸入項(例如資料封包長度)及自接收佇列中之接收緩衝描述符中擷取之一些資訊(例如,記憶體中之位址,在硬體中偵測之錯誤等)而處理資料封包(步驟699)。操作隨後終止。
應瞭解在圖6A及6B中概述之操作係對於單一資料封包。此操作可對於同一或不同資料流之複數個不同資料封包同時執行多次。因此,所概述操作可與同一或不同NIC、網路配接器及處理核心上之其他類似操作並行執行。
圖7為概述根據一說明性實施例之用於傳輸或發送資料封包之例示性操作之流程圖。如圖7中所示,傳輸或發送操作以處理核心產生待傳輸之資料封包開始(步驟710)。當通訊協定堆疊將資料封包傳遞至裝置驅動程式時,其可給出其希望使用特定發送佇列之指示(例如藉由提供發送佇列索引)。若情況確實如此(步驟715),則將所指定發送佇列選擇用於傳輸資料封包且裝置驅動程式過程在步驟735 處繼續。否則,裝置驅動程式自資料封包之標頭中提取連接資訊(步驟720)。裝置驅動程式對於所提取連接資訊執行雜湊運算(步驟725)且使用所得雜湊值在投送表資料結構中索引以識別用於傳輸資料封包之發送佇列(步驟730)。
一旦已識別發送佇列(明確地由通訊協定堆疊來識別或藉由如上所述之雜湊機制來識別),裝置驅動程式接著驗證發送佇列已產生(步驟735)。若發送佇列並未產生,則丟棄資料封包(步驟740)且操作結束。若發送佇列已產生,則裝置驅動程式產生與資料封包相關之發送緩衝描述符(步驟745)。爾後,裝置驅動程式藉由將發送緩衝描述符寫入發送佇列且隨後將一值寫入網路配接器之門鈴暫存器而將資料封包排入所選擇之發送佇列中,門鈴暫存器與所選擇之發送佇列對應(步驟750)。響應於偵測到門鈴暫存器中之值,網路配接器調度發送佇列管理器以處理用於所選擇之發送佇列之資料封包,確保沒有兩個SQM同時處理同一發送佇列(步驟755)。發送佇列管理器直接記憶體存取(DMA)發送佇列之頭部之發送緩衝描述符(步驟760),且基於儲存於發送緩衝描述符中之位址及長度資訊,自系統記憶體中直接記憶體存取(DMA)資料封包(步驟765)。在資料封包於線上傳輸之後,操作接著終止(步驟770)。
應瞭解在圖7中概述之操作係對於單一資料封包。此操作可對於同一或不同資料流之複數個不同資料封包同時執行多次。因此,所概述操作可與同一或不同處理核心、NIC及網路配接器上之其他類似操作並行執行。
因此,說明性實施例之MCS機制藉由使得能夠在通訊流之傳輸及接收側上進行同時處理而提供高效能。此外,MCS機制藉由允許在NIC及處理核心上進行同時處理來允許實現高效能。此外,MCS機制藉由在流與處理器快取記憶體之間形成親和性來允許實現高效能。所有此等益處使得說明性實施例之MCS機制很適合包括10 Gbps及以上之高速媒體頻寬的高速媒體應用,以使得可利用全部通訊鏈路容量。
應瞭解說明性實施例可採用完全硬體實施例(在NIC及處理核心中)或含有硬體(在NIC中)及軟體元件(執行於處理核心中)之實施例的形式。在一例示性實施例中,說明性實施例之機制以處理核心中之包括(但不限於)韌體、常駐軟體、微碼等之軟體及提供於NIC中之硬體引擎實施。
此外,說明性實施例之態樣可採用可自電腦可用或電腦可讀媒體中存取之電腦程式產品的形式,該電腦程式產品提供由電腦或任何指令執行系統使用或與電腦或任何指令執行系統相關之程式碼。出於此描述之目的,電腦可用或電腦可讀媒體可為可含有、儲存、傳達、傳播或傳送由指令執行系統、設備或裝置使用或與指令執行系統、設備或裝置相關之程式的任何設備。
媒體可為電子、磁性、光學、電磁、紅外線或半導體系統(或設備或裝置)或傳播媒體。電腦可讀媒體之實例包括半導體或固態記憶體、磁帶、抽取式電腦碟片、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、硬質磁碟及光碟。光 碟之當前實例包括緊密光碟-唯讀記憶體(CD-ROM)、緊密光碟-讀取/寫入(CD-R/W)及DVD。
適合於儲存及/或執行程式碼之資料處理系統包括至少一經由系統匯流排與記憶體元件直接或間接耦接之處理器。記憶體元件可包括在實際執行程式碼期間所使用之區域記憶體、大容量儲存器及提供至少一些程式碼之臨時儲存以便減少在執行期間必須自大容量儲存器擷取程式碼之次數的快取記憶體。
輸入/輸出或I/O裝置(包括(但不限於)鍵盤、顯示器、指標裝置等)可直接或經由介入I/O控制器與系統耦接。網路配接器亦可與系統耦接以使得資料處理系統能夠透過介入之私有或公用網路而與其他資料處理系統或遠端印表機或儲存裝置耦接。數據機、電纜數據機及以太網路卡僅為當前可用類型之網路配接器中的若干種。
本發明之描述已為達成說明及描述之目的而提供,且並未意欲為詳盡無遺的或限於所揭示之形式之本發明。許多修改及變化將為一般熟習此項技術者所顯然瞭解。實施例經選擇及描述以便最佳說明本發明之原則、實際應用,且使得其他一般熟習此項技術者領會本發明之具有適合於所設想之特定用途之多種修改的多種實施例。
100‧‧‧分布式資料處理系統
102‧‧‧網路
104‧‧‧伺服器
106‧‧‧伺服器
108‧‧‧儲存單元
110‧‧‧用戶端
112‧‧‧用戶端
114‧‧‧用戶端
200‧‧‧資料處理裝置
202‧‧‧處理器
204‧‧‧處理器
206‧‧‧系統匯流排
208‧‧‧記憶體控制器/快取記憶體
209‧‧‧區域記憶體
210‧‧‧I/O匯流排橋接器
212‧‧‧I/O匯流排
214‧‧‧周邊組件互連(PCI)匯流排橋接器
216‧‧‧PCI區域匯流排
218‧‧‧數據機
220‧‧‧網路配接器
222‧‧‧額外PCI匯流排橋
224‧‧‧額外PCI匯流排橋
226‧‧‧額外PCI匯流排
228‧‧‧額外PCI匯流排
230‧‧‧記憶體映射圖形配接器
232‧‧‧硬碟
310‧‧‧處理核心
312‧‧‧處理核心
314‧‧‧處理核心
340‧‧‧處理核心
342‧‧‧處理核心
344‧‧‧處理核心
320‧‧‧通訊協定堆疊
350‧‧‧通訊協定堆疊
325‧‧‧NIC裝置驅動程式
355‧‧‧NIC裝置驅動程式
330‧‧‧發送佇列
332‧‧‧發送佇列
334‧‧‧發送佇列
336‧‧‧發送佇列
360‧‧‧接收佇列
362‧‧‧接收佇列
364‧‧‧接收佇列
366‧‧‧接收佇列
370‧‧‧NIC
372‧‧‧發送佇列管理器(SQM)引擎
376‧‧‧佇列對(QP)內容儲存器
378‧‧‧調度器引擎
380‧‧‧接收封包處理器(RPP)引擎
390‧‧‧排程器引擎
392‧‧‧流分類器引擎
399‧‧‧埠
410‧‧‧投送表資料結構
420‧‧‧接收完成佇列
422‧‧‧接收完成佇列
424‧‧‧接收完成佇列
426‧‧‧接收完成佇列
440‧‧‧系統記憶體
450‧‧‧接收緩衝描述符
460‧‧‧連接資訊資料結構
510‧‧‧系統記憶體
520‧‧‧發送緩衝描述符
530‧‧‧投送表資料結構
560‧‧‧門鈴暫存器
圖1為說明性實施例之例示性態樣可實施於其中之分布式資料處理系統之例示性方塊圖;圖2為說明性實施例之例示性態樣可實施於其中之多核 心資料處理裝置之例示性圖;圖3為說明根據一說明性實施例之MCS實施之例示性硬體及軟體元件之例示性方塊圖;圖4為說明根據一說明性實施例之資料封包之接收側處理之例示性方塊圖;圖5為說明根據一說明性實施例之資料封包之傳輸或發送側處理之例示性方塊圖;圖6A及6B為概述根據一說明性實施例之用於接收資料封包之例示性操作之流程圖;且圖7為概述根據一說明性實施例之用於傳輸或發送資料封包之例示性操作之流程圖。
200‧‧‧資料處理裝置
202‧‧‧處理器
204‧‧‧處理器
206‧‧‧系統匯流排
208‧‧‧記憶體控制器/快取記憶體
209‧‧‧區域記憶體
210‧‧‧I/O匯流排橋接器
212‧‧‧I/O匯流排
214‧‧‧周邊組件互連(PCI)匯流排橋接器
216‧‧‧PCI區域匯流排
218‧‧‧數據機
220‧‧‧網路配接器
222‧‧‧額外PCI匯流排橋
224‧‧‧額外PCI匯流排橋
226‧‧‧額外PCI匯流排
228‧‧‧額外PCI匯流排
230‧‧‧記憶體映射圖形配接器
232‧‧‧硬碟

Claims (35)

  1. 一種用於在包含耦接至一主機系統之一網路配接器的一資料處理系統中傳輸一資料封包的方法,該主機系統包含至少一處理核心及複數個發送佇列,且該網路配接器包含複數個發送佇列管理器,該方法包含:在該至少一處理核心之一處理核心中產生一待傳輸至一外部裝置之資料封包,該外部裝置係在該主機系統及該網路配接器之外部;基於自該資料封包之一標頭中提取之連接資訊而自該複數個發送佇列選擇一發送佇列;在該所選擇之發送佇列中產生用於該資料封包之一輸入項;藉由該複數個發送佇列管理器之一發送佇列管理器來處理所選擇之該發送佇列中之該輸入項;及自該主機系統經由該網路配接器傳輸該資料封包至該外部裝置,其中該網路配接器中之該複數個發送佇列管理器之每一發送佇列管理器與該主機系統中之該複數個發送佇列之一不同之發送佇列相關聯,且其中該複數個發送佇列管理器係由硬體實施。
  2. 如請求項1之方法,其中該至少一處理核心為複數個處理核心中之一者,且其中該方法係關於該複數個處理核心中之每一者以一並行方式來實施。
  3. 如請求項1之方法,其中選擇一發送佇列包含:自系統記憶體中擷取發送緩衝描述符資訊; 基於該連接資訊及該發送緩衝描述符資訊來判定一發送佇列是否先前已分配給一與該資料封包相關之連接;及若一發送佇列先前已分配給該連接,則選擇該先前分配之發送佇列。
  4. 如請求項3之方法,其中若一發送佇列先前並未分配給該連接,則該方法包含:對於該連接資訊執行一雜湊運算以產生一雜湊值;基於該所產生之雜湊值而在一投送表資料結構中索引;及基於儲存於該投送表資料結構中之與該雜湊值相關之一輸入項之一值來選擇一發送佇列。
  5. 如請求項1之方法,其中選擇一發送佇列及在該所選擇之發送佇列中產生用於該資料封包之一輸入項係由在該至少一處理核心上執行之軟體來進行。
  6. 如請求項5之方法,其中該軟體為獨立於一通訊協定堆疊之一網路介面裝置驅動程式。
  7. 如請求項5之方法,其中該軟體為一通訊協定堆疊之一部分。
  8. 如請求項1之方法,其另外包含:在該資料處理系統之一網路介面中接收一傳入之資料封包;使用一硬體實施之資料流分類器引擎處理該傳入之資料封包以選擇該傳入之資料封包待置於其中之一接收佇列;及 藉由一硬體實施之接收封包處理器基於該硬體實施之資料流分類器引擎所進行之該選擇而將該傳入之資料封包置於一所選擇之接收佇列中。
  9. 如請求項8之方法,其中該資料流分類器引擎藉由以下步驟來選擇一接收佇列:判定藉以接收該傳入之資料封包的一連接的一接收佇列是否先前已經分配;及若一接收佇列先前已分配給該連接,則選擇該先前分配之接收佇列。
  10. 如請求項9之方法,其中若一接收佇列先前並未分配給該連接,則該資料流分類器引擎:自該傳入之資料封包中提取連接資訊;對於該提取之連接資訊執行一雜湊運算以產生一雜湊值;及基於該所產生之雜湊值在一投送表(routing table)中索引以選擇該傳入之資料封包待投送至其中之一接收佇列。
  11. 如請求項8之方法,其中該硬體實施之接收封包處理器為複數個硬體實施之接收封包處理器中之一者,且其中該硬體實施之接收封包處理器係由一排程器引擎基於該複數個硬體實施之接收封包處理器中之硬體實施之接收封包處理器之一可用性而選自該複數個硬體實施之接收封包處理器。
  12. 如請求項8之方法,其另外包含: 將一中斷發送至與該所選擇之接收佇列相關之一處理核心;將一完成事件輸入項記入於與該所選擇之接收佇列相關之一接收完成佇列中;及藉由一通訊協定堆疊來處理置於該所選擇之接收佇列中之該傳入之資料封包。
  13. 一種通訊設備,其包含:一主機系統,其包含至少一處理核心及複數個發送佇列;及一網路配接器,其包含複數個發送佇列管理器,該網路配接器耦接至該主機系統,其中該至少一處理核心之一處理核心:產生一待傳輸至一外部裝置之資料封包,該外部裝置係在該主機系統及該網路配接器之外部,基於自該資料封包之一標頭中提取之連接資訊而自該複數個發送佇列選擇一發送佇列,在該所選擇之發送佇列中產生用於該資料封包之一輸入項,且其中:所選擇之該發送佇列中之該輸入項係由該複數個發送佇列管理器之一發送佇列管理器所處理,該資料封包經由該網路配接器而被自該主機系統傳輸至該外部裝置,該網路配接器中之該複數個發送佇列管理器之每一發送佇列管理器與該主機系統中之該複數個發送佇列 之一不同之發送佇列相關聯,且該複數個發送佇列管理器係由硬體實施。
  14. 如請求項13之通訊設備,其中該至少一處理核心為複數個處理核心中之一者,且其中該複數個處理核心中之每一者以一並行方式來進行前述產生及選擇之操作中之一或多者。
  15. 如請求項13之通訊設備,其中該至少一處理核心藉由以下步驟來選擇一發送佇列:自系統記憶體中擷取發送緩衝描述符資訊;基於該連接資訊及該發送緩衝描述符資訊來判定一發送佇列是否先前已分配給一與該資料封包相關之連接;及若一發送佇列先前已分配給該連接,則選擇該先前分配之發送佇列。
  16. 如請求項15之通訊設備,其中若一發送佇列先前並未分配給該連接,則該至少一處理核心藉由以下步驟來選擇一發送佇列:對於該連接資訊執行一雜湊運算以產生一雜湊值;基於該所產生之雜湊值而在一投送表資料結構中索引;及基於儲存於該投送表資料結構中之與該雜湊值相關之一輸入項之一值來選擇一發送佇列。
  17. 如請求項13之通訊設備,其中該至少一處理核心藉由在該至少一處理核心中執行軟體來選擇一發送佇列及在該所選擇之發送佇列中產生用於該資料封包之一輸入項。
  18. 如請求項17之通訊設備,其中該軟體為獨立於一通訊協定堆疊之一網路介面裝置驅動程式。
  19. 如請求項17之通訊設備,其中該軟體為一通訊協定堆疊之一部分。
  20. 如請求項13之通訊設備,其進一步包含:在該資料處理系統之一網路介面中接收一傳入之資料封包;使用一硬體實施之資料流分類器引擎處理該傳入之資料封包以選擇該傳入之資料封包待置於其中之一接收佇列;及藉由一硬體實施之接收封包處理器基於該硬體實施之資料流分類器引擎所進行之該選擇而將該傳入之資料封包置於一所選擇之接收佇列中。
  21. 如請求項20之通訊設備,其中該資料流分類器引擎藉由以下步驟來選擇一接收佇列:判定藉以接收該傳入之資料封包的一連接的一接收佇列是否先前已經分配;及若一接收佇列先前已分配給該連接,則選擇該先前分配之接收佇列。
  22. 如請求項21之通訊設備,其中若一接收佇列先前並未分配給該連接,則該資料流分類器引擎:自該傳入之資料封包中提取連接資訊;對於該提取之連接資訊執行一雜湊運算以產生一雜湊值;及 基於該所產生之雜湊值在一投送表(routing table)中索引以選擇該傳入之資料封包待投送至其中之一接收佇列。
  23. 如請求項20之通訊設備,其中該硬體實施之接收封包處理器為複數個硬體實施之接收封包處理器中之一者,且其中該硬體實施之接收封包處理器係由一排程器引擎基於該複數個硬體實施之接收封包處理器中之硬體實施之接收封包處理器之一可用性而選自該複數個硬體實施之接收封包處理器。
  24. 如請求項20之通訊設備,其中該接收封包處理器另外:將一中斷發送至與該所選擇之接收佇列相關之一處理核心;及將一完成事件輸入項記入於與該所選擇之接收佇列相關之一接收完成佇列中且其中該至少一處理核心之一通訊協定堆疊處理置於該所選擇之接收佇列中之該傳入之資料封包。
  25. 一種通訊系統,其包含:一主機系統,其具有複數個處理核心,該複數個處理核心中之每一處理核心執行一通訊協定堆疊執行個體及一網路介面裝置驅動程式執行個體,該主機系統進一步具有複數個發送佇列;一與該主機系統耦接之網路配接器,該網路配接器包含:複數個硬體實施之發送佇列管理器;及 複數個硬體實施之接收封包處理器,其中:該複數個硬體實施之發送佇列管理器處理由該複數個處理核心置於發送佇列中之資料封包,每一硬體實施之發送佇列管理器與該複數個發送佇列中之一不同之發送佇列相關聯,且該複數個硬體實施之接收封包處理器處理由該網路配接器經由該網路配接器之一埠接收之資料封包。
  26. 如請求項25之通訊系統,其中該複數個處理核心中之每一處理核心對於每一處理核心傳輸至一外部裝置之相應資料封包以一並行方式進行以下操作:產生待傳輸至一外部裝置之該資料封包;基於自該資料封包之一標頭中提取之連接資訊而自該複數個發送佇列選擇用於傳輸該資料封包之一發送佇列;及在該所選擇之發送佇列中產生用於該資料封包之一輸入項。
  27. 如請求項26之通訊系統,其中該網路配接器藉由一相關的硬體實施之發送佇列管理器來處理該所選擇之發送佇列中之該輸入項以由此將該資料封包發送至該外部裝置,其中該相關的硬體實施之發送佇列管理器為該複數個硬體實施之發送佇列管理器中之一者。
  28. 如請求項26之通訊系統,其中每一處理核心藉由以下步驟來選擇一用於傳輸該資料封包之發送佇列:自系統記憶體中擷取發送緩衝描述符資訊; 基於該連接資訊及該發送緩衝描述符資訊來判定一發送佇列是否先前已分配給一與該資料封包相關之連接;及若一發送佇列先前已分配給該連接,則選擇該先前分配之發送佇列。
  29. 如請求項28之通訊系統,其中若一發送佇列先前並未分配給該連接,則每一處理核心:對於該連接資訊執行一雜湊運算以產生一雜湊值;基於該所產生之雜湊值而在一投送表資料結構中索引;及基於儲存於該投送表資料結構中之與該雜湊值相關之一輸入項之一值來選擇一發送佇列。
  30. 如請求項25之通訊系統,其進一步包含:在該資料處理系統之一網路介面中接收一傳入之資料封包;使用該硬體實施之資料流分類器引擎處理該傳入之資料封包以選擇該傳入之資料封包待置於其中之一接收佇列;及藉由一硬體實施之接收封包處理器基於該硬體實施之資料流分類器引擎所進行之該選擇而將該傳入之資料封包置於一所選擇之接收佇列中。
  31. 如請求項30之通訊系統,其中該資料流分類器引擎藉由以下步驟來選擇一接收佇列:判定藉以接收該傳入之資料封包的一連接的一接收佇列是否先前已經分配;及 若一接收佇列先前已分配給該連接,則選擇該先前分配之接收佇列。
  32. 如請求項31之通訊系統,其中若一接收佇列先前並未分配給該連接,則該資料流分類器引擎:自該傳入之資料封包中提取連接資訊;對於該提取之連接資訊執行一雜湊運算以產生一雜湊值;及基於該所產生之雜湊值在一投送表(routing table)中索引以選擇該傳入之資料封包待投送至其中之一接收佇列。
  33. 如請求項31之通訊系統,其中該硬體實施之接收封包處理器係複數個硬體實施之接收封包處理器之一者,且其中該硬體實施之接收封包處理器由該網路配接器之一排程器引擎基於該複數個硬體實施之接收封包處理器中之硬體實施之接收封包處理器之一可用性而選自該複數個硬體實施之接收封包處理器。
  34. 如請求項31之通訊系統,其中該接收封包處理器:將一中斷發送至與該所選擇之接收佇列相關之一處理核心;及將一完成事件輸入項記入於與該所選擇之接收佇列相關之一接收完成佇列中,且其中一相應處理核心之一通訊協定堆疊執行個體處理置於該所選擇之接收佇列中之該傳入之資料封包。
  35. 一種用於傳輸一資料封包的電腦程式產品,該電腦程式 產品包含具有一電腦可讀程式之一電腦可用媒體,其中該電腦可讀程式當執行於具有一處理核心及複數個發送佇列之一計算裝置及具有複數個發送佇列管理器之一網路配接器之上時導致該計算裝置:在該處理核心中產生一待傳輸至在該計算裝置外部之一外部裝置之資料封包;基於自該資料封包之一標頭中提取之連接資訊而自該複數個發送佇列選擇一發送佇列;在該所選擇之發送佇列中產生用於該資料封包之一輸入項;藉由該複數個發送佇列管理器之一發送佇列管理器來處理所選擇之該發送佇列中之該輸入項;及經由該網路配接器自該計算裝置傳輸該資料封包至該外部裝置,其中該網路配接器中之該複數個發送佇列管理器之每一發送佇列管理器與該計算裝置中之該複數個發送佇列之一不同之發送佇列相關聯,且其中該複數個發送佇列管理器係由硬體實施。
TW097103094A 2007-01-31 2008-01-28 用於多核心通訊處理的系統及方法 TWI392288B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/669,419 US7715428B2 (en) 2007-01-31 2007-01-31 Multicore communication processing

Publications (2)

Publication Number Publication Date
TW200847694A TW200847694A (en) 2008-12-01
TWI392288B true TWI392288B (zh) 2013-04-01

Family

ID=39374898

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097103094A TWI392288B (zh) 2007-01-31 2008-01-28 用於多核心通訊處理的系統及方法

Country Status (4)

Country Link
US (1) US7715428B2 (zh)
KR (1) KR101072078B1 (zh)
TW (1) TWI392288B (zh)
WO (1) WO2008092773A1 (zh)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051212B2 (en) * 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
US7813342B2 (en) * 2007-03-26 2010-10-12 Gadelrab Serag Method and apparatus for writing network packets into computer memory
US20080240140A1 (en) * 2007-03-29 2008-10-02 Microsoft Corporation Network interface with receive classification
US7830918B2 (en) * 2007-08-10 2010-11-09 Eaton Corporation Method of network communication, and node and system employing the same
GB0802126D0 (en) * 2008-02-05 2008-03-12 Level 5 Networks Inc Scalable sockets
JP2009199433A (ja) * 2008-02-22 2009-09-03 Fujitsu Ltd ネットワーク処理装置およびネットワーク処理プログラム
JP5167924B2 (ja) * 2008-04-16 2013-03-21 富士通株式会社 中継装置およびパケット中継方法
US8625642B2 (en) * 2008-05-23 2014-01-07 Solera Networks, Inc. Method and apparatus of network artifact indentification and extraction
US20090290492A1 (en) * 2008-05-23 2009-11-26 Matthew Scott Wood Method and apparatus to index network traffic meta-data
GB2462825A (en) * 2008-08-19 2010-02-24 Howler Technologies Ltd Processing packetised data using a Cell Broadband Engine architecture
US7990974B1 (en) * 2008-09-29 2011-08-02 Sonicwall, Inc. Packet processing on a multi-core processor
US8402190B2 (en) * 2008-12-02 2013-03-19 International Business Machines Corporation Network adaptor optimization and interrupt reduction
US9250973B2 (en) * 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
US8239699B2 (en) * 2009-06-26 2012-08-07 Intel Corporation Method and apparatus for performing energy-efficient network packet processing in a multi processor core system
US8355338B2 (en) * 2009-07-14 2013-01-15 Hong Kong Applied Science And Technology Research Institute Co. Ltd. Method of processing sequential information in packets streamed over a network
US9256560B2 (en) * 2009-07-29 2016-02-09 Solarflare Communications, Inc. Controller integration
TWI399945B (zh) * 2009-10-08 2013-06-21 Hon Hai Prec Ind Co Ltd 功能調用系統及方法
US20110113218A1 (en) * 2009-11-09 2011-05-12 Electronics And Telecommunications Research Institute Cross flow parallel processing method and system
US8259582B2 (en) * 2009-11-13 2012-09-04 Intel Corporation Method and apparatus to manage per flow state
US8446824B2 (en) * 2009-12-17 2013-05-21 Intel Corporation NUMA-aware scaling for network devices
US20110173354A1 (en) * 2010-01-08 2011-07-14 Hall Kenwood H Hardware Based Connection State Machine With Built In Timers
US8458377B2 (en) * 2010-03-05 2013-06-04 Lsi Corporation DMA engine capable of concurrent data manipulation
US8589941B2 (en) * 2010-04-23 2013-11-19 International Business Machines Corporation Resource affinity via dynamic reconfiguration for multi-queue network adapters
US9344377B2 (en) * 2010-04-30 2016-05-17 Broadcom Corporation Packet processing architecture
KR101696804B1 (ko) 2010-10-05 2017-01-16 삼성전자주식회사 가상화 환경에서의 자원사용정책 조정장치 및 방법
US8849991B2 (en) 2010-12-15 2014-09-30 Blue Coat Systems, Inc. System and method for hypertext transfer protocol layered reconstruction
US20120191896A1 (en) * 2011-01-25 2012-07-26 Zhen Fang Circuitry to select, at least in part, at least one memory
US8635352B2 (en) 2011-02-22 2014-01-21 Qwilt, Inc. System and method for symmetric receive-side scaling (RSS)
US8666985B2 (en) 2011-03-16 2014-03-04 Solera Networks, Inc. Hardware accelerated application-based pattern matching for real time classification and recording of network traffic
US8756613B2 (en) 2011-09-23 2014-06-17 International Business Machines Corporation Scalable, parallel processing of messages while enforcing custom sequencing criteria
KR101332839B1 (ko) * 2012-01-05 2013-11-27 서울대학교산학협력단 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
US10334008B2 (en) * 2013-07-04 2019-06-25 Nxp Usa, Inc. Method and device for data streaming in a mobile communication system
US10342032B2 (en) 2013-07-04 2019-07-02 Nxp Usa, Inc. Method and device for streaming control data in a mobile communication system
US10394751B2 (en) 2013-11-06 2019-08-27 Solarflare Communications, Inc. Programmed input/output mode
US9361231B2 (en) 2014-01-15 2016-06-07 International Business Machines Corporation Implicit I/O send on cache operations
CN104811431B (zh) 2014-01-29 2018-01-16 华为技术有限公司 基于并行协议栈实例的数据包处理方法和装置
CN104811432A (zh) 2014-01-29 2015-07-29 华为技术有限公司 基于并行协议栈实例的数据包处理方法和装置
KR102190444B1 (ko) 2014-02-21 2020-12-11 삼성전자주식회사 무선 통신 시스템에서 데이터 처리 시스템 및 방법
US9940180B2 (en) * 2014-03-31 2018-04-10 Nicira, Inc. Using loopback interfaces of multiple TCP/IP stacks for communication between processes
US9729679B2 (en) 2014-03-31 2017-08-08 Nicira, Inc. Using different TCP/IP stacks for different tenants on a multi-tenant host
US9667528B2 (en) * 2014-03-31 2017-05-30 Vmware, Inc. Fast lookup and update of current hop limit
CN103942097B (zh) * 2014-04-10 2017-11-24 华为技术有限公司 一种数据处理方法、装置及具备相应装置的计算机
US10936200B2 (en) 2014-07-30 2021-03-02 Excelero Storage Ltd. System and method for improved RDMA techniques for multi-host network interface controllers
US10979503B2 (en) * 2014-07-30 2021-04-13 Excelero Storage Ltd. System and method for improved storage access in multi core system
CN105827535A (zh) * 2015-01-06 2016-08-03 普天信息技术有限公司 硬线程多核中央处理器的报文转发方法及装置
WO2017018980A1 (en) 2015-07-24 2017-02-02 Applied Micro Circuits Corporation Flow pinning in a server on a chip
KR102013867B1 (ko) 2015-08-05 2019-08-26 한국전자통신연구원 병렬 처리 장치 및 방법
US10057168B2 (en) 2015-10-31 2018-08-21 Nicira, Inc. Receive side scaling for overlay flow dispatching
US9948559B2 (en) * 2015-10-31 2018-04-17 Nicira, Inc. Software receive side scaling for overlay flow re-dispatching
US9954817B2 (en) * 2015-10-31 2018-04-24 Nicira, Inc. Software receive side scaling for packet re-dispatching
US10331590B2 (en) * 2016-06-30 2019-06-25 Intel Corporation Graphics processing unit (GPU) as a programmable packet transfer mechanism
US10554554B2 (en) 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
US10826841B2 (en) * 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization
US10715424B2 (en) * 2016-12-06 2020-07-14 Microsoft Technology Licensing, Llc Network traffic management with queues affinitized to one or more cores
US10623521B2 (en) * 2016-12-26 2020-04-14 Mellanox Technologies, Ltd. Distribution of messages to queues in a distributed computing environment
KR101912393B1 (ko) * 2017-02-15 2018-10-26 주식회사 시큐아이 네트워크 장치 및 그의 인터럽트 관리 방법
US20180285151A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Dynamic load balancing in network interface cards for optimal system level performance
US11875839B2 (en) * 2017-05-08 2024-01-16 Intel Corporation Flow based rate limit
CN111030844B (zh) * 2019-11-14 2023-03-14 中盈优创资讯科技有限公司 流量处理框架建立方法及装置
CN112749028A (zh) * 2021-01-11 2021-05-04 科大讯飞股份有限公司 网络流量处理方法、相关设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075791A (en) * 1997-10-28 2000-06-13 Lucent Technologies Inc. System for guaranteeing data transfer rates and delays in packet networks
US20040125751A1 (en) * 2002-12-31 2004-07-01 Vangal Sriram R. Network protocol off-load engines
US20050141434A1 (en) * 2003-12-24 2005-06-30 Linden Cornett Method, system, and program for managing buffers
US20060034310A1 (en) * 2004-08-12 2006-02-16 Connor Patrick L Techniques to utilize queues for network interface devices
US20060195698A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Receive side scaling with cryptographically secure hashing
US20070005742A1 (en) * 2005-06-30 2007-01-04 Avigdor Eldar Efficient network communications via directed processor interrupts

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721806B2 (en) * 2002-09-05 2004-04-13 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
US7010633B2 (en) * 2003-04-10 2006-03-07 International Business Machines Corporation Apparatus, system and method for controlling access to facilities based on usage classes
US7606166B2 (en) * 2005-04-01 2009-10-20 International Business Machines Corporation System and method for computing a blind checksum in a host ethernet adapter (HEA)
US20060221953A1 (en) * 2005-04-01 2006-10-05 Claude Basso Method and apparatus for blind checksum and correction for network transmissions
US7586936B2 (en) * 2005-04-01 2009-09-08 International Business Machines Corporation Host Ethernet adapter for networking offload in server environment
US7577151B2 (en) * 2005-04-01 2009-08-18 International Business Machines Corporation Method and apparatus for providing a network connection table
US7697536B2 (en) * 2005-04-01 2010-04-13 International Business Machines Corporation Network communications for operating system partitions
US7492771B2 (en) * 2005-04-01 2009-02-17 International Business Machines Corporation Method for performing a packet header lookup
US7881332B2 (en) * 2005-04-01 2011-02-01 International Business Machines Corporation Configurable ports for a host ethernet adapter
US7508771B2 (en) * 2005-04-01 2009-03-24 International Business Machines Corporation Method for reducing latency in a host ethernet adapter (HEA)
US7706409B2 (en) * 2005-04-01 2010-04-27 International Business Machines Corporation System and method for parsing, filtering, and computing the checksum in a host Ethernet adapter (HEA)
US7903687B2 (en) * 2005-04-01 2011-03-08 International Business Machines Corporation Method for scheduling, writing, and reading data inside the partitioned buffer of a switch, router or packet processing device
US7792102B2 (en) 2006-03-31 2010-09-07 Intel Corporation Scaling egress network traffic

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075791A (en) * 1997-10-28 2000-06-13 Lucent Technologies Inc. System for guaranteeing data transfer rates and delays in packet networks
US20040125751A1 (en) * 2002-12-31 2004-07-01 Vangal Sriram R. Network protocol off-load engines
US20050141434A1 (en) * 2003-12-24 2005-06-30 Linden Cornett Method, system, and program for managing buffers
US20060034310A1 (en) * 2004-08-12 2006-02-16 Connor Patrick L Techniques to utilize queues for network interface devices
US20060195698A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Receive side scaling with cryptographically secure hashing
US20070005742A1 (en) * 2005-06-30 2007-01-04 Avigdor Eldar Efficient network communications via directed processor interrupts

Also Published As

Publication number Publication date
TW200847694A (en) 2008-12-01
WO2008092773A1 (en) 2008-08-07
KR101072078B1 (ko) 2011-10-10
KR20090094256A (ko) 2009-09-04
US7715428B2 (en) 2010-05-11
US20080181245A1 (en) 2008-07-31

Similar Documents

Publication Publication Date Title
TWI392288B (zh) 用於多核心通訊處理的系統及方法
Birrittella et al. Intel® omni-path architecture: Enabling scalable, high performance fabrics
US9965441B2 (en) Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
JP4150336B2 (ja) 共有属性に基づいて圧縮キューペアから複数の仮想キューペアを作成する構成
CN109768939B (zh) 一种支持优先级的标签化网络栈方法和系统
US11394649B2 (en) Non-random flowlet-based routing
US6459698B1 (en) Supporting mapping of layer 3 priorities in an infiniband ™ network
JP5490336B2 (ja) Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け
US7742474B2 (en) Virtual network interface cards with VLAN functionality
US6999462B1 (en) Mapping layer 2 LAN priorities to a virtual lane in an Infiniband™ network
US7499463B1 (en) Method and apparatus for enforcing bandwidth utilization of a virtual serialization queue
US7746783B1 (en) Method and apparatus for monitoring packets at high data rates
US9910687B2 (en) Data flow affinity for heterogenous virtual machines
US7660322B2 (en) Shared adapter
US7613132B2 (en) Method and system for controlling virtual machine bandwidth
WO2012112235A1 (en) Method and system for classification and management of inter-blade network traffic in a blade server
CN110661725A (zh) 用于对出口上的网络分组进行重排序的技术
US6973085B1 (en) Using application headers to determine InfiniBand™ priorities in an InfiniBand™ network
JP2017163530A (ja) ネットワークデバイスおよびトラフィックシェーピング方法
US10616116B1 (en) Network traffic load balancing using rotating hash
EP2417737B1 (en) Transmit-side scaler and method for processing outgoing information packets using thread-based queues
US7672299B2 (en) Network interface card virtualization based on hardware resources and software rings
US7675920B1 (en) Method and apparatus for processing network traffic associated with specific protocols
US6779054B2 (en) Method and apparatus for operating a network controller

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees