TWI803748B - 網路裝置中用於封包轉發之經組合輸入及輸出佇列 - Google Patents
網路裝置中用於封包轉發之經組合輸入及輸出佇列 Download PDFInfo
- Publication number
- TWI803748B TWI803748B TW109114443A TW109114443A TWI803748B TW I803748 B TWI803748 B TW I803748B TW 109114443 A TW109114443 A TW 109114443A TW 109114443 A TW109114443 A TW 109114443A TW I803748 B TWI803748 B TW I803748B
- Authority
- TW
- Taiwan
- Prior art keywords
- forwarding engine
- packet
- network
- packet forwarding
- output
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
- H04L45/566—Routing instructions carried by the data packet, e.g. active networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/39—Credit based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6205—Arrangements for avoiding head of line blocking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/252—Store and forward routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3018—Input queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3036—Shared queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3045—Virtual queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9036—Common buffer combined with individual queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5678—Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
- H04L2012/5681—Buffer or queue management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本發明揭示一種用於切換網路訊務之設備,其包含一入口封包轉發引擎及一出口封包轉發引擎。該入口封包轉發引擎經組態以回應於接收一網路封包來判定用於輸出該網路封包之一出口封包轉發引擎且將該網路封包排入佇列於一虛擬輸出佇列中。該出口封包轉發引擎經組態以回應於一第一排程事件及該入口封包轉發引擎而輸出資訊,該資訊指示該虛擬輸出佇列中之該網路封包且該網路封包待排入佇列於該出口封包轉發引擎之一輸出埠之一輸出佇列處。該入口封包轉發引擎進一步經組態以回應於接收該資訊使該網路封包自該虛擬輸出佇列移出佇列並將該網路封包排入佇列至該輸出佇列。
Description
本發明大體上係關於運算裝置,且特定言之係關於網路裝置中之佇列。
一電腦網路係可交換資料及共用資源之互連網路裝置之一集合。實例網路裝置包含路由器、開關及在開放系統互連(OSI)參考模型之第二層(即資料鏈路層)內操作之其他第二層(L2)網路裝置以及在OSI參考模型之第三層(即網路層)內操作之第三層(L3)網路裝置。電腦網路內之網路裝置通常包含為網路裝置提供控制平面功能之一控制單元及用於路由或切換資料單元之轉發組件。
一電腦網路之一路由器可使用一或多個佇列來促進發送器與接收器之間的頻寬匹配。網路開關可自一發送器接收封包並將所接收封包之一部分自發送器傳輸至一接收器,從而將所接收封包之一剩餘部分儲存於佇列中。在傳輸所接收封包之部分之後,網路開關將儲存於佇列中之封包之剩餘部分傳輸至接收器。
一般而言,通常期望對資源進行劃分及分配以便針對不同類型之封包流達成不同服務品質(QoS)。例如,回應於自源裝置接收一封包,一網路裝置可將該封包分類為源自源裝置且識別在路由器中為源裝置供應之一特定優先級。接著,網路裝置通常將網路封包作為一或多個離散資料單元儲存於與經判定優先級相關聯之數個佇列之一者中。路由器依滿足經界定優先級之各者之一方式為佇列提供服務。例如,在操作期間,網路裝置根據所供應之優先級執行移出佇列(dequeue)操作,以自佇列選擇網路封包以排程網路封包之遞送。在一些例項中,網路裝置依一重疊方式執行多個移出佇列操作,以同時選擇及服務多個佇列。作為一個實例,一網路裝置可依一管線化方式實施移出佇列及網路封包排程操作,使得在任何給定時間點對多個網路封包進行移出佇列及排程用於處理。藉由同時執行此等移出佇列操作,網路裝置改良在一給定時間量內可服務之網路封包之數目。
一般而言,本發明描述用於網路裝置中之經改良佇列系統之技術。一網路裝置(諸如一路由器或一開關)可在內部在封包轉發引擎之間切換之前,或在經由該網路傳輸該等封包之前,將網路封包排入佇列於一或多個佇列中。用於一網路裝置之一佇列系統可經組態以組合一虛擬輸出佇列(VOQ)及經組合輸入輸出佇列(CIOQ)之元素。如本文中所使用,一VOQ可係指一入口(ingress)側處之一緩衝區,其中各輸入埠為各輸出埠維持一單獨虛擬佇列。然而,為各輸出埠維持一單獨虛擬佇列並不能很好地擴展。相比之下,一CIOQ可經組態以在一出口(egress)側處緩衝。然而,歸因於隊頭(HOL)阻礙,一CIOQ可限制該網路裝置之輸出率。例如,當一輸入佇列聚合意欲到達一出口封包轉發引擎之多個流或當多個入口封包轉發引擎試圖到達相同出口封包轉發引擎且超過該出口封包轉發引擎之該頻寬時,歸因於跨一切換結構之HOL阻礙,CIOQ可限制該網路裝置之輸出率。
根據本發明之技術,一網路裝置可經組態以提供實現輸出佇列擴展之「CIOQ行為」。例如,該網路裝置可經組態以使用出口處之虛擬輸出佇列作為本端輸出佇列。例如,該網路裝置可經組態以針對一封包轉發引擎將一VOQ處之一網路封包排入佇列,且該封包轉發引擎將排程待在該封包轉發引擎之一特定埠處排入佇列之該網路封包。在此例項中,網路裝置可「回送(loopback)」資訊,該資訊指示該虛擬輸出佇列中之該網路封包且該網路封包將在該特定埠之一輸出佇列處排入佇列。依此方式,隨著更多封包轉發引擎被添加至該系統,該網路裝置可允許佇列擴展增大,同時幫助最小化跨該切換結構之隊頭阻礙。
在一個實例中,一種用於切換網路訊務之設備包含:一入口封包轉發引擎,其在電路中實施且經組態以:回應於接收一網路封包,判定用於輸出該網路封包之一出口封包轉發引擎;及將該網路封包排入佇列於一虛擬輸出佇列中用於輸出至該出口封包轉發引擎;該出口封包轉發引擎,其在處理電路中實施且經組態以回應於一第一排程事件將資訊輸出至該入口封包轉發引擎,該資訊指示該虛擬輸出佇列中之該網路封包且該網路封包待排入佇列於該出口封包轉發引擎之一輸出埠之一輸出佇列處;其中該入口封包轉發引擎進一步經組態以回應於接收該資訊:使該網路封包自該虛擬輸出佇列移出佇列;及將該網路封包排入佇列至該輸出佇列;及其中該出口封包轉發引擎進一步經組態以回應於在該第一排程事件之後之一第二排程事件:使該網路封包自該輸出佇列移出佇列;及在該輸出埠處輸出該網路封包。
在另一實例中,一種方法包含:回應於接收一網路封包且由處理電路中實施之一入口封包轉發引擎,判定用於輸出該網路封包之一出口封包轉發引擎;由該入口封包轉發引擎將該網路封包排入佇列於一虛擬輸出佇列中用於輸出至該出口封包轉發引擎;回應於一第一排程事件且由處理電路中實施之該出口封包轉發引擎,將資訊輸出至該入口封包轉發引擎,該資訊指示該虛擬輸出佇列中之該網路封包及該網路封包待排入佇列於該出口封包轉發引擎之一輸出埠之一輸出佇列處;回應於接收該資訊且由該入口封包轉發引擎使該網路封包自該虛擬輸出佇列移出佇列,且由該入口封包轉發引擎將該網路封包排入佇列至該輸出佇列;及回應於在該第一排程事件之後之一第二排程事件且由該出口封包轉發引擎,使該網路封包自該輸出佇列移出佇列,並由該出口封包轉發引擎在該輸出埠處輸出該網路封包。
在另一實例中,一種用於切換網路訊務之設備包含:複數個介面卡;一入口封包轉發引擎,其在電路中實施且經組態以:回應於用該複數個介面卡接收一網路封包,判定用於輸出該網路封包之一出口封包轉發引擎;及將該網路封包排入佇列於一虛擬輸出佇列中用於輸出至該出口封包轉發引擎;該出口封包轉發引擎,其在處理電路中實施且經組態以回應於一第一排程事件將資訊輸出至該入口封包轉發引擎,該資訊指示該虛擬輸出佇列中之該網路封包且該網路封包待排入佇列於該出口封包轉發引擎之一輸出埠之一輸出佇列處;其中該入口封包轉發引擎進一步經組態以回應於接收該資訊:使該網路封包自該虛擬輸出佇列移出佇列;及將該網路封包排入佇列至該輸出佇列;及其中該出口封包轉發引擎進一步經組態以回應於在該第一排程事件之後之一第二排程事件:使該網路封包自該輸出佇列移出佇列;及在該輸出埠處用該複數個介面卡輸出該網路封包。
在一個實例中,一種設備包含:構件,其等用於回應於接收一網路封包來判定用於輸出該網路封包之一出口封包轉發引擎;構件,其等用於將該網路封包排入佇列於一虛擬輸出佇列中用於輸出至該出口封包轉發引擎;構件,其等用於回應於一第一排程事件而輸出資訊,該資訊指示該虛擬輸出佇列中之該網路封包且該網路封包待排入佇列於該出口封包轉發引擎之一輸出埠之一輸出佇列處;構件,其等用於回應於接收該資訊而使該網路封包自該虛擬輸出佇列移出佇列,及構件,其等用於將該網路封包排入佇列至該輸出佇列;及構件,其等用於回應於在該第一排程事件之後之一第二排程事件,使該網路封包自該輸出佇列移出佇列,及構件,其等用於在該輸出埠處輸出該網路封包。
在附圖及以下描述中闡述本發明之技術之一或多個實例之細節。將自描述及附圖以及自技術方案明白該等技術之其他特徵、目的及優點。
一些系統將一經組合輸入及輸出佇列(CIOQ)用於一大佇列擴展。在CIOQ系統中,一封包緩衝區(諸如(例如)一延遲頻寬緩衝區(DBB))及輸出佇列(OQ))連同擁塞管理(CM)及階層排程一起保持在出口處。在一些實例中,一CIOQ系統可包含在入口處之細粒度佇列。據此,在CIOQ中,可在入口處使用小結構輸入佇列(IQ)(例如,每目的地封包轉發引擎一個)。使用CIOQ,佇列擴展隨著將更多封包轉發引擎添加至系統而增加,此係因為網路封包依佇列在出口處扇出。
然而,CIOQ系統可遭受結構擁塞,其可(例如)使用結構超速(例如2X)來滿足服務品質(QoS)目標來解決。當不同封包轉發引擎上之多個輸入埠試圖到達相同出口OQ時,可發生結構擁塞。在此實例中,CIOQ系統可在入口結構介面處丟棄網路封包。入口結構佇列可透過相對較小佇列(例如,儲存於晶片上記憶體(OCM)中)聚合訊務,其中僅有很少優先級約束且無每佇列QoS保證。
為避免與CIOQ系統相關聯之前述困難,一些網路裝置可使用虛擬輸出佇列。在虛擬輸出佇列中,各入口封包轉發引擎包含唯一地識別一出口OQ之一虛擬輸出佇列(VOQ)。一VOQ (例如,各封包轉發引擎上之一個VOQ)可與一OQ組合以形成佇列。入口上之VOQ可提供僅在出口處具有一小OQ之一延遲頻寬緩衝區(例如,出口處僅佇列之一頭部可用於排程至一埠)。因為DBB在虛擬輸出佇列中保持於入口處,所以此等系統可省略用於減輕跨切換結構之隊頭阻礙之技術。此隊頭阻礙可歸因於VOQ之出口排程,其與公平結構排程一起可使用很少或不使用超速。
然而,虛擬輸出佇列可缺乏OQ擴展。因為各入口封包轉發引擎可對各出口OQ使用一VOQ,所以入口封包轉發引擎上之VOQ數目判定一最大OQ擴展。因而,取代隨著更多封包轉發引擎被添加而增加佇列擴展,在CIOQ系統之情況下,VOQ系統可具有一最大數目個OQ,該數目由入口封包轉發引擎上之VOQ數目判定(例如 48,000個OQ),考慮到用於佇列之入口記憶體係有限的且可能不容易更新以增加額外儲存容量。因為OQ之總數目不隨封包轉發引擎的添加而增長,所以隨著將更多封包轉發引擎添加至一系統,每封包轉發引擎之平均OQ數目變得更小。對於一階層服務品質解決方案,使用虛擬輸出佇列之系統可將一系統中所支援之封包轉發引擎之一數目限制為一小數目(例如,4個或8個封包轉發引擎)。
本文中所描述之技術描述經組態以提供「CIOQ行為」之一系統,該「CIOQ行為」在獨立(例如,經組合緩衝區(CBUF)本端切換)及基於結構之系統中實現OQ擴展。在一些實例中,一系統可在出口處使用虛擬輸出佇列作為OQ。例如,一系統可將一網路封包排入佇列於一封包轉發引擎之一VOQ處且封包轉發引擎將排程待排入佇列於封包轉發引擎之一特定埠處之網路封包。在此例項中,系統可「回送」資訊(例如,具有封包有效負載之封包標頭、僅後設資料等),該資訊指示虛擬輸出佇列中之網路封包且該網路封包待排入佇列作為特定埠之一輸出佇列。所描述之技術可包含可使用後設資料在本端回送資訊之一系統。在一些實例中,一系統可藉由將網路封包與網路封包之一標頭及一封包有效負載一起回送來回送資訊。依此方式,隨著更多封包轉發引擎被添加至系統,系統可允許佇列擴展增加,同時幫助最小化跨切換結構之隊頭阻礙。例如,若多個流透過一入口封包轉發引擎上之一單一入口佇列聚合,但隨後在一出口封包轉發引擎處分離為單獨輸出佇列,則系統可具有一些隊頭阻礙。
圖1係繪示一例示性系統102之一方塊圖,其中網路104包含路由器106A至106B (統稱為路由器106)。裝置110A至110N (統稱為裝置110)經由路由器106連接至網路104以便存取由網路104提供之資源。裝置110之各者可為一終端使用者運算裝置,諸如一個人電腦、一膝上型電腦、一行動電話、一網路電話、一電視機上盒、一視訊遊戲系統、一銷售點裝置、一個人數位助理、一中間網路裝置、一網路器具、一超級電腦、一大型電腦、一工業機器人或能夠與網路104介接並透過網路104通信之另一類型之裝置。
網路104可包含促進由裝置110存取內容之複數個網路裝置。該複數個網路裝置之各者可包括一路由器(例如路由器106)、一開關、一伺服器、一資料庫伺服器、一集線器、一防火牆、一入侵偵測/預防(IDP)裝置及/或促進資料傳送至裝置110及自裝置110傳送資料之任何其他類型之網路設備或裝置之一者。網路104包含路由器106,其等使用各種協定(諸如邊界閘道器協定及網際網路控制訊息協定)通信以便交換路由、網路組態資訊及其他資訊。該網路可為一區域網路(「LAN」) (諸如一符記環或乙太網路)、一虛擬區域網路(「VLAN」)或另一類型之網路。該網路可包括一或多個有線或無線鏈路。例如,網路104可為包括一或多個乙太網路電纜之一乙太網路。在另一實例中,該網路可為使用無線電傳輸來傳達資訊之一無線保真(「Wi-Fi」)網路。在另一實例中,網路104可為一行動網路。儘管在圖1中被展示為一單一網路104,但網路104可包括任意數目個公共或私有互連網路,其中各種網路互連以形成一或多個虛擬網路。
網路104提供可由裝置110存取之各種資源。在圖1之實例中,網路104包含儲存或以其他方式獲取內容之內容伺服器112,該內容作為在本文中所使用之術語係指通常在一網路內傳輸及/或儲存之任何資料,諸如基於網頁之應用程式、影像、文件、網頁、視訊資料、音訊資料(例如語音)、基於網頁之遊戲、指令碼或任何其他類型之基於網路之內容。網路104可支援多播技術以提高用網路傳輸之資料之遞送效率。通常,網路104亦將連接至各種其他類型之裝置(例如,文件伺服器、印表機、電話及電子郵件及其他應用程式伺服器)。網路104亦被展示為經由路由器106B耦合至公共網路114 (例如網際網路)。公共網路114可包含(例如)一或多個客戶端運算裝置。公共網路114可提供對網頁伺服器、應用程式伺服器、公共資料庫、媒體伺服器、終端使用者裝置及許多其他類型之網路資源裝置及內容之存取。
網路104可使用一或多個基於封包之協定(諸如一網際網路協定(IP)/傳輸控制協定(TCP))透過路由器106A將內容傳輸至裝置110。在此方面中,網路104可支援經由離散資料單元(通常指稱「網路封包」或簡稱為「封包」)之資料之傳輸。因此,網路104可指稱一「基於封包」或「封包切換」網路。儘管在本發明中被描述為傳輸、傳遞或以其他方式支援封包,然網路104可根據由任何其他協定界定之任何其他離散資料單元(諸如由異步傳送模式(ATM)協定界定之一單元或由使用者資料報協定(UDP)界定之一資料報)來傳輸資料。
由網路104遞送之網路訊務可根據數個類別分類。例如,內容伺服器112可透過路由器106A將即時視訊串流至裝置110之一者。傳輸此視訊之封包可分類為串流多媒體封包。內容伺服器112亦可使用HTTP封包將網頁發送至裝置110之一者。作為另一實例,由路由器106交換之資訊可經分類為網路管理訊務。除按應用分類外,網路訊務亦可按源或目的地、使用者、協定及埠(對於TCP及UDP)以及其他特性分類。
各種類別之網路訊務可需要一定等級之網路效能。例如,串流多媒體可需要經保證頻寬以提供一可接受使用者體驗。作為另一實例,網路管理訊務應經歷低延遲以便維持一網路之效率。而且,網際網路服務提供者(ISP)可基於一服務提供者協議將某些使用者之訊務優先於其他者。為滿足此等要求,網路104包含根據數個預定義服務品質(QoS)等級來支援QoS保證之機構。
路由器106接收、分析及分類封包以將封包指派給一合適優先級。除對封包分類外,路由器106根據其等優先級處理所接收並分類之封包。依此方式,路由器106實施由網路104提供之QoS保證之態樣。另外,基於自系統102中之其他裝置接收之資訊,路由器106為各所接收封包判定透過系統之適當路由,並相應地轉發該封包。
路由器106可調節傳輸封包的一速度以防止網路上之溢流(flooding)。例如,路由器106可包含一符記桶整形器,該符記桶整形器花費「符記」以使一對應數量之位元組自一佇列移出佇列並將其透過網路傳輸,且若符記桶整形器沒有足夠符記來花費,則可不傳輸封包。換言之,各符記可對應於符記桶整形器經容許自佇列移出佇列並透過網路傳輸之位元組之一數目。依此方式,符記桶整形器用於調節封包自佇列移除並在網路上傳輸之速度。
一些路由器可使用一CIOQ技術,該技術使用一延遲頻寬緩衝區及連同擁塞管理及階層排程將封包保持於出口處之輸出佇列。在此實例中,一CIOQ系統可在入口處使用結構輸入佇列(例如,每目的地封包轉發引擎一個佇列)。因而,因為網路封包在每佇列之出口處扇出,所以佇列擴展隨著將更多封包轉發引擎添加至CIOQ系統而增加。然而,CIOQ系統可遭受結構擁塞,其可(例如)使用結構超速(例如2X)來滿足服務品質(QoS)目標來解決。當不同封包轉發引擎上之多個輸入埠試圖到達相同出口OQ時,可發生結構擁塞。在此實例中,CIOQ系統可在入口結構介面處丟棄網路封包。入口結構佇列可透過相對較小之佇列(例如,儲存於晶片上記憶體(OCM)中)聚合訊務,其中僅有很少優先級約束且無每佇列QoS保證。
一些網路裝置可使用虛擬輸出佇列。在虛擬輸出佇列中,一路由器可使用唯一地識別一出口OQ之一虛擬輸出佇列(VOQ)。一VOQ (例如,各封包轉發引擎上之一個VOQ)可與一OQ組合以形成佇列。入口上之VOQ可提供僅在出口處具有一小OQ之一延遲頻寬緩衝區(例如,僅佇列之一頭部處可在出口處用於排程至一埠)。因為延遲頻寬緩衝區在虛擬輸出佇列中保持於入口處,所以使用VOQ技術之系統可省略用於減輕跨切換結構之隊頭阻礙之技術。然而,經組態以使用虛擬輸出佇列之路由器可缺少OQ擴展。因為各入口封包轉發引擎可對各出口OQ使用一VOQ,所以入口封包轉發引擎上之VOQ數目判定一最大OQ擴展。
根據本發明之技術,路由器106可經組態以提供「CIOQ行為」,其實現獨立(例如,經組合緩衝區(CBUF)本端切換)及基於結構之系統中之OQ擴展。例如,路由器106A可經組態以在出口處使用虛擬輸出佇列作為OQ。例如,路由器106A可經組態以使一網路封包在一出口封包轉發引擎之一VOQ處排入佇列,且出口封包轉發引擎將排程待在封包轉發引擎之一特定埠處排入佇列之網路封包。在此例項中,路由器106A可將資訊「回送」至一入口封包轉發引擎,該資訊指示虛擬輸出佇列中之網路封包及該網路封包將在特定埠之一輸出佇列處排入佇列。所描述之技術可包含可使用後設資料在本端回送資訊之一系統。在一些實例中,路由器106A可藉由使網路封包與網路封包之一標頭及一封包有效負載一起回送來回送資訊。依此方式,路由器106A可允許佇列擴展隨著將更多封包轉發引擎添加至系統而增加,同時幫助最小化跨切換結構之隊頭阻礙。
在操作中,路由器106A可回應於接收一網路封包而判定用於輸出網路封包之一出口封包轉發引擎。例如,路由器106A可判定路由器106A之一出口封包轉發引擎。在一些實例中,路由器106A可判定對應於下一跳躍之出口封包轉發引擎。例如,路由器106A可回應於判定網路封包之一封包標籤指定一IP地址而判定網路封包之下一跳躍。在此例項中,路由器106A可判定指派給對應於網路封包之下一跳躍之一埠的出口封包轉發引擎。
路由器106A可將網路封包排入佇列於一虛擬輸出佇列中用於輸出至出口封包轉發引擎。例如,路由器106A將網路封包(例如,封包有效負載、封包標頭等)儲存於虛擬輸出佇列處。回應於一第一排程事件,路由器106A可將資訊輸出至入口封包轉發引擎,該資訊指示虛擬輸出佇列中之網路封包且該網路封包待排入佇列於出口封包轉發引擎之一輸出埠之一輸出佇列處。例如,路由器106A可使用針對不同類型之封包流及/或一移出佇列速率之服務品質來判定以排程網路封包用於由出口封包轉發引擎佇列化用於由出口封包轉發引擎處理。為輸出資訊,路由器106A可經由出口路由器之一埠將一網路封包、網路封包之一封包有效負載及包含資訊之網路封包之一標頭輸出至入口路由器之一埠。在一些實例中,為輸出資訊,路由器106A可使用本端切換(例如,使用一經組合緩衝區)來輸出後設資料,而不輸出封包有效負載。
回應於接收資訊,路由器106A之入口封包轉發引擎可使網路封包自虛擬輸出佇列移出佇列。例如,路由器106A可自虛擬輸出佇列移除網路封包(例如,封包有效負載及封包標頭)及/或表示網路封包之一指針。路由器106A可將網路封包排入佇列至輸出佇列。例如,路由器106A可將網路封包及/或表示網路封包之一指針添加至輸出佇列。
回應於在第一排程事件之後之一第二排程事件,路由器106A可使網路封包自輸出佇列移出佇列且在輸出埠處輸出網路封包。例如,路由器106A可使用針對不同類型之封包流及/或一移出佇列速率之服務品質來判定以排程網路封包用於由出口封包轉發引擎佇列化於輸出埠之一輸出佇列處。回應於第二排程事件,路由器106A可在輸出埠處輸出網路封包(例如,封包有效負載及封包標頭),且自輸出埠之輸出佇列移除網路封包(例如,封包有效負載及封包標頭)及/或表示網路封包之一指針。
依此方式,與使用VOQ之路由器相比,路由器106A可具有更高可擴展性。例如,使用本文中所描述之技術,路由器106A可增加輸出佇列擴展,此可幫助支援更大數目個客戶,藉此改良一路由器之一操作。例如,假設四個封包轉發引擎之各封包轉發引擎支援48,000個佇列,則使用VOQ技術之四個封包轉發引擎之組合可僅支援48,000個佇列。然而,根據本發明之技術,使用經組合緩衝區技術之四個封包轉發引擎之組合可支援192,000個佇列(即4x48,000),其可允許路由器支援額外客戶,且因此可改良路由器106A之一效能。在一些實例中,與經組態以使用CIOQ之路由器相比,路由器106A可具有一較低產品成本。另外,本文中所描述之技術可與VOQ技術及/或CIOQ一起使用。例如,路由器106A可將VOQ用於面向網際網路之訊務及使用一經組合緩衝區用於來自網際網路之入站訊務(例如,用於客戶佇列)之本文中所描述之技術。
路由器106可使用本文中所描述之技術來將一虛擬輸出佇列用作一輸出佇列。然而,在一些實例中,一些路由器106可使用其他技術,諸如(例如)虛擬輸出佇列、CIOQ或另一佇列技術。儘管參考路由器106討論本文中所描述之原理,然其他網路裝置(諸如(例如(但不限於)一異步傳送模式(ATM)開關、一區域網路(LAN)開關、一介面卡、一閘道器、一防火牆或系統102之另一裝置)可判定一預測壽命。
圖2係繪示根據本發明之技術之圖1之網路104內之一實例路由器206的一方塊圖。一般而言,路由器206可實質上類似於圖1之路由器106來操作。在此實例中,路由器206包含介面卡230A至230N (「IFC 230」),該等介面卡230A至230N經由傳入鏈路232A至232N (「傳入鏈路232」)接收網路封包且經由出站鏈路234A至234N (「出站鏈路」234」)發送網路封包。IFC 230可經由數個介面埠耦合至鏈路232、234。路由器206可包含一控制單元222,該控制單元222判定所接收封包之路由且相應地經由與控制單元222通信之IFC 230轉發封包。
控制單元222包含一路由引擎224及一封包轉發引擎226。路由引擎224作為路由器206之控制平面操作且包含一操作系統(未展示),該操作系統提供一多任務操作環境用於執行數個並發程序。路由引擎224 (例如)執行軟體指令以實施一或多個控制平面網路協定246。例如,協定246可包含一或多個路由協定(諸如BGP 252)用於與其他路由裝置交換路由資訊並用於更新路由資訊庫(RIB) 242。協定246可進一步包含輸送協定(諸如多協定標籤切換(MPLS)協定250)及多播管理協定(諸如網際網路群組管理協定(IGMP) 256)。在其他實例中,協定246可包含其他路由、輸送、管理或通信協定。
在一些實例中,路由引擎224包含命令線介面(CLI) 240以容許一管理員組態及/或管理路由器206。例如,管理員可經由CLI 240存取佇列管理器264以組態封包轉發引擎226之一或多個參數。在另一實例中,路由引擎224包含一圖形使用者介面(GUI)而非一CLI。在又進一步實例中,路由引擎執行簡單網路管理協定(SMNP) 254以容許管理員自一遠端端子組態及/或控制路由器206。
路由協定常駐程式(RPD) 244可執行BGP 252或其他路由協定以更新RIB 242。RIB 242描述路由器206所駐留之電腦網路之一拓撲,且亦包含透過電腦網路之路由。RIB 242描述電腦網路內之各種路由,及各路由之適當下一跳躍,即沿路由之各者之鄰近路由裝置。RPD 244分析儲存於RIB 242中之資訊並產生用於封包轉發引擎226之轉發資訊,該封包轉發引擎226將轉發資訊儲存於轉發資訊庫(FIB) 260中。換言之,RPD 244可解析由RIB 242儲存之路由資訊以獲得識別網路內各目的地之一下一跳躍之轉發資訊,並將該轉發資訊儲存至FIB 260。
經組合緩衝區(「CBUF」) 265可充當路由器206之封包轉發引擎226之佇列儲存。CBUF 265可包含本端記憶體(例如,晶片上記憶體(OCM))及/或外部記憶體(例如,高頻寬記憶體(HBM))。根據本發明之技術,CBUF 265可儲存用於路由器206之佇列。在一些實例中,CBUF 265包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可擦除可程式化唯讀記憶體(EPROM)、電可擦除可程式化唯讀記憶體(EEPROM)、快閃記憶體、包括用於致使一或多個處理器執行歸於其等之動作之可執行指令。
CBUF 265可包含一或多個佇列,其或其等係用於組織及暫時儲存資料之一先進先出(FIFO)資料結構。在圖2之實例中, CBUF 265之佇列可儲存用於路由器206之一或多個網路封包。例如,路由器206可在內部地在封包轉發引擎226之間切換之前將一或多個封包儲存於CBUF 265之一或多個佇列中。在另一實例中,在透過網路傳輸網路封包之前,路由器206可將一或多個封包儲存於CBUF 265之一或多個佇列中。
例如,CBUF 265可包含虛擬輸出佇列227A至227N (在本文中統稱為「VOQ 227」)及/或輸出佇列219A至219N (在本文中統稱為「OQ 219」)。在一些實例中,可將VOQ 227之各VOQ指派給封包轉發引擎226之一各自封包轉發引擎。例如,可將VOQ 227A指派給封包轉發引擎226之一第一封包轉發引擎,可將VOQ 227B指派給封包轉發引擎226之一第二封包轉發引擎,等等。可將OQ 219之各OQ指派給封包轉發引擎226之封包轉發引擎之一各自埠。例如,可將OQ 219A指派給封包轉發引擎226之一第一封包轉發引擎之一第一埠,可將OQ 219B指派給第一封包轉發引擎之一第二埠,等等。
封包轉發引擎226操作為路由器206之資料平面且包含FIB 260、整形器信用更新引擎262及佇列管理器264。例如,封包轉發引擎226處理由路由器206經由IFC 230轉發及接收之封包。例如,封包轉發引擎226可將過濾器及路由策略應用於外發封包並將封包轉發至網路中之一下一跳躍。在一些實例中,控制單元222包含複數個封包轉發引擎,該等封包轉發引擎之各者經組態以類似於封包轉發引擎226操作以為網路訊務之不同流提供封包轉發功能。如本文中所使用,入口封包轉發引擎及出口封包轉發引擎僅係用於提供與一特定網路封包有關之上下文之術語。即,所有封包轉發引擎226可在接收封包時充當一入口封包轉發引擎,且在傳輸網路封包時充當一出口封包轉發引擎。在一些實例中,一單一封包轉發引擎可同時充當一單一封包之入口封包轉發引擎及出口封包轉發引擎。
FIB 260可(例如)將網路訊務之網路目的地與特定下一跳躍及對應IFC 230及用於輸出鏈路234之實體輸出埠相關聯。FIB 260可為經程式化為專用轉發晶片之一數基樹、一系清單、一複雜資料庫、一鏈路清單、一數基樹、一資料庫、一平面檔案,或各種其他資料結構。在一些實例中,FIB 260包含查找結構。給定一鍵(諸如一位址),查找結構可提供一或多個值。在一些實例中,一或多個值可為一或多個下一跳躍。一下一跳躍可經實施為微碼,其在被執行時執行一或多個操作。一或多個下一跳躍可經「鍊接」,使得一組經鍊接下一跳躍在被執行時針對各自不同下一跳躍執行一組操作。此等操作之實例可包含將一或多個服務應用於一網路封包、丟棄一網路封包及/或使用一介面及/或由一或多個下一跳躍識別之介面來轉發一網路封包。如所展示,FIB 260可包含一入口封包處理器(IPP) 261及一出口封包處理器(EPP 263)。IPP 261可判定充當一網路封包之一出口封包轉發引擎的封包轉發引擎226之一封包轉發引擎。EPP 263可在出口處判定輸出佇列轉發統計。
封包轉發引擎226之佇列管理器264可與整形器信用更新引擎262一起工作以執行VOQ 227及OQ 219之管理功能。例如,整形器信用更新引擎262可實施符記桶整形器資料結構來判定VOQ 227之移出佇列速率。在此實例中,佇列管理器264可使用由整形器信用更新引擎262指定之移出佇列速率來調節至VOQ 227之一網路封包流。類似地,整形器信用更新引擎262可實施符記桶整形器資料結構來判定OQ 219之移出佇列速率。在此實例中,佇列管理器264使用由整形器信用更新引擎262指定之移出佇列速率來調節來自OQ 219之網路封包流。進一步參考圖3描述整形器信用更新引擎262。
根據本文中所描述之技術,封包轉發引擎226可經組態以將VOQ 227 (例如入口VOQ)重用作為出口OQ。例如,封包轉發引擎226之一第一封包轉發引擎可充當使用VOQ 227A作為一入口VOQ之一入口封包轉發引擎。在此實例中,VOQ 227可由封包轉發引擎226之一第二封包轉發引擎「重新使用」作為一出口OQ。在此例項中,出口封包轉發引擎可將資訊「回送」至入口封包轉發引擎,該資訊指示VOQ 227中之網路封包且該網路封包待排入佇列於特定埠之一OQ 219A處。在一些實例中,封包轉發引擎226之一或多個封包轉發引擎可在入口處使用VOQ 227作為VOQ。因為OQ之總數目隨著封包轉發引擎之添加而增長,所以隨著更多封包轉發引擎被添加至一系統,每封包轉發引擎之OQ之平均數目變得更大。依此方式,當將多個封包轉發引擎被添加至一系統時,可發生OQ擴展(例如,每封包轉發引擎40,000個)。
OQ 219之各OQ可經排程至一出口埠,該出口埠可將佇列放置於一出口埠處。封包轉發引擎226之入口封包轉發引擎可使用OQ來支援每目的地封包轉發引擎之少量結構輸入佇列(例如,VOQ 227之一者)。例如,佇列管理器264可以優先級(例如,每目的地封包轉發引擎最多8個優先級)對每目的地封包轉發引擎回送通道使用一個VOQ。在一些實例中,IPP 261可執行一查找以判定封包轉發引擎226之一出口封包轉發引擎及每出口輸出埠之OQ (例如VOQ)。例如,IPP 261可在自入口發送至出口之一網路封包前置附加項(prepend)中插入出口處之一OQ之一VOQ數目。
整形器信用更新引擎262可包含一授權排程器(GS) 272,該授權排程器(GS) 272在出口處亦指稱「排程器272」,其可經組態以排程自VOQ至結構以及自OQ至埠之網路封包。例如,排程器272可將結構封包/頁自一入口封包轉發引擎排程至一出口封包轉發引擎。排程器272可經組態以排程自OQ至出口封包轉發引擎上之埠之網路封包。
排程器272可將具有OQ之一出口封包轉發引擎直接排程至埠。例如,排程器272可包含一8K佇列且存在五個8K佇列(例如, 5×8K係每封包轉發引擎40K OQ)。在此例項中,排程器272可不將結構用於針對確定性行為排程至埠。
路由器206可經組態以在一相同系統中支援VOQ及OQ之混合。例如,路由器206可經組態使得當支援每埠之小佇列時,一些結構目的地可為「典型」VOQ/OQ組合,且當需要每埠之更大佇列時,其他目的地可為OQ。在一些實例中,路由器206可使用一出口封包轉發引擎上之現有封包回送路徑以依對支援OQ之設計之最小改變,但依可能經減小頻寬(例如,參見圖4、圖5、圖6)將封包排入佇列至一OQ中。在一些實例中,路由器206可經組態使得自結構到達之網路封包在出口封包轉發引擎上經回送以執行丟棄檢查及排入佇列(NQ)至OQ,而無需任何新資料路徑。在此實例中,排程器272可將OQ直接排程至埠。
路由器206可在出口處使用專用資料路徑以達成全效能(例如,參見圖6、圖7、圖8)。例如,路由器206可經組態使得首先使用丟棄檢查來檢查自結構到達之網路封包以准入至OQ,且若允許,則將其等排入佇列至OQ。在此實例中,排程器272可自OQ直接排程至埠。依此方式,本文中所描述之技術可在一出口封包轉發引擎處使用「本端切換」,其可允許網路封包在入口處被接收且直接移動至出口而無需通過結構。
在操作中,封包轉發引擎226之一入口封包轉發引擎可回應於接收一網路封包而判定用於輸出網路封包之封包轉發引擎226之一出口封包轉發引擎。例如,入口封包轉發引擎可判定用於輸出網路封包之入口封包轉發引擎226之一出口封包轉發引擎。FIB 260可判定對應於一下一跳躍之出口封包轉發引擎。例如,FIB 260可回應於判定網路封包之一封包標籤指定一IP位址而判定網路封包之一下一跳躍。在此例項中,FIB 260可判定指派給對應於網路封包之下一跳躍之一埠的一出口封包轉發引擎。
入口封包轉發引擎可將網路封包排入佇列於VOQ 227A中用於輸出至出口封包轉發引擎。例如,入口封包轉發引擎將網路封包(例如,封包有效負載、封包標頭等)儲存於VOQ 227A處。回應於一第一排程事件,入口封包轉發引擎226之一出口封包轉發引擎可將資訊輸出至入口封包轉發引擎,該資訊指示VOQ 227A中之網路封包且該網路封包待排入佇列於出口封包轉發引擎之一輸出埠之OQ 219A處。例如,排程器272可使用針對不同類型之封包流及/或一移出佇列速率之服務品質來判定以排程網路封包用於由出口封包轉發引擎佇列化用於由出口封包轉發引擎處理。為輸出資訊,出口封包轉發引擎可經由出口路由器之一埠將一網路封包、該網路封包之一封包有效負載及包含該資訊之網路封包之一標頭輸出至入口路由器之一埠。在一些實例中,為輸出資訊,出口封包轉發引擎可使用本端切換(例如,使用CBUF 265)輸出後設資料而不輸出封包有效負載。
回應於接收資訊,入口封包轉發引擎可使網路封包自VOQ 227A移出佇列。例如,入口封包轉發引擎可自VOQ 227A移除網路封包(例如,封包有效負載及封包標頭)及/或表示網路封包之一指針。入口封包轉發引擎可將網路封包排入佇列至OQ 219A。例如,入口封包轉發引擎可將網路封包及/或表示網路封包之一指針添加至OQ 219A。
回應於在第一排程事件之後之一第二排程事件,出口封包轉發引擎可使網路封包自OQ 219A移出佇列,且在輸出埠(例如,與IFC 230A之鏈路232A)處輸出網路封包。例如,排程器272可使用針對不同類型之封包流及/或一移出佇列速率之服務品質來判定以排程網路封包用於由出口封包轉發引擎在輸出埠之OQ 219A處佇列化。回應於第二排程事件,出口封包轉發引擎可在輸出埠處輸出網路封包(例如,封包有效負載及封包標頭)且自輸出埠之OQ 219A移除網路封包(例如,封包有效負載及封包標頭)及/或表示網路封包之一指針。
依此方式,與使用VOQ之路由器相比,路由器206可具有更高可擴展性。例如,使用本文中所描述之技術,路由器206可增加輸出佇列擴展,此可幫助支援更大數目個客戶,藉此改良一路由器之一操作。例如,假設四個封包轉發引擎之各封包轉發引擎支援48,000個佇列,則使用VOQ技術之四個封包轉發引擎之組合可僅支援48,000個佇列。然而,根據本發明之技術,使用經組合緩衝區技術之四個封包轉發引擎之組合可支援192,000個佇列(即4x48,000),此可允許路由器206支援額外客戶。在一些實例中,與經組態以使用CIOQ之路由器相比,路由器206可具有一較低產品成本。另外,本文中所描述之技術可與VOQ技術及/或CIOQ一起使用。例如,路由器206可將VOQ用於面向網際網路之訊務及使用一經組合緩衝區用於來自網際網路之入站訊務(例如,用於客戶佇列)之本文中所描述之技術。
圖3係繪示根據本發明之技術之圖2之一實例整形器信用更新引擎262的一方塊圖。在一個實例實施方案中,整形器信用更新引擎262包含速率輪(rate wheel) 370及排程器272。網路裝置可包含整形器信用更新引擎262以調節傳輸封包之一速度以防止在網路上之溢流。
速率輪370向排程器272提供信用更新。排程器272可使用信用來判定何時容許佇列/節點資料結構388傳輸由佇列/節點資料結構388排入佇列之一或多個位元組。在圖3之實例中,速率輪370包含速率指令374及更新速率376。速率指令374將「保證」(G)及「最大」(M)信用欄位378之速率更新提供至排程器272之信用加法器382。可使用G信用以分配一經保證頻寬量給佇列/節點資料結構388,除非為網路之G速率被超額預訂。M信用可用作一速率限制以防止佇列/節點資料結構388超過一指定平均傳輸速率。
另外,更新速率376表示由速率輪370更新信用之一速率。更新速率376向佇列/節點資料結構388提供一正規化移出佇列速率。在圖3之實例中,更新速率376係速率輪370之一速率更新週期之倒數。在一些實例中,排程器272應用一低通濾波器以平滑化移出佇列速率之瞬時變化。
排程器272包含信用加法器382、信用更新器386、速率更新器392及佇列/節點資料結構388。排程器272之信用加法器382基於來自片段(clip) 380之輸入,使用MUX 384向速率更新器392提供額外信用,該速率更新器392繼而向佇列/節點資料結構388提供此等額外G/M信用390。取決於當前信用及片段380之值,速率更新器392可向佇列/節點資料結構388之G/M信用390添加一些、全部信用或不添加任何信用。排程器272使用G/M信用390來判定何時容許傳輸佇列/節點資料結構388。在一些實例中,當佇列/節點資料結構388之G/M信用390為非負時,排程器272可使來自佇列/節點資料結構388之封包移出佇列或傳輸該等封包。在使來自佇列/節點資料結構388之封包移出佇列並傳輸該等封包時,信用更新器386自佇列/節點資料結構388之G/M信用390移除一對應數目個信用。一旦佇列/節點資料結構388之G/M信用390為負,佇列/節點資料結構388便變得無資格使後續封包移出佇列或傳輸後續封包。在累積G/M信用390之一非負值之後,佇列/節點資料結構388再次變得被容許使封包移出佇列或傳輸封包。
圖4係繪示根據本發明之技術之用於使用回送來切換本端網路訊務之一實例第一路由器206的一方塊圖。圖4繪示埠407A至407B、409A至409B、417A至417B、419A至419B,其等可各表示單一埠、一埠群組(PG)或其他埠。另外,圖4繪示擁塞管理器405,其可經組態以執行一網路封包丟棄檢查。
擁塞管理器405可藉由首先學習一各自網路封包之一網路封包大小、各自網路封包之一優先級及各自網路封包之一丟棄偏好來檢查到達一佇列(例如,VOQ 227A、OQ 219A等)處之各網路封包以准入。例如,擁塞管理器405可藉由查看一當前佇列長度來檢查各網路封包以查看該網路封包是否將超過一丟棄臨限值,例如,不合適。在此實例中,若擁塞管理器405判定網路封包將超過丟棄臨限值,則擁塞管理器405可丟棄網路封包(例如,不寫入至佇列)。若擁塞管理器405判定網路封包將不超過丟棄臨限值(例如,網路封包未被丟棄),則擁塞管理器405可將網路封包准入至佇列。除尾部丟棄臨限值外,擁塞管理器405可將一網路封包與加權隨機早期偵測(WRED)臨限值進行比較,該等臨限值基於優先級及丟棄偏好判定丟棄之一隨機概率。
如所展示,路由器206包含經組態以自結構(例如,網路104、網際網路等)接收網路封包之一結構輸入441及經組態以將網路封包輸出至結構之一結構輸出443。為避免對一額外丟棄檢查及排入佇列頻寬之需要,圖4展示一路由器206,其經組態以使用封包轉發引擎226上之回送用於出口OQ。在圖4之實例中,封包轉發引擎226A可操作為一入口封包轉發引擎,且封包轉發引擎226B操作為一出口封包轉發引擎。封包轉發引擎226上之回送路徑471可幫助保留現有資料路徑。在此實例中,網路封包可到達封包轉發引擎226A輸入埠且路由器206可使用「本端切換」(例如,在不使用結構輸入441、結構輸出443等之情況下)移動至網路封包以在無需結構之情況下對外傳輸。因為一半之PG可用於回送以模擬OQ擴展封包轉發引擎,所以一總輸出率之僅一半可用於網路封包轉發。網路封包可透過CBUF 265及入口封包轉發引擎226A及出口封包轉發引擎226B進行兩次往返(trip),此可減少封包轉發引擎226之輸出率。
圖4展示使用CBUF 265之一本端切換實例。在圖4之實例中,當透過一PG (例如埠409B)自出口回送至入口時,封包經保留於標頭資訊中。在此實例中,在入口處進入一輸入埠(例如埠407A)之一網路封包透過CBUF 265切換至具有目的地輸出埠之封包轉發引擎226B,回送至入口封包轉發引擎226A並儲存於VOQ 227A中。出口處之排程器272排程自VOQ 227A至埠419A之讀取,此經由後設資料完成,此係因為實際封包資料保留在CBUF 265中,直至在出口處在發送至EPP 263之前被讀出為止。
根據本發明之技術,入口封包轉發引擎226A可回應於接收一網路封包而判定用於輸出一網路封包之一出口封包轉發引擎。入口封包轉發引擎226A可將網路封包排入佇列於虛擬輸出佇列227A中用於輸出至出口封包轉發引擎。例如,入口封包轉發引擎226A可將網路封包排入佇列於入口封包轉發引擎226A之虛擬輸出佇列227A中用於輸出至出口封包轉發引擎226B。
出口封包轉發引擎226B可回應於一第一排程事件(例如,由排程器272判定)而將具有包括資訊之一標頭之網路封包輸出至入口封包轉發引擎226A,該資訊指示VOQ 227A中之網路封包及網路封包待排入佇列於出口封包轉發引擎226B之一輸出埠之OQ 219A處。例如,排程器272可基於VOQ 227A處之一移出佇列速率來判定第一排程事件。
排程器272可維持每佇列整形及優先級資訊。當一佇列(例如,VOQ 227A、OQ 219A等)變為非空時,排程器272可依經組態佇列優先級將佇列安裝於排程器階層(例如,「排入佇列」)中。當不滿足速率整形要求時(例如,佇列尚未傳輸足夠資料,且該佇列處於當前可服務優先級),則排程器272可選擇由排程器272服務之佇列(例如,「移出佇列」)。一旦一佇列已滿足整形要求(例如,滿足整形速率),排程器272便可將該佇列自服務移除,直至佇列接收額外或新整形信用並可再次恢復傳輸之一時間為止。排程器272可判定一佇列在一時間週期內接收之整形信用之一數量以判定該佇列之一速率。
出口封包轉發引擎226B可將具有標頭之網路封包自出口封包轉發引擎226B之一第一埠(例如埠417B)輸出至入口封包轉發引擎226A之一第二埠(例如409B)。入口封包轉發引擎226B可回應於接收具有頭部之網路封包而對網路封包執行一丟棄檢查。
回應於接收具有標頭之網路封包,入口封包轉發引擎226A可使網路封包自虛擬輸出佇列227A移出佇列並將網路封包排入佇列至輸出佇列219A。回應於在第一排程事件之後之一第二排程事件,出口封包轉發引擎226B可使網路封包自輸出佇列227A移出佇列且在輸出埠(例如輸出埠419A)處輸出網路封包。例如,排程器272可基於OQ 219A處之一移出佇列速率來判定第二排程事件。儘管排程器272可使用來自來自多個封包轉發引擎(例如,封包轉發引擎226A、封包轉發引擎226B等)之佇列之資訊來判定第一排程事件,但排程272可僅使用封包轉發引擎226B上之佇列之資訊來判定第二排程事件。因而,第一排程事件可被視作一「粗略」排程,而第二排程事件可被視作一「精細」排程。
圖5係繪示根據本發明之技術之用於使用網路封包回送來將結構網路訊務切換至出口之一實例路由器的一方塊圖。圖5展示沿路徑473之網路切換,其中一網路封包到達埠407A且在入口處經儲存於CBUF 265中,明確言之經儲存於VOQ 227A中。稍後時間(例如,在一排程事件期間),封包轉發引擎226A自CBUF 265讀出網路封包並將網路封包輸出至結構輸出443以將網路封包跨結構發送至一目的地封包轉發引擎。
圖6係繪示根據本發明之技術之用於使用網路封包回送來自入口切換結構網路訊務之一實例路由器的一方塊圖。圖6展示沿路徑475之一網路切換,其中一網路封包藉由排程器272跨結構到達(例如,由結構輸入441讀取)且到達出口封包轉發引擎226B。出口封包轉發引擎226B將網路封包儲存於CBUF 265中之OQ 219A中。排程器272讀出網路封包並將網路封包透過出口PG (例如埠417B)回送至入口封包轉發引擎226A至入口PG (例如埠407B)。
例如,出口封包轉發引擎226B可回應於一第一排程事件(例如,由排程器272判定)而將具有包括資訊之一標頭之網路封包輸出至入口封包轉發引擎226A,該資訊指示VOQ 227A中之網路封包且網路封包待排入佇列於出口封包轉發引擎226B之一輸出埠之OQ 219A處。例如,出口封包轉發引擎226B可將具有標頭之網路封包自出口封包轉發引擎226B之一第一埠(例如埠417B)輸出至入口封包轉發引擎226A之一第二埠(例如409B)。入口封包轉發引擎226B可回應於接收具有標頭之網路封包而對網路封包執行一丟棄檢查。
回應於接收具有標頭之網路封包,入口封包轉發引擎226A可使網路封包自虛擬輸出佇列227A移出佇列並將網路封包排入佇列至輸出佇列219A。例如,入口封包轉發引擎226A之IPP 261將網路封包儲存於入口VOQ (例如VOQ 227)中。排程器272可稍後藉由出口GS將網路封包排程至埠(例如埠417A)。例如,回應於在第一排程事件之後之一第二排程事件,出口封包轉發引擎226B可使網路封包自輸出佇列227A移出佇列且在輸出埠(例如輸出埠419A)處輸出網路封包。
圖7係繪示根據本發明之技術之用於使用後設資料回送來切換本端網路訊務之一實例路由器206的一方塊圖。圖7繪示一實例路由器206,其藉由僅將封包標頭及後設資料自出口封包轉發引擎226B再循環至入口封包轉發引擎226A,而一旦將封包儲存於CBUF中便使用一回送。圖7展示路由器206經組態用於出口OQ。到達入口輸入埠(例如埠407A、407B、409A、409B等)之網路封包可使用「本端切換」來移動至出口,而無需結構(例如,結構輸入441、結構輸出443等)。
根據本發明之技術,入口封包轉發引擎226A可回應於接收一網路封包而判定用於輸出一網路封包之一出口封包轉發引擎。入口封包轉發引擎226A可將網路封包排入佇列於虛擬輸出佇列227A中用於輸出至出口封包轉發引擎。例如,入口封包轉發引擎226A可將網路封包排入佇列於虛擬輸出佇列227A中用於輸出至出口封包轉發引擎226B。
出口封包轉發引擎226B可將包括資訊之後設資料輸出至入口封包轉發引擎226A且抑制將網路封包(例如,封包有效負載)輸出至入口封包轉發引擎226A,該資訊指示VOQ 227A中之網路封包且該網路封包待排入佇列於出口封包轉發引擎226B之一輸出埠(例如埠419A)之OQ 219A處。例如,出口封包轉發引擎226B可使用本端切換(例如,使用CBUF 265)將標頭資料及/或後設資料輸出至入口封包轉發引擎。
回應於接收後設資料,入口封包轉發引擎226A可將網路封包自虛擬輸出佇列227A移出佇列且將網路封包排入佇列至輸出佇列219A。回應於在第一排程事件之後之一第二排程事件,出口封包轉發引擎226B可使網路封包自輸出佇列227A移出佇列且在輸出埠(例如輸出埠419A)處輸出網路封包。
圖8係繪示根據本發明之技術之用於使用後設資料回送自入口切換結構網路訊務之一實例路由器的一方塊圖。結構輸入441自結構接收網路封包且擁塞管理器405執行一丟棄檢查。若擁塞管理器405判定允許網路封包,則入口封包轉發引擎226A將網路封包排入佇列至OQ 219A用於排程至埠(例如埠417A)。圖8展示用以支援經組合輸入佇列及OQ模型之通過路由器206之路徑479。然而,除來自入口封包轉發引擎226A上之本端切換埠之彼等封包外,此可使用一額外丟棄檢查及佇列頻寬以便將來自結構之網路封包儲存於CBUF 265中。
出口封包轉發引擎226B可回應於一第一排程事件而將包括資訊之後設資料輸出至入口封包轉發引擎226A且抑制將網路封包(例如封包有效負載)輸出至入口封包轉發引擎226A,該資訊指示VOQ 227A中之網路封包且網路封包待排入佇列於出口封包轉發引擎226B之一輸出埠(例如埠419A)之OQ 219A處。例如,出口封包轉發引擎226B可使用本端切換(例如,使用CBUF 265)將標頭資料及/或後設資料輸出至入口封包轉發引擎。
回應於接收後設資料,入口封包轉發引擎226A可使網路封包自虛擬輸出佇列227A移出佇列並將網路封包排入佇列至輸出佇列219A。回應於在第一排程事件之後之一第二排程事件,出口封包轉發引擎226B可使網路封包自輸出佇列227A移出佇列且在輸出埠(例如輸出埠419A)處輸出網路封包。
圖9係繪示根據本發明之技術之用於切換網路訊務之一實例第一程序的一方塊圖。入口封包轉發引擎226A可回應於接收一網路封包而判定用於輸出一網路封包之一出口封包轉發引擎(902)。例如,入口封包轉發引擎226A可判定一出口封包轉發引擎(例如出口封包轉發引擎226B)。
入口封包轉發引擎226A可將網路封包排入佇列於虛擬輸出佇列227A中用於輸出至出口封包轉發引擎(904)。例如,入口封包轉發引擎226A可將網路封包排入佇列於虛擬輸出佇列227A中用於輸出至出口封包轉發引擎226B。在一些實例中,VOQ 227A係用於入口封包轉發引擎226A及出口封包轉發引擎組之一經組合緩衝區(例如CBUF 265)。例如,入口封包轉發引擎226A可將網路封包排入佇列於指派給入口封包轉發引擎226A之虛擬輸出佇列227A之CBUF 265之一第一部分中用於輸出至出口封包轉發引擎226B。
出口封包轉發引擎226B可回應於一第一排程事件而將資訊輸出至入口封包轉發引擎226A,該資訊指示虛擬輸出佇列中之網路封包及網路封包待排入佇列於出口封包轉發引擎226B之一輸出埠之一輸出佇列處(906)。例如,出口封包轉發引擎226B可將具有包括該資訊之一標頭之網路封包輸出至入口封包轉發引擎226A。在一些實例中,出口封包轉發引擎226B可將具有包括該資訊之一標頭之網路封包輸出至入口封包轉發引擎226A。例如,出口封包轉發引擎226B可將具有標頭之網路封包自出口封包轉發引擎之一第一埠輸出至入口封包轉發引擎226A之一第二埠。入口封包轉發引擎226B可回應於接收具有標頭之網路封包而對網路封包執行一丟棄檢查。
在一些實例中,出口封包轉發引擎226B可將包括該資訊之後設資料輸出至入口封包轉發引擎226A且抑制將網路封包輸出至入口封包轉發引擎226A。例如,出口封包轉發引擎226B可使用本端切換將後設資料輸出至入口封包轉發引擎。
在一些實例中,排程器272可在出口封包轉發引擎226B處自複數個輸出埠選擇輸出埠。在此實例中,排程器272或出口封包轉發引擎226B之另一組件可基於由排程器272對輸出埠之選擇來產生資訊以指定網路封包待排入佇列於輸出佇列處。在一些實例中,排程器272可判定第一排程事件以調節自路由器206交換資料之一速度。例如,排程器272可基於OQ 219A處之一移出佇列速率來判定第一排程事件。
入口封包轉發引擎226A可回應於接收資訊而使網路封包自虛擬輸出佇列227A移出佇列(908)且將網路封包排入佇列至輸出佇列219A (910)。例如,入口封包轉發引擎226A可使網路封包自指派給虛擬輸出佇列227A之CBUF 265之第一部分移出佇列。在一些實例中,入口封包轉發引擎226A可將網路封包排入佇列至指派給輸出佇列219A之CBUF 265之一第二部分。
出口封包轉發引擎226B可回應於在第一排程事件之後之一第二排程事件而使網路封包自輸出佇列227A移出佇列(912)且在輸出埠處輸出網路封包(914)。例如,出口封包轉發引擎226B可使網路封包自CBUF 265之第二部分移出佇列。在一些實例中,排程器272可判定第二排程事件以調節自路由器206交換資料之一速度。例如,排程器272可基於OQ 219A處之一移出佇列速率來判定第二排程事件。
本發明中所描述之技術可至少部分以硬體、軟體、韌體或其任何組合來實施。例如,所描述之技術之各個態樣可在一或多個處理器內實施,包含一或多個微處理器、數位信號處理器(DSP)、專用積體電路(ASIC)、場可程式化閘陣列(FPGA)或任何其他等效積體或離散邏輯電路,以及此等組件之任何組合。術語「處理器」或「處理電路」通常可係指單獨的或與其他邏輯電路組合的前述邏輯電路或任何其他等效電路之任一者。包括硬體之一控制單元亦可執行本發明之技術之一或多者。
此等硬體、軟體及韌體可在相同裝置內或在單獨裝置內實施以支援本發明中所描述之各種操作及功能。另外,所描述之單元、模組或組件之任一者可一起或單獨實施為離散但可交互操作之邏輯裝置。將不同特徵描繪為模組或單元旨在突出不同功能態樣且並不一定暗示此等模組或單元必須由單獨硬體或軟體組件實現。實情係,與一或多個模組或單元相關聯之功能可由單獨硬體或軟體組件執行,或可整合於共同或單獨硬體或軟體組件內。
本發明中所描述之技術亦可在含有指令之一電腦可讀媒體(諸如一電腦可讀儲存媒體)中體現或編碼。嵌入或編碼於一電腦可讀儲存媒體中之指令可致使一可程式化處理器或其他處理器(例如)在執行指令時執行該方法。電腦可讀儲存媒體可包含隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、EPROM、EEPROM、快閃記憶體、一硬碟、一CD-ROM、一軟碟、一磁帶盒、磁性媒體、光學媒體或其他電腦可讀媒體。
102:系統
104:網路
106A:路由器
106B:路由器
110A:裝置
110B:裝置
110N:裝置
112:內容伺服器
114:公共網路
206:路由器
219A:輸出佇列
219B:輸出佇列
219M:輸出佇列
222:控制單元
224:路由引擎
226:封包轉發引擎
226A:封包轉發引擎
226B:封包轉發引擎
227A:虛擬輸出佇列
227B:虛擬輸出佇列
227N:虛擬輸出佇列
230A:介面卡
230B:介面卡
230N:介面卡
232A:傳入鏈路
232B:傳入鏈路
232N:傳入鏈路
234A:出站鏈路
234B:出站鏈路
234N:出站鏈路
240:命令線介面(CLI)
242:路由資訊庫(RIB)
244:路由協定常駐程式(RPD)
246:控制平面網路協定
250:多協定標籤切換(MPLS)協定
252:BGP
254:簡單網路管理協定(SMNP)
256:網際網路群組管理協定(IGMP)
260:轉發資訊庫(FIB)
261:入口封包處理器(IPP)
262:整形器信用更新引擎
263:出口封包處理器(EPP)
264:佇列管理器
265:經組合緩衝區(CBUF)
272:授權排程器(GS)
370:速率輪
374:速率指令
376:更新速率
378:「保證」(G)及「最大」(M)信用欄位
380:信用及片段
382:信用加法器
384:MUX
386:信用更新器
388:佇列/節點資料結構
390:G/M信用
392:速率更新器
405:擁塞管理器
407A:埠
407B:埠
409A:埠
409B:埠
417A:埠
417B:埠
419A:埠
419B:埠
441:結構輸入
443:結構輸出
471:回送路徑
473:路徑
475:路徑
479:路徑
902:入口封包轉發引擎226A可回應於接收一網路封包而判定用於輸出一網路封包之一出口封包轉發引擎
904:入口封包轉發引擎226A可將網路封包排入佇列於虛擬輸出佇列227A中用於輸出至出口封包轉發引擎
906:出口封包轉發引擎226B可回應於一第一排程事件而將資訊輸出至入口封包轉發引擎226A,該資訊指示虛擬輸出佇列中之網路封包及網路封包待排入佇列於出口封包轉發引擎226B之一輸出埠之一輸出佇列處
908:入口封包轉發引擎226A可回應於接收資訊而使網路封包自虛擬輸出佇列227A移出佇列
910:將網路封包排入佇列至輸出佇列219A
912:出口封包轉發引擎226B可回應於在第一排程事件之後之一第二排程事件而使網路封包自輸出佇列227A移出佇列
914:在輸出埠處輸出網路封包
圖1係繪示根據本發明之技術之一實例網路的一方塊圖。
圖2係繪示根據本發明之技術的圖1之網路內之一實例路由器的一方塊圖。
圖3係繪示根據本發明之技術的圖2之路由器內之一實例整形器信用更新引擎的一方塊圖。
圖4係繪示根據本發明之技術之使用網路封包回送來切換本端網路訊務之一實例路由器的一方塊圖。
圖5係繪示根據本發明之技術之使用網路封包回送將結構網路訊務切換至出口之一實例路由器的一方塊圖。
圖6係繪示根據本發明之技術之使用網路封包回送自入口切換結構網路訊務之一實例路由器的一方塊圖。
圖7係繪示根據本發明之技術之使用後設資料回送來切換本端網路訊務之一實例路由器的一方塊圖。
圖8係繪示根據本發明之技術之使用後設資料回送自入口切換結構網路訊務之一實例路由器的一方塊圖。
圖9係繪示根據本發明之技術之用於切換網路訊務之一實例程序的一方塊圖。
貫穿附圖及描述,相同元件符號係指相同元件。
206:路由器
219A:輸出佇列
219B:輸出佇列
219M:輸出佇列
222:控制單元
224:路由引擎
226:封包轉發引擎
227A:虛擬輸出佇列
227B:虛擬輸出佇列
227N:虛擬輸出佇列
230A:介面卡
230B:介面卡
230N:介面卡
232A:傳入鏈路
232B:傳入鏈路
232N:傳入鏈路
234A:出站鏈路
234B:出站鏈路
234N:出站鏈路
240:命令線介面(CLI)
242:路由資訊庫(RIB)
244:路由協定常駐程式(RPD)
246:控制平面網路協定
250:多協定標籤切換(MPLS)協定
252:BGP
254:簡單網路管理協定(SMNP)
256:網際網路群組管理協定(IGMP)
260:轉發資訊庫(FIB)
261:入口封包處理器(IPP)
262:整形器信用更新引擎
263:出口封包處理器(EPP)
264:佇列管理器
265:經組合緩衝區(CBUF)
272:授權排程器(GS)
Claims (18)
- 一種用於切換網路訊務之設備,該設備包括:一入口封包轉發引擎,其在電路中實施且經組態以:回應於接收一網路封包,判定用於輸出該網路封包之一出口封包轉發引擎;及將該網路封包排入佇列於一虛擬輸出佇列中用於輸出至該出口封包轉發引擎,其中為將該網路封包排入佇列於該虛擬輸出佇列中,該入口封包轉發引擎經組態以將該網路封包排入佇列於指派給該虛擬輸出佇列之一經組合緩衝區之一第一部分中;該出口封包轉發引擎,其在處理電路中實施且經組態以回應於一第一排程事件將資訊輸出至該入口封包轉發引擎,該資訊指示該虛擬輸出佇列中之該網路封包且該網路封包待排入佇列於該出口封包轉發引擎之一輸出埠之一輸出佇列處;其中該入口封包轉發引擎進一步經組態以回應於接收該資訊:使該網路封包自該虛擬輸出佇列移出佇列,其中為使該網路封包自該虛擬輸出佇列移出佇列,該入口封包轉發引擎經組態以使該網路封包自該經組合緩衝區之該第一部分移出佇列;及將該網路封包排入佇列至該輸出佇列,其中為將該網路封包排入佇列至該輸出佇列,該入口封包轉發引擎經組態以將該網路封包排入佇列於指派給該輸出佇列之該經組合緩衝區之一第二部分中;及其中該出口封包轉發引擎進一步經組態以回應於在該第一排程事件之後之一第二排程事件: 使該網路封包自該輸出佇列移出佇列,其中為使該網路封包自該輸出佇列移出佇列,該出口封包轉發引擎經組態以使該網路封包自該經組合緩衝區之該第二部分移出佇列;及在該輸出埠處輸出該網路封包。
- 如請求項1之設備,其中為輸出該資訊,該出口封包轉發引擎經組態以將具有包括該資訊之一標頭之該網路封包輸出至該入口封包轉發引擎。
- 如請求項2之設備,其中回應於接收具有該標頭之該網路封包,該入口封包轉發引擎經組態以:對該網路封包執行一丟棄檢查。
- 如請求項2之設備,其中為輸出具有該標頭之該網路封包,該出口封包轉發引擎經組態以將具有該標頭之該網路封包自該出口封包轉發引擎之一第一埠輸出至該入口封包轉發引擎之一第二埠。
- 如請求項1之設備,其中為輸出該資訊,該出口封包轉發引擎經組態以將包括該資訊之後設資料輸出至該入口封包轉發引擎且抑制將該網路封包輸出至該入口封包轉發引擎。
- 如請求項5之設備,其中為輸出該後設資料,該出口封包轉發引擎經組態以使用本端切換將該後設資料輸出至該入口封包轉發引擎。
- 如請求項1之設備,其中該出口封包轉發引擎包括一排程器,該排程器在電路中實施且經組態以:自該出口封包轉發引擎處之複數個輸出埠選擇該輸出埠,其中基於由該排程器對該輸出埠之該選擇,產生該資訊以指定該網路封包待排入佇列於該輸出佇列處;且判定該第一排程事件及該第二排程事件以調節自該設備交換資料之一速度。
- 一種用於切換網路訊務之方法,該方法包括:回應於接收一網路封包且由處理電路中實施之一入口封包轉發引擎,判定用於輸出該網路封包之一出口封包轉發引擎;由該入口封包轉發引擎將該網路封包排入佇列於一虛擬輸出佇列中用於輸出至該出口封包轉發引擎,其中將該網路封包排入佇列於該虛擬輸出佇列中包括將該網路封包排入佇列於指派給該虛擬輸出佇列之該入口封包轉發引擎及該出口封包轉發引擎之一經組合緩衝區之一第一部分中;回應於一第一排程事件且由處理電路中實施之該出口封包轉發引擎,將資訊輸出至該入口封包轉發引擎,該資訊指示該虛擬輸出佇列中之該網路封包及該網路封包待排入佇列於該出口封包轉發引擎之一輸出埠之一輸出佇列處;回應於接收該資訊且由該入口封包轉發引擎使該網路封包自該虛擬輸出佇列移出佇列,其中使該網路封包自該虛擬輸出佇列移出佇列包括使該網路封包自該經組合緩衝區之該第一部分移出佇列,且由該入口封包轉發引擎將該網路封包排入佇列至該輸出佇列,其中將該網路封包排入佇列 至該輸出佇列包括將該網路封包排入佇列於指派給該輸出佇列之該經組合緩衝區之一第二部分中;及回應於在該第一排程事件之後之一第二排程事件且由該出口封包轉發引擎,使該網路封包自該輸出佇列移出佇列,其中使該網路封包自該輸出佇列移出佇列包括使該網路封包自該經組合緩衝區之該第二部分移出佇列,並由該出口封包轉發引擎在該輸出埠處輸出該網路封包。
- 如請求項8之方法,其中輸出該資訊包括將具有包括該資訊之一標頭之該網路封包輸出至該入口封包轉發引擎。
- 如請求項9之方法,其包括:回應於接收具有該標頭之該網路封包且由該入口封包轉發引擎對該網路封包執行一丟棄檢查。
- 如請求項9之方法,其中輸出具有該標頭之該網路封包包括將具有該標頭之該網路封包自該出口封包轉發引擎之一第一埠輸出至該入口封包轉發引擎之一第二埠。
- 如請求項8之方法,其中輸出該資訊包括將包括該資訊之後設資料輸出至該入口封包轉發引擎且抑制將該網路封包輸出至該入口封包轉發引擎。
- 如請求項12之方法,其中輸出該後設資料包括使用本端切換將該後 設資料輸出至該入口封包轉發引擎。
- 如請求項8之方法,其包括:由在電路中實施之一排程器自該出口封包轉發引擎處之複數個輸出埠選擇該輸出埠,其中基於由該排程器對該輸出埠之該選擇,產生該資訊以指定該網路封包待排入佇列於該輸出佇列處;及由該排程器判定該第一排程事件及該第二排程事件以調節交換資料之一速度。
- 一種用於切換網路訊務之設備,該設備包括:複數個介面卡;一入口封包轉發引擎,其在電路中實施且經組態以:回應於用該複數個介面卡接收一網路封包,判定用於輸出該網路封包之一出口封包轉發引擎;及將該網路封包排入佇列於一虛擬輸出佇列中用於輸出至該出口封包轉發引擎,其中為將該網路封包排入佇列於該虛擬輸出佇列中,該入口封包轉發引擎經組態以將該網路封包排入佇列於指派給該虛擬輸出佇列之一經組合緩衝區之一第一部分中;該出口封包轉發引擎,其在處理電路中實施且經組態以回應於一第一排程事件將資訊輸出至該入口封包轉發引擎,該資訊指示該虛擬輸出佇列中之該網路封包且該網路封包待排入佇列於該出口封包轉發引擎之一輸出埠之一輸出佇列處;其中該入口封包轉發引擎進一步經組態以回應於接收該資訊: 使該網路封包自該虛擬輸出佇列移出佇列,其中為使該網路封包自該虛擬輸出佇列移出佇列,該入口封包轉發引擎經組態以使該網路封包自該經組合緩衝區之該第一部分移出佇列;及將該網路封包排入佇列至該輸出佇列,其中為將該網路封包排入佇列至該輸出佇列,該入口封包轉發引擎經組態以將該網路封包排入佇列於指派給該輸出佇列之該經組合緩衝區之一第二部分中;及其中該出口封包轉發引擎進一步經組態以回應於在該第一排程事件之後之一第二排程事件:使該網路封包自該輸出佇列移出佇列,其中為使該網路封包自該輸出佇列移出佇列,該出口封包轉發引擎經組態以使該網路封包自該經組合緩衝區之該第二部分移出佇列;及在該輸出埠處用該複數個介面卡輸出該網路封包。
- 如請求項15之設備,其中為輸出該資訊,該出口封包轉發引擎經組態以將具有包括該資訊之一標頭之該網路封包輸出至該入口封包轉發引擎。
- 如請求項15之設備,其中為輸出具有該標頭之該網路封包,該出口封包轉發引擎經組態以將具有該標頭之該網路封包自該出口封包轉發引擎之一第一埠輸出至該入口封包轉發引擎之一第二埠。
- 如請求項15之設備,其中為輸出該資訊,該出口封包轉發引擎經組態以將包括該資訊之後設資料輸出至該入口封包轉發引擎且抑制將該網路封包輸出至該入口封包轉發引擎。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/709,611 US11240151B2 (en) | 2019-12-10 | 2019-12-10 | Combined input and output queue for packet forwarding in network devices |
US16/709,611 | 2019-12-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202127838A TW202127838A (zh) | 2021-07-16 |
TWI803748B true TWI803748B (zh) | 2023-06-01 |
Family
ID=70390958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109114443A TWI803748B (zh) | 2019-12-10 | 2020-04-30 | 網路裝置中用於封包轉發之經組合輸入及輸出佇列 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11240151B2 (zh) |
EP (2) | EP3836498B1 (zh) |
KR (1) | KR102414548B1 (zh) |
CN (1) | CN112953854B (zh) |
SG (1) | SG10202003620XA (zh) |
TW (1) | TWI803748B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11240151B2 (en) * | 2019-12-10 | 2022-02-01 | Juniper Networks, Inc. | Combined input and output queue for packet forwarding in network devices |
US11265269B2 (en) * | 2020-03-02 | 2022-03-01 | Arista Networks, Inc. | Networking system having multiple components with multiple loci of control |
US11902361B2 (en) * | 2021-01-08 | 2024-02-13 | Twilio Inc. | Routing provider queues |
US11711294B2 (en) * | 2021-05-03 | 2023-07-25 | Mellanox Technologies, Ltd. | Fast rerouting using egress-port loopback |
DE102021206498A1 (de) * | 2021-06-23 | 2022-12-29 | Siemens Healthcare Gmbh | Datenübertragungseinrichtung, medizinische Bildgebungseinrichtung und Verfahren zur Übertragung von Datenpaketen |
US11949605B2 (en) * | 2021-10-28 | 2024-04-02 | Avago Technologies International Sales Pte. Limited | Systems for and methods of unified packet recirculation |
CN114039910B (zh) * | 2021-11-17 | 2023-06-27 | 杭州云合智网技术有限公司 | 基于分组标签策略的数据转发的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8040901B1 (en) * | 2008-02-06 | 2011-10-18 | Juniper Networks, Inc. | Packet queueing within ring networks |
US8797877B1 (en) * | 2012-08-09 | 2014-08-05 | Juniper Networks, Inc. | Virtual output queue allocation using dynamic drain bandwidth |
US20160127267A1 (en) * | 2014-11-05 | 2016-05-05 | Broadcom Corporation | Distributed Switch Architecture |
US20160191424A1 (en) * | 2014-12-29 | 2016-06-30 | Oracle International Corporation | System and method for supporting efficient virtual output queue (voq) resource utilization in a networking device |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6987898B2 (en) * | 2003-07-23 | 2006-01-17 | Lucent Technologies Inc. | Molecular detection using an optical waveguide fixed to a cantilever |
US20060098673A1 (en) * | 2004-11-09 | 2006-05-11 | Alcatel | Input queue packet switch architecture and queue service discipline |
US8284789B2 (en) * | 2009-04-29 | 2012-10-09 | Tellabs Operations, Inc. | Methods and apparatus for providing dynamic data flow queues |
CN101958824B (zh) * | 2009-07-14 | 2012-06-27 | 华为技术有限公司 | 一种数据交换方法及数据交换结构 |
KR101104959B1 (ko) * | 2010-05-25 | 2012-01-12 | (주) 시스메이트 | 네트워크 패킷 전달 장치 및 방법 |
US8897315B1 (en) * | 2012-01-06 | 2014-11-25 | Marvell Israel (M.I.S.L) Ltd. | Fabric traffic management in a network device |
KR102107514B1 (ko) | 2013-04-18 | 2020-05-07 | 삼성전자주식회사 | 방송 시스템에서 동적 큐 관리 방법 및 장치 |
US10469404B1 (en) * | 2014-05-12 | 2019-11-05 | Google Llc | Network multi-level rate limiter |
CN107005489B (zh) * | 2014-12-29 | 2021-02-02 | 甲骨文国际公司 | 用于支持分组交换的系统、方法、介质和设备 |
US20160212070A1 (en) * | 2015-01-15 | 2016-07-21 | Mediatek Inc. | Packet processing apparatus utilizing ingress drop queue manager circuit to instruct buffer manager circuit to perform cell release of ingress packet and associated packet processing method |
US9894013B2 (en) | 2015-02-03 | 2018-02-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Early queueing network device |
US10484311B2 (en) * | 2015-03-31 | 2019-11-19 | Cavium, Llc | Method and apparatus for using multiple linked memory lists |
US9942171B2 (en) * | 2015-07-02 | 2018-04-10 | Arista Networks, Inc. | Network data processor having per-input port virtual output queues |
US10574555B2 (en) * | 2016-01-28 | 2020-02-25 | Arista Networks, Inc. | Network data stream tracer |
US10778809B2 (en) * | 2016-02-26 | 2020-09-15 | Arista Networks, Inc. | Per-input port, per-control plane network data traffic class control plane policing |
US10708272B1 (en) * | 2017-02-10 | 2020-07-07 | Arista Networks, Inc. | Optimized hash-based ACL lookup offload |
US10567307B2 (en) * | 2018-04-27 | 2020-02-18 | Avago Technologies International Sales Pte. Limited | Traffic management for high-bandwidth switching |
US10686714B2 (en) * | 2018-04-27 | 2020-06-16 | Avago Technologies International Sales Pte. Limited | Traffic management for high-bandwidth switching |
US10700998B2 (en) * | 2018-08-03 | 2020-06-30 | Cavium International | VOQ-based network switch architecture using multi-stage arbitration fabric scheduler |
US10868769B1 (en) * | 2018-08-07 | 2020-12-15 | Innovium, Inc. | Read instruction queues in a network device |
WO2020236272A1 (en) | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating fine-grain flow control in a network interface controller (nic) |
US20210021517A1 (en) * | 2019-07-19 | 2021-01-21 | Arista Networks, Inc. | Avoiding recirculation of data packets in a network device |
US11552907B2 (en) * | 2019-08-16 | 2023-01-10 | Fungible, Inc. | Efficient packet queueing for computer networks |
US11722438B2 (en) | 2019-08-21 | 2023-08-08 | Intel Corporation | Maintaining bandwidth utilization in the presence of packet drops |
US20210058334A1 (en) | 2019-08-21 | 2021-02-25 | Intel Corporation | Timestamp-based fairness egress from ingress queues |
US11240151B2 (en) * | 2019-12-10 | 2022-02-01 | Juniper Networks, Inc. | Combined input and output queue for packet forwarding in network devices |
-
2019
- 2019-12-10 US US16/709,611 patent/US11240151B2/en active Active
-
2020
- 2020-04-21 SG SG10202003620XA patent/SG10202003620XA/en unknown
- 2020-04-22 EP EP20170767.6A patent/EP3836498B1/en active Active
- 2020-04-22 EP EP23183716.2A patent/EP4239976A3/en active Pending
- 2020-04-27 KR KR1020200050825A patent/KR102414548B1/ko active IP Right Grant
- 2020-04-29 CN CN202010359091.3A patent/CN112953854B/zh active Active
- 2020-04-30 TW TW109114443A patent/TWI803748B/zh active
-
2021
- 2021-12-22 US US17/645,498 patent/US11784925B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8040901B1 (en) * | 2008-02-06 | 2011-10-18 | Juniper Networks, Inc. | Packet queueing within ring networks |
US8797877B1 (en) * | 2012-08-09 | 2014-08-05 | Juniper Networks, Inc. | Virtual output queue allocation using dynamic drain bandwidth |
US20160127267A1 (en) * | 2014-11-05 | 2016-05-05 | Broadcom Corporation | Distributed Switch Architecture |
US20160191424A1 (en) * | 2014-12-29 | 2016-06-30 | Oracle International Corporation | System and method for supporting efficient virtual output queue (voq) resource utilization in a networking device |
Also Published As
Publication number | Publication date |
---|---|
KR102414548B1 (ko) | 2022-06-30 |
US20220124030A1 (en) | 2022-04-21 |
EP4239976A2 (en) | 2023-09-06 |
US20210176171A1 (en) | 2021-06-10 |
CN112953854A (zh) | 2021-06-11 |
EP3836498A1 (en) | 2021-06-16 |
EP4239976A3 (en) | 2023-11-01 |
CN112953854B (zh) | 2024-06-21 |
US11784925B2 (en) | 2023-10-10 |
US11240151B2 (en) | 2022-02-01 |
SG10202003620XA (en) | 2021-07-29 |
KR20210073432A (ko) | 2021-06-18 |
TW202127838A (zh) | 2021-07-16 |
EP3836498B1 (en) | 2023-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI803748B (zh) | 網路裝置中用於封包轉發之經組合輸入及輸出佇列 | |
US9614755B2 (en) | Combined hardware/software forwarding mechanism and method | |
US7953885B1 (en) | Method and apparatus to apply aggregate access control list/quality of service features using a redirect cause | |
US8064344B2 (en) | Flow-based queuing of network traffic | |
US7006440B2 (en) | Aggregate fair queuing technique in a communications system using a class based queuing architecture | |
US9197544B2 (en) | Comprehensive multipath routing for congestion and quality-of-service in communication networks | |
TWI700912B (zh) | 運算裝置中預測封包壽命之佇列系統 | |
US8284789B2 (en) | Methods and apparatus for providing dynamic data flow queues | |
US20080080382A1 (en) | Refined Assured Forwarding Framework for Differentiated Services Architecture | |
US20220158946A1 (en) | Packet Processing Method and Apparatus | |
Parra et al. | Quality of Service over IPV6 and IPV4 | |
WO2021213711A1 (en) | Virtual dual queue core stateless active queue management (aqm) for communication networks | |
AlWehaibi et al. | Accommodations of QoS DiffServ over IP and MPLS networks | |
Vijay et al. | PACKET HANDLING SCHEDULING IN MULTIPLE ROUTING CONFIGURATIONS FOR FAST IP NETWORK RECOVERY | |
Bayle et al. | Supporting real-time IP traffic with enhanced service classes in DiffServ networks | |
Mylonas | Implementation and Evaluation of Differentiated Services on Linux |