發明領域
本發明大體上涉及包通信網絡,特別是涉及被部署在這樣的網絡中的交換機中的緩沖區管理。
背景
用在諸如以太網和infiniband網絡的高速包網絡中的交換機通常包含緩沖存儲器。由交換機通過其接口中的一個所接收的包在等待轉移到適當的出接口或者在多播包的情況下可能被轉移到多個出接口的同時被暫時儲存在緩沖存儲器中。雖然緩沖存儲器可被靜態分配到每個接口,但許多現代的包交換機使用共享存儲器,其中緩沖區空間根據流量負載和存儲器可用性以及在交換機中的處理之后所設置的包優先級和包入口優先級被靈活分配給不同的接口和隊列。
作為一個示例,美國專利申請公開2013/0250762描述了一種用于實現對于共享緩沖池的多個端口的無損行為的方法。包被“著色”并被儲存在共享的包緩沖區中,而不分配每端口固定的頁面分配。
概述
下文中所描述的本發明的實施例提供了用于網絡元件中的緩沖區管理的改進的方法和裝置。
因此,根據本發明的實施例,提供了包括多個接口的通信裝置,該多個接口被配置為連接到包數據網絡,以便用作通過該裝置從網絡接收多種類型的數據包的入接口和將其轉發到該網絡的出接口,該多種類型包括至少第一類型和第二類型。存儲器耦合到接口并被配置為緩沖區,以容納在等待經由出接口傳輸到網絡的同時通過入接口接收的包。包處理邏輯被配置為保持與出接口中的各自出接口相關聯的多個傳輸隊列,并被配置為將與第一和第二類型的第一和第二數據包對應的第一和第二隊列條目二者分別放置在共同的傳輸隊列中,以用于通過給定的出接口傳輸,同時在緩沖區中分配各自的空間,以對照單獨的第一和第二緩沖區分配儲存第一和第二數據包,該第一和第二緩沖區分配被分別分配給第一類型和第二類型的數據包。
在一個實施例中,第一類型的數據包由單播包組成,而第二類型的數據包由多播包組成。另外地或可選地,第一類型和第二類型的數據包使用各自不同的第一傳輸協議和第二傳輸協議來傳輸。
通常,包處理邏輯被配置為,當給定的隊列條目到達共同的傳輸隊列的頭部時,通過給定的出接口傳輸對應的數據包并釋放第一緩沖區分配和第二緩沖區分配的相應一個緩沖區中的對應的空間。
在一些實施例中,第一緩沖區分配在與多個不同的出接口相關聯的多個傳輸隊列上共享,第一類型的數據包通過該多個不同的出接口被傳輸。
另外地或可選地,多個傳輸隊列包括至少兩個傳輸隊列,該至少兩個傳輸隊列都與相同的給定的出接口相關聯并具有各自不同的服務質量的水平,并且不同的第一類型和第二類型的第一數據包和第二數據包具有共同的服務質量的水平。
在所公開的實施例中,包處理邏輯被配置為,響應于第一緩沖區分配和第二緩沖區分配的各自的填充水平(filllevel),分別將擁塞避免機制應用到第一類型和第二類型的數據包。
根據本發明的實施例,還提供了用于通信的方法,該方法包括通過網絡元件的入接口接收包括至少第一類型和第二類型的多種類型的數據包。在網絡元件中的緩沖區內的相應的空間被分配以對照單獨的第一緩沖區分配和第二緩沖區分配來存儲第一數據包和第二數據包,該單獨的第一緩沖區分配和第二緩沖區分配被分別指派給第一類型和第二類型的數據包,同時該數據包等待經由網絡元件的出接口傳輸到網絡。在網絡元件中,保持多個傳輸隊列,該多個傳輸隊列與出接口中的相應出接口相關聯。分別與第一類型和第二類型的第一數據包和第二數據包對應的第一隊列條目和第二隊列條目二者被放置在共同的傳輸隊列中,以用于通過給定的出接口傳輸。當對應的隊列條目到達共同的傳輸隊列的頭部時,第一數據包和第二數據包中的每個通過給定的出接口來傳輸。
根據結合附圖進行的本發明的實施例的以下詳細描述,本發明將得到更完全地理解,其中:
附圖簡述
圖1是根據本發明的實施例示意性圖示具有共享緩沖區的交換機的框圖;
圖2是根據本發明的實施例示意性圖示數據包通過交換機的流的框圖;以及
圖3是根據本發明的實施例示意性示出交換機中的包處理邏輯的細節的框圖。
實施例的具體描述
在本領域中已知的諸如交換機的網絡元件中,排隊和緩沖通常緊密耦合在一起。換句話說,當包進入給定的傳輸隊列以通過交換機的某出接口傳輸時,包占用與該隊列相關聯的緩沖區空間中的槽,直至該包被傳輸。因此,例如,當不同類型的包(諸如廣播、多播包和單播包、或使用不同協議傳輸的包,例如tcp包和udp包)共享相同的傳輸隊列時,它們也必定共享相同的緩沖區分配。因此,當一種類型的高流量引起給定的傳輸隊列上的擁塞時,所產生的擁塞避免措施(諸如丟棄或標記包或者在入端口上施加反壓力)也將應用到共享傳輸隊列的其他類型的包。
本文中所描述的本發明的實施例松開-并且可能完全解耦-隊列指派和緩沖區占用之間的連接,從而在通信資源的分配和管理上提供了更大的靈活性。在所公開的實施例中,即使當不同的包類型共享共同的傳輸隊列時,也可給這些不同的包類型在網絡元件中指派緩沖區空間的單獨的、相應的分配。網絡元件中的包處理邏輯將與數據包對應的隊列條目放置在共同的傳輸隊列中,以用于通過適當的出接口傳輸,同時在共享緩沖區中分配相應的空間,以對照它們的單獨的、相應的緩沖區分配儲存不同類型的數據包。給定隊列中的給定包類型可接收其自身的緩沖區分配,或者共同的緩沖區空間可針對跨多個傳輸隊列的給定類型的包來分配,這意味著不同隊列中的該類型的包共享相同的、共同的緩沖區分配。當給定的隊列條目到達共同的傳輸隊列的頭部時,對應的數據包通過出接口被傳輸,并且相應的緩沖區分配中的空間被釋放。
因此,通過適當分配相應的緩沖區空間,將網絡資源的不同的、獨立的共享分配給不同的包類型是可能的。對于任何給定的包類型的緩沖區分配可按傳輸隊列或按出接口來分配,或者可在與多個不同的出接口相關聯的多個傳輸隊列上共享,給定類型的數據包通過該多個不同的出接口被傳輸。由于緩沖區分配和排隊機制的這種解耦,包處理邏輯可響應于相應的緩沖區分配的填充水平將擁塞避免機制分別應用到不同類型的數據包。
現在參照圖1和圖2,其示意性地圖示了根據本發明的實施例的、具有共享緩沖區的網絡交換機20的操作。圖1是示出了交換機20的物理組件和功能組件的框圖,而圖2圖示了不同類型的數據包通過交換機的流。在所描繪的示例中,這些不同的類型包括多播包26和單播包32。可選地或另外地,包類型可通過使用不同的、相應的傳輸協議(諸如傳輸控制協議(tcp)和用戶數據報協議(udp),或者infiniband可靠連接(rc)的、不可靠連接(uc)的傳輸類型和其他傳輸類型)傳輸來區分。進一步可選地或另外地,交換機20中的包處理邏輯可基于例如各種頭字段和/或深度包檢測(dpi)將任何其他合適的標準應用于區分包類型。
另外,雖然為了具體性和清晰起見,本實施例指的是網絡交換機,但加以必要的修正,本發明的原理可同樣應用于緩沖和轉發數據包的其他類的網絡元件中,包括(但不限于)路由器、網橋和隧穿元件(tunnelingelement),以及應用于將主機連接到網絡的先進的網絡接口控制器中。
如圖1所示,交換機20包括端口22形式的多個接口,該端口22連接到包數據網絡24,并且通常用作入接口和出接口二者。(雖然出于簡化的目的在圖1中僅示出了八個端口22,但在實踐中,交換機20通常可能具有實質上更多數量的端口或可能更少的端口。)耦合到端口22的存儲器36被配置為共享緩沖區,以容納不同類型的包,該不同類型的包被指派給多個傳輸隊列46,以傳輸到網絡。
在所描繪的實施例中,交換機20通過入接口22接收多播包26。包26包括承載多播地址的報頭28和數據有效載荷30。報頭28可包括例如具有多播mac目的地址的層2報頭或具有多播ip目的地址的層3報頭。交換機20通過另一入接口22接收單播包32,其具有包含單播mac目的地址的單播報頭34。端口22將包26和32導向存儲器36,包的副本被儲存在該存儲器中同時等待通過適當的出端口22重新傳輸。包處理邏輯(在該實施例中被稱作決策和排隊邏輯38)讀取報頭28和34并查找目的地址,以便識別通過其傳輸相應的包的出端口22。
同時,緩沖區控制邏輯40分配存儲器36中的共享緩沖區中的空間,以儲存等待傳輸的包的副本。(對于本說明書和權利要求書,緩沖區控制邏輯40被認為是包處理邏輯的一部分,但是在實踐中,其可與決策和排隊邏輯38分開實現。)緩沖區控制邏輯40為多播包類型和單播包類型在存儲器36中指派單獨的、相應的分配42和44,并對照這些分配儲存包26和32同時等待傳輸。如圖1中所圖示的,雖然多播包26的多個副本可通過不同的出端口22來傳輸,但緩沖區控制邏輯40可被配置為僅儲存包的單一副本,該包的單一副本隨后被復制以用于傳輸,例如如于2015年12月8日提交的美國專利申請14/961,923所描述的,該美國專利申請的公開內容通過引用并入本文。
對于被接受到存儲器36中的對應的分配42、44...中的每個包,決策和排隊邏輯38將隊列條目(下文中被稱作描述符)放置在適當的傳輸隊列46中(或者在多播包的情況下,可能放置在多個傳輸隊列中)。雖然出于簡化的目的,圖1僅示出了每個出端口22的單一傳輸隊列,但在實踐中,多個傳輸隊列可對應于不同的、相應的服務質量水平與每個出接口相關聯。被指派相同的服務質量水平的不同類型的數據包(諸如多播包和單播包)隨后將使它們的隊列條目放置在相同傳輸隊列46中。另外地或可選地,邏輯38可將(除了服務質量水平之外或將其代替的)其他考慮應用于向隊列指派包。如先前所指出的,緩沖區分配42、44...可各自與特定的出端口或傳輸隊列相關聯,或者它們可在多個傳輸隊列上共享,該多個傳輸隊列可與多個不同的出端口相關聯,給定類型的數據包通過該出端口被傳輸。
當給定的隊列條目到達其中放置有條目的傳輸隊列46的頭部時,決策和排隊邏輯38從存儲器36讀取(并且如有必要復制)對應的數據包,并通過適當的出接口傳輸包。隨后,緩沖區控制邏輯40將釋放緩沖區分配42或44中的對應的空間。
圖3是根據本發明的實施例示意性示出交換機20中的決策和排隊邏輯38的細節的框圖。為了清晰和具體起見,該圖示出了邏輯38的一個可能的實施方式,但其他實施方式在本領域的技術人員閱讀本說明書之后對于他們來說將是明顯的,并且被認為是在本發明的范圍內。雖然邏輯38的元件在圖3中示為單獨的功能組件,但在實踐中,這些組件可在單一芯片或芯片組內的自定義或可編程硬件邏輯中一起被實施。
在接收輸入包時,不管包類型,入端口22a(諸如圖1中的端口22中的一個)都將包放置在存儲器36中的緩沖區中并通知決策控制邏輯52包準備好進行處理。如先前所解釋的,用于儲存給定類型的包的緩沖區中的空間對照被指派給存儲器36中的該包類型的單獨的緩沖區分配42、44...來分配。基于這些緩沖區分配的相應的填充水平,包處理邏輯38可將擁塞避免機制(諸如流控制機制50和/或包丟棄和標記機制)分別應用到不同的包類型。
響應于由決策控制邏輯52接收的新的包已經到達的通知,解析器54對包報頭進行解析并生成一個或多個描述符,該描述符傳遞至描述符處理器56,以用于進一步處理和轉發指令的生成。基于描述符,例如,處理器56通常選擇通過其傳輸包的出端口或端口22b。該描述符也可指示待應用到包的服務質量(qos),即,傳輸的優先級水平,并可指示對于包報頭的修改的任何適用的指令。對于多播包,處理器56通常生成多個描述符,為傳輸包的副本的每個出端口22b生成一個描述符。所有這些描述符可具有相同的qos(例如,通過qos索引值指示),或者它們可被指派給兩個或更多個不同的qos水平以用于不同的出端口。
描述符處理器56將描述符放置在排隊系統60中的適當的傳輸隊列(如先前附圖中的隊列46所示)中,以等待經由指定的出端口22b傳輸。通常,排隊系統60包含對于每個出端口22b的專用傳輸隊列或每出端口多個傳輸隊列,每個qos水平一個傳輸隊列。當在排隊系統60中對描述符進行排隊時,處理器56通知緩沖區控制邏輯40對應的包正在存儲器36中消耗緩沖區空間,并且邏輯40對于討論中的包類型對照適當的分配42、44...來記錄緩沖區消耗。可選地,對緩沖區控制邏輯40的緩沖區消耗更新可來自排隊系統60。
當描述符到達其傳輸隊列的頭部時,排隊系統60將描述符傳遞給包修改器62來執行。包修改器62分別耦合到出端口22b并用作包傳輸單元。響應于描述符,包修改器62從存儲器36讀取適當的包數據的副本,并在包報頭中做出所需的任何改變以用于通過出端口22b傳輸到網絡24。在多播包的情況下,包修改器62可復制包數據,同時原始數據保留在存儲器36中,直至所有的包副本被傳輸。
如圖中所示,當通過對應的出端口22b傳輸包后(或在多播傳輸的情況下,當傳輸最后的包副本后),包修改器62給緩沖區控制邏輯40發信號,并且也可給決策控制邏輯52發信號。可選地,該包傳輸通知可來自排隊系統60。響應于該通知,緩沖區控制邏輯40釋放對應的分配42、44...中的緩沖區空間,使得存儲器36中的位置可被重寫,并且該分配可以自由地接收對應類型的其他包。該存儲器核算和管理過程對于并行的多個不同的包通常發生在任何給定時間處。
將要理解的是,以上描述的實施例是通過示例的方式引用的,并且本發明不限于上文中已經具體示出和描述的那些實施例。相反,本發明的范圍包括上文所描述的各種特征的組合和子組合以及本領域技術人員在閱讀以上描述之后將想到的且未在現有技術中公開的其變型和修改。