專利名稱:在不同的互聯網通信棧實例之間對數據包路由的方法和設備的制作方法
技術領域:
本發明總的涉及數字數據處理,更具體地,涉及在計算機系統中對互
聯網通信棧(例如TCP/IP棧)的使用。
背景技術:
在二十世紀后期,開始出現一種已知為信息革命的現象。盡管信息革 命是一種歷史發展,其范圍比任意一個事件或機器更廣泛,但是沒有一個 設備比數字電子計算機更能表現信息革命了 。計算機系統的發展無疑是一 個革命。每年,計算機系統增長越來越快,存儲越來越多的數據,以及向 它們的用戶提供越來越多應用。與此同時,計算資源的成本一直在降低, 從而在幾年前因為太昂貴而不能夠收集、存儲和處理的信息如今可經濟地 通過計算機進行管理。由于產品設計、制造工藝、資源調度、管理工作以 及許多其它因素變得更加高效,所以信息處理的更低成本使得生產率以滾 雪J求效應逐、漸增力口。
計算的更低成本以及數字設備的通用版本使得這些設備中存儲的信息 量劇增。使用數字形式存儲的這些信息,自然地,期望獲得從計算機系統 對信息的更寬的訪問。信息量使得任一個設備的存儲能力變得相形見絀。 為了改善信息訪問,開發出了允許計算設備與另 一個設備通信和交換信息 的各種技術。或許,這種分布式計算機的最突出實例是萬維網(通常,簡 稱為"web"),即在使用互聯網的世界范圍內可用的資源集合。從學童 到老年人都學習使用web,并且在它們家或工作單位可以方便地找到幾乎 無止境的各種信息。商業、政府、組織甚至普通個人使得信息在web上可 用,以至于達到這樣的程度,即現在期望任意有價值的相關信息可在web上的某處得到。
在多個數字系統中為web以及為電子郵件和其它形式的通信和分布式 處理提供支持的互聯網是通過多個鏈路連接的數字設備(節點)的異構網 絡,從而在網絡的任意兩個節點之間,典型地存在多個路徑,從而給互聯 網帶來了一定程度的冗余。在包中發送數據,在多個連續的節點之間對每 個包路由,直到它到達它的目的地。為了支持在與互聯網耦合的任意兩個 隨機節點之間的通信,使用全局命名規則對每個節點分配唯一名稱。這種 命名規則已知為域名系統或DNS。僅具有目標節點的全局DNS名稱的與 互聯網連接的源節點可向目標發送數據包。各個DNS服務器和其它設備將 全局DNS名稱轉換成互聯網協議(IP)地址,使得互聯網上的各個路由器 和其它設備正確確定對于數據包到達其最終目的節點的路徑。
在對包路由的基本層,互聯網能夠從一個節點向另 一個節點傳輸任意 隨機數據,因此可看作通信介質。然而,互聯網的用途取決于在源節點和 目的節點處理數據交換的應用。因此,web瀏覽器和其它web應用的出現 使得基礎信息傳輸技術在獨立、交互基礎上對于不具有廣泛計算機編程技 術的人們可用,所以這極大地擴大了互聯網的使用。
在與互聯網連接的計算機系統中, 一組低級別進程從互聯網連接接收
輸入(inbound )數據包,組合包中的數據,向一個或多個高級別應用提供
數據;類似地,所述一組低級別進程從高級應用接收輸出(outbound)消
息、文件或類似的結構,構成體現每個這種結構的一個或多個輸出數據包,
對數據包尋址,以及在互聯網連接之間發送數據包。這里,這些進程稱為
互聯網通信棧或TCP/IP棧,其中TCP/IP是傳輸控制協議/互聯網協議的 已知首字母縮寫。
互聯網通信棧或TCP/IP棧(或"棧實例")是用于執行上述低級別 互聯網通信功能的計算機程序代碼的進程實例。對于任意不同原因,有時, 期望在一個計算機系統中采用多個互聯網通信棧。盡管不是必須的,但是 所述多個互聯網通信棧可使用相同的基礎TCP/IP或相同的基礎TCP/IP 的部分,或其它計算^^編程代碼,但是每個互聯網通信棧具有其自己獨立的狀態數據,并且每個互聯網通信棧具有其自己的IP地址(或IP地址組)。 使用這種多個互聯網通信棧的一個實例是這樣一種計算機系統,其具
有 一個(或多個)棧,用于代表用戶執行有用的應用,這里稱為工作棧 (production stack);以及分開的一個(或多個棧),用于遠程管理、保 持和控制計算機系統本身的任務,這里稱為服務棧。因為各種原因,期望 將用戶應用從系統管理功能分離。例如,即使工作棧過載或無效,也可以 通過服務棧執行系統維護和控制操作;可通過服務棧執行并行維護,而不 干擾在工作棧中正在進行的操作等。
互聯網通信棧必須根據主管協議執行網絡通信所需的某些核心功能, 但是按需要也可執行任意不同的改進或可選功能。其中計算機系統包含多 個互聯網通信棧,例如在工作棧和分開的服務棧的情況下,在多個棧之間 存在核心功能的至少一些副本。然而,由于副本需要附加資源,所以不必 復制改進或可選功能,并且這些功能并非在所有棧中可用。如果需要在不 支持該功能的棧中訪問用于處理通信的改進功能,則可通過在局域網 (LAN )連接上將數據路由到另 一個棧來調用其它棧中的功能。遺憾地是, 這種方案只是空想。這樣消耗LAN上的網絡資源,并且每個棧需要它自 己的專用網絡適配器執行這種操作。
此外,還可通過定義與不同棧相關的端口并將指定端口用作數據的目 的地而在不同的互聯網通信棧之間對數據進行內部地路由。端口轉發使得 一個適配器^^皮兩個棧共享。然而,由于某些數據包不包括端口標識(或者 端口不可訪問),所以端口轉發不是始終可用。例如,在對數據加密以用 于虛擬專用網絡中的某些包中,端口也被加密,并且不可用于使用傳統端 口轉發的棧間路由。
期望提供在計算機系統中的互聯網通信棧之間傳送數據的改進技術, 以避免現有技術中的某些缺點。具體地,期望提供棧間通信設施,其不在 LAN上施加附加流量,支持單硬件LAN適配器的共享,以及可容易地集 成在支持互聯網通信協議的現有軟件中。發明內容一種計算機系統包含多個互聯網通信棧實例,其可以共享共同硬件網絡適配器或與單獨的各自硬件網絡適配器關聯。對于多個棧實例定義系統 內部軟件通信路徑,從而使用互聯網協議(IP)尋址在計算機系統中的不 同互聯網通信棧實例之間對包路由。使用IP轉發,將到達一個棧并且具有 與另 一個棧關聯的目的IP地址的包轉發至其他棧。在優選實施例中,包的棧間路由可使用全局定義的互聯網IP地址或局 域內聯網(封裝的)IP地址,并且可采用輸入或輸出包。例如,對于輸入 包可到達第一棧,使用全局IP地址將其轉發至第二棧,以及使用局部內聯 網IP地址將其重新轉發回第一棧。對于輸出包可到達第一棧,使用局部內 聯網IP地址將其轉發至第二棧,以及使用全局IP地址將其重新轉發回第 一棧。也存在許多其他用途。在優選實施例的示例性環境中,第一棧是具有全范圍的TCP/IP功能 的工作棧,以支持在通用計算機系統中的各種用戶應用,第二棧是具有有 限范圍的TCP/IP功能的服務棧,其的存在主要用以支持從遠程控制臺的 系統控制,并行維護操作等。可使用棧間接口來獲得改進功能的操作,以 用于來到的并且由綁定至服務棧的應用發送的包。在優選實施例的一個變形中,棧間接口還可用于支持由多個棧對共同 硬件網絡適配器的共享。棧間接口可作為選擇性能夠或禁止共享的開關運 行。在另一個變形中,當在工作棧上執行例程維護時,可使用棧間接口臨 時地將數據路由到備用棧實例。因此,本發明提供一種使用IP尋址的簡單內部棧間接口,其能夠進行 棧間通信,而不使用網絡設施,不需要專用軟件的開發成本,以處理棧間 通信或在所有棧實例中提供期望水平的功能。可參照附圖從結構和操作方面更好地理解本發明的細節,其中類似的 標號表示類似的部分,其中
圖1是互聯網的高M^示。
圖2是根據優選實施例的主機計算機系統的主要硬件組件的高級框圖。
圖3是根據優選實施例的主機計算機系統的主要軟件組成的概念示圖。
圖4是示出根據優選實施例的在互聯網通信棧實例中處理輸入數據包 的高級過程的整體流程圖。
圖5是示出根據優選實施例的在互聯網通信棧實例中處理輸出數據包 的高級過程的整體流程圖。
圖6是示出根據優選環境對輸入數據包的處理的流程圖,其中根據優 選實施例將為服務應用而綁定的封裝數據包路由到用于IPSec處理的工作 棧。
圖7是示出才艮據圖6的示例性環境對輸出數據包的處理的流程圖。
M實施方式 互聯網概況
在討論本發明實施例的操作之前,這里提供了互聯網的簡單概述。 術語"互聯網"是"互聯網網絡,,的縮寫版, 一般指的是利用在計算 機網絡領域中公知的TCP/IP和相關協議族的計算機網絡的集合。TCP/IP 是"傳輸控制協議/互聯網協議"(即便于計算機之間的通信的軟件協議) 的首字母縮寫。
圖l是互聯網的高,念圖。互聯網不是預先建立的拓樸結構,而是 通過增加新的節點和鏈路無限擴展的。節點可具有將其與其它節點連接的
任意數目的鏈路,這些鏈路可使用任意不同的通信技術,所述技術具有不 同的數據容量和其它特征。因此,互聯網的拓樸結構變為極端復雜的互連 網絡,其中典型地在任意兩個節點之間存在大量可能的通路。
網絡的中心部分(有時稱為"骨干網")包含多個高速路由器101, 其接收數據包,并將這些數據包繼續轉發到網絡中的其它節點。典型地,每個路由器具有與其它路由器的多個連接,并且這些連接具有高數據容量。例如,在高速路由器101之間通常使用光纖鏈路。與高速路由器連接的是這樣的節點,其用作對于高速路由器的互聯網"骨干網"的訪問點,如圖1中所示的節點102。由于訪問節點102用作在高速路由器101和其它網絡 節點之間對數據包路由,所以訪問節點102也是路由器,但是它們典型地 采用低速連接。訪問節點可以是例如公共互聯網服務提供商(其通過電話 線路或其它連接在付費的情況下提供對互聯網的訪問),或可以是用于其 內部系統的大型公司的訪問節點。通常,每個訪問節點102連接至多個高 速路由器101,以提供冗余,盡管這不是必要的。典型地,每個訪問節點 提供對多個主機計算機系統103A、 103B (共同表示為標號103)的訪問, 圖1中僅示出2個。主機103是連接至互聯網的計算機系統,并且其作為 源端生成或作為最終目的地接收在互聯網上發送的數據包。主機103可以 是從大型主機系統到PC到手持便攜式設備的任意類型計算機系統,并且 一個主機可代表系統的集群。通常,主機具有用于訪問互聯網的僅一個訪 問節點102 (在這種情況下是非冗余的),但是主機也可具有多個這種訪 問節點用于冗余。在主機和訪問節點之間的連接通常是相對低速的(例如 電話線或射頻鏈路),但是也可以是高速鏈路。在一些計算機系統的情況 下,例如主要用于在互聯網上提^f^f言息的大型互聯網服務器,主機可直接 連接至高速路由器IOI,因此主機用作其自身的訪問節點。可以理解,圖1用作互聯網的概念示圖,實際上在互聯網上節點和連 接的數目可以與圖1中所示的有極大的不同,并且連接的拓樸結構可以改 變。此外,可以理解,可以存在其它層次的連接類型和訪問形式,為了圖 示的清楚在圖1中沒有示出。即,可以存在多種類型或等級的訪問節點102, 其中主機通過這些節點連接以到達骨干網的高速路由器101,并且不同的 主機可以在不同層次的訪問節點連接。嚴格地講,互聯網包括與其耦合的 所有設備,并且當在互聯網上登入例如PC的小型計算機系統時,從其作 為互聯網節點并具有互聯網協議(IP)地址(盡管IP地址僅是暫時的)的 意義上,其是互聯網的一部分。通常,互聯網骨干網和訪問節點的路由器和連接都稱為互聯網,即,與計算機系統的分布式處理網絡相對將互聯網 看成通信介質。
一般地,使用在后者含義中的"互聯網"描述通信介質, 但是根據上下文,也可采用前者的含義。為了能夠在任意網絡中從一個隨機節點向另一個進行數據通信,發送 節點必須指定接收節點的目的地。對于很小的網絡,例如局域以太網,可 以向網絡中的所有節點廣播數據,通過簡單的尋址方案識別所期望的接收 方。互聯網的大小使得這種方案不現實。對于發送方仍舊必須指定目的地, 但是向網絡中的每個節點發送數據直到找到目的地這是不現實的。這意味 著,發送方以及在通路中的發送方和接收方之間的每個節點必須能夠確定 將數據包向哪里路由,而使其到達其目的地。然而在通路中的每個節點必 須能夠確定在下一個中間鏈路上將包向哪里路由,而不必讓通路中的每個 節點知道最終目的地。 一般地,存在多個可能的路由,并且路由器可基于 各個因素確定使用哪個。在路由器硬件的層次,通過多位數字地址(稱為互聯網協議(IP)地址)指定互聯網目的節點。將使用32位IP地址的原始互聯網尋址系統分 成分別為8位的4個部分或"八位字節(octet)"。這些八位字節通常通 過句點分開,例如IP地址可寫為卯.4.63.18。八位字節是尋址的分級形 式,對于每個單獨的路由器,不必知道所有互聯網地址的最終目的地。將 承載遠處地址的數據包路由到更近的路由器,并且因此能夠進一步對地址 細分,以此類推直到數據包到達其最終目的地。盡管原始尋址系統使用32 位IP地址,但是近年來,互聯網地址空間受到限制,并且已經采用已知為 IPv6的新標準用于互聯網IP地址。IPv6支持128位的IP地址。目前,IPv6 是同相的,并且許多互聯網設備硬件使用舊的32位IP尋址協議,已知為 IPv4。IP地址允許發送節點將數據包路由到接收節點,但是在通過使用互聯 網來使用數字IP地址用于更高級的進程間通信時,可具有缺陷。首先,數 字地址對于人們來說4艮難記得。此外,某些IP地址可在多個節點之間共享, 或者可因為網絡配置的改變而改變。對于這些和其他原因,存在用于互聯網節點的更高級命名約定,稱為域名系統(DNS)。在具有任意字母字符 的DNS中對互聯網節點給定名稱,然后將它們轉換成IP地址。因此,節 點的DNS名稱更容易記得,并且不需要因為某些硬件改變而簡單地改變。 例如, 一個人可建立客戶端可能記得的具有類似DNS名稱的web服務器, 并且可保持相同的DNS名稱,即使因為硬件更新等造成web服務器的實 際IP地址改變。DNS服務器的分布式系統記錄DNS名稱和它們對應的IP 地址,并且提供用于將DNS名稱轉換成IP地址的機構。由于路由器用于根據包的IP地址對給定數據包選擇多個通信鏈路中 的一個(直接目的地),所以多個IP地址可以與每個鏈路關聯。由于連接 的路由器或多個路由器簡單地將所有IP地址與一個目的地節點關聯,所以 在架構中不存在禁止一個主機節點具有多個IP地址的裝置。典型地,用作 客戶端并執行例如交互式web瀏覽器的應用的個人工作站或個人計算機將 僅具有一個IP地址。然而,某些更大的計算機系統可具有多個IP地址, 其中每個與內部進行的不同各自集合關聯。在耦合至互聯網的主機節點計算機系統中,等級進程組接收來自應用 的輸出數據,并且將其適當地格式化在數據包中,其具有適當的IP地址指 定,用于在互聯網上的傳輸。類似地,等級進程組從互聯網接收數據包, 提取和組合數據,并將其提供給應用。所述等級進程組通常稱為"互聯網 通信棧,,。在行業中,通常成為"TCP/IP棧,,,盡管由棧處理的互聯網通 信不需要限制在TCP/IP協議中,并且可包括例如UDP/IP、 ICMP/IP等的 其他協議。 一個主機計算機可包含互聯網通信棧的多個實例,其中所使用 的每個具有各自的目的。在一個主機計算機系統中,多個互聯網通信棧實 例是激活的,每個棧典型地具有其自己的不同IP地址(或IP地址組)。詳細描述參照附圖,其中在幾個示圖中,類似的標號指定類似的部件,圖2是 根據優選實施例的通過互聯網與其他系統通信的主機計算機系統200的主 要硬件組件的高級框圖。CPU 201是執行指令和處理來自主存儲器202的數據的至少一個通用可編程處理器。優選地,主存儲器202是使用任意不同存儲器技術的隨才;i^取存儲器,其中從存儲裝置或其他通過CPU201處 理的裝置加載數據。一個或多個通信總線205提供用于在CPU 201、主存儲器202和各種 I/O接口單元211-214 (還已知為I/O處理器(IOP)或I/O適配器(IOA )) 之間傳送數據的數據通信路徑。I/O接口單元支持與各種存儲裝置和I/O 設備的通信。例如,終端接口單元211支持一個或多個用戶終端221-224 的連接。存儲接口單元212支持一個或多個直接存^^i史備(DASD) 225-227 (典型地,其是旋轉磁盤驅動存儲設備,但是它們或者可以是其他 設備,包括盤驅動器陣列,其可被配置為作為對于主機的單獨大型存^i殳 備出現)的連接。I/O設備接口單元213支持任意各種其他類型I/O設備 (例如打印機228和傳真機229)的連接,可以理解,可使用其他或附加類型的i/o設備。網絡接口 (或"網絡適配器")214支持用于與一個或多個其他數字 設備通信的一個或多個外部網絡230的連接。網絡230包括互聯網,但是 網皿口 214不必直接耦合至互聯網,其可連接至局域網(未示出),其 隨后通過網關與互聯網連接。優選實施例的主機計算機系統200包含至少 一個網絡適配器214。其可選地包含多個網絡適配器。其中系統200包含 多個適配器, 一個或多個可直接或間接耦合至互聯網,這些適配器可連接 至相同或不同的局域網,或者相同或不同路由器或網關。可以理解,圖2旨在示出高級的系統200的代表性主要組件,其中各 個組件可具有比圖2中所示的更高復雜度,可揭_供不同于圖2中所示的或 附加的組件,并且這種組件的數目、類型和配置可改變,典型地,大型計 算機系統可具有比圖2更多的組件。這里公開了這種附加復雜度或附加變 化的幾個特定實例,可以理解,僅通過實例存在而不僅僅是這種改變。盡管在圖2中為了圖示的目的僅示出一個CPU201,但是計算機系統 200可包含多個CPU,這是本領域已知的。盡管在圖2中示出主存儲器202 為一個單一性實體,但是實際上,存儲器202可以是分布式的和/或分等級的,這是本領域已知的。例如,存儲器可存在于多等級緩存中,并且這些 緩存可進一步按功能劃分,使得一個緩存保存指令,而另一個保存由處理 器或多個處理器使用的非指令數據。此外,存儲器也可以是分布式的,并
且可以與不同CPU或CPU組關聯,這是在各種所謂的非統一存儲器存取 (NUMA)計算機架構中已知的。盡管圖2中示出通信總線205為一個實 體,但是實際上,典型地通過復雜的總線等級、接口等實現在各種系統組 件中的通信,其中使用更高速路徑在CPU201和存儲器202之間通信,使 用更低速路徑與I/O接口單元211-214通信。總線205可以以任意各種形 式排列,例如按等級的點對點鏈接、星型或網型配置、多個等級總線、并 行和冗余路徑等。例如,在NUMA架構中已知的,在節點基礎上排列通 信路徑。總線可使用例如行業標準PCI總線、或任意其他適合的總線技術。 盡管示出多個I/O接口單元(它們將系統總線205從對于各種I/O設備運 行的各種通信路徑分離),但是可選擇地,也可以將I/Oi殳備中的某些或 所有直接連接至一個或多個系統總線。
圖2中所示的計算機系統200具有多個連接終端221-224,例如可以是 典型地多個用戶的"大型"計算機系統。連接設備的實際數目可以改變, 并且本發明不限于任意特定大小的系統。可選擇地,計算機系統200可以 是單用戶系統,例如"個人計算機,,。訪問計算機系統200的用戶工作站 或終端可以通過網絡230連接至系統200或與系統200通信。可選擇地, 計算機系統200可以這樣的系統,即,其包含無連接終端或僅具有一個用 戶顯示器和鍵盤輸入的一個操作者平臺。此外,盡管為了在一個計算機系 統中實現的示例性目的在這里描述了本發明的某些功能,但是這些功能可 選擇地可使用與彼此通信的計算機系統的分布式網絡實現,其中在不同的 計算機系統上執行這里描述的不同功能或步驟。
盡管高級地描述和示出各種系統組件,但是可以理解,典型的計算機 系統包含對于本發明的理解不重要的未示出的許多其他組件。在優選實施 例中,計算機系統200是基于IBM i/SeriesTM架構的計算機系統,可以理 解,本發明可以在其他計算機系統上實施。圖3是根據優選實施例的主機計算機系統200的主要軟件組成(由存 儲器202的組成表示)的概念示圖。操作系統301是可執行代碼,以及提 供各種低級軟件功能(例如設備接口、存儲頁管理、多個任務的管理和分 派等)的狀態數據,這是本領域已知的。具體地,操作系統301包括用于 系統200的每個網絡適配器214的各自網絡適配器設備驅動器。圖3表示 第一網絡適配器設備驅動器302和可選第二網絡適配器設備驅動器303, 可選網絡適配器i殳備驅動器303用虛線表示,以指示該特征代表可選實施 例。在系統200包含僅一個網絡適配器214的情況下,存在僅一個對應的 網絡適配器設備驅動器302;在系統200包含第二網絡適配器(圖2中未 示出)的情況下,存在對應的附加網絡適配器i殳備驅動器303.根據優選實施例的主機計算機系統包含多個互聯網通信棧實例。在圖 3所示的特定示例性實施例中,其包含兩個互聯網通信棧實例,其中一個 是服務棧304,另一個是工作棧305。然而,主機系統200可包含多于兩個 的互聯網通信棧實例。兩個棧執行用于互聯網上的通信所必須的TCP/IP 的核心組和/或其他互聯網協議功能,特別地包括IP路由。然而,除了這 些核心協議之外,工作棧305支持基本全范圍的TCP/IP和/或其他互聯網 協議改進功能,而服務棧支持少數的改進功能或不支持。這些改進功能是 僅由某些應用或環境所需的功能。這種改進功能的實例包括IPSec、 IP過 濾、網絡地址轉換(NAT)和入侵檢測,可以理解,工作棧可支持其他或 附加的改進功能。通常,使用工作棧305支持用于在計算機系統200上執行的生產工作 的多種用戶應用。由于某些用戶應用可需要特定的改進功能,并且難以預 先預測用戶應用的特征,以及將由系統200上執行的用戶應用所需的是哪 些功能,所以期望支持大范圍的改進TCP/IP或其他互聯網協議功能。服 務棧的存在主要用于維護和控制的目的。例如,服務棧可用于支持與遠程 控制臺的網絡通信,以控制系統200的操作;在系統200上執行并行維護 操作;以及用于類似的管理功能。此外,系統200還包含一個或多個用戶應用311-313 (圖3中表示的,可以理解,實際數目可以改變,典型地可以更大)。用戶應用311-313通 過互聯網與遠程進程通信,以代表用戶執行生產工作,并且優選地與工作 棧305關聯,以根據TCP/IP或某些其他可用互聯網協議處理互聯網通信。 此外,系統200還包含一個或多個服務應用314-315 (圖3中表示的,可以 理解,實際數目可以改變,典型地可以更大)。服務應用與遠程進程通信, 以執行管理功能,并且優選地與服務棧304關聯,以根據TCP/IP或某些 其他可用互聯網協議處理互聯網通信。在圖3的實例中,服務應用314表 示為操作系統301的一部分,而服務應用315表示為與操作系統301分離, 以示出服務應用可以是操作系統的一部分也可以不是操作系統的一部分。 典型地,與工作棧關聯的應用(例如用戶應用311-313)不是操作系統的一 部分,但是工作棧也可以向操作系統功能提供服務。
將每個網絡適配器設備驅動器302、 303綁定到各自互聯網通信棧。每 個互聯網通信棧304、 305可具有與其綁定的0個、l個或大于l個網絡適 配器設備驅動器。初始地,將網絡適配器中接收的所有輸入包路由到綁定 對應網絡適配器設備驅動器的互聯網通信棧中。在每個棧中的各個IP路由 選擇器306、 307使用IP路由協議確定用于每個流出包的目的網絡適配器 設備。
根據本發明的優選實施例,通過IP路由選擇器建立到另 一個棧的系統 內部的棧間通信路徑。配置每個IP路由選擇器306、 307,以將某些包路 由到虛擬網絡適配器設備驅動器308。實際上,虛擬網絡適配器設備驅動 器不驅動物理網絡適配器,所以虛擬網絡適配器設備驅動器308根本不是 一個設備驅動器。而是簡單地用作在IP路由器可對包路由的IP路由協議 下的目的地,因此建立內部棧間通信路徑。實際上,將綁定到虛擬網絡適 配器設備驅動器308的包路由到其他棧。即,如果在服務棧304中的路由 選擇器306使用IP路由選擇虛擬網絡適配器設備驅動器308作為包的目的 地,則隨后將包路由到工作棧305,并進入到工作棧中,以按照來自綁定 到工作棧的實際網絡適配器和對應網絡適配器設備驅動器303的包相同方 式處理。可以理解,典型的計算機系統可包含對于本發明的理解不重要的許多 其他軟件組成(未示出)。具體地,典型的操作系統將包含許多功能,以 及與在網絡間的數據傳輸不相關的狀態數據。
在圖3中將各個軟件實體表示為分離實體或包含在其他實體中。然而, 可以理解,這種表示僅用于示例性目的,并且特定模塊或數據實體可以是 分離實體,或通用模塊或模塊包裝的一部分。此外,盡管在圖3的概念表 示中示出某個數目和類型的軟件實體,但是可以理解,這種實體的實際數 目可以改變,并且具體地,在復雜主機系統中,典型地這種實體的數目和 復雜度可以更大。
盡管扭無念性示出圖3的軟件組成駐留在存儲器202中,但是可以理解, 通常計算機系統的存儲器太小,以致于無法同時保存所有的程序和數據, 并且典型地將信息存儲在數據存儲設備225-227中(包括一個或多個大型 存儲設備,例如旋轉磁盤驅動器),以及如果需要通過操作系統將信息分 頁保存到存儲器中。此外,可以理解,圖3的概念表示不意味著對任意特 定存儲器組織模型的暗示,并且系統200可采用單地址空間虛擬存儲器, 或可采用重疊的多虛擬地址空間。
圖4是示出根據優選實施例的在互聯網通信棧實例304、 305中處理輸 入數據包(即,從互聯網輸入)的高級過程的整體流程圖。參照圖4,棧 實例從網絡適配器驅動器接收輸入數據包(步驟401)。在步驟401中接 收的數據包的源端可以是用于物理硬件網絡適配器的網絡適配器驅動器 302、 303,或者可以是虛擬網絡適配器驅動器308,實際上,它僅是與作 為網絡適配器的接收棧實例通信的另一個棧實例的接口。在接收包時,IP 路由選擇器306、 307檢查在包中的目的IP地址,以確定適當的路由(步 驟402)。如果目的地址與另一個實體關聯(從步驟403的"N"分支), 則將包轉發(使用IP轉發)到目的實體(步驟404 )。可將包指定到計算 機系統200外部的某些地址,在這種情況下,可將包轉發到與外部地址關 聯的網絡適配器,以向其最終目的地的外部傳輸。但是具體地,在優選實 施例中,可通過向與目的棧關聯的虛擬適配器驅動器308 IP轉發將至少一些包轉發到系統200中的不同互聯網通信棧實例。
在步驟403,如果目的地址與當前棧實例關聯,則將包向上轉發到由 各個棧層處理的棧(表示為從步驟403的"Y"分支)。可選地,處理可 包括顯示與原始IP地址不同的嵌入在原始數據包中的封裝IP地址(步驟 405 )。可通過用于IP地址封裝的任意可用協議來顯示封裝IP地址。例如, 根據IPSec隧道協議,可以從解密數據包提取封裝IP地址,IPSec隧道僅 是封裝的一個可能的實例。在顯示封裝IP地址的情況下,隨后將包返回至 IP路由選擇器(步驟403 ),以向適當的目的實體進行IP轉發(步驟404 )。 這個目的實體可以是系統200中的不同網絡通信棧實例。
在不存在封裝IP地址的情況下(或已經先前提取了封裝地址并且由此 轉發了包的情況下),棧的上層(例如IP和TCP層)根據可用的傳統協 議處理包(步驟406)。然后,將包中的數據提供給系統200中的適當應 用(步驟407 )。
圖5是示出才艮據優選實施例的在互聯網通信棧實例304、305中處理輸 出數據包(即,通過互聯網向外部目的地輸出)的高級過程的整體流程圖。 參照圖5,輸出數據包可以是來自與棧實例綁定的應用的數據結果(示出 為通過步驟501和502的路徑),或者可以是從另 一個實體(特定地從另 一個棧)轉發的數據包(示出為通過步驟503的路徑)。在前一情況下, 棧實例接收數據,所述數據來自與棧綁定的應用的輸出互聯網通信(步驟 501),例如在工作棧305的情況下的用戶應用311-313,或在月良務棧304 的情況下的服務應用314、 315。棧的上層(例如IP和TCP層)根據可用 協議處理數據,以生成一個或多個數據包(步驟502)。可選地,已經由 更高棧層處理的數據包可在從另一個實體(具體地從同一系統中的另一個 棧)路由之后到達棧中(步驟503)。
可選地,棧可將數據包和目的地址封裝在更大數據包中,以根據任意 適合的封裝協議(例如IPSec隧道)提供用于更大數據包的新IP地址(步 驟504)。無論是否執行封裝步驟504,隨后都通過IP路由選擇器306、 307將包轉發到由其IP地址指定的目的地(步驟505 ) 。 IP轉發路由目的地是網絡適配器驅動器。所述目的地可以是與物理網絡適配器耦合的網絡
適配器驅動器302、 303 (在外部目的地的情況下),或者可以與系統200 中另一個棧實例對接的虛擬適配器驅動器308。
可在各種應用中使用根據如上所述優選實施例的棧間通信。例如,棧 間通信容易支持由多個棧實例對單個硬件網絡適配器的共享。典型地,硬 件網絡適配器由第一棧實例所有或激活,需要通過與第一棧實例相關的IP 路由選擇器路由的所有通信。但是,IP路由選擇器可將進入包路由到第二 棧實例,或者從第二棧實例接收外出包,因此通過網絡適配器(不是由第 二棧實例所有)支持在第二棧實例和外部實體之間的通信。棧間接口也可 以作為能夠在某時刻或某事件時選擇的開關。例如,在某時刻能夠正常地 使能和禁能接口,以支持需要專用網絡適配器的重要任務的應用。或者, 接口可以被正常禁能,以在可選擇的時刻能夠從主棧實例向備用棧實例重 新路由數據,以在主棧上執行例程維護。
在根據優選實施例使用棧間實例的特定示例性實施例中,工作棧305 具有全范圍的TCP/IP功能,以支持通用計算機系統中的各種用戶應用, 并且服務棧304具有有限范圍的TCP/IP功能,它的存在主要支持從遠程 控制臺的系統控制、并行維護操作等。使用棧間接口來獲得在服務棧上并 非正常可用的一個或多個改進功能操作,以用于涉及與服務棧綁定的應用 的通信。
一個這種改進功能的實例是使用IPSec隧道協議的數據包的封裝。 IPSec隧道允許對完整的數據包進行封裝和加密,以將其打包在具有新IP 才艮頭和IP地址的更大包中。可4吏用IPSec隧道,例如以支持虛擬專用網 (VPN)。在具有雙重工作棧和服務棧實例的系統中,有時候可需要服務 棧使用工作棧的IPSec功能。例如, 一些維護操作可偶爾需要從不安全網 絡連接的設備執行。
圖6和圖7是分別示出根據示例性環境在系統200的各個組件中對輸 入數據包的處理和輸出數據包的處理的流程圖,其中根據優選實施例將為 服務應用而綁定的封裝數據包路由到用于IPSec處理的工作棧。在該實例中,將互聯網IP地址66.191.69.9和66.191.69.10路由至與服務棧304綁定 的網絡適配器302。在服務棧上定義互聯網IP地址66.191.69.9,在工作棧 上定義互聯網IP地址66.191.69.10。可存在對于這些棧和/或附加網絡適配 器定義的并非與該實例相關的附加互聯網IP地址。在服務棧上定義企業網 虛擬專用網(VPN )地址目的地10.5.12.35,在工作棧上定義用于遠程企業 網地址目的地10.5.26.14的VPN過濾規則。
參照圖6,具有66.191.69.10的IP地址的輸入包和封裝包(VPN包) 到達網絡適配器302,并且4皮路由到與網絡適配器302綁定的服務棧304 (步驟601)。在服務棧上沒有定義IP地址66.191.69.10,然而,將其定 義為到虛擬適配器308的路由,即到工作棧305的路由。因此,IP路由選 擇器306使用IP轉發將包路由到工作棧305 (步驟602 )。
工作棧接收所述包。在工作棧上定義IP地址66.191.69.10,從而工作 棧的IPSec隧道功能對包解密,以顯現嵌入的VPN包(步驟603 )。這種 嵌入的VPN包具有它自己的IP地址10.5.12.35,在這種情況下其是在虛擬 專用網上使用的企業網地址。在工作棧上沒有定義企業網IP地址 10.5.12.35,然而將其定義為到虛擬適配器308的路由,即到服務棧的路由。 因此,IP路由選擇器307將當前解密的包向回路由到服務棧(步驟604)。
月良務棧接收具有IP地址10.5.12.35的解密包。在服務棧上定義了所述 地址,從而在服務棧的更高層(即TCP和IP層)處理所述包(步驟605 )。 然后,將結果數據傳遞到服務應用(步驟606)。服務應用從服務棧接收 數據,并且適當地使用數據(步驟607)。
參照圖7,初始地將來自服務應用的輸出數據傳遞到具有套接字目的 地址10.5.26.14的服務棧,其中所述地址對應于遠程設備中的目的地的企 業網IP地址(步驟701)。在服務棧的TCP和IP層中處理所述數據,以 生成具有IP地址目的地10.5.26.14的一個或多個數據包(步驟702 )。
對于IP路由選擇器306定義IP地址10.5.26.14,作為與虛擬適配器 308對應的地址,從而路由選擇器306將包經由棧間接口路由到虛擬適配 器308,即工作棧305 (步驟703)。在工作棧305中定義用于IP地址10.5.26.14的VPN過濾規則,指示工作棧的IPSec功能,以隨后加密所述 包并將其封裝到更大的包中,所述更大的包具有與遠程設備對應的全局可 路由(互聯網)IP地址129.42.161.17 (步驟704 )。對于IP路由選擇器 307定義地址129.42.161.17作為與虛擬適配器308對應的地址,從而路由 選擇器307經由棧間接口將包路由到服務棧304 (步驟705)。
在服務棧304中的IP路由選擇器306接收包,并識別IP地址為可路 由到網絡適配器驅動器302的外部地址。因此,IP路由選擇器306將包路 由到適配器驅動器302 (步驟706)。然后,網絡適配器接收包,并在網絡 上對其進行發送(步驟707 )。
盡管這里使用了 IPv4實施例的某些實例,但是可以理解,本發明可同 等地應用于IPv6尋址以及IPv4尋址。
在這里描述的技術的優點中,優選實施例是可以使用已經可用的IP轉 發和路由設施在不同互聯網通信棧之間對包數據進行路由。這種方式僅需 要對IP路由選擇器進行最小量的配置,并且不需要大量的專用編程或功能 能力。此外,由于在互聯網通信中IP轉發是無處不在的,所以根據本發明 優選實施例對棧間接口的j吏用可能具有廣泛的適用性,除了沒有作用的例 外。最后,不需要不同的棧實例使用共同代碼或具有共同開發源的代碼; 可有利地使用獨立開發的棧代碼避免使得每個棧實例感染相同的代碼錯 誤,因此提高故障容限度。
一般地,被執行以實現本發明所示實施例的例程(無論作為操作系統 的一部分實現,還是作為具體應用、程序、對象、模塊或指令序列實現) 在這里稱為"程序"或"計算機程序"。典型地,程序包括指令,所述指 令在由根據本發明的計算機系統中的設備或系統中的一個或多個處理器讀
的各個方面的元素所必須的步驟。此外,盡管在全功能計算機系統的環境 中已經描述以及在之后將描述本發明,但是本發明的各個實施例能夠以各 種形式作為程序產品分布,并且本發明可同樣應用,而不管用于實際執行 分布的信號承載介質的特定類型。信號承載介質的實例包括但不限于易失性和非易失性存儲設備、軟盤、硬盤驅動器、CD-ROM、 DVD、磁盤等。 此外,本發明應用任意形式的信號承載介質,而不關心是否在傳輸網絡(包 括無線網絡)上從一種形式的信號承載介質向另一種交換數據。圖2中將 信號承栽介質的實例示出為系統存儲器202,以及數據存^i殳備225-227。 盡管除了某些替換物之外已經公開了本發明的具體實施例,但是本領 域普通技術人員可以認識到,可以在以下權利要求的范圍內在形式和細節 上進行其他修改。
具體地,參照所附權利要求,可將從屬權利要求的特征與獨立權利要 求的特征組合,并且可以以任意適合的方式組合各個獨立權利要求的特征, 而不限于在權利要求中列舉的特定組合中。
為了免生疑問,在說明書和權利要求書中使用的術語"包括"不應該 理解為"僅包含"的含義。
權利要求
1.一種計算機系統,包括至少一個處理器;存儲器;操作系統,作為能夠在所述至少一個處理器上執行的多個指令實現,所述操作系統支持多個進程實例的并行執行;多個應用,能夠在所述至少一個處理器上執行;至少一個網絡適配器,用于與網絡通信,所述網絡適配器在互聯網之間發送用于通信的數據包;第一互聯網通信棧實例和第二互聯網通信棧實例,每個所述互聯網通信棧實例與所述多個應用中各自的至少一個應用關聯,所述第一和第二互聯網通信棧實例支持用于在所述第一和第二互聯網通信棧之間的至少一個方向上傳送數據包的棧間接口;其中根據與各自數據包關聯的各自互聯網協議(IP)地址,選擇地將所述棧間接口之間傳送的每個數據包路由到所述棧間接口之間的目的互聯網通信棧,所述IP地址匹配于與所述目的互聯網通信棧關聯的IP地址。
2. 如權利要求1所述的計算機系統,其中所述第二互聯網通信棧實 例支持由所述第一互聯網通信棧實例不支持的至少一個互聯網協議功能。
3. 如權利要求2所述的計算機系統,其中所述第二互聯網通信棧實 例是用于用戶應用的通用支持的工作棧,并且所述第一互聯網通信棧是用 于支持所述計算機系統的管理功能的服務棧。
4. 如權利要求l、 2或3所述的計算機系統,其中所述棧間接口支持 在所述第 一和所述第二互聯網通信棧之間的包的雙向通信。
5. 如任意先前權利要求所述的計算機系統,其中通過將虛擬網絡適 配器設備驅動器指定為在所述第一棧實例中的至少一個IP地址的IP轉發 目的地來實現在所述棧間接口之間的數據包通信,所述虛擬網絡適配器設 備驅動器是對于所述第二棧實例的接口 。
6. 如任意先前權利要求所述的計算機系統,其中所述笫一和第二互 聯網通信棧共享共同網絡適配器,所述共同網絡適配器綁定至所述第一互 聯網通信棧實例。
7. —種對互聯網通信數據包路由的方法,包括以下步驟在計算機系統中的互聯網通信棧的第一實例中接收用于表示多個數據 包的數據,每個所述數據包與各自互聯網協議(IP)地址關聯;從每個所迷數據包的各自IP地址確定其各自路由目的地,其中,對于 至少一些所述數據包,所述各自路由目的地對應于在所述計算機系統中的 互聯網通信棧的第二實例,在互聯網通信棧的所述第一實例中執行所述確 定步驟;和響應于確定數據包的路由目的地對應于互聯網通信棧的所述第二實 例,將所對應的包轉發至互聯網通信棧的所述第二實例。
8. 如權利要求7所述的對互聯網通信數據包路由的方法,其中在所 述接收步驟中接收的所述數據包中的至少一些是由所述計算機系統接收的 數據包,作為來自互聯網的輸入通信。
9. 如權利要求7或8所述的對互聯網通信數據包路由的方法,其中 在所述接收步驟中接收的所述數據包中的至少 一些是從所述計算機系統內 部執行的至少一個應用接收的數據包,作為用于互聯網上傳輸的輸出通信。
10. 根據權利要求7至9中任一項所述的對互聯網通信數據包路由的 方法,還包括以下步驟在互聯網通信棧的所述第一實例和互聯網通信棧的所述第二實例之一 中,對于所述數據包中的至少一些執行封裝功能,所述封裝功能是包括以 下內容的組中的一個(a)將具有第一IP地址的第一數據包封裝到具有 第二 IP地址的第二數據包中;和(b)從具有第二 IP地址的第二數據包中 提取先前封裝的具有第一 IP地址的第一數據包。
11. 如權利要求10所述的對互聯網通信數據包路由的方法, 其中在將所對應的包轉發到互聯網通信棧的所述第二實例的步驟之后,通過互聯網通信棧的所述第二實例執行所述執行封裝功能的步驟;和其中所述方法還包括以下步驟在執行所述封裝功能之后確定每個數據包的各自路由目的地,從所述 各自包的IP地址確定所述路由目的地,其中對于至少一些所述數據包,所 述各自路由目的地對應于在所述計算機系統中的互聯網通信棧的所述第一 實例,在互聯網通信棧的所述第二實例中執行所述確定步驟;和響應于確定數據包的路由目的地對應于互聯網通信棧的所述第一實 例,將所對應的包轉發到互聯網通信棧的所述第二實例。
12. 根據權利要求7至11中任一項所述的對互聯網通信數據包路由 的方法,其中所述第一和第二互聯網通信棧實例共享共同網絡適配器,所 述共同網絡適配器綁定至所述第一互聯網通信棧實例和所述第二互聯網通 信棧實例的僅其中之一。
13. —種對互聯網通信數據包路由的計算機程序產品,包括 在信號承載介質上記錄的多個計算機可執行指令,其中所述指令在由所述計算機系統執行時使得所述計算機系統執行以下步驟(a)在所述計算機系統中保持多個互聯網通信棧實例;(b )提供用于在至少一些所述互聯網通信棧實例之間的至少一個方向上傳送數據包的棧間接口,每個所述數據包與各自互聯網協議(IP)地址關聯;(c) 在第一互聯網通信棧實例中,從所述數據包的各自IP地址確定 多個數據包中的每個數據包的各自路由目的地,其中,對于至少一些所述 數據包,所述各自路由目的地對應于所述棧間接口;和(d) 對于經過所述確定步驟(c)的所述數據包中的每個,如果所述 數據包的各自路由目的地對應于所述棧間接口 ,則經由所述棧間接口從所 述第 一互聯網通信棧實例將所述數據包路由到所述計算機系統中的第二互 聯網通信棧實例。
14. 如權利要求13、 14或15所述的計算機程序產品,其中所述棧間 接口支持在所述第 一和所述第二互聯網通信棧之間的包的雙向通信。
15. 如權利要求13或14所述的計算機程序產品,其中經由所述棧間接口路由到所述第二互聯網通信棧實例的所述數據包中的至少一些是由所 述計算機系統接收的數據包,作為來自所述互聯網的輸入通信。
16. 如權利要求13所述的計算機程序產品,其中經由所述棧間接口 路由到所述第二互聯網通信棧實例的所述數據包中的至少一些是從所述計 算機系統內部執行的至少一個應用接收的數據包,作為用于互聯網上傳輸 的輸出通信。
17. 根據權利要求13至16中任一項所述的計算機程序產品,其中所 述指令還使得所述計算機執行以下步驟(e )在所述第一互聯網通信棧實例和所述第二互聯網通信棧實例之一 中,對于所述數據包中的至少一些執行封裝功能,所述封裝功能是包括以 下內容的組中的一個(i)將具有第一 IP地址的第一數據包封裝到具有 第二 IP地址的第二數據包中;和(ii)從具有第二 IP地址的第二數據包中 提取先前封裝的具有第一 IP地址的第 一數據包。
18. 如權利要求17所述的計算機程序產品,其中在所述步驟(d )之后通過所述第二互聯網通信棧實例執行所述步 驟(e);和其中所述指令還使得所述計算機系統執行以下步驟(f) 在執行步驟(e)之后確定經過步驟(e)的所述數據包中的每個 的各自路由目的地,其中對于至少一些所述數據包,所述各自路由目的地 對應于所述棧間實例;和(g) 對于經過所述確定步驟(f)的所述數據包中的每個,如果所述 數據包的各自路由目的地對應于所述棧間接口 ,則經由所述棧間接口從所 述第二互聯網通信棧實例將所述數據包路由至所述第一互聯網通信棧實 例。
全文摘要
一種計算機系統包含多個互聯網通信棧實例,其可以共享或可以不共享共同硬件網絡適配器。使用互聯網協議(IP)尋址在計算機系統中內部的不同互聯網通信棧實例之間對包路由。使用IP轉發,將到達一個棧并且具有與另一個棧關聯的目的IP地址的包轉發至其他棧。優選地,包的棧間路由可使用全局定義的互聯網IP地址或局部內聯網(封裝的)IP地址,并且可采用輸入或輸出包。示例性實施例是具有全范圍的TCP/IP功能的工作棧,以及具有有限范圍的TCP/IP功能的服務棧。可使用棧間接口來獲得改進功能的操作,以用于來到的并且由綁定至服務棧的應用發送的包。
文檔編號H04L29/06GK101411160SQ200780010969
公開日2009年4月15日 申請日期2007年3月12日 優先權日2006年4月13日
發明者D·A·克里斯坦松, T·E·小墨菲 申請人:國際商業機器公司