版權聲明本專利文檔公開的一部分包含受版權保護的素材。版權擁有者不反對任何人對專利文檔或專利公開按照在專利商標局的專利文件或記錄中出現那樣進行的傳真復制,但是除此之外在任何情況下都保留所有版權。本發明一般而言涉及計算機系統,并且具體地涉及云環境。
背景技術:
::在infiniband子網中,子網管理器(sm,subnetmanager)是潛在的瓶頸。當infiniband子網的尺寸增加時,主機之間的路徑數量會呈多項式地(polynomially)增加,并且當接收到許多并發的路徑解析請求時,sm可能不能及時地為網絡提供服務。這種可擴展性挑戰在動態虛擬化云環境中進一步被放大。當具有infiniband互連的虛擬機(vm)實時遷移(livemigrate)時,vm地址改變。這些地址改變導致對sm的附加負載,因為通信對等體(peer)向sm發送子網經管(sa,subnetadministration)路徑記錄查詢,以解析新的路徑特性。技術實現要素:系統和方法可以支持云環境中的子網管理。在云環境中的虛擬機遷移期間,子網管理器可能成為使高效服務延遲的瓶頸點。系統和方法可以通過確保虛擬機在遷移之后保留多個地址來緩解這個瓶頸點。系統和方法還可以允許云環境內的每個主機節點與在重新建立與遷移后的虛擬機的通信時虛擬機可以利用的本地高速緩存關聯。附圖說明圖1示出了根據實施例的在云環境中支持vm實時遷移的圖示。圖2示出了根據實施例的在兩個主機之間建立連接的協議的圖示。圖3示出了根據實施例的當連接丟失時在兩個節點之間正在進行的通信的圖示。圖4示出了根據實施例的在云環境中支持sa路徑高速緩存的圖示。圖5示出了根據本發明實施例的在云環境中支持sa路徑高速緩存的圖示。圖6示出了根據實施例的用于在云環境中支持子網管理的方法的圖示。具體實施方式本發明通過示例而非限制的方式在附圖的圖中示出,附圖中相似的標號指示相似的元件。應當指出,在本公開中對“一”或“一個”或“一些”實施例的引用不一定是對相同的實施例,并且這種引用意味著至少一個。下面對本發明的描述使用infiniband(ib)網絡協議作為高性能網絡協議的示例。對于本領域技術人員將清楚的是,可以使用其它類型的高性能網絡協議而不受限制。本文描述的是可以在云環境中支持虛擬機(vm)遷移子網經管(sa)路徑高速緩存的系統和方法。根據實施例,可以提供能夠提供高性能計算(hpc)的云計算。這種hpc即服務可以在計算云內被提供,并且允許及適于使用高性能互連解決方案的虛擬hpc(vhpc)集群。根據實施例,每個ib子網可以利用子網管理器(sm)。每個sm可以負責網絡初始化、拓撲發現、路徑計算以及主機信道適配器(hca)和交換機上的ib端口的配置。在大型子網中,節點之間的可用路徑可以呈多項式地增長,并且當收到許多并發的對于路徑解析的請求時,sm會成為潛在的瓶頸。當具有ib互連的虛擬機實時遷移時,這種可擴展性挑戰在動態虛擬化云環境中進一步被放大。為了支持高效的虛擬化,在維持高帶寬和低延遲的同時,ib主機信道適配器(hca)可以支持單根i/o虛擬化(sr-iov)。每個ib連接的節點具有三個不同的地址。當實時遷移發生時,無論由分離(detach)直通的接口造成的停機時間如何,ib地址中的一個或多個會改變。與在遷移中的vm進行通信的其它節點失去連接,并且嘗試通過向sm發送子網經管(sa)路徑記錄查詢來找出要重新連接的新地址。所導致的在底層網絡中朝向sm的通信可能是大量的。在大型網絡中,由vm遷移引起的這種朝向sm的消息泛洪(messageflooding)會增加總體網絡延遲,因為sm上的負載增加。于是,根據實施例,期望通過減少sm接收的由于vm遷移引起的sa請求量來減小sm上的負載。方法和系統可以通過實現vm可以在遷移后保留其相同地址的系統來達成此目的。此外,在建立兩個節點之間的初始連接之后,可以使用sa路徑高速緩存機制來大大減少sa查詢的數量。根據實施例,infiniband一般使用三種不同類型的地址。首先是16位的本地標識符(lid)。至少一個lid由sm指派給每個hca端口和每個交換機。lid可以被用于在子網內路由流量。由于lid為16位長,因此可以進行65536個唯一的地址組合,其中僅有49151(0x0001-0xbfff)個可以被用作單播地址。因此,可用的單播地址的數量定義了ib子網的最大尺寸。第二種類型的地址是一般由制造商指派給每個設備(例如,hca和交換機)和每個hca端口的64位全局唯一標識符(guid)。sm可以向hca端口指派附加的子網唯一guid,該附加的子網唯一guid在啟用sr-iovvf時可以是有用的。第三種類型的地址是128位全局標識符(gid)。gid一般是有效的ipv6單播地址,并且至少一個被指派給每個hca端口和每個交換機。gid是通過組合由架構經管者指派的全局唯一的64位前綴和每個hca端口的guid地址而形成的。下面對本發明的描述使用infiniband網絡作為高性能網絡的示例。對于本領域技術人員來說將清楚的是,可以使用其它類型的高性能網絡而不受限制。而且,下面對本發明的描述使用kvm虛擬化模型作為虛擬化模型的示例。對于本領域技術人員來說將清楚的是,可以使用其它類型的虛擬化模型(例如,xen)而不受限制。下面對本發明的描述另外還利用openstack、opensm和rdslinux內核模塊。openstack是云計算軟件平臺,包括一組相互關聯的項目,這些項目通過數據中心控制處理、存儲和聯網資源的池。opensm是可以在openib之上運行的、兼容infiniband的子網管理器和經管。rds(可靠數據報套接字)是用于輸送數據報的高性能、低延遲、可靠的無連接協議。對于本領域技術人員來說將清楚的是,可以利用其它類似的平臺而不受限制。根據本發明的實施例,虛擬化可以有益于云計算中高效的資源利用和彈性的資源分配。實時遷移使得有可能通過以應用透明的方式在物理服務器之間移動虛擬機(vm)來優化資源使用。因此,利用單根i/o虛擬化(sr-iov)方法的虛擬化可以通過實時遷移來使得能夠實現整合、資源的按需供應以及彈性。ib體系結構是串行的點對點全雙工技術。ib網絡可以被稱為子網,其中子網由使用交換機和點對點鏈路互連的一組主機組成。ib子網可以包括至少一個子網管理器(sm),該子網管理器可以負責初始化和喚醒(bringup)網絡,包括對子網中所有交換機、路由器和主機信道適配器(hca)的配置。ib支持豐富的傳輸服務的集合,以便提供遠程直接存儲器訪問(rdma)和傳統的發送/接收語義這二者。ibhca使用隊列對(qp)進行通信,而與所使用的運輸服務無關。qp在通信設立期間創建,并且可以具有一組初始屬性,諸如qp號、hca端口、目的地lid、隊列尺寸和所供應的傳輸服務。hca可以處理許多qp,每個qp由一對隊列(諸如發送隊列(sq)和接收隊列(rq))組成,并且在參與通信的每個端節點處有一個這樣的對存在。發送隊列保持要傳送到遠程節點的工作請求,而接收隊列保持關于如何處理從遠程節點接收的數據的信息。除了qp以外,每個hca還具有與一組發送和接收隊列關聯的一個或多個完成隊列(cq)。cq保持對于發布到發送和接收隊列的工作請求的完成通知。即使通信的復雜性相對于用戶是隱藏的,qp狀態信息也保存在hca中。網絡i/o虛擬化:根據實施例,可以使用i/o虛擬化(iov)來共享i/o資源并且提供對來自各個虛擬機的資源的受保護的訪問。iov可以將可以暴露給虛擬機的邏輯設備與其物理實現解耦。一種這樣類型的iov是直接設備指派。根據實施例,直接設備指派可以涉及i/o設備到vm的耦合而在vm之間沒有設備共享。直接指派(或者說設備直通)可以以最小的開銷提供接近本機的(neartonative)性能。物理設備直接附連到虛擬機從而繞過管理程序(hypervisor),并且訪客os可以使用未經修改的驅動器。消極面是有限的擴展性,因為沒有共享;一個物理網卡與一個vm耦合。根據實施例,單根iov(sr-iov)可以允許物理設備通過硬件虛擬化表現為同一設備的多個獨立的輕量級實例。這些實例可以被指派給vm作為直通設備,并作為虛擬功能(vf)被訪問。sr-iov緩解了純直接指派的可擴展性問題。不幸的是,如果所實現的系統為了數據中心優化而使用透明的實時遷移(vm遷移),則諸如sr-iov的直接設備指派技術會給云提供商帶來問題。實時遷移的實質是虛擬機的存儲器內容被復制到遠程管理程序。然后虛擬機在源管理程序處暫停,并且虛擬機的操作在其被復制到的目的地處恢復。當底層系統利用直接設備指派(諸如sr-iov)時,網絡接口的完整內部狀態不能被復制,因為它被綁定到硬件。指派給虛擬機的sr-iovvf被分離,實時遷移將運行,并且新的vf將在目的地處被附連。在使用ibvf的vm被實時遷移的情景中,由于vm的所有三種地址的改變,會引入對底層網絡架構和sm的明顯影響。因為vm被移動到具有不同lid的不同物理主機,所以lid改變。由sm指派給源vf的虛擬guid(vguid)也可以改變,因為在目的地處將附連不同的vf。隨后,由于vguid被用于形成gid,因此gid也將改變。因此,遷移后的vm會突然與新的一組地址關聯,并且遷移后的vm的通信對等體可以開始向sm發送并發的sa路徑記錄查詢突發(burst)從而嘗試重新建立與遷移后的vm的丟失的連接。這些查詢會對sm造成附加開銷,并且其副作用是追加的停機時間。如果遷移后的節點與網絡中的許多其它節點通信,則sm會成為瓶頸并妨礙整體網絡性能。根據實施例,本文所述的方法和系統可以減少和/或消除與使用向云提供商呈現的直接設備指派技術(諸如sr-iov)的虛擬機的實時遷移關聯的問題。這些方法和系統可以克服在使用ibvf的vm正在實時遷移的情景中存在的問題。虛擬機(vm)實時遷移圖1示出了根據實施例的在云環境中支持vm實時遷移的圖示。如圖1所示,infiniband(ib)子網100可以包括支持不同管理程序111-113的多個主機節點a-c(101-103)。此外,每個管理程序111-113允許各個虛擬機(vm)在其上運行。例如,主機節點a101上的管理程序111可以支持vma104,并且主機節點b上的管理程序112可以支持vmb105。vma和vmb在其上運行的這些節點可以在進行通信。此外,主機節點a-c(101-103)中的每一個可以與一個或多個主機信道適配器(hca)117-119關聯。如圖1所示,主機節點a101上的hca117可以利用可由vma104使用的隊列對(qp),諸如qpa108,而主機節點b102上的hca118可以利用可由vmb105使用的qpb107。根據本發明的實施例,可以使用輸入/輸出虛擬化(iov)來向vm提供i/o資源,并且提供對來自多個vm的共享的i/o資源的受保護的訪問。iov可以將暴露于vm的邏輯設備與其物理實現解耦。例如,單根i/o虛擬化(sr-iov)是用于在ib網絡上的虛擬化中實現高性能的i/o虛擬化方法。而且,ib子網100可以包括子網管理器110,該子網管理器可以負責網絡初始化、hca和交換機上的ib端口的配置、拓撲發現以及路徑計算。如圖1所示,vmb105可以從管理程序112遷移到管理程序113(例如,在與管理程序111上的vma105通信的同時)。在遷移之后,新vmb'106會突然暴露于在目的地主機節點c103處的新的一組地址。此外,對等體vm(例如,vma104)可以開始向sm110發送子網經管(sa)路徑記錄查詢,同時嘗試重新建立丟失的連接(一旦vmb'在新的主機節點上運行,vmb'就也可以向sm發送sa路徑請求)。這是由于以下事實:一般而言,一旦vm遷移,比如諸如vmb從主機節點b遷移到主機節點c,vm的地址(lid、guid、gid)就相應地改變,因為在使用sr-iov時它們一般是綁定到硬件的。對子網管理器的這些sa路徑查詢會造成顯著的停機時間,以及對infinibandsm110的附加開銷。如果在大型數據中心內在相當短的時間內發生許多遷移,或者如果遷移后的節點與網絡中的許多其它節點在進行通信,則sm110會成為瓶頸,因為它可能不能及時響應。根據本發明的實施例,當vmb104遷移并且ib地址信息改變時,系統可以減少由參與的主機節點a-c(101-103)生成的sa查詢量。如圖1所示,系統可以首先從管理程序112分離vmb104,例如通過從vmb104分離虛擬功能(vf)115。然后,系統可以向目的地主機節點c103提供與vmb104關聯的地址信息120,例如通過將地址指派給在主機節點c103上的管理程序113上的下一個可用的虛擬功能(即vf'116)。最后,在vmb104遷移到管理程序113成為vmb'106之后,系統可以將vmb'106暴露給地址信息120以便重新建立與對等體vm的通信(例如,經由qpb'109)。因此,在遷移到目的地主機節點c103之后,新vmb'106可以暴露于原始的一組地址,并且不需要對等體vma104向sm110發送sa路徑記錄查詢。根據實施例,系統可以支持具有附連的ibsr-iovvf的vm的vm實時遷移。遠程直接存儲器訪問(rdma)可以經諸如可靠數據報套接字(rds)協議的協議被用來在vm的遷移之后重新建立通信。根據實施例,系統可以利用openstack、opensm和rdslinux內核模塊。此外,可以使用可稱為lidtracker的程序來跟蹤與每個vm關聯的ib地址,并且可以編排遷移過程。在實施例中,該程序可以啟用opensm的選項honor_guid2lid_file。然后,由opensm生成的文件guid2lid可以由該程序解析,并以一定次序(諸如升序)按guid排序。lid從一開始被指派給guid。指派給guid的每個lid可以被稱為用于物理主機的基本lid。在實施例中,一旦指派了基本lid,就可以為運行的vm掃描每個啟用ib的openstack計算節點。可以從49151(最上面的單播lid)開始以降序給被發現在運行的每個vm指派lid。指派給vm的這些lid可以被稱為浮動lid。在實施例中,浮動lid可以替代vm正在其上運行的openstack計算節點中的基本lid。管理程序與vm共享lid。在某些實施例中,每個管理程序可以運行一個vm,并且vm可以遷移到沒有其它vm當前正在運行的管理程序。在其它實施例中,多個vm可以在一個管理程序上運行,并且vm可以遷移到另一個管理程序,而不管其它vm當前是否在目的地管理程序上運行。在實施例中,當從諸如openstackapi的api命令(order)對于vmx的遷移時,可以從vm分離sr-iovvf。當完成了設備的去除并且正在進行遷移時,openstack可以通知程序vmx正在從一個管理程序(諸如hypervisory)移動到目的地管理程序(諸如hypervisorz)。然后,程序可以將hypervisory的lid改回其基本lid,并且hypervisorz可以獲得與vmx關聯的浮動lid。該程序還可以將與vmx關聯的vguid指派給在目的地管理程序hypervisorz處的下一個可用的sr-iovvf。在遷移期間,該vm沒有網絡連接性。根據實施例,可以經由重新啟動來應用改變。然后,當遷移完成時,openstack可以在hypervisorz上將下一個可用的sr-iovvf添加到vmx,并且vm可以得回其網絡連接性。vm可以暴露給它在遷移之前所具有的相同的ib地址(lid、vguid和gid)。從vm的角度來看,看起來就像是ib適配器被分離了遷移所需的時間并且同一個ib適配器被重新附連,因為地址沒有改變。子網經管(sa)路徑高速緩存根據實施例,在兩個節點之間建立初始連接之后,端節點處的本地sa路徑高速緩存機制可以減少或消除sa查詢。高速緩存方案可以是通用的并且,當高速緩存方案被啟用時,在發生或不發生實時遷移的情況下都可以緩解sm上的負載。圖2示出了根據實施例的在兩個主機之間建立連接的協議的圖示。更具體地,圖2示出了使用諸如rds的協議在兩個主機之間建立連接。根據實施例,在建立連接之前,可以在所有通信對等體中設立經ib的ip(ipoib)。諸如rds的協議可以使用具體ib端口的ipoib地址來確定端口的gid地址。在解析gid地址之后,該協議可以具有足夠的信息來執行路徑記錄查找并建立ib通信。如圖2所示,在infiniband子網200內,子網管理器210可以提供節點c220和節點d225之間(更具體地,節點c上的客戶端側應用和節點d上的服務器側應用之間)的路徑通信。在圖2中,上層應用的客戶端側在節點c中運行,并且該應用的服務器側在節點d中運行。應用的客戶端側可以創建諸如rds套接字的套接字,并嘗試與應用的服務器側進行通信(步驟1)。諸如rds的協議可以從節點c向sm發送sa路徑記錄請求(步驟2)。子網管理器可以向協議提供響應(步驟3)。這個響應可以包括用于客戶端側應用的目標的地址信息。在從子網管理器接收到響應之后,該協議可以嘗試通過發送連接請求來發起與節點d的連接(步驟4)。如果連接成功,則協議可以例如經由兩側中的rdma_cm_event_established事件來建立通信信道(步驟5)。在這個時候,上層應用可以進行通信(步驟6)。在初始連接時某些事情出錯的情況下,客戶端側(節點c)的協議可以嘗試使用隨機退避機制重試建立連接。服務器還沒有意識到客戶端要進行通信的意圖。如果在連接建立之后出現任何問題,則兩個rds側(從應用的角度來看是客戶端和服務器)將主動參與與對等體進行重新連接。連接過程中的隨機退避機制對于當雙方都參與連接時避免出現競爭狀況是有用的。圖3示出了根據實施例的在連接丟失時兩個節點之間正在進行的通信的圖示。在圖3中,在infiniband子網200內,子網管理器210可以提供節點c220和節點d225之間的路徑通信,并且當連接丟失時(步驟2)節點c和節點d之間存在正在進行的通信(步驟1)。連接的丟失可以與例如在節點上運行的應用之一的實時遷移關聯。兩個協議端都可以確定連接斷開(down)并且在嘗試重新連接之前等待某個隨機時間(即,退避時間)(步驟3)。如圖3所示,在嘗試重新連接之前每一側等待的時間可以相同或不同。節點可以嘗試通過向sm發送sa路徑記錄請求來重新連接(步驟4)。在接收到sa路徑記錄響應(步驟5)之后,可以發送連接請求(步驟6)。在圖3所示的情況下,在步驟3中由兩個節點選擇的退避時間幾乎相同。因此,即使節點d比節點c稍快地獲得sa路徑記錄響應,并且嘗試在步驟6中首先發起連接,該連接請求也不會在節點c自己發送連接請求之前到達節點c。在這種情況下,兩個協議端都有未完成的連接請求。然后,當節點接收到來自它們的對等體的連接請求時,節點將拒絕該連接請求(步驟7)。在步驟8中,兩個節點在它們重試重新連接之前再次選擇了隨機退避時間。這次,由節點d選擇的隨機退避時間明顯長于由節點c選擇的隨機退避時間。因此,節點c獲得優先并重復連接建立過程;發送sa路徑記錄請求(步驟8)、接收來自子網管理器的響應(步驟10)、向節點d發送連接請求(步驟11),并且該連接請求在節點d嘗試自己發起與節點c的連接之前到達節點d。在圖3中繪出的情景中,節點d接受傳入的連接(步驟12)。然后在步驟13和步驟14中可以為上層應用恢復通信。從圖3外推,變得清楚的是,在vm遷移(斷開通信)的情況下,子網管理器會被sa路徑請求轟炸。在具有數以千計的節點的大型子網中,即使從每個節點只發送一個附加的sa查詢,sm也會最終被數以千計的消息淹沒。當在動態的基于ib的云中發生實時遷移時,可能發送過多的sa查詢。隨著網絡中節點數量的增加,sa查詢的數量會呈多項式地增加。所公開的方法和系統提供了高速緩存機制,該機制可以減少由子網中的節點發送到子網管理器的sa查詢的數量。圖4示出了根據本發明實施例的在云環境中支持sa路徑高速緩存的圖示。如圖4所示,infiniband(ib)子網400可以包括子網管理器(sm)410和多個主機節點a-b(401-402)。當源主機節點a401(例如,vma411)首次嘗試與目的地主機節點b402(例如,vmb412)通信時,源主機節點a401可以向sm410發送sa路徑記錄請求。然后,源主機節點可以使用本地高速緩存421來存儲路徑信息(例如,路徑記錄422)。此外,當源主機節點a401嘗試重新連接到相同的目的地主機節點b402時,源主機節點a401可以在本地高速緩存421中的高速緩存表中查找目的地主機節點的地址而不是向子網管理器發送請求。如果找到路徑信息,則源主機節點a401可以使用如路徑記錄422所指示的路徑420連接到目的地主機節點b402,而沒有向sm410發送sa查詢。否則,源主機節點a401可以向sm410發送sa路徑記錄請求,以獲得必要的路徑信息。圖5示出了根據本發明實施例的在云環境中支持sa路徑高速緩存的圖示。更具體地,圖5示出了在infiniband環境的子網內支持sa路徑高速緩存的圖示。如圖5所示,infiniband(ib)子網500可以包括支持不同管理程序511-512的多個主機節點a-b(501-502)。此外,每個管理程序512-513允許各個虛擬機(vm)在其上運行。例如,主機節點a101上的管理程序511可以支持vma504,并且主機節點b上的管理程序512可以支持vmb505。此外,主機節點a-b(501-502)中的每一個可以與一個或多個主機信道適配器(hca)517-518關聯。如圖5所示,主機節點a501上的hca517可以利用可由vma504使用的隊列對(qp),諸如qpa508,而主機節點b502上的hca518可以利用可由vmb505使用的qpb507。根據實施例,每個主機節點還可以支持存儲器530、540,這些存儲器各自可以包含高速緩存(諸如本地高速緩存)535、545,并且每個高速緩存繼而可以包括一個或多個路徑記錄537、547,這些路徑記錄可以存儲在高速緩存表中。而且,ib子網500可以包括子網管理器510,子網管理器510可以負責網絡初始化、hca和交換機上的ib端口的配置、拓撲發現以及路徑計算。根據實施例,當源主機節點a501(例如,vma504)首次嘗試與目的地主機節點b502(例如,vmb505)通信時,源主機節點a501可以向sm510發送sa路徑記錄請求。然后,源主機節點可以使用本地高速緩存535來存儲路徑信息(例如,路徑記錄537)。此外,當源主機節點a501嘗試重新連接到相同的目的地主機節點b502時,源主機節點a501可以在高速緩存535中查找目的地主機節點的地址,而不是向子網管理器發送請求。根據實施例,如果找到路徑信息,則源主機節點a501可以通過使用在路徑記錄537中指示的路徑連接到目的地主機節點b502,而沒有向sm510發送sa查詢。否則,源主機節點a501可以向sm410發送sa路徑記錄請求,以獲得必要的路徑信息。根據實施例,在主機節點a501向子網管理器510發送sa路徑記錄請求的情景中,所接收的響應可以包括高速緩存標志,該高速緩存標志可以向主機節點a501指示使用本地高速緩存表(在高速緩存535內)來存儲與目的地主機節點b502的給定gid地址(dgid)關聯的路徑特性。圖6示出了根據實施例的用于支持云環境中的子網管理的方法的圖示。示例性方法600可以在步驟601開始于在云環境內提供包括第一主機節點在內的多個主機節點,第一主機節點與至少第一管理程序和第一主機信道適配器關聯。在步驟602,該方法可以繼續在第一主機節點上提供第一虛擬機,第一虛擬機與多個地址關聯。在步驟603,該方法繼續將第一虛擬機從第一主機節點遷移到云環境內多個主機節點中提供的第二主機節點,第二主機節點與至少第二管理程序和第二主機信道適配器關聯,其中多個主機節點中的每一個都包括本地高速緩存;每個本地高速緩存包括一個或多個路徑記錄。根據實施例,遷移第一虛擬機可以包括:在步驟604,從第一管理程序分離第一虛擬機,從第一管理程序分離第一虛擬機包括從第一虛擬機分離與第一虛擬機關聯的第一虛擬功能。在步驟605,該方法繼續向第二主機節點提供與第一虛擬機關聯的該多個地址。在步驟606,該方法可以將該多個地址指派給第二虛擬功能,第二虛擬功能與第二管理程序關聯。在步驟607,該方法可以將第一虛擬機從第一主機節點遷移到第二主機節點上的第二虛擬機。在步驟608,該方法可以以將第二虛擬機暴露于與第一虛擬機關聯的該多個地址來結束。根據實施例,sa路徑記錄高速緩存機制可以以諸如rds協議的協議實現,并且高速緩存表可以存儲在每個節點的存儲器中。可以使用如下面的偽代碼中所示的程序:1:privateboolsapathcachingenabled2:privatelistsapathrecordcachetable3:4:procedurerdsmoduleinitialization5://高速緩存表被初始化6:sapathrecordcachetable=empty7:8://系統還不知道sa路徑高速緩存是否被sm啟用,9://所以我們假設還沒有。10:sapathcachingenabled=false11:endprocedure12:13:procedure(re-)connectionestablishment(dgid)14:structpathrecorddstpath=null15:16://只有sa路徑高速緩存被sm啟用17://才使用高速緩存18:ifsapathcachingenabledthen19:ifdgidinsapathrecordcachetable20:dgidsthen21:dstpath=cachedpathrecord22:endif23:endif24:25://如果dstpath在這個時候為null,26://或者高速緩存被sm禁用,27://或者用于具有給定dgid的主機的路徑特性28://從未被檢索過。在任何情況下,29://pathrecord查詢可以被發送到sm。30:ifdstpath==nullthen31:sendanewsapathrecordquerytothesm32:waitforthereply33:dstpath=pathrecordresponse34:35://如果sm啟用了高速緩存,36://則回復將pathrecord中的保留字段設置為1。37://如果sm沒有啟用高速緩存,則保留字段為038:ifdstpath!reservedfield!=0then39:sapathcachingenabled=true40:41://在高速緩存表中插入dst路徑42:sapathrecordcachetable.append(43:dstpath)44:endif45:endif46:連接到(dst路徑)47:endprocedure根據實施例,當源主機(shost)首次嘗試與目的地主機(dhost)通信時,shost可以向子網管理器發送sa路徑記錄請求。如果響應具有升起的(raised)高速緩存標志,則shost可以使用本地高速緩存表來存儲與dhost的給定gid地址(dgid)關聯的路徑特性。而且,shost現在意識到子網管理器支持高速緩存,所以在下次shost嘗試與任何dhost連接或重新連接時,它將首先在高速緩存表中查找。如果找到用于給定dhost的路徑信息,則可以防止shost向子網管理器發送sa查詢,并且shost可以替代性地嘗試使用其高速緩存表內的信息與dhost連接。再次參考圖3,參考中斷的連接(步驟2),在啟用上述高速緩存機制的系統中,不需要向子網管理器發送sa查詢。在圖3所描述的情況下,消除了步驟4、5、9和10,因此,連接重建更快并且子網管理器上的負載(例如,sa路徑請求和響應)更低。本發明的許多特征可以在硬件、軟件、固件或其組合中實現、利用硬件、軟件、固件或其組合實現、或者在硬件、軟件、固件或其組合的協助下實現。因此,本發明的特征可以利用(例如,包括一個或多個處理器的)處理系統來實現。本發明的特征可以在計算機程序產品中實現、利用計算機程序產品實現、或者在計算機程序產品的協助下實現,其中計算機程序產品是其上/其中存儲有可用來編程處理系統以執行本文所呈現的任何特征的指令的(一個或多個)存儲介質或計算機可讀介質。存儲介質可以包括但不限于任何類型的盤(包括軟盤、光盤、dvd、cd-rom、微驅動器、以及磁光盤)、rom、ram、eprom、eeprom、dram、vram、閃存存儲器設備、磁卡或光卡、納米系統(包括分子存儲器ic)、或適于存儲指令和/或數據的任何類型的介質或設備。在存儲在任何一種機器可讀介質的情況下,本發明的特征可以被結合到軟件和/或固件中,以用于控制處理系統的硬件,以及用于使處理系統能夠與其它機制交互,從而利用本發明的結果。這種軟件或固件可以包括但不限于應用代碼、設備驅動器、操作系統和執行環境/容器。本發明的特征也可以利用例如諸如專用集成電路(asic)的硬件部件在硬件中實現。實現硬件狀態機以執行本文所描述的功能對相關領域的技術人員將是清楚的。此外,本發明可以使用一個或多個常規的通用或專用數字計算機、計算設備、機器或微處理器來方便地實現,該通用或專用數字計算機、計算設備、機器或微處理器包括一個或多個處理器、存儲器和/或根據本公開的教導編程的計算機可讀存儲介質。如對軟件領域的技術人員將清楚的,適當的軟件編碼可以容易地由熟練的程序員基于本公開的教導來準備。雖然以上已經描述了本發明的各種實施例,但是應該理解,它們已作為示例而不是限制呈現。對相關領域的技術人員將清楚的是,在不背離本發明的精神和范圍的情況下,其中可以做出各種形式和細節上的變化。本發明已經借助說明具體功能及其關系的執行的功能構建塊進行了描述。這些功能構建塊的邊界在本文中通常是為了方便描述而任意定義的。可以定義可替代的邊界,只要具體的功能及其關系被適當地執行。任何這種可替代的邊界因此在本發明的范圍和精神之內。本發明的以上描述是為了說明和描述的目的提供。它不是旨在是窮盡的或者要把本發明限定到所公開的精確形式。本發明的廣度和范圍不應該由任何上述示例性實施例來限制。許多修改和變化對本領域技術人員來說將是清楚的。修改和變化包括所公開特征的任何相關組合。實施例的選擇與描述是為了最好地解釋本發明的原理及其實踐應用,從而使本領域其他技術人員能夠理解本發明用于各種實施例并且可以進行適于預期特定用途的各種修改。本發明的范圍要由以下權利要求及其等價物來定義。當前第1頁12當前第1頁12