欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

網(wǎng)絡(luò)接口設(shè)備的制作方法

文檔序號:7742283閱讀:121來源:國知局
專利名稱:網(wǎng)絡(luò)接口設(shè)備的制作方法
技術(shù)領(lǐng)域
這里討論的實(shí)施例涉及一種網(wǎng)絡(luò)接口設(shè)備。
技術(shù)背景
已知具有經(jīng)由網(wǎng)絡(luò)連接的多個(gè)示例性操作節(jié)點(diǎn)的并行計(jì)算機(jī)。針對這種并行計(jì)算 機(jī)中的節(jié)點(diǎn)間的低延遲通信,可以在所有節(jié)點(diǎn)間維持用于通信控制的連接。并行計(jì)算機(jī)中的每個(gè)節(jié)點(diǎn)具有用于與網(wǎng)絡(luò)建立連接的網(wǎng)絡(luò)接口設(shè)備。網(wǎng)絡(luò)接口設(shè) 備可以包括網(wǎng)絡(luò)接口控制器或者網(wǎng)絡(luò)接口卡(在下文中被稱為“NIC”)。每個(gè)節(jié)點(diǎn)使用網(wǎng) 絡(luò)接口設(shè)備來經(jīng)由網(wǎng)絡(luò)與其它節(jié)點(diǎn)進(jìn)行通信。因此,具有幾萬個(gè)節(jié)點(diǎn)的大規(guī)模并行計(jì)算機(jī) 需要能夠維持幾萬個(gè)通信連接的網(wǎng)絡(luò)接口設(shè)備。Web (網(wǎng)絡(luò))服務(wù)器、數(shù)據(jù)庫服務(wù)器等的計(jì)算機(jī)可以使用頻繁地連接和斷開與終端 的通信的通信協(xié)議(諸如HTTP(超文本傳輸協(xié)議))。為了在這種計(jì)算機(jī)中實(shí)現(xiàn)較高的處理 速度,需要減少用于建立和切斷通信連接的處理器上的協(xié)議處理負(fù)荷。近年來,例如,正如在千兆位以太網(wǎng)中所見到的那樣,網(wǎng)絡(luò)通信速度已經(jīng)極大地提 高。在這種趨勢下,通信處理占據(jù)了由計(jì)算機(jī)處理器進(jìn)行的大部分處理,并且較低比例的應(yīng) 用程序處理的問題變得更嚴(yán)重。術(shù)語“應(yīng)用程序”在下文中將被稱為術(shù)語“應(yīng)用”。因此,卸 載(offloading)功能的安裝變得更普遍,以將通常由處理器執(zhí)行的部分通信處理卸載到 網(wǎng)絡(luò)接口設(shè)備。日本專利申請公布2006-191537號和2003-333076號公開了有關(guān)卸載功能的技 術(shù)。日本專利申請公布2006-191537號公開了一種NIC使用其來執(zhí)行通信處理的卸載引擎。日本專利申請公布2003-333076號公開了一種方法,該方法通過在處理器建立通 信連接之后將通信上下文移到NIC來基于連接單元選擇性地卸載通信處理。使用日本專利申請公布2006-191537號中公開的NIC,安裝在卸載引擎中的存儲(chǔ) 器的容量小于每個(gè)處理器的主存儲(chǔ)裝置的容量。因此,根據(jù)日本專利申請公布2006-191537 號,節(jié)點(diǎn)間的最大通信連接數(shù)是有限的。使用日本專利申請公布2003-333076號中公開的NIC,用于建立通信連接的每個(gè) 處理器上的處理負(fù)荷較大。因此,根據(jù)日本專利申請公布2003-333076號,每個(gè)處理器的應(yīng) 用處理能力較低。

發(fā)明內(nèi)容
這里討論的實(shí)施例的一方面是提供一種網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口能夠經(jīng)由網(wǎng)絡(luò)來執(zhí)行在節(jié)點(diǎn)間的通信中通常由處理器執(zhí)行的通信連接建立和斷開的示例性操作,并且能夠維 持節(jié)點(diǎn)間的大量通信連接。上述方面可以通過連接到計(jì)算機(jī)并且經(jīng)由網(wǎng)絡(luò)執(zhí)行通信的網(wǎng)絡(luò)接口設(shè)備來實(shí)現(xiàn), 該網(wǎng)絡(luò)接口設(shè)備包括第一管理單元,其通過端口號來識別通信連接,并且通過存儲(chǔ)在存儲(chǔ) 單元中并且與端口號相關(guān)聯(lián)的上下文來管理每個(gè)端口的通信連接狀態(tài);第二管理單元,其 管理上下文的存儲(chǔ)狀態(tài);以及控制單元,其參考上下文,并且在端口間執(zhí)行建立通信連接的 示例性操作和切斷通信連接的示例性操作。上述方面可以通過能夠維持大量通信連接的網(wǎng)絡(luò)接口設(shè)備來實(shí)現(xiàn)。另外,通過執(zhí) 行通常由處理器執(zhí)行的通信連接建立和斷開的示例性操作,所公開的網(wǎng)絡(luò)接口設(shè)備降低了 處理器上的通信處理負(fù)荷。隨后將清楚的這些以及其它方面和優(yōu)點(diǎn)存在于下文中參照構(gòu)成其部分的附圖來 更充分地描述和聲明的結(jié)構(gòu)和示例性操作的細(xì)節(jié)中,其中相同標(biāo)號始終指示相同部件。


圖1示出了并行計(jì)算機(jī)的示例性實(shí)施例;圖2示出了示例性O(shè)TC ;圖3示出了處理器的示例性主存儲(chǔ)裝置;圖4示出了示例性實(shí)施例中的端口定義;圖5示出了端口上下文的示例性數(shù)據(jù)結(jié)構(gòu);圖6A、6B和6C示出了要由處理器寫入傳送命令隊(duì)列中的描述符的示例性數(shù)據(jù)結(jié) 構(gòu);圖7A、7B和7C示出了要由NIC的傳送完成通知隊(duì)列控制器寫入傳送完成通知隊(duì) 列中的傳送完成狀態(tài)的描述符的示例性數(shù)據(jù)結(jié)構(gòu);圖8A、8B、8C和8D示出了要由NIC的接收完成通知隊(duì)列控制器寫入接收通知隊(duì)列 中的接收狀態(tài)的描述符的數(shù)據(jù)結(jié)構(gòu);圖9示出了控制分組的示例性數(shù)據(jù)結(jié)構(gòu);圖10示出了傳輸數(shù)據(jù)分組的示例性數(shù)據(jù)結(jié)構(gòu);圖11示出了實(shí)施例中的單向通信示例性操作;圖12示出了要由源處理器執(zhí)行的、用于指示相應(yīng)的源NIC發(fā)出“連接請求”的示 例性操作;圖13示出了要由目標(biāo)NIC執(zhí)行的、用于從源NIC接收連接請求分組并且將“連接 許可”響應(yīng)分組傳送到源NIC的示例性操作;圖14示出了在接收到來自目標(biāo)NIC的“連接許可”響應(yīng)分組時(shí)要由源NIC執(zhí)行的 示例性操作;圖15示出了用于從源端口傳送傳輸數(shù)據(jù)的示例性操作;圖16示出了要由目標(biāo)端口執(zhí)行的、用于接收從源端口傳送的傳輸數(shù)據(jù)的示例性 操作;
圖17示出了要由源端口執(zhí)行的、用于將斷開通知傳送到目標(biāo)端口的示例性操作; 以及圖18示出了要由目標(biāo)端口執(zhí)行的、用于從源端口接收斷開通知的示例性操作。
具體實(shí)施例方式有關(guān)通信連接的術(shù)語可定義如下?!岸丝?”被定義為具有下面的屬性1)端口位于通信連接的兩端;2)存在兩種類型的端口 源端口,其被指定為通信連接的發(fā)起者;以及目標(biāo)端口, 其被指定為通信連接的目標(biāo);3)端口是與應(yīng)用等價(jià),并且由各個(gè)節(jié)點(diǎn)的處理器來執(zhí)行的程序?!皯?yīng)用”被定義為通過屬于OSI (開放式系統(tǒng)互連)參考模型的會(huì)話層的通信程序 來實(shí)現(xiàn)的通信資源?!皯?yīng)用”可以是屬于應(yīng)用層并且建立或者取消用于傳送和接收數(shù)據(jù)的虛 擬連接的應(yīng)用。 “端口號”被定義為要由應(yīng)用用于識別端口的標(biāo)識信息。端口號可以是用于識別由各個(gè)節(jié)點(diǎn)的處理器執(zhí)行的應(yīng)用所建立的通信連接的數(shù) 字。每個(gè)端口號被唯一地分配給通信連接。根據(jù)示例性實(shí)施例,“0”、“1”、“2”、... "η" (η 是正整數(shù))的序列號作為端口號被分配給各個(gè)端口。根據(jù)示例性實(shí)施例,“通信連接管理”被定義為與端口號相關(guān)聯(lián)的通信連接的管理。通信連接表示通信和連接的形式,并且可以是在OSI參考模型的傳輸層的節(jié)點(diǎn)間 通信連接(端到端通信連接)。根據(jù)示例性實(shí)施例,使用端口號來控制端到端通信。根據(jù)示例性實(shí)施例,要支持的 通信連接可以是在OSI參考模型的傳輸層的協(xié)議通信連接、iSCSI (互聯(lián)網(wǎng)小型計(jì)算機(jī)系統(tǒng) 接口)協(xié)議通信連接等。圖1示出了根據(jù)示例性實(shí)施例的并行計(jì)算機(jī)系統(tǒng)。圖1所示的并行計(jì)算機(jī)系統(tǒng)1包括(n+1)個(gè)節(jié)點(diǎn)10 (10-0、10-1.....10-49、
10-50、10-51.....10-n)以及網(wǎng)絡(luò)20。這里,“η”是正整數(shù)。(n+1)個(gè)節(jié)點(diǎn)10經(jīng)由網(wǎng)絡(luò)20彼此進(jìn)行通信。網(wǎng)絡(luò)20是互連網(wǎng)絡(luò)、LAN(局域網(wǎng)) 等。節(jié)點(diǎn)10中的每個(gè)例如基于MPI (消息傳遞接口)傳送和接收命令、數(shù)據(jù)等。要在節(jié)點(diǎn) 10間傳送和接收的命令和數(shù)據(jù)例如采用分組的形式。節(jié)點(diǎn)10-i (i = 0到η)中的每個(gè)包括處理器11 (處理器0到處理器η)、主存儲(chǔ)裝 置12以及網(wǎng)絡(luò)接口控制器(NIC) 13。每個(gè)處理器11包括微處理器、芯片集等。每個(gè)主存儲(chǔ)裝置12是半導(dǎo)體存儲(chǔ)器(諸 如ROM(只讀存儲(chǔ)器)或者RAM(隨機(jī)存取存儲(chǔ)器))。每個(gè)NIC 13例如是網(wǎng)絡(luò)接口控制器 或者網(wǎng)絡(luò)接口卡。每個(gè)主存儲(chǔ)裝置12包括用于存儲(chǔ)軟件(諸如要由處理器執(zhí)行的操作系統(tǒng)(OS)、中 間件以及應(yīng)用程序)的區(qū)域。除了軟件存儲(chǔ)區(qū)之外,每個(gè)主存儲(chǔ)裝置12還具有用于存儲(chǔ)端 口上下文的區(qū)域(端口上下文存儲(chǔ)區(qū)),以及用于存儲(chǔ)管理端口上下文的端口表(端口管理表)的區(qū)域,其中端口上下文是在通信處理(諸如通信連接建立和斷開)中使用的信息。 稍后將詳細(xì)地描述端口上下文和端口表。每個(gè)NIC 13能夠卸載處理器的通信處理。每個(gè)相應(yīng)的NIC 13從每個(gè)主存儲(chǔ)裝置12讀取要從相應(yīng)的處理器11傳送到其他 節(jié)點(diǎn)10的處理器11的命令和數(shù)據(jù)。NIC 13將所讀取的命令和數(shù)據(jù)經(jīng)由網(wǎng)絡(luò)20傳送到其 他節(jié)點(diǎn)10的NIC 13。NIC 13還經(jīng)由網(wǎng)絡(luò)20接收從其他節(jié)點(diǎn)10的NIC 13傳送的命令和 數(shù)據(jù),并且將所接收的命令和數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)裝置12中。例如,使用分組來執(zhí)行命令和 數(shù)據(jù)的傳送和接收。圖1示出了如下示例性實(shí)施例其中在節(jié)點(diǎn)10中的每個(gè)的主存儲(chǔ)裝置12中提供 具有四個(gè)端口條目(端口 0到端口 3)的端口表121。在圖1中,示意性地示出了節(jié)點(diǎn)10-0 的端口 0(具有端口號“0”的端口,同樣適用于下面的示例))和節(jié)點(diǎn)10-51的端口 2之間 的通信連接30。通信連接30例如是在0SI參考模型的傳輸層的通信連接。如圖1所示,根 據(jù)實(shí)施例的每個(gè)端口表121按端口號的降序來存儲(chǔ)與端口號對應(yīng)的端口條目。圖2示出了圖1的每個(gè)NIC 13的示例性實(shí)施例。如圖2所示,每個(gè)NIC 13包括PIO(Programmed Input/Output,程控輸入/輸出) 控制器131、DMA(Direct Memory Access,直接存儲(chǔ)器訪問)控制器132、傳送命令隊(duì)列控制 器133、分組傳送處理器134、傳送完成通知隊(duì)列控制器135、分組接收處理器136以及接收 完成通知隊(duì)列控制器137。DMA控制器132經(jīng)由總線138連接到傳送命令隊(duì)列控制器133、 傳送完成通知隊(duì)列控制器135、分組傳送處理器134、分組接收處理器136以及接收完成通 知隊(duì)列控制器137。PI0控制器131和傳送命令隊(duì)列控制器133通過信號線139彼此連接。傳送命令 隊(duì)列控制器133和分組傳送處理器134通過信號線140彼此連接。分組傳送處理器134和 傳送完成通知隊(duì)列控制器135通過信號線141彼此連接。分組接收處理器136和接收完成 通知隊(duì)列控制器137通過信號線142彼此連接。圖3示出了每個(gè)處理器11的主存儲(chǔ)裝置12的示例性實(shí)施例。如圖3所示,主存儲(chǔ)裝置12具有端口表121、端口上下文123、端口緩沖器125、傳 送命令隊(duì)列127、傳送完成通知隊(duì)列128以及接收通知隊(duì)列129。稍后將詳細(xì)地描述端口表 121、端口上下文123、端口緩沖器125、傳送命令隊(duì)列127、傳送完成通知隊(duì)列128以及接收 通知隊(duì)列129的結(jié)構(gòu)和功能。PI0控制器131電連接到處理器11。PI0控制器131與處理器11進(jìn)行命令和數(shù)據(jù) 的傳送和接收。PI0控制器131還根據(jù)需要中斷處理器11。DMA控制器132直接訪問處理 器11的主存儲(chǔ)裝置12而無需處理器11的干預(yù),并且與主存儲(chǔ)裝置12進(jìn)行數(shù)據(jù)傳輸。傳送命令隊(duì)列控制器133經(jīng)由DMA控制器132從處理器11的主存儲(chǔ)裝置12中提 供的傳送命令隊(duì)列127中讀取“傳送命令”的描述符。然后,傳送命令隊(duì)列控制器133經(jīng)由 信號線140將在所讀取的描述符中描述的用于創(chuàng)建傳送分組的必要信息發(fā)送到分組傳送 處理器134。在接收到來自傳送命令隊(duì)列控制器133的信息時(shí),分組傳送處理器134基于所接 收的信息生成控制分組或者傳輸數(shù)據(jù)分組(也被稱為“數(shù)據(jù)通信分組”)。然后,分組傳送 處理器134經(jīng)由網(wǎng)絡(luò)20將所生成的分組傳送到由傳送命令指定的節(jié)點(diǎn)10的NIC 13。在完成分組傳送之后,分組傳送處理器134經(jīng)由信號線141向傳送完成通知隊(duì)列控制器135通 知所傳送的分組的類型。在接收到來自分組傳送處理器134的通知時(shí),傳送完成通知隊(duì)列控制器135創(chuàng)建 “傳送完成通知”的描述符。然后,傳送完成通知隊(duì)列控制器135經(jīng)由DMA控制器132將所 創(chuàng)建的描述符寫入處理器11的主存儲(chǔ)裝置12中提供的傳送完成通知隊(duì)列128中。分組接收處理器136經(jīng)由網(wǎng)絡(luò)20接收從目標(biāo)節(jié)點(diǎn)10的NIC 13傳送的分組。如果 所接收的分組是數(shù)據(jù)通信分組,則分組接收處理器136從分組提取傳輸數(shù)據(jù),并且經(jīng)由DMA 控制器132將所提取的傳輸數(shù)據(jù)寫入處理器11的主存儲(chǔ)裝置12中提供的端口緩沖器125 中。當(dāng)從網(wǎng)絡(luò)20接收到分組時(shí),分組接收處理器136經(jīng)由信號線142向接收完成通知隊(duì)列 控制器137通知所接收的分組的類型。在接收到來自分組接收處理器136的通知時(shí),接收完成通知隊(duì)列控制器137創(chuàng)建 “接收通知”的描述符,并且經(jīng)由DMA控制器132將所寫入的描述符寫入處理器的主存儲(chǔ)裝 置12中提供的接收通知隊(duì)列129中。圖4示出了根據(jù)示例性實(shí)施例的端口定義。根據(jù)示例性實(shí)施例,結(jié)合端口號來管理通信連接。使用端口表121、端口上下文 123以及端口緩沖器125來管理通信連接。端口上下文123是用于管理相應(yīng)端口的通信連接狀態(tài)的信息。端口緩沖器125是 存儲(chǔ)要傳送的傳輸數(shù)據(jù)或者所接收的傳輸數(shù)據(jù)的緩沖器。端口表121是管理每個(gè)端口的端口上下文123和端口條目1211的表。端口表121 管理各個(gè)端口的端口上下文123以及與端口號相關(guān)聯(lián)的端口條目1211。端口表121中的端 口條目1211的條目號對應(yīng)于端口號。因此,具有端口號“n”(n是0或者正整數(shù))的端口條目1211被登記在端口表121 中具有條目號“n”的條目中。如圖4所示,端口條目1211存儲(chǔ)包含項(xiàng)目“啟用”、“類型”、“上下文地址”、“緩沖器 地址”以及“緩沖器大小”的信息。項(xiàng)目“啟用”是表示端口條目1211是否有效的標(biāo)志。如 果端口條目1211有效,則“啟用”標(biāo)志為“1”,而如果無效,則“啟用”標(biāo)志為“0”。項(xiàng)目“類 型”是表示“接收”或者“傳送”的信息。項(xiàng)目“上下文地址”是在主存儲(chǔ)裝置12中存儲(chǔ)相應(yīng) 端口的端口上下文123的地址。項(xiàng)目“緩沖器地址”表示相應(yīng)端口的端口緩沖器125的頂 端地址。項(xiàng)目“緩沖器大小”是表示端口緩沖器125的大小的信息,諸如在端口緩沖器125 中可以存儲(chǔ)的字節(jié)數(shù)。圖5示出了每個(gè)端口上下文123的示例性數(shù)據(jù)結(jié)構(gòu)。如圖5所示,端口上下文123包括以下信息協(xié)議類型1231和通信狀態(tài)1232。協(xié) 議類型1231是表示在端口間的通信中使用的通信協(xié)議的類型的信息。通信狀態(tài)1232是表 示端口間的通信連接的狀態(tài)的信息。通信狀態(tài)1232表示“待機(jī)狀態(tài)”、“連接狀態(tài)”、“請求連 接狀態(tài)”、“完成斷開通知接收狀態(tài)”等。公開了在每個(gè)隊(duì)列中設(shè)置的描述符的內(nèi)容。根據(jù)示例性實(shí)施例,將每個(gè)處理器11的通信處理卸載到每個(gè)相應(yīng)的NIC 13。將 “通信連接建立”、“通信斷開”以及“數(shù)據(jù)通信(數(shù)據(jù)傳輸)”的處理卸載到NIC 13。使用傳 送命令隊(duì)列127、傳送完成通知隊(duì)列128以及接收通知隊(duì)列129來執(zhí)行卸載處理。處理器11和NIC 13通過對這些隊(duì)列執(zhí)行描述符的讀取/寫入來交換信息,并且實(shí)現(xiàn)卸載。傳送命令隊(duì)列127是由處理器11用來指示NIC 13“建立通信連接(連接請求)”、 “傳送數(shù)據(jù)(傳輸數(shù)據(jù)),,以及“斷開通信線路”的隊(duì)列。處理器11將所述三個(gè)命令寫入傳 送命令隊(duì)列127中,并且NIC 13讀取寫入傳送命令隊(duì)列127中的命令。通過這么做,處理 器11向NIC 13通知所述三個(gè)命令。在經(jīng)由傳送命令隊(duì)列127接收到來自處理器11的命令時(shí),NIC 13根據(jù)命令創(chuàng)建 傳送分組,并且經(jīng)由網(wǎng)絡(luò)20將傳送分組傳送到通信目標(biāo)的NIC 13。傳送分組例如是“連接 請求分組”、“連接響應(yīng)分組”、“傳輸數(shù)據(jù)分組”或者“斷開通知分組”。圖6A到6C示出了要由處理器11寫入傳送命令隊(duì)列127中的描述符的數(shù)據(jù)結(jié)構(gòu)。 如圖6A到6C所示,在本實(shí)施例中存在三種要寫入傳送命令隊(duì)列127中的描述符。圖6A所示的連接請求命令描述符1331是要由處理器11寫入傳送命令隊(duì)列127中 以指示NIC 13 “請求連接”的描述符。連接請求命令描述符1331具有設(shè)置如下信息的字 段所述信息包括命令I(lǐng)D 1331a、源端口號1331b、目標(biāo)地址1331c以及目標(biāo)端口號1331d。命令I(lǐng)D 1331a是分配給要從處理器11發(fā)送到NIC 13的“連接請求”命令的ID (標(biāo)識 符)。源端口號1331b是通信中的源端口的端口號。目標(biāo)地址1331c是在通信中由目標(biāo)節(jié)點(diǎn)10 使用的、0SI參考模型的網(wǎng)絡(luò)層的地址。目標(biāo)端口號1331d是通信中的目標(biāo)端口的端口號。端口號等于分配給分組源的應(yīng)用程序的端口號,其中由具有目標(biāo)地址的節(jié)點(diǎn)10d 執(zhí)行該應(yīng)用程序。這里,節(jié)點(diǎn)10d是通信的目標(biāo)。圖6B所示的數(shù)據(jù)傳輸命令描述符1332包括以下信息命令I(lǐng)D1332a、源端口號 1332b、數(shù)據(jù)頂端地址1332c以及數(shù)據(jù)長度1332d。數(shù)據(jù)傳輸命令描述符1332是要由處理器11寫入傳送命令隊(duì)列127中以指示NIC 13 “傳輸數(shù)據(jù)”的描述符。命令I(lǐng)D 1332a是被分配給要從處理器11發(fā)送到NIC 13的“數(shù) 據(jù)傳輸”命令的ID。源端口號1332b是通信中的源端口的端口號。數(shù)據(jù)頂端地址1332c是 存儲(chǔ)要設(shè)置在傳輸數(shù)據(jù)分組(數(shù)據(jù)通信分組)中的傳送數(shù)據(jù)的端口緩沖器125的頂端地 址。數(shù)據(jù)長度1332d是存儲(chǔ)在端口緩沖器125中的數(shù)據(jù)的大小。圖6C所示的斷開通知傳送命令描述符1333包括命令I(lǐng)D 1333a和源端口號 1333b。斷開通知傳送命令描述符1333是要由處理器11寫入傳送命令隊(duì)列127中以指示 NIC 13 “斷開通信線路”的描述符。命令I(lǐng)D 1333a是分配給要從處理器11發(fā)送到NIC 13 的“斷開通知傳送”命令的ID。源端口號1333b是通信中的源端口的端口號。傳送完成通知隊(duì)列128是由NIC 13用來向處理器11通知完成從處理器11請求 的分組傳送的隊(duì)列。當(dāng)完成從處理器11請求的分組傳送時(shí),NIC13將“傳送完成狀態(tài)”的描 述符寫入傳送完成通知隊(duì)列128中。處理器11從傳送完成通知隊(duì)列128讀取傳送完成狀 態(tài),以確認(rèn)由處理器11指定的分組已經(jīng)被傳送到通信目標(biāo)的NIC 13。圖7A到7C示出了要由傳送完成通知隊(duì)列控制器135寫入傳送完成通知隊(duì)列128 中的傳送完成狀態(tài)的描述符的數(shù)據(jù)結(jié)構(gòu)。圖7A所示的連接請求傳送命令完成描述符1351 是表示由NIC 13響應(yīng)于來自處理器11的“連接請求傳送”命令執(zhí)行的處理的結(jié)果的描述 符。連接請求傳送命令完成描述符1351包括狀態(tài)代碼1351a。狀態(tài)代碼1351a是表示由 NIC 13執(zhí)行的處理是成功還是失敗的代碼,S卩,“成功”或者“失敗”。由NIC 13的傳送完成 通知隊(duì)列控制器135將連接請求傳送命令完成描述符1351作為連接請求傳送的“傳送完成狀態(tài)”寫入傳送完成通知隊(duì)列128中。NIC 13讀取由處理器11寫入傳送命令隊(duì)列127中的“連接請求”,并且經(jīng)由網(wǎng)絡(luò) 20將連接請求分組傳送到連接目標(biāo)的NIC 13。然后,NIC13創(chuàng)建具有設(shè)置在狀態(tài)代碼1351a 中的連接請求分組的傳送結(jié)果的連接請求傳送命令完成描述符1351,并且將所創(chuàng)建的連接 請求傳送命令完成描述符1351寫入傳送完成通知隊(duì)列128中。當(dāng)正確地完成了連接請求分組的傳送時(shí),將連接請求傳送命令完成描述符1351 的狀態(tài)代碼1351a設(shè)置為表示處理成功的代碼(例如,“0”)。當(dāng)連接請求分組的傳送失敗 時(shí),將連接請求傳送命令完成描述符1351的狀態(tài)代碼1351a設(shè)置為表示處理失敗的代碼 (例如,“1”)。處理器11從傳送完成通知隊(duì)列128讀取連接請求傳送命令完成描述符1351。 然后,處理器11參考連接請求傳送命令完成描述符1351的狀態(tài)代碼1351a,以檢查處理器 11指示NIC 13傳送的連接請求分組是否已經(jīng)被正確地傳送到目標(biāo)節(jié)點(diǎn)10的NIC 13。圖7B所示的數(shù)據(jù)傳輸命令完成描述符1352是表示由NIC 13響應(yīng)于從處理器11 發(fā)出到OTC 13的“數(shù)據(jù)傳輸”命令而執(zhí)行的處理的結(jié)果的描述符。數(shù)據(jù)傳輸命令完成描述 符1352包括狀態(tài)代碼1352a和傳送數(shù)據(jù)長度1352b。狀態(tài)代碼1352a是表示由NIC 13執(zhí) 行的處理是成功還是失敗的代碼。傳送數(shù)據(jù)長度1352b是表示傳輸數(shù)據(jù)長度的信息。由 NIC 13的傳送完成通知隊(duì)列控制器135將數(shù)據(jù)傳輸命令完成描述符1352作為傳輸數(shù)據(jù)傳 送的“傳送完成狀態(tài)”寫入傳送完成通知隊(duì)列128中。NIC 13從傳送命令隊(duì)列127讀取由處理器11寫入的“數(shù)據(jù)傳輸”命令,然后確認(rèn) 數(shù)據(jù)要被傳送到的端口處于“請求連接狀態(tài)”。在確認(rèn)端口的狀態(tài)之后,NIC 13從端口緩沖 器125讀取傳輸數(shù)據(jù)。NIC 13生成其中設(shè)置有所讀取的傳輸數(shù)據(jù)的傳輸數(shù)據(jù)分組,并且經(jīng) 由網(wǎng)絡(luò)20將所創(chuàng)建的傳輸數(shù)據(jù)分組傳送到目標(biāo)節(jié)點(diǎn)10的NIC 13。在完成傳輸數(shù)據(jù)分組的 傳送之后,NIC 13創(chuàng)建數(shù)據(jù)傳輸命令完成描述符1352。在數(shù)據(jù)傳輸命令完成描述符1352中,傳輸數(shù)據(jù)分組的傳送結(jié)果被設(shè)置在狀態(tài)代 碼1352a中,而傳輸數(shù)據(jù)的數(shù)據(jù)長度被設(shè)置在傳送數(shù)據(jù)長度1352b中。NIC 13將所創(chuàng)建的 數(shù)據(jù)傳輸命令完成描述符1352寫入傳送完成通知隊(duì)列128中。圖7C所示的斷開通知傳送完成描述符1353是表示由NIC 13響應(yīng)于從處理器11 發(fā)出到NIC 13的“斷開通知傳送”命令而執(zhí)行的處理的結(jié)果的描述符。斷開通知傳送完成 描述符1353包括狀態(tài)代碼1353a。狀態(tài)代碼1353a是表示由NIC 13響應(yīng)于從處理器11發(fā) 出到NIC 13的“斷開通知傳送”命令而執(zhí)行的處理的結(jié)果的代碼。由NIC 13將斷開通知傳 送完成描述符1353作為斷開通知傳送的“傳送完成狀態(tài)”寫入傳送完成通知隊(duì)列128中。NIC 13從傳送命令隊(duì)列127讀取由處理器11寫入的“斷開通知傳送”命令,并且 經(jīng)由網(wǎng)絡(luò)20將斷開通知分組傳送到連接目標(biāo)的NIC 13。當(dāng)完成斷開通知分組的傳送時(shí), NIC 13創(chuàng)建具有設(shè)置在狀態(tài)代碼1353a中的傳送結(jié)果的斷開通知傳送完成描述符1353,并 且將所創(chuàng)建的斷開通知傳送完成描述符1353寫入傳送完成通知隊(duì)列128中。如果正確地完成斷開通知分組的傳送,則將斷開通知傳送完成描述符1353中的 狀態(tài)代碼1353a設(shè)置為表示傳送成功的代碼(例如,“0”)。如果斷開通知分組的傳送失敗, 則將斷開通知傳送完成描述符1353中的狀態(tài)代碼1353a設(shè)置為表示傳送失敗的代碼(例 如,“1,,)。處理器11從傳送完成通知隊(duì)列128讀取斷開通知傳送完成描述符1353。然后,處理器11參考斷開通知傳送完成描述符1353,并且檢查處理器指示NIC 13傳送的斷開通知 分組是否已經(jīng)被正確地傳送到目標(biāo)節(jié)點(diǎn)10的NIC 13。接收通知隊(duì)列129是由NIC 13用來向處理器11通知從通信連接目標(biāo)的NIC 13 接收到的分組的類型的隊(duì)列。在接收到來自通信連接目標(biāo)的NIC 13的分組時(shí),NIC 13將 與所接收的分組的類型對應(yīng)的接收狀態(tài)寫入接收通知隊(duì)列129中。處理器11從接收通知隊(duì)列129讀取接收狀態(tài),并且分析所讀取的接收狀態(tài)的內(nèi) 容,以確定從通信連接目標(biāo)節(jié)點(diǎn)10的處理器11傳送的通知的內(nèi)容。存在以下類型的接收分組“連接請求分組”類型、“連接響應(yīng)分組”類型、“傳輸數(shù) 據(jù)分組”類型、“斷開通知分組”類型等。這些類型的分組被歸類為控制分組。圖8A到8D示出了表示要由NIC 13的接收完成通知隊(duì)列控制器137寫入接收通 知隊(duì)列129中的接收狀態(tài)的描述符的數(shù)據(jù)結(jié)構(gòu)。如圖8A到8D所示,存在四種要寫入分組 傳送或者接收方的NIC 13的接收通知隊(duì)列129中的描述符。圖8A所示的連接請求描述符1371是當(dāng)NIC 13接收到連接請求分組時(shí),由NIC 13 寫入接收通知隊(duì)列129中以向節(jié)點(diǎn)10中的處理器11通知來自通信連接目標(biāo)的“連接請求” 的描述符。連接請求描述符1371包括以下信息接收通知ID 1371a、端口號1371b、請求者地 址1371c以及請求者端口號1371d。接收通知ID 1371a是分配給“連接請求”的接收通知的ID。端口號1371b等于設(shè) 置在控制分組中的“目標(biāo)端口號”。請求者地址1371c等于設(shè)置在連接請求分組中的“發(fā)起 者地址”。請求者端口號1371d等于設(shè)置在連接請求分組中的“源端口號”。圖8B所示的連接響應(yīng)描述符1372是當(dāng)NIC 13接收到連接響應(yīng)分組時(shí),由NIC 13 寫入接收通知隊(duì)列129中以向處理器11通知接收到“連接響應(yīng)分組”的描述符。連接響應(yīng)描述符1372包括以下信息接收通知ID 1372a、端口號1372b、響應(yīng)者地 址1372c以及響應(yīng)端口號1372d。接收通知ID 1372a是分配給“連接響應(yīng)”的接收通知的ID。端口號1372b是設(shè)置 在連接響應(yīng)分組中的字段“目標(biāo)端口號”中的端口號。響應(yīng)者地址1372c是設(shè)置在連接響 應(yīng)分組中的字段“發(fā)起者地址”中的地址。響應(yīng)端口號1372d是設(shè)置在連接響應(yīng)分組中的 字段“源端口號”中的端口號。稍后將詳細(xì)地描述連接響應(yīng)分組。圖8C所示的數(shù)據(jù)傳輸描述符1373是當(dāng)NIC 13接收到傳輸數(shù)據(jù)分組時(shí),由NIC 13 寫入接收通知隊(duì)列129以向處理器11通知接收到“數(shù)據(jù)傳輸分組”的描述符。數(shù)據(jù)傳輸描 述符1373包括以下信息接收通知ID1373a、端口號1373b、數(shù)據(jù)頂端地址1373c以及數(shù)據(jù) 長度1373d。接收通知ID 1373a是分配給“傳輸數(shù)據(jù)”的接收通知的ID。端口號1373b等于設(shè) 置在傳輸數(shù)據(jù)分組中的“目標(biāo)端口號”。數(shù)據(jù)頂端地址1373c是表示端口緩沖器125中的傳 輸數(shù)據(jù)的頂端位置的地址。由NIC 13從傳輸數(shù)據(jù)分組提取傳輸數(shù)據(jù)并且將其存儲(chǔ)到端口 緩沖器125中。數(shù)據(jù)長度1373d是存儲(chǔ)在端口緩沖器125中的傳輸數(shù)據(jù)的數(shù)據(jù)長度。稍后 將詳細(xì)地描述傳輸數(shù)據(jù)分組。圖8D所示的斷開通知描述符1374是當(dāng)NIC 13接收到分組時(shí),由NIC 13寫入接 收通知隊(duì)列129中以向處理器11通知接收到“斷開通知分組”的描述符。
接收通知ID 1374a是分配給“斷開通知”的接收通知的ID。端口號1374b是斷開 通知發(fā)送者的端口號(源端口號)。端口號1374b等于設(shè)置在斷開通知分組中的“源端口號”。圖9示出了每個(gè)控制分組的數(shù)據(jù)結(jié)構(gòu)。如圖9所示,控制分組50包括網(wǎng)絡(luò)層報(bào)頭510和傳輸層報(bào)頭520。網(wǎng)絡(luò)層報(bào)頭510 是相當(dāng)于OSI參考模型的網(wǎng)絡(luò)層報(bào)頭的報(bào)頭。傳輸層報(bào)頭520是相當(dāng)于OSI參考模型的傳 輸層報(bào)頭的報(bào)頭。網(wǎng)絡(luò)層報(bào)頭510包括分組長度511、目標(biāo)地址512以及發(fā)起者地址513。分組長度 511是整個(gè)控制分組50的大小(諸如字節(jié)長度)。目標(biāo)地址512是控制分組50要被傳送 到的目標(biāo)節(jié)點(diǎn)10的網(wǎng)絡(luò)層地址(諸如IP地址)。發(fā)起者地址513是傳送控制分組50的節(jié) 點(diǎn)10的網(wǎng)絡(luò)層地址(諸如IP地址)。傳輸層報(bào)頭520包括目標(biāo)端口號521、源端口號522、協(xié)議類型523以及分組類型 524。目標(biāo)端口號521是通信連接的目標(biāo)的應(yīng)用程序的端口號。源端口號522是通信連 接的發(fā)起者的應(yīng)用程序的端口號。協(xié)議類型523是表示在通信連接中使用的傳輸層協(xié)議的 類型的信息。分組類型524是表示在通信連接中使用的控制分組的類型的信息。本實(shí)施例中使用的控制分組例如包括“連接請求分組”、“連接響應(yīng)分組”以及“斷 開通知分組”。分組類型524表示控制分組類型之一。換句話說,當(dāng)接收到控制分組50時(shí), 可以通過參考設(shè)置在分組類型524中的信息來確定控制分組50的類型。圖10示出了傳輸數(shù)據(jù)分組的數(shù)據(jù)結(jié)構(gòu)。如圖10所示,傳輸數(shù)據(jù)分組60包括網(wǎng)絡(luò)層報(bào)頭610、傳輸層報(bào)頭620以及傳輸層 數(shù)據(jù)630。網(wǎng)絡(luò)層報(bào)頭610包括分組長度611、目標(biāo)地址612以及發(fā)起者地址613。分組長度611是表示整個(gè)傳輸數(shù)據(jù)分組的大小的信息。目標(biāo)地址612和發(fā)起者地 址613分別與控制分組50的網(wǎng)絡(luò)層報(bào)頭510的目標(biāo)地址512和發(fā)起者地址513相同。傳輸層報(bào)頭620包括目標(biāo)端口號621、源端口號622、協(xié)議類型623以及分組類型 624。目標(biāo)端口號621、源端口號622以及協(xié)議類型623分別與控制分組50的傳輸層報(bào)頭 520的目標(biāo)端口號521、源端口號522以及協(xié)議類型523相同。分組類型624是表示傳輸數(shù) 據(jù)分組60的類型的信息。傳輸層數(shù)據(jù)630是關(guān)于由傳輸數(shù)據(jù)分組60運(yùn)載的傳輸層協(xié)議(諸如TCP (傳輸控 制協(xié)議))的數(shù)據(jù)。公開了示例性操作。圖11示出了單向通信示例性操作。圖11示出了在本實(shí)施例的系統(tǒng)中將數(shù)據(jù)從圖1所示的源節(jié)點(diǎn)10 (在下文中被稱 為“源節(jié)點(diǎn)10s”)傳輸?shù)綀D1所示的目標(biāo)節(jié)點(diǎn)10(在下文中被稱為“目標(biāo)節(jié)點(diǎn)10d”)的示 例性操作的序列。在圖11中,源節(jié)點(diǎn)IOs的處理器11和NIC 13分別被示出為處理器lis 和NIC 13s。同樣,目標(biāo)節(jié)點(diǎn)IOd的處理器11和NIC 13分別被示出為處理器Ild和NIC 13d。通過以下過程來執(zhí)行從在源節(jié)點(diǎn)IOs的處理器lis處執(zhí)行的端口到在目標(biāo)節(jié)點(diǎn)IOd的處理器lid處執(zhí)行的端口的數(shù)據(jù)傳輸(1)源節(jié)點(diǎn)IOs的處理器lis (在下文中處理器lis將被稱為“源處理器lis”)向 源節(jié)點(diǎn)IOs的NIC 13s (在下文中NIC 13s將被稱為“源NIC13s”)通知“連接請求命令”。
(2)在接收到來自源處理器lis的連接請求命令時(shí),源NIC 13s將“連接請求”傳 送到目標(biāo)節(jié)點(diǎn)IOd的NIC 13d(在下文中NIC 13d將被稱為“目標(biāo)NIC 13d”)。(3)在接收到來自源NIC 13s的連接請求時(shí),目標(biāo)NIC 13d將連接許可響應(yīng)返回到 源 NIC 13s。(4)然后,目標(biāo)NIC 13d向目標(biāo)節(jié)點(diǎn)IOd的處理器Ild(在下文中處理器Ild將被 稱為“目標(biāo)處理器lid”)通知接收到連接請求。(5)在接收到來自目標(biāo)NIC 13d的連接許可響應(yīng)時(shí),源NIC 13s向源處理器lis通 知接收到連接許可響應(yīng)。(6)在接收到來自源NIC 13s的連接響應(yīng)接收的通知時(shí),源處理器lis指示源NIC 13s執(zhí)行“數(shù)據(jù)傳輸”。(7)在接收到來自源處理器lis的數(shù)據(jù)傳輸命令時(shí),源NIC 13s將由源處理器lis 指定的“傳輸數(shù)據(jù)”傳送到目標(biāo)NIC 13d。(8)在接收到來自源NIC 13s的傳輸數(shù)據(jù)時(shí),目標(biāo)NIC 13d向目標(biāo)處理器Ild通知 接收到傳輸數(shù)據(jù)。重復(fù)以上過程(6)到(8)直至源處理器lis將所有傳輸數(shù)據(jù)傳送到目標(biāo) 處理器lid。(9)在將所有傳輸數(shù)據(jù)傳送到目標(biāo)處理器Ild之后,源處理器lis指示源NIC 13s 傳送“斷開通知”。(10)在接收到來自源處理器lis的斷開通知傳送命令時(shí),源NIC 13s將“斷開通 知”傳送到目標(biāo)NIC 13d。(11)在接收到來自源NIC 13s的斷開通知時(shí),目標(biāo)NIC 13d向目標(biāo)處理器Ild通 知接收到斷開通知。執(zhí)行示例性過程(1)到(11),以便在源NIC 13s和目標(biāo)NIC 13d之間建立通信連 接,并且將數(shù)據(jù)從源處理器lis傳送到目標(biāo)處理器lid。在源處理器lis將所有傳輸數(shù)據(jù)傳 送到目標(biāo)處理器Ild之后,切斷源NIC13s和目標(biāo)NIC 13d之間的通信連接。通信連接是在 OSI參考模型的傳輸層的通信連接。如上所述,根據(jù)本實(shí)施例,源NIC 13s和目標(biāo)NIC 13d執(zhí)行處理來建立用于傳輸數(shù) 據(jù)的通信連接。使用端口表121、端口上下文123以及端口緩沖器125來發(fā)送處理器11和 NIC 13之間的每個(gè)命令和通知。結(jié)合端口號來管理這些部件121、123和125。公開了連接請求傳送。圖12示出了要由源處理器lis執(zhí)行的、用于指示源NIC 13s發(fā)出“連接請求”的 示例性操作,以便建立通信連接。下面描述圖12所示的過程。(1)初始設(shè)置源處理器lis在相應(yīng)主存儲(chǔ)裝置12 (在下文中被稱為“主存儲(chǔ)裝置 12s”)中取得端口上下文123,并且將端口上下文123中的通信狀態(tài)1232設(shè)置為“待機(jī)狀 態(tài)”((I)-I)。然后,源處理器lis將端口上下文123登記在主存儲(chǔ)裝置12s的端口表121
中(α)-2)。(2)連接請求命令源處理器lis將連接請求傳送命令的描述符1331寫入傳送命令隊(duì)列127中。(3)連接請求傳送命令讀出源NIC 13s從傳送命令隊(duì)列127讀取連接請求傳送命令的描述符1331。(4)端口表讀出源NIC 13s從連接請求傳送命令的描述符1331讀取源端口號 1331b。然后,源NIC 13s根據(jù)所讀出的端口號1331b從端口表121中的端口條目1211讀 取源端口的端口上下文123的存儲(chǔ)地址。(5)端口上下文讀出源NIC 13s從所讀出的存儲(chǔ)地址讀取端口上下文123,并且 檢查寫入端口上下文123中的通信狀態(tài)1232是否被設(shè)置為“待機(jī)狀態(tài)”。(6)連接請求分組傳送源NIC 13s創(chuàng)建要發(fā)送到目標(biāo)NIC 13d的連接請求分組 50cd,并且將所創(chuàng)建的連接請求分組50cd傳送到網(wǎng)絡(luò)20。連接請求分組50cd是具有圖9 所示格式的控制分組50,并且其分組類型624被設(shè)置為“連接請求”。(7)端口上下文更新源NIC 13s將端口上下文123中的通信狀態(tài)1232更新為“請 求連接狀態(tài)”。(8)傳送完成通知寫入源NIC 13s將“傳送完成狀態(tài)”的描述符寫入傳送完成通 知隊(duì)列128中?!皞魉屯瓿蔂顟B(tài)”的描述符是具有圖7A所示格式的描述符1351。(9)傳送完成通知讀出源處理器lis從傳送完成通知隊(duì)列128讀取傳送完成狀 態(tài)的描述符。參考傳送完成狀態(tài)的描述符,源處理器lis檢查連接請求分組50cd是否已經(jīng) 被正確地傳送到目標(biāo)處理器lid。如果傳送完成狀態(tài)被設(shè)置為“成功”,則源處理器lis確定 連接請求分組50cd已經(jīng)被正確地傳送到目標(biāo)處理器lid。如果傳送完成狀態(tài)被設(shè)置為“失 敗”,則源處理器lis確定源NIC 13s未能傳送連接請求分組50cd。公開了連接請求接收。圖13示出了在接收到來自源NIC 13s的連接請求分組50cd之后,由目標(biāo)NIC 13d 執(zhí)行的、用于將“連接許可”的響應(yīng)分組傳送到源NIC 13s的示例性操作。下面描述圖13所 示的示例性過程。(1)初始設(shè)置目標(biāo)NIC 13d在相應(yīng)主存儲(chǔ)裝置12 (在下文中被稱為“主存儲(chǔ)裝置 12d”)中取得端口上下文123,并且將端口上下文123中的通信狀態(tài)1232設(shè)置為“待機(jī)狀 態(tài)”((1)_1)。然后,目標(biāo)NIC 13d將端口上下文123登記在主存儲(chǔ)裝置12d的端口表121
中(α)-2)。(2)連接請求分組接收目標(biāo)NIC 13d經(jīng)由網(wǎng)絡(luò)20接收從源NIC 13s傳送的連接 請求分組50cd。(3)端口表讀出目標(biāo)NIC 13d從寫入連接請求分組50cd中的字段目標(biāo)端口號 1331d讀取端口號,并且參考端口表121中與端口號對應(yīng)的端口條目1211。然后,目標(biāo)NIC 13d讀取設(shè)置在主存儲(chǔ)裝置12d中的端口條目1211的“上下文地址”中的地址。該地址是 目標(biāo)端口的端口上下文123的存儲(chǔ)地址(上下文存儲(chǔ)地址),該目標(biāo)端口具有在主存儲(chǔ)裝置 12d中分配給其的端口號。(4)端口上下文讀出目標(biāo)NIC 13d從主存儲(chǔ)裝置12d中的目標(biāo)端口的上下文存 儲(chǔ)地址讀取端口上下文123,并且檢查端口上下文123中的通信狀態(tài)1232是否被設(shè)置為“待 機(jī)狀態(tài)”。(5)連接響應(yīng)分組傳送在檢查通信狀態(tài)之后,目標(biāo)NIC 13d創(chuàng)建連接許可響應(yīng)分組50ca,并且將所創(chuàng)建的連接許可響應(yīng)分組50ca傳送到網(wǎng)絡(luò)20。連接許可響應(yīng)分組50ca 是具有圖9所示格式的控制分組50,并且其分組類型624被設(shè)置為“連接許可”。(6)端口上下文更新目標(biāo)NIC 13d將端口上下文123更新為“請求連接狀態(tài)”(7)接收通知寫入目標(biāo)NIC 13d將“接收狀態(tài)”的描述符寫入主存儲(chǔ)裝置12d中 的接收通知隊(duì)列129中。該描述符是圖8A所示的描述符1371。(8)接收通知讀出目標(biāo)處理器Ild從接收通知隊(duì)列129讀取接收狀態(tài)的描述符。 目標(biāo)處理器Iid檢查接收狀態(tài)是否被設(shè)置為“成功”。如果接收狀態(tài)被設(shè)置為“成功”,則目 標(biāo)處理器Ild確定目標(biāo)NIC 13d已經(jīng)正確地接收到從源處理器IlS傳送的連接請求分組 50cd。如果接收狀態(tài)被設(shè)置為“失敗”,則目標(biāo)處理器Ild確定目標(biāo)OTC 13d未能接收連接 請求分組50cd。如果目標(biāo)NIC 13d在過程(4)中識別目標(biāo)端口的端口上下文123中的通信狀態(tài) 1232不是“待機(jī)狀態(tài)”,則目標(biāo)NIC 13d在過程(5)中將連接拒絕響應(yīng)分組傳送到網(wǎng)絡(luò)20。公開了連接請求響應(yīng)接收。圖14示出了在接收到來自目標(biāo)NIC 13d的“連接許可”響應(yīng)分組50ca時(shí)由源NIC 13s執(zhí)行的示例性操作。下面描述圖14所示的過程。(1)連接響應(yīng)分組接收源NIC 13s從網(wǎng)絡(luò)20接收“連接許可”響應(yīng)分組50ca。(2)端口表讀出源NIC 13s從所接收的響應(yīng)分組50ca中的字段目標(biāo)端口號 1331d讀取端口號。然后,源NIC 13s讀取設(shè)置在與所讀取的端口號對應(yīng)的、主存儲(chǔ)裝置12s 的端口表121中的端口條目1211的字段“上下文地址”中的地址。(3)端口上下文讀出源NIC 13s訪問主存儲(chǔ)裝置12s中的所讀取的地址,并且從 該地址讀取端口上下文123。然后,源NIC 13s檢查所讀取的端口上下文123中的通信狀態(tài) 1232是否被設(shè)置為“請求連接狀態(tài)”。(4)端口上下文更新在檢查通信狀態(tài)之后,源NIC 13s將主存儲(chǔ)裝置12s的端口 上下文123中的通信狀態(tài)1232更新為“連接狀態(tài)”。(5)接收通知寫入源NIC 13s將“接收狀態(tài)”的描述符寫入主存儲(chǔ)裝置12s的接 收通知隊(duì)列129中。該接收狀態(tài)的描述符是具有圖8A所示格式的描述符1371。(6)接收通知讀出源處理器lis從接收通知隊(duì)列129讀取“接收狀態(tài)”的描述符。 源處理器lis檢查接收狀態(tài)是否被設(shè)置為“成功”。如果接收狀態(tài)被設(shè)置為“成功”,則源處 理器lis確定目標(biāo)NIC 13d已經(jīng)允許“連接請求”。因此,在源端口和目標(biāo)端口之間建立通 信連接。源NIC 13s可以在上面的過程(1)中接收連接拒絕響應(yīng)分組,并且可以在過程(3) 中確認(rèn)與目標(biāo)端口號1331d對應(yīng)的端口上下文123中的通信狀態(tài)1232為“連接狀態(tài)”。在 這種情況下,源NIC 13s將端口上下文123的通信狀態(tài)1232返回到“待機(jī)狀態(tài)”。這里,目 標(biāo)NIC 13d不向源NIC 13s傳送“連接許可”響應(yīng)分組。圖15示出了用于從連接端口(源端口 )傳送傳輸數(shù)據(jù)的示例性操作。下面描述 圖15所示的過程。(1)傳輸數(shù)據(jù)寫入源處理器lis將“傳輸數(shù)據(jù)”存儲(chǔ)到主存儲(chǔ)裝置12s的端口緩 沖器125中。(2)數(shù)據(jù)傳輸命令源處理器lis將數(shù)據(jù)傳輸命令描述符1332 (參見圖6B)寫入主存儲(chǔ)裝置12s的傳送命令隊(duì)列127中。(3)傳送命令讀出源NIC 13s從寫入傳送命令隊(duì)列127中的傳送命令隊(duì)列127讀取數(shù)據(jù)傳輸命令描述符1332。(4)端口表讀出源NIC 13s基于設(shè)置在描述符1332的字段源端口號1332b中的 源端口號,從端口表121讀取主存儲(chǔ)裝置12s中的目標(biāo)端口的端口上下文123的地址。更 具體地,源MC 13s從端口表121讀取與端口號對應(yīng)的端口條目1211的內(nèi)容。設(shè)置在端口 條目1211的字段“上下文地址”中的地址被視為目標(biāo)端口的端口上下文123的存儲(chǔ)地址。(5)端口上下文讀出源NIC 13s從主存儲(chǔ)裝置12s中的存儲(chǔ)地址讀取端口上下 文123,并且檢查通信狀態(tài)1232是否被設(shè)置為“連接狀態(tài)”。(6)傳輸數(shù)據(jù)讀出源NIC 13s基于設(shè)置在端口條目1211中的字段“緩沖器地址” 中的地址以及設(shè)置在字段“緩沖器大小”中的緩沖器大小,從主存儲(chǔ)裝置12s中的端口緩沖 器125讀取傳輸數(shù)據(jù)。(7)傳輸數(shù)據(jù)分組傳送源NIC 13s創(chuàng)建具有圖10所示格式的傳輸數(shù)據(jù)分組60, 并且將所創(chuàng)建的傳輸數(shù)據(jù)分組60傳送到網(wǎng)絡(luò)20。(8)傳送完成通知寫入源NIC 13s將傳送完成狀態(tài)描述符寫入傳送完成通知隊(duì) 列128中。該傳送完成狀態(tài)描述符是具有圖7B所示格式的描述符1352。(9)傳送完成通知讀出源處理器lis從傳送完成通知隊(duì)列128讀取傳送完成狀 態(tài)。然后,源處理器lis檢查傳送完成狀態(tài)是否被設(shè)置為“成功”。如果傳送完成狀態(tài)被設(shè) 置為“成功”,則源處理器lis確定源NIC 13s正確地傳送了傳輸數(shù)據(jù)分組60。在這種情況 下,正確地完成了從源端口到目標(biāo)端口的傳輸數(shù)據(jù)的傳送。如果傳送完成狀態(tài)被設(shè)置為“失敗”,則源處理器lis確定源NIC 13s未能傳送傳 輸數(shù)據(jù)分組60。在這種情況下,從源端口到目標(biāo)端口的傳輸數(shù)據(jù)分組60的傳送失敗。圖16示出了要由所連接的目標(biāo)端口執(zhí)行的、用于接收從源端口傳送的傳輸數(shù)據(jù) 的示例性操作。下面描述圖16所示的過程。(1)傳輸數(shù)據(jù)分組接收目標(biāo)NIC 13d經(jīng)由網(wǎng)絡(luò)20接收從源NIC 13s傳送的傳輸 數(shù)據(jù)分組60。(2)端口表讀出目標(biāo)NIC 13d從傳輸數(shù)據(jù)分組60提取目標(biāo)端口號621,并且從主 存儲(chǔ)裝置12d的端口表121中與目標(biāo)端口號621對應(yīng)的端口條目1211讀取“上下文地址”。(3)端口上下文讀出目標(biāo)NIC 13d從主存儲(chǔ)裝置12d中的上下文存儲(chǔ)地址讀取 端口上下文123。參考端口上下文123中的通信狀態(tài)1232,目標(biāo)NIC 13d檢查接收到傳輸 數(shù)據(jù)分組60的端口是否處于“連接狀態(tài)”。(4)傳輸數(shù)據(jù)寫入目標(biāo)NIC 13d讀取存儲(chǔ)在傳輸數(shù)據(jù)分組60中的傳輸數(shù)據(jù)630, 并且將所讀取的傳輸數(shù)據(jù)630存儲(chǔ)在主存儲(chǔ)裝置12d的端口緩沖器125中。(5)接收通知寫入目標(biāo)NIC 13d將接收狀態(tài)寫入主存儲(chǔ)裝置12d的接收通知隊(duì) 列129中。該接收狀態(tài)是圖8B所示的數(shù)據(jù)傳輸描述符1373。(6)接收通知讀出目標(biāo)處理器Ild從接收通知隊(duì)列129讀取接收狀態(tài)。(7)傳輸數(shù)據(jù)讀出目標(biāo)處理器Ild參考接收狀態(tài)中的數(shù)據(jù)頂端地址1373c和數(shù) 據(jù)長度1332d,并且從端口緩沖器125讀取傳輸數(shù)據(jù)。以此方式,目標(biāo)端口接收從源端口傳 送的傳輸數(shù)據(jù)。
公開了斷開通知傳送。圖17示出了要由所連接的源端口執(zhí)行的、用于將斷開通知傳送到目標(biāo)端口的示 例性操作。下面描述圖17所示的過程。(1)斷開通知傳送命令源處理器lis將“斷開通知傳送命令”的描述符寫入主存 儲(chǔ)裝置12s的傳送命令隊(duì)列127中。斷開通知傳送命令的描述符與圖6C所示的斷開通知 傳送命令描述符1333相同。
(2)斷開通知傳送命令讀出源NIC 13s從傳送命令隊(duì)列127讀取斷開通知傳送 命令描述符1333。(3)端口表讀出源NIC 13s從所讀取的斷開通知傳送命令描述符1333讀取源端 口號1333b,并且從端口表121中與源端口號1333b對應(yīng)的端口條目1211讀取“上下文地址”。(4)端口上下文讀出源NIC 13s從主存儲(chǔ)裝置12s中的上下文存儲(chǔ)地址讀取端 口上下文123,并且檢查所讀取的端口上下文123中的通信狀態(tài)1232是否處于“連接狀態(tài)”。(5)斷開通知分組傳送源NIC 13s創(chuàng)建斷開通知分組50dc,并且將所創(chuàng)建的斷開 通知分組50dc傳送到網(wǎng)絡(luò)20。斷開通知分組50dc是具有圖9所示格式的控制分組50,并 且其分組類型624被設(shè)置為“斷開通知”。(6)端口上下文更新源NIC 13s將端口上下文123中的通信狀態(tài)1232更新為“完 成斷開通知狀態(tài)”。(7)傳送完成通知寫入源NIC 13s將“傳送完成狀態(tài)”寫入主存儲(chǔ)裝置12s的傳 送命令隊(duì)列127中。該傳送完成狀態(tài)與圖7C所示的斷開通知傳送完成描述符1353相同。(8)傳送完成通知讀出源處理器lis從傳送命令隊(duì)列127讀取傳送完成狀態(tài)。如 果傳送完成狀態(tài)被設(shè)置為“成功”,則源處理器lis確定源NIC 13s已經(jīng)正確地將斷開通知 分組50dc傳送到目標(biāo)NIC 13d。在這種情況下,正確地完成了從源端口到目標(biāo)端口的斷開 通知的傳送。如果傳送完成狀態(tài)被設(shè)置為“失敗”,則源處理器lis確定源NIC 13s未能傳 送斷開通知分組50dc。在這種情況下,斷開通知未從源端口傳送到目標(biāo)端口。公開了斷開通知接收。圖18示出了要由所連接的目標(biāo)端口執(zhí)行的、用于從源端口接收斷開通知的示例 性操作。下面描述圖18所示的過程。(1)斷開通知分組接收目標(biāo)NIC 13d從網(wǎng)絡(luò)20接收斷開通知分組50dc。(2)端口表讀出目標(biāo)NIC 13d從所接收的斷開通知分組50dc讀取目標(biāo)端口號 621,并且從主存儲(chǔ)裝置12d的端口表121中與目標(biāo)端口號621對應(yīng)的端口條目1211讀取 “上下文地址”。(3)端口上下文讀出目標(biāo)NIC 13d從主存儲(chǔ)裝置12d中的上下文存儲(chǔ)地址讀取 端口上下文123 (目標(biāo)端口的上下文),并且檢查端口上下文123中的通信狀態(tài)1232是否被 設(shè)置為“連接狀態(tài)”。(4)端口上下文更新目標(biāo)NIC 13d將端口上下文123中的通信狀態(tài)1232更新為 “完成斷開通知接收狀態(tài)”。(5)接收通知寫入目標(biāo)NIC 13d將“接收狀態(tài)”寫入主存儲(chǔ)裝置12d的接收通知 隊(duì)列129中。該接收狀態(tài)描述符與圖8C所示的描述符1374相同。
(6)接收通知讀出目標(biāo)處理器Ild從接收通知隊(duì)列129讀取接收狀態(tài)。如果接 收狀態(tài)被設(shè)置為“成功”,則目標(biāo)處理器Ild確定目標(biāo)NIC 13d已經(jīng)正確地接收到斷開通知 分組50dc。因此,源端口和目標(biāo)端口之間的通信連接被切斷。如果接收狀態(tài)被設(shè)置為“失 敗”,則目標(biāo)處理器Ild確定目標(biāo)NIC 13d未能接收斷開通知分組50dc。在這種情況下,源 端口和目標(biāo)端口之間的通信連接未被切斷。根據(jù)示例性實(shí)施例,每個(gè)OTC 13建立單向通信連接。在使用本實(shí)施例的OTC 13 執(zhí)行雙向通信的情況下,處理器僅僅需要使用NIC 13來建立兩個(gè)單向通信連接。與使用常 規(guī)NIC的情況比較,當(dāng)使用本實(shí)施例的NIC 13來執(zhí)行雙向通信時(shí),處理器上的處理負(fù)荷減 小。此外,根據(jù)示例性實(shí)施例,每個(gè)端口上下文123可以定義通信連接被切斷的狀態(tài)。因此,通過參考每個(gè)相應(yīng)的端口上下文123,每個(gè)處理器11可以延遲高負(fù)荷示例 性操作(諸如采集通信資源),并且可以在適當(dāng)?shù)臅r(shí)機(jī)集體執(zhí)行這些示例性操作。根據(jù)示例性實(shí)施例,基于在每個(gè)處理器11的主存儲(chǔ)裝置12中提供的端口上下文 123執(zhí)行通信連接建立示例性操作。因此,與使用具有卸載引擎并且執(zhí)行通信處理的傳統(tǒng) NIC的情況相比,可以維持更多的通信連接數(shù)。更具體地,由于端口上下文123被保存在每 個(gè)具有較大存儲(chǔ)容量的主存儲(chǔ)裝置12中,因此可以維持的通信連接數(shù)變得更多。另外,本實(shí)施例的每個(gè)NIC 13使用相應(yīng)處理器11的主存儲(chǔ)裝置12來管理端口間 的通信連接。因此,本實(shí)施例的NIC 13具有硬件成本低于具有卸載引擎的傳統(tǒng)OTC的優(yōu)點(diǎn)。 此外,在將本實(shí)施例應(yīng)用于經(jīng)常具有通信連接建立和斷開的應(yīng)用(諸如Web應(yīng)用)的情況 下,可以預(yù)期,與具有卸載引擎的傳統(tǒng)NIC的情況一樣,主機(jī)處理器上的處理負(fù)荷也減小。本發(fā)明不限于以上實(shí)施例,并且可以對實(shí)施例進(jìn)行各種修改而不背離本發(fā)明的范 圍。例如,在實(shí)施例中,在每個(gè)處理器11的主存儲(chǔ)裝置12中提供端口上下文123和端 口表121。然而,本發(fā)明不限于該結(jié)構(gòu)。例如,可在每個(gè)相應(yīng)處理器中的專用寄存器或者存 儲(chǔ)器中提供每個(gè)端口上下文和每個(gè)端口表。在這種情況下,期望可以從網(wǎng)絡(luò)接口設(shè)備直接 訪問專用寄存器或者存儲(chǔ)器??梢栽谟?jì)算硬件(計(jì)算裝置)和/或軟件中實(shí)現(xiàn)實(shí)施例,諸如(在非限制性示例 中)可以存儲(chǔ)、取回、處理和/或輸出數(shù)據(jù)和/或與其它計(jì)算機(jī)進(jìn)行通信的任何計(jì)算機(jī)???以在計(jì)算硬件的顯示器上顯示所產(chǎn)生的結(jié)果。實(shí)現(xiàn)實(shí)施例的程序/軟件可以記錄在包括計(jì) 算機(jī)可讀記錄介質(zhì)的計(jì)算機(jī)可讀介質(zhì)上。實(shí)現(xiàn)實(shí)施例的程序/軟件也可以通過傳輸通信介 質(zhì)進(jìn)行傳送。計(jì)算機(jī)可讀記錄介質(zhì)的例子包括磁記錄裝置、光盤、磁光盤、和/或半導(dǎo)體存 儲(chǔ)器(例如,RAM、R0M等等)。磁記錄裝置的示例包括硬盤設(shè)備(HDD)、軟盤(FD)以及磁帶 (MT)。光盤的示例包括DVD (數(shù)字多功能盤)、DVD-RAM、CD-ROM (致密盤-只讀存儲(chǔ)器)以 及⑶_R(可記錄)/RW。通信介質(zhì)的示例包括載波信號。此外,根據(jù)實(shí)施例的一方面,可以提供所述特征、功能和/或操作的任意組合。實(shí)施例的許多特征和優(yōu)點(diǎn)根據(jù)詳細(xì)說明書是清楚的,并且因此,所附權(quán)利要求意欲覆蓋落入其真實(shí)精神和范圍內(nèi)的實(shí)施例的所有這些特征和優(yōu)點(diǎn)。此外,由于本領(lǐng)域的技 術(shù)人員將容易地進(jìn)行大量修改和改變,因此不期望將本發(fā)明實(shí)施例限于所示出和描述的具 體結(jié)構(gòu)和操作,并且因此可以采用落入其范圍的所有適當(dāng)?shù)男薷暮偷韧桨浮?br> 權(quán)利要求
一種連接到計(jì)算機(jī)并且經(jīng)由網(wǎng)絡(luò)執(zhí)行通信的網(wǎng)絡(luò)接口設(shè)備,所述網(wǎng)絡(luò)接口設(shè)備包括第一管理單元,其通過端口號來識別通信連接,并且通過存儲(chǔ)在存儲(chǔ)單元中并且與端口號相關(guān)聯(lián)的上下文來管理每個(gè)端口的通信連接狀態(tài);第二管理單元,其管理所述上下文的存儲(chǔ)狀態(tài);以及控制單元,其參考所述上下文,并且在端口間執(zhí)行建立通信連接的操作和切斷通信連接的操作。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)所述計(jì)算機(jī)的處理器發(fā)出傳送連接請求分組的命令時(shí),所述控制單元檢查與所述命 令中被指定為發(fā)起者的端口號對應(yīng)的上下文,并且當(dāng)所述上下文被設(shè)置為“待機(jī)狀態(tài)”時(shí), 所述控制單元將所述連接請求分組傳送到所述網(wǎng)絡(luò)。
3.根據(jù)權(quán)利要求2所述的網(wǎng)絡(luò)接口設(shè)備,其中,在傳送所述連接請求分組之后,所述控制單元向所述處理器通知傳送完成。
4.根據(jù)權(quán)利要求2所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)接收到所述連接請求分組時(shí),所述控制單元檢查與所述分組中被指定為目標(biāo)的端口 號對應(yīng)的上下文;當(dāng)所述上下文被設(shè)置為“待機(jī)狀態(tài)”時(shí),所述控制單元將連接許可響應(yīng)分組傳送到所述 網(wǎng)絡(luò),并且將所述上下文更新為“連接狀態(tài)”;并且當(dāng)所述上下文未被設(shè)置為“待機(jī)狀態(tài)”時(shí),所述控制單元將連接拒絕響應(yīng)分組傳送到所 述網(wǎng)絡(luò)。
5.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)接口設(shè)備,其中,所述控制單元接收所述連接請求分組并傳送所述響應(yīng)分組,根據(jù)需要更新所述上下 文,并且向所述處理器通知接收到所述連接請求分組。
6.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)接收到所述連接許可響應(yīng)分組時(shí),所述控制單元檢查與所述響應(yīng)分組中被指定為發(fā) 起者的端口號對應(yīng)的上下文,并且,當(dāng)所述上下文被設(shè)置為“請求連接狀態(tài)”時(shí),所述控制單 元將所述上下文更新為“連接狀態(tài)”。
7.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)接收到所述連接拒絕響應(yīng)分組時(shí),所述控制單元檢查與所述響應(yīng)分組中被指定為發(fā) 起者的端口號對應(yīng)的上下文,并且,當(dāng)所述上下文被設(shè)置為“連接狀態(tài)”時(shí),所述控制單元將 所述上下文返回到“待機(jī)狀態(tài)”。
8.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)接口設(shè)備,其中,在接收所述響應(yīng)分組并且更新所述上下文之后,所述控制單元向所述處理器通知接收 到所述響應(yīng)分組。
9.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)所述計(jì)算機(jī)的處理器發(fā)出傳送斷開通知分組的命令時(shí),所述控制單元檢查與所述命 令中被指定為發(fā)起者的端口號對應(yīng)的上下文,并且,當(dāng)所述上下文被設(shè)置為“連接狀態(tài)”時(shí), 所述控制單元將所述斷開通知分組傳送到所述網(wǎng)絡(luò)。
10.根據(jù)權(quán)利要求9所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)接收到所述斷開通知分組時(shí),所述控制單元檢查與所述分組中被指定為目標(biāo)的端口 號對應(yīng)的上下文,并且,當(dāng)所述上下文被設(shè)置為“連接狀態(tài)”時(shí),所述控制單元將所述上下文 更新為“完成斷開通知接收狀態(tài)”。
11.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)接口設(shè)備,其中,在所述處理器的主存儲(chǔ)裝置中提供所述上下文以及管理機(jī)制。
12.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)接口設(shè)備,其中,所述上下文以及管理機(jī)制存儲(chǔ)在所述處理器的專用寄存器中;并且 所述第一管理單元訪問所述專用寄存器,以管理每個(gè)端口的連接狀態(tài)。
13.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)接口設(shè)備,其中,在所述處理器的專用存儲(chǔ)器中提供所述上下文以及管理機(jī)制;并且 所述第一管理單元訪問所述專用存儲(chǔ)器,以管理每個(gè)端口的連接狀態(tài)。
14.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)接口設(shè)備,其中, 所述管理機(jī)制是表;所述第二管理單元通過所述表來管理所述上下文;并且 所述表中的條目至少包括關(guān)于所述上下文的存儲(chǔ)位置的信息。
15.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)接口設(shè)備,其中,所述上下文至少包括關(guān)于協(xié)議類型的信息以及關(guān)于所述端口的通信狀態(tài)的信息。
16.一種網(wǎng)絡(luò)接口設(shè)備,其包括第一管理單元,其能夠通過存儲(chǔ)在存儲(chǔ)單元中并且與端口號相關(guān)聯(lián)的上下文來管理端 口的連接狀態(tài);第二管理單元,其管理所述上下文的存儲(chǔ)狀態(tài);以及 控制單元,其基于所述上下文控制端口間的連接。
全文摘要
本發(fā)明提供了一種網(wǎng)絡(luò)接口設(shè)備。所述網(wǎng)絡(luò)接口設(shè)備連接到計(jì)算機(jī)并且經(jīng)由網(wǎng)絡(luò)執(zhí)行通信,其包括第一管理單元,其通過端口號來識別通信連接,并且通過存儲(chǔ)在存儲(chǔ)單元中并且與端口號相關(guān)聯(lián)的上下文來管理每個(gè)端口的通信連接狀態(tài);第二管理單元,其管理上下文的存儲(chǔ)狀態(tài);以及控制單元,其參考上下文,并且在端口間執(zhí)行建立通信連接的示例性操作和切斷通信連接的示例性操作。
文檔編號H04L12/56GK101827019SQ20101011271
公開日2010年9月8日 申請日期2010年2月4日 優(yōu)先權(quán)日2009年2月6日
發(fā)明者井上智宏, 安島雄一郎, 平本新哉 申請人:富士通株式會(huì)社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
雷州市| 青海省| 乌兰浩特市| 米脂县| 大同县| 建平县| 尚志市| 尖扎县| 平陆县| 房产| 阿克| 泗水县| 汉中市| 辽阳县| 顺义区| 遂昌县| 宝应县| 陆川县| 威宁| 昭苏县| 闻喜县| 凌源市| 沙湾县| 忻城县| 荣昌县| 炉霍县| 朝阳区| 班戈县| 昌吉市| 昌乐县| 鹿泉市| 外汇| 安宁市| 鹰潭市| 墨竹工卡县| 出国| 娄底市| 佛坪县| 三门县| 博客| 辉县市|