背景技術:
高性能計算(hpc)集群、云計算數據中心以及其他大型計算網絡可以通過高速輸入/輸出結構(諸如infinibandtm結構)進行通信。infinibandtm體系結構可以使用端節點之間的交換點到點通道傳送數據。在infinibandtm體系結構中,可以使用16位本地標識符(lid)在子網內標識端節點。infinibandtm網絡中的路由是分布式的,基于每個交換機中所存儲的轉發表。infinibandtm交換機的轉發表可以存儲每個lid的單個目的地端口。因此,infinibandtm中的路由可以是靜態的且確定性的。
當對網絡鏈路的需求超過可用帶寬或其他網絡資源時會發生網絡通信的擁塞。在infinibandtm網絡中,擁塞控制代理可以監視網絡擁塞并與網絡主機通信從而減少造成擁塞的網絡流量的數據注入速率。
附圖說明
在附圖中通過示例的方式而非限制性的方式展示了在此所描述的概念。為了說明的簡單和清晰起見,在附圖中所展示的要素不一定按比例繪制。在認為適當的情況下,在附圖當中重復參考標號以表示相應或相似的要素。
圖1是一種用于中等粒度自適應路由的系統的至少一個實施例的簡化框圖;
圖2是可以由圖1的系統建立的各種環境的至少一個實施例的簡化框圖;
圖3是可以由圖1和圖2的系統的受管網絡設備執行的用于中等粒度自適應路由的方法的至少一個實施例的簡化流程圖。并且
圖4是可以由圖1和圖2的受管網絡設備維護的各數據表的示意圖。
具體實施方式
雖然本公開的概念易于經歷各種修改和替代形式,但是在附圖中已經通過示例的方式示出了其特定實施例并且將在此對其進行詳細描述。然而,應當理解的是,并不旨在將本公開的概念限制于所公開的特定形式,而相反,意圖是覆蓋與本公開和所附權利要求書一致的所有修改、等效物和替代物。
在說明書中提到的“一個實施例”、“實施例”、“說明性實施例”等指示了所描述的實施例可以包括具體特征、結構或特性,但每一個實施例可能或者可能不一定包括所述具體特征、結構或特性。而且,此類短語不一定涉及同一實施例。此外,當關于實施例而描述了特定特征、結構或特性時,應當認為的是,無論是否進行了明確描述,結合其他實施例來實現這種特征、結構或特性都在本領域的技術人員的知識內。另外,應當認識到,包括在采用“a、b和c中的至少一個”形式的列表中的項可意指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。類似地,采用“a、b或c中的至少一者”形式列出的項可意指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。
在一些情況下,可以在硬件、固件、軟件或其任何組合中實現所公開的實施例。所公開的實施例還可以實施為一個或多個瞬態或非瞬態機器可讀(例如,計算機可讀)存儲媒體所攜帶或其上所存儲的指令,這些指令可以由一個或多個處理器讀取和執行。機器可讀存儲媒體可以實施為任何存儲設備、機制、或用于存儲或發射采用機器可讀形式的信息的其他物理結構(例如,易失性或非易失性存儲器、媒體盤或其他媒體設備)。
在附圖中,一些結構特征或方法特征可能以特定安排和/或順序示出。然而,應理解的是,可以不需要這種特定安排和/或順序。相反,在一些實施例中,可以采用與在說明性附圖中所示出的方式和/或順序不同的方式和/或順序來安排這種特征。另外,在具體的圖中包括結構特征或方法特征并不意味著暗示在所有實施例中都需要這種特征,并且在一些實施例中,可以不包括這種特征或者這種特征可以與其他特征組合。
現在參照圖1,在一個實施例中,用于中等粒度自適應路由的系統100包括通過若干結構鏈路106通信的多個受管網絡設備102和多個計算節點104。系統100的受管網絡設備102、計算節點104以及其他屬性可以由一個或多個結構管理器108來管理。在使用中,如在下文更詳細地討論的,每個計算節點104可以通過結構鏈路106將數據分組傳輸到受管網絡設備102。每個數據分組可以包括標識目的地計算節點104的目的地本地標識符(dlid)。受管網絡設備102檢查所述dlid從而判定所述數據分組的靜態路由目的地端口的結構電路106是否擁塞。擁塞一般對受管網絡設備102之間而非計算節點104與受管網絡設備102之間的結構鏈路106發生。如果擁塞,所述受管網絡設備102可以在端口組中查找dlid并選擇所述端口組的新目的地端口。每個端口組包括所述受管網絡設備102的兩個或更多個端口,并且所述端口組可以重疊(即,多個端口組可以包括相同的端口)。結構管理器108可以配置所述端口組以及系統100的每個受管網絡設備102的端口組轉發表。因而,在系統100中,結構管理器108可以提供關于拓撲結構以及使用策略的全局信息,同時由每個受管網絡設備102進行實時流量監測和自適應路由。因而,系統100所提供的自適應路由可以支持縮放至大量受管網絡設備102。相應地,雖然被展示為包括三個計算節點104a至104c及兩個受管網絡設備102a和102b,應該理解的是,系統100可以包括更多的受管網絡設備102和計算節點104。
每個受管網絡設備102可以被實施為能夠轉發或控制結構流量的任何網絡設備,比如受管交換機。示意性受管網絡設備102包括多個結構端口120、交換邏輯122、以及管理邏輯124。每個結構端口120可以與結構鏈路106連接,所述結構鏈路進而可以與遠端設備比如計算節點104或另一受管網絡設備102連接。示意性受管網絡設備102包括三個結構端口120a至120c;然而,在其他實施例中,受管網絡設備102可以包括另外的或更少的端口120以支持不同數量的結構鏈路106。
開關邏輯122可以實施為被配置成用于將在端口120上接收的數據分組轉發到適當的目的地端口120的任何硬件、固件、軟件或其組合。例如,交換邏輯122可以被實施為共享存儲器交換機或縱橫式交換機,并且可以包括調度器、分組處理流水線、線性轉發表、端口組轉發表、端口組表、和/或任何其他交換邏輯。在一些實施例中,交換邏輯122可以被實施為一個或多個專用集成電路(asic)。
管理邏輯124可以實施為可以用來配置并控制受管網絡設備102的任何控制電路、微處理器或其他邏輯塊。例如,管理邏輯124可以初始化受管網絡設備102及其組件、控制受管網絡設備102及其組件的配置、向受管網絡設備102提供測試接口、或者提供其他管理功能。可以通過改變數據表(包括端口組轉發表和/或端口組表)的數量值來配置管理邏輯124進行配置。結構管理器108可以使用帶內管理接口通過經由結構鏈路106傳輸特殊格式化的管理數據報(mad)來與管理邏輯124進行通信。另外地或可替代地,管理邏輯124可以通過管理接口(諸如一個或多個pciexpress主機接口)、測試接口或一個或多個低速接口(諸如i2c接口、jtag接口、spi接口、mdio接口、led接口或gpio接口)來與結構管理器108進行通信。
每個計算節點104可以實施為能夠執行在此所描述的功能的任何類型的計算或計算機設備,包括但不限于計算機、服務器、機架式服務器、刀片服務器、網絡設備、web設備、多處理器系統、分布式計算系統、基于處理器的系統、移動計算設備和/或消費者電子設備。如圖1中所示,每個計算節點104示意性地包括處理器140、輸入/輸出子系統144、存儲器146、數據存儲設備148以及通信電路150。當然,在其他實施例中,計算節點104可以包括其他或另外的組件,諸如計算機中常見的那些(例如,不同輸入/輸出設備)。另外,在一些實施例中,說明性部件中的一個或多個說明性部件可以結合在另一部件中,或以其他方式形成其一部分。例如,在一些實施例中,存儲器146或其部分可以結合在處理器140中。
處理器140可以實施為能夠執行在本文中所描述的功能的任何類型的處理器。例如,處理器140可以實施為(多個)單核或多核處理器、數字信號處理器、微控制器、或者其他處理器或處理/控制電路。處理器140進一步包括主機結構接口142。主機結構接口142可以實施為能夠通過結構鏈路106實現處理器140與其他遠程計算節點104和/或其他遠程設備之間的通信的任何通信接口,諸如網絡接口控制器、通信電路、設備或其集合。主機結構接口142可以被配置成用于使用任何一種或多種通信技術以及相關聯協議(例如,
類似地,存儲器146可以實施為能夠執行在此所描述的功能的任何類型的易失性或非易失性存儲器或數據存儲裝置。在操作中,存儲器146可以存儲在計算節點104的操作過程中使用的不同的數據和軟件,諸如操作系統、應用、程序、庫以及驅動程序。存儲器146經由i/o子系統144通信地耦合到處理器140上,i/o子系統可以實施為用于促進與計算節點104的處理器140、存儲器146、以及其他組件的輸入/輸出操作的電路和/或組件。例如,i/o子系統144可以實施為或以其他方式包括用于促進輸入/輸出操作的存儲器控制器中樞、輸入/輸出控制中樞、固件設備、通信鏈路(即,點到點鏈路、總線鏈路、線、電纜、光導、印刷電路板跡線等)和/或其他組件和子系統。在一些實施例中,i/o子系統144可以形成片上系統(soc)的一部分并且可以與計算節點104的處理器140、存儲器146以及其他組件一起結合在單個集成電路芯片上。數據存儲設備148可以被實施為被配置成用于對數據進行短期或長期存儲的任何類型的一種或多種設備,如例如,存儲器設備和電路、存儲器卡、硬盤驅動器、固態驅動器或其他數據存儲設備。
計算節點104的通信電路150可以實施為能夠實現計算節點104與一個或多個遠程計算節點104、受管網絡設備102、交換機、遠程主機或其他設備之間的通信的任何通信接口,諸如通信電路、設備或其集合。通信電路150可以被配置成用于使用任何一種或多種通信技術(例如,有線或無線通信)以及相關聯協議(例如,
結構鏈路106中的每一個可以實施為能夠連接系統100的兩個端口120、152的任何點到點通信鏈路。例如,結構鏈路106可以將計算節點104的端口152與受管網絡設備102的端口120連接起來、可以將兩個受管網絡設備102的兩個端口120連接起來等等。每個結構鏈路106允許在兩個方向上進行通信。每個結構鏈路106可以實施為串行數據通信鏈路,諸如銅電纜、銅背板、光纖電纜或硅光子鏈路,并且可以包括多個通信道(例如,四條道)以增大總帶寬。每個結構鏈路106可以按一定導線速率(諸如12.5gb/s或25.78125gb/s)來以信號方式發送數據。
結構管理器108被配置成用于初始化并以其他方式管理系統100的受管網絡設備102、計算節點104以及其他主機、網關和/或其他設備。結構管理器108可以實施為能夠執行在此所描述的功能的任何類型的服務器計算設備、網絡設備或設備的集合。在一些實施例中,系統100可以包括多個結構管理器108,可以從該多個結構管理器中選擇主結構管理器108。這樣,結構管理器108可以實施為單個服務器計算設備或服務器與相關聯設備的集合。因此,雖然結構管理器108在圖1中被展示為實施為單個計算設備,但是應當理解,結構管理器108可以實施為一起協同操作以促進下文所描述的功能性的多個設備。
現在參照圖2,在示意性實施例中,每一個受管網絡設備102在操作期間建立環境200。示意性環境200包括分組入口模塊202、靜態路由模塊204、擁塞監測模塊206、自適應路由模塊208、以及管理模塊210。環境200的各種模塊可實施為硬件、固件、軟件或其組合。例如,環境200的不同模塊、邏輯以及其他組件可以形成受管網絡設備102的開關邏輯122、管理邏輯124或其他硬件組件的一部分或以其他方式由該開關邏輯、該管理邏輯或這些其他硬件組件建立。這樣,在一些實施例中,環境200的模塊中的任何一個或多個模塊可以被實施為電氣設備的電路或集合(例如,分組入口電路、靜態路由電路等)。
分組入口模塊202被配置成用于接收和處理來自端口120的數據分組。具體地,分組入口模塊202被配置成用于從所接收的數據分組提取目的地本地標識符(dlid)。所述dlid可以被實施為具有可配置長度(例如,32、24、20、或16位寬,或任何其他適當寬度)的二進制值。所述dlid標識數據分組的目的地端點(例如,目的地計算節點104)。
靜態路由模塊204被配置成用于根據所述dlid確定受管網絡設備102的靜態路由目的地端口120。靜態路由模塊204可以例如使用dlid在轉發表中查找目的地端口120。靜態路由模塊204可以被配置成用于將數據分組轉發至靜態路由目的地端口120,如果這個目的地端口120不擁塞的話。
擁塞監測模塊206被配置成用于判定所述靜態路由目的地端口120是否擁塞。擁塞監測模塊206可以使用任何適當的擁塞度量或其他監測技術來判定目的地端口120是否擁塞。在一些實施例中,擁塞監測模塊206可以判定用于目的地端口120的結構鏈路106的具體分支是否擁塞(例如,具體虛擬道路、服務信道、或相關聯的服務水平)。
自適應路由模塊208被配置成基于dlid確定端口分組。每個端口分組標識受管網絡設備102的兩個或更多個端口120。端口分組可以重疊,并且每個dlid可以準確地與一個端口組相關聯。自適應路由模塊208進一步被配置成用于:當靜態路由目的地端口120擁塞時動態地選擇端口組中的目的地端口120,并且然后將數據分組轉發至所述動態選擇的目的地端口120。自適應路由模塊208可以使用任何一種或多種策略來選擇所述目的地端口120(例如,隨機選擇、貪婪/最小負載選擇、和/或貪婪隨機選擇)。
管理模塊210被配置成用于管理受管網絡設備102的配置。管理模塊210可以存儲或另外管理一個或多個配置寄存器、數據表、或可以用來配置受管網絡設備102的其他管理信息。例如,在一些實施例中,管理模塊210可以管理線性轉發表、組播轉發表、端口組轉發表、和/或端口組表。管理模塊210可以被配置成用于從結構管理器108接收命令、數據、和其他管理信息。
現在參照圖3,在使用中,受管網絡設備102可以執行用于中等粒度自適應路由的方法300。方法300在框302開始,在所述框中,受管網絡設備102在端口120上接收數據分組并從所述數據分組提取目的地本地標識符(dlid)。所述dlid標識所述數據分組的目的地(例如,目的地計算節點104)。所述數據分組被實施為包括dlid的二進制數據的任何適當集合。所述dlid可以被實施為具有可配置長度(例如,32、24、20、或16位)的二進制值。受管網絡設備102可以被配置成提取正確大小的dlid,例如借助結構管理器108。可以針對受管網絡設備102和/或基于每個端口120全局地配置dlid的寬度。在一些實施例中,可以將可能的dlid的子集指定給組播和/或集體地址空間,并且某些dlid可以具有預定的意義(例如,未經初始化的地址或許可的lid)。可以使用專用組播操作、集體操作、或其他操作來處理那些dlid,為了清楚起見在方法300中未示出這些操作。
在框304中,受管網絡設備102基于dlid確定靜態路由目的地端口120。靜態路由目的地端口120可以是受管網絡設備102的已經與dlid相關聯的預定目的地端口120。受管網絡設備102可以在一個或多個數據表中查找靜態路由目的地端口120。那些數據表可以由結構管理器108配置或另外維護。在一些實施例中,在框306中,受管網絡設備102可以在線性轉發表中查找目的地端口120。受管網絡設備102可以使用dlid作為向線性轉發表內的索引并檢索端口號或他標識目的地端口120的其數據。
在框308中,受管網絡設備102判定靜態路由目的地端口120是否擁塞。目的地端口120會擁塞,如果這個端口120上所提供的負載超過結構鏈路106的另一側的接收器(例如,進行接收的受管網絡設備102或計算節點104)的噴射率的話。受管網絡設備102可以使用任何監測技術來判定目的地端口120是否擁塞。例如,受管網絡設備102可以使用擁塞控制代理,監測從遠端設備接收的擁塞通知,分析流量控制數據,或進行任何其他適當監測。受管網絡設備102可以基于每條虛擬道路、基于服務信道、基于服務水平、或基于結構鏈路106的任何其他邏輯或物理分支判定目的地端口120是否擁塞。在一些實施例中,在框310中,受管網絡設備102分析接收器處的可用流量控制信用以及有待由受管網絡設備102發射的未決流量控制信用。如果流量控制信用在接收器處不可用或者受管網絡設備102的未決流量控制信用正在提高,則目的地端口120會擁塞。在一些實施例中,在框312中,受管網絡設備102可以分析擁塞日志中的擁塞標志事件。在一些實施例中,響應于檢測到擁塞,受管網絡設備102可以在檢測到擁塞時向接收器發送轉發明確擁塞通知(fecn),例如通過設置離開受管網絡設備102的數據分組上的fecn。當用fecn位標記數據分組時,受管網絡設備102還可以將這個標志事件記錄在擁塞日志中。
在框314中,受管網絡設備102判定靜態路由目的地端口120是否擁塞。如果不擁塞,則方法300分支前進到框332,如下所述。如果靜態路由目的地端口120擁塞,則方法300前進到框316。
在框316中,受管網絡設備102基于dlid確定目的地端口組。目的地端口組可以被標識為受管網絡設備102的任意兩個或更多個目的地端口120的集合。目的地端口組可以重疊,意思是端口120可以包括在不止一個端口組中。如下面進一步描述的,每個端口組可以映射至一個或多個dlid,并且每個dlid準確地與一個端口組相關聯。結構管理器108可以發現通過所述結構的路徑并且然后相應地配置端口組以及端口組映射。當針對具體dlid(例如,單個目的地端口120)僅存在一個通過所述結構的可能路徑時,這個dlid可以被指定給未定義的端口組(例如,空集、空值、零值等)。
在一些實施例中,在框318中,受管網絡設備102可以在端口組轉發表中查找端口組。例如,受管網絡設備102可以使用用于標識目的地端口組的唯一端口組標識符的dlid來索引端口組轉發表。端口組轉發表可以具有與線性轉發表類似的結構,并且與線性轉發表類似地可以由結構管理器108訪問或另外維護。現在參照圖4,示意圖400展示了端口組轉發表402的一個潛在實施例。在示意性實施例中,可以用dlidlidi對表402進行索引從而生成相應的端口組標識符pg_idi。因而,在示意性實施例中,每個dlid可以用來準確地檢索一個端口組標識符,但每個端口組標識符可以被不止一個dlid引用。每個dlid可以被實施為例如16位的二進制值,并且每個端口組標識符可以被實施為八位的二進制值。未定義的端口組可以具有端口組標識符零(0x00),并且有效端口組可以具有從零到255(0x01到0xff)的標識符。在一些實施例中,受管網絡設備102可以支持少于潛在最大255個端口組;然而,在許多實施例中,受管網絡設備102可以支持至少受管網絡設備102具有端口120的兩倍多的端口組。
返回參照圖3,在框320中,受管網絡設備102從與dlid相關聯的端口組確定動態目的地端口120。受管網絡設備102可以使用任何策略來選擇動態目的地端口120。在一些實施例中,受管網絡設備102可以保證動態目的地端口120與靜態路由目的地端口120不相同,從而避免擁塞。在一些實施例中,受管網絡設備102可以在端口組表中查找目的地端口120。例如,受管網絡設備102可以使用用于標識與端口組相關聯的端口掩碼的端口組標識符來索引端口組表。端口掩碼可以被實施為位掩碼或其他標識受管網絡設備102的包括在端口組中的目的地端口120的數據。端口組表和端口掩碼表項可以具有與組播轉發表類似的結構,并且與組播轉發表類似地可以由結構管理器108訪問或另外維護。再次參照圖4,示意圖400展示了端口組表404的一個潛在實施例。如所示的,從端口組轉發表402檢索的端口組標識符可以用來索引端口組表404。在示意性實施例中,端口組標識符可以被實施為八位的值。標識符零(0x00)映射至未定義的端口組。有效端口標識符一至255(0x01至0xff)各自映射至端口掩碼,端口掩碼被展示為256位的位掩碼p255p254…p1p0。端口掩碼的每一位pi對應于受管網絡設備102的目的地端口120。因而,每個端口組中所包括的端口120中的每一個可以對應于相關聯的端口掩碼中所設置的位。位掩碼中的超過受管網絡設備102中的端口120數量的位在作為零寫和讀回時可以忽略,或者可以另外被忽視。雖然被展示為256位的位圖,應該理解的是,端口掩碼可以包括任何適當數據量。
返回參照圖3,如上所述,受管網絡設備102可以使用任何策略來從端口組選擇目的地端口120。在一些實施例中,在框324中,受管網絡設備102可以隨機地從端口組選擇目的地端口120。在一些實施例中,在框326中,受管網絡設備102可以從端口組選擇最小負載的目的地端口120。受管網絡設備102可以使用任何適當的度量來確定最小負載的端口120,例如選擇具有最小隊列占有/深度、最少擁塞、或另外最小負載的目的地端口120。在一些實施例中,在框328中,受管網絡設備102可以隨機地從端口組中的最小負載的端口120中的兩個或更多個進行選擇。
在框330中,受管網絡設備102用動態目的地端口120更新靜態路由信息。受管網絡設備102可以例如用動態確定的目的地端口120替換線性轉發表中的靜態路由目的地端口120的表項。
在框332中,受管網絡設備102將數據分組轉發至目的地端口120。受管網絡設備102可以例如將數據分組轉發至線性轉發表中所描述的目的地端口120。如上所述,線性轉發表中所描述的目的地端口120可以是如上所述在框304中確定的靜態路由目的地端口120(如果這個端口120不擁塞的話),或如上文聯系框320所述的動態確定的目的地端口120。在將數據分組轉發至目的地端口120之后,方法300環回框302以繼續處理數據分組。雖然圖3的方法300被展示為順序執行,應該理解的是,在一些實施例中,受管網絡設備102可以并行、同時、或以任何其他順序執行方法300的操作。例如,在一些實施例中,可以由受管網絡設備102的硬件資源并行執行操作。
示例
以下提供了在本文中所公開的技術的說明性示例。所述技術的實施例可以包括以下所描述的示例中的任何一個或多個示例及其任何組合。
示例1包括一種用于數據分組轉發的網絡設備,所述網絡設備包括:分組入口模塊,用于從數據分組中提取目的地本地標識符(dlid);靜態路由模塊,用于根據所述dlid確定所述網絡設備的靜態路由目的地端口;擁塞監測模塊,用于判定所述靜態路由目的地端口是否擁塞;以及自適應路由模塊,用于:響應于確定所述靜態路由目的地端口擁塞,根據所述dlid確定端口組,其中,所述端口組標識所述網絡設備的兩個或更多個端口;響應于確定所述靜態路由目的地端口擁塞,選擇所述端口組中的動態目的地端口;以及響應于確定所述靜態路由目的地端口擁塞,將所述數據分組轉發至所述動態目的地端口。
示例2包括如示例1所述的主題,并且其中,所述dlid包括32、24、20、或16位長的二進制值。
示例3包括如示例1和2中所述的主題,并且其中,確定所述靜態路由目的地端口包括:借助所述dlid對線性轉發表進行索引,從而確定所述靜態路由目的地端口。
示例4包括如示例1至3中任一項所述的主題,并且其中,判定所述靜態路由目的地端口是否擁塞包括:分析與所述目的地端口相關聯的可用流量控制信用。
示例5包括如示例1至4中任一項所述的主題,并且其中,判定所述靜態路由目的地端口是否擁塞包括:分析與所述目的地端口相關聯的擁塞日志。
示例6包括如示例1至5中任一項所述的主題,并且其中,根據所述dlid確定所述端口組包括:確定端口組標識符,其中,所述端口組標識符包括在1到255之間的整數值,包括兩端值。
示例7包括如示例1至6中任一項所述的主題,并且其中,根據所述dlid確定所述端口組包括:借助所述dlid對端口組轉發表進行索引,從而確定端口組標識符。
示例8包括如示例1至7中任一項所述的主題,并且其中,選擇所述端口組中的所述動態目的地端口包括:借助所述端口組標識符對端口組表進行索引從而確定端口組掩碼,其中,所述端口組掩碼指示所述dlid的多個有效目的地端口;以及從所述端口組掩碼的所述多個有效目的地端口中選擇所述動態目的地端口。
示例9包括如示例1至8中任一項所述的主題,并且其中,所述端口組掩碼包括包含256位的二進制值,并且其中,所述端口組掩碼的每一位與所述網絡設備的相應端口相關聯。
示例10包括如示例1至9中任一項所述的主題,并且其中,從所述多個有效目的地端口中選擇所述動態目的地端口包括:從所述多個有效目的地端口中隨機選擇所述動態目的地端口。
示例11包括如示例1至10中任一項所述的主題,并且其中,從所述多個有效目的地端口中選擇所述動態目的地端口包括:選擇所述多個有效目的地端口中負載最小的目的地端口作為所述動態目的地端口。
示例12包括如示例1至11中任一項所述的主題,并且其中,從所述多個有效目的地端口中選擇所述動態目的地端口包括:從所述多個有效目的地端口中的多個負載最小的目的地端口中隨機選擇所述動態目的地端口。
示例13包括如示例1至12中任一項所述的主題,并且其中,所述靜態路由模塊進一步用于:響應于確定所述靜態路由目的地端口不擁塞,將所述數據分組轉發至所述靜態路由目的地端口。
示例14包括一種用于進行自適應數據分組路由的方法,所述方法包括:由網絡設備從數據分組中提取目的地本地標識符(dlid);由所述網絡設備根據所述dlid確定所述網絡設備的靜態路由目的地端口;由所述網絡設備判定所述靜態路由目的地端口是否擁塞;由所述網絡設備響應于確定所述靜態路由目的地端口擁塞而根據所述dlid確定端口組,其中,所述端口組標識所述網絡設備的兩個或更多個端口;響應于確定所述靜態路由目的地端口擁塞,由所述網絡設備選擇所述端口組中的動態目的地端口;以及響應于確定所述靜態路由目的地端口擁塞,由所述網絡設備將所述數據分組轉發至所述動態目的地端口。
示例15包括如示例14所述的主題,并且其中,所述dlid包括32、24、20、或16位長的二進制值。
示例16包括如示例14和15中所述的主題,并且其中,確定所述靜態路由目的地端口包括:借助所述dlid對線性轉發表進行索引,從而確定所述靜態路由目的地端口。
示例17包括如示例14至16中任一項所述的主題,并且其中,判定所述靜態路由目的地端口是否擁塞包括:分析與所述目的地端口相關聯的可用流量控制信用。
示例18包括如示例14至17中任一項所述的主題,并且其中,判定所述靜態路由目的地端口是否擁塞包括:分析與所述目的地端口相關聯的擁塞日志。
示例19包括如示例14至18中任一項所述的主題,并且其中,根據所述dlid確定所述端口組包括:確定端口組標識符,其中,所述端口組標識符包括在1到255之間的整數值,包括兩端值。
示例20包括如示例14至19中任一項所述的主題,并且其中,根據所述dlid確定所述端口組包括:借助所述dlid對端口組轉發表進行索引,從而確定端口組標識符。
示例21包括如示例14至20中任一項所述的主題,并且其中,選擇所述端口組中的所述動態目的地端口包括:借助所述端口組標識符對端口組表進行索引從而確定端口組掩碼,其中,所述端口組掩碼指示所述dlid的多個有效目的地端口;以及從所述端口組掩碼的所述多個有效目的地端口中選擇所述動態目的地端口。
示例22包括如示例14至21中任一項所述的主題,并且其中,所述端口組掩碼包括包含256位的二進制值,并且其中,所述端口組掩碼的每一位與所述網絡設備的相應端口相關聯。
示例23包括如示例14至22中任一項所述的主題,并且其中,從所述多個有效目的地端口中選擇所述動態目的地端口包括:從所述多個有效目的地端口中隨機選擇所述動態目的地端口。
示例24包括如示例14至23中任一項所述的主題,并且其中,從所述多個有效目的地端口中選擇所述動態目的地端口包括:選擇所述多個有效目的地端口中負載最小的目的地端口作為所述動態目的地端口。
示例25包括如示例14至24中任一項所述的主題,并且其中,從所述多個有效目的地端口中選擇所述動態目的地端口包括:從所述多個有效目的地端口中的多個負載最小的目的地端口中隨機選擇所述動態目的地端口。
示例26包括如示例14至25中任一項所述的主題,并且進一步包括:響應于確定所述靜態路由目的地端口不擁塞,由所述網絡設備將所述數據分組轉發至所述靜態路由目的地端口。
示例27包括一種計算設備,所述計算設備包括:處理器;以及存儲器,所述存儲器具有存儲于其中的多條指令,所述指令當被所述處理器執行時致使所述計算設備執行如示例14-26中任一項所述的方法。
示例28包括一種或多種機器可讀存儲介質,所述一種或多種機器可讀存儲介質包括存儲于其上的多條指令,所述指令響應于被執行而使計算設備執行如示例14-26中任一項所述的方法。
示例29包括一種計算設備,所述計算設備包括用于執行示例14-26中任一項所述的方法的裝置。
示例30包括一種用于數據分組轉發的網絡設備,所述網絡設備包括:用于從數據分組中提取目的地本地標識符(dlid)的裝置;用于根據所述dlid確定所述網絡設備的靜態路由目的地端口的裝置;用于判定所述靜態路由目的地端口是否擁塞的裝置;用于響應于確定所述靜態路由目的地端口擁塞而根據所述dlid確定端口組的裝置,其中,所述端口組標識所述網絡設備的兩個或更多個端口;用于響應于確定所述靜態路由目的地端口擁塞,選擇所述端口組中的動態目的地端口的裝置;以及用于響應于確定所述靜態路由目的地端口擁塞,將所述數據分組轉發至所述動態目的地端口的裝置。
示例31包括如示例30所述的主題,并且其中,所述dlid包括32、24、20、或16位長的二進制值。
示例32包括如示例30和31中所述的主題,并且其中,所述用于確定所述靜態路由目的地端口的裝置包括:用于借助所述dlid對線性轉發表進行索引從而確定所述靜態路由目的地端口的裝置。
示例33包括如示例30至32中任一項所述的主題,并且其中,所述用于判定所述靜態路由目的地端口是否擁塞的裝置包括:用于分析與所述目的地端口相關聯的可用流量控制信用的裝置。
示例34包括如示例30至33中任一項所述的主題,并且其中,判所述用于定所述靜態路由目的地端口是否擁塞的裝置包括:用于分析與所述目的地端口相關聯的擁塞日志的裝置。
示例35包括如示例30至34中任一項所述的主題,并且其中,所述用于根據所述dlid確定所述端口組的裝置包括:用于確定端口組標識符的裝置,其中,所述端口組標識符包括在1到255之間的整數值,包括兩端值。
示例36包括如示例30至35中任一項所述的主題,并且其中,所述用于根據所述dlid確定所述端口組的裝置包括:用于借助所述dlid對端口組轉發表進行索引從而確定端口組標識符的裝置。
示例37包括如示例30至36中任一項所述的主題,并且其中,所述用于選擇所述端口組中的所述動態目的地端口的裝置包括:用于借助所述端口組標識符對端口組表進行索引從而確定端口組掩碼的裝置,其中,所述端口組掩碼指示所述dlid的多個有效目的地端口;以及用于從所述端口組掩碼的所述多個有效目的地端口中選擇所述動態目的地端口的裝置。
示例38包括如示例30至37中任一項所述的主題,并且其中,所述端口組掩碼包括包含256位的二進制值,并且其中,所述端口組掩碼的每一位與所述網絡設備的相應端口相關聯。
示例39包括如示例30至38中任一項所述的主題,并且其中,所述用于從所述多個有效目的地端口中選擇所述動態目的地端口的裝置包括:用于從所述多個有效目的地端口中隨機選擇所述動態目的地端口的裝置。
示例40包括如示例30至39中任一項所述的主題,并且其中,所述用于從所述多個有效目的地端口中選擇所述動態目的地端口的裝置包括:用于選擇所述多個有效目的地端口中負載最小的目的地端口作為所述動態目的地端口的裝置。
示例41包括如示例30至40中任一項所述的主題,并且其中,所述用于從所述多個有效目的地端口中選擇所述動態目的地端口的裝置包括:用于從所述多個有效目的地端口中的多個負載最小的目的地端口中隨機選擇所述動態目的地端口的裝置。
示例42包括如示例30至41中任一項所述的主題,并且進一步包括:用于響應于確定所述靜態路由目的地端口不擁塞,將所述數據分組轉發至所述靜態路由目的地端口的裝置。