TWI559706B - 網路處理器中的封包調度 - Google Patents

網路處理器中的封包調度 Download PDF

Info

Publication number
TWI559706B
TWI559706B TW104105253A TW104105253A TWI559706B TW I559706 B TWI559706 B TW I559706B TW 104105253 A TW104105253 A TW 104105253A TW 104105253 A TW104105253 A TW 104105253A TW I559706 B TWI559706 B TW I559706B
Authority
TW
Taiwan
Prior art keywords
packet
model
packets
circuit
node
Prior art date
Application number
TW104105253A
Other languages
English (en)
Other versions
TW201543848A (zh
Inventor
喬瑟夫B 湯普金斯
布萊恩 羅伯特 佛森
威爾森P 席德二世
理查E 克萊思勒
艾德文 朗之萬
安德魯J 瓊斯
伊森 費德瑞克 羅賓斯
Original Assignee
凱為公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 凱為公司 filed Critical 凱為公司
Publication of TW201543848A publication Critical patent/TW201543848A/zh
Application granted granted Critical
Publication of TWI559706B publication Critical patent/TWI559706B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/36Backward learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/566Routing instructions carried by the data packet, e.g. active networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/821Prioritising resource allocation or reservation requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

網路處理器中的封包調度
本發明關於一種網路管理器之管理封包傳輸的電路及方法。
典型的網路處理器對用於上級網路通訊協定的工作(比如封包處理操作)進行調度和排隊並且允許在向連接的設備轉發接收的封包之前關於封包中的上級網路通訊協定(例如,傳送層和應用層)的處理。通常由網路處理器執行的功能包括封包過濾、佇列管理和優先順序、服務品質實行以及存取控制。通過運用處理封包資料特有的特徵,網路處理器可以優化聯網的設備的介面。
本發明的示例實施例提供一種用於在網路封包處理器中管理封包的傳輸的電路。電路可以包括封包描述符管理器(PDM)、封包調度引擎(PSE)以及封包引擎和緩衝(PEB)。PDM可以從命令信號生成元封包,其中元封包指示將由電路傳輸的封包的大小和目的地。PSE可以經過從目的地到電路的網路拓撲的模型對封包的傳輸進行建模。使用這一模型,PSE可以確定在多個封包之中傳輸封包的順序。PSE可以操作以處理封包並且使得處理的封包根據由PSE確定的順序朝著目的地被傳輸。
在進一步的實施例中,PSE可以經過從目的地到電路的網路拓撲的模型對封包的傳輸進行建模,PSE基於模型傳輸來確定 順序。為了實現這一點,PSE可以對在目的地與電路之間的網路拓撲中的多個節點進行建模,並且可以基於封包相對於其它封包在模型傳輸中到達電路來確定順序。PSE也可以對多個封包從多個相應的目的地向電路的傳輸進行建模,PSE基於在模型傳輸中在多個封包中的封包的到達來確定順序。PSE還可以對在多個目的地與電路之間的網路拓撲中的多個節點進行建模,並且可以向模型多個節點的輸入中的每個輸入指派相對的優先順序。模型傳輸可以基於不足加權的迴圈(deficit-weighted round robin)計算。
在更進一步的實施例中,PDM還包括元封包佇列,PDM被配置為向元封包佇列存儲元封包。PSE還可以被配置為從元封包佇列取回元封包的至少一部分。PDM也可以包括描述符佇列,其中PDM向描述符佇列存儲描述符。PEB可以從描述符佇列取回描述符的至少一部分。
在更進一步的實施例中,PSE可以比較與目的地關聯的封包傳輸速率和與目的地關聯的峰值速率和承諾的速率中的至少一個速率,PSE基於比較來確定順序。基於這一比較,PSE可以向封包指派顏色。PSE也可以對於在電路與目的地之間的路徑中的多個節點比較與節點關聯的封包傳輸速率和與節點關聯的峰值速率和承諾的速率中的至少一個速率,PSE基於比較來確定順序。
在更進一步的實施例中,PEB可以基於描述符中的指標構造封包,指標指示存儲封包的記憶體的位址。PEB也可以向輸出緩衝器存儲處理的封包,PEB使得封包基於與緩衝器關聯的信用狀態被傳輸。元封包可以包括封包的大小的指示和用於對封包進行排序的指令。對照而言,描述符可以包括指示存儲封包的記憶體的位址的指標以及用於由PEB處理封包的指令。用於構造和處理封包的指令可以由命令信號提供。PEB可以用指示與封包流量規則相符的顏色標記封包,並且可以向封包添加時間戳記。PEB也可以基於來自PSE的指示來有選擇地丟棄封包。
在更進一步的實施例中,提供一種管理封包的傳輸的方法。在一種這樣的方法中,接收命令信號,命令信號標識待處理和傳輸的封包。從命令信號生成元封包,元封包包括封包的大小的指示和用於對封包進行排序的指令。經過從目的地到電路的網路拓撲的模型對封包的傳輸進行建模。基於這一建模,確定在多個封包之中傳輸封包的順序。一旦進行這一確定就構造封包,並且基於在描述符中指示的指令處理對封包的操作以產生處理的封包。然後朝著目的地傳輸處理的封包。
100,101‧‧‧網路服務處理器
108‧‧‧記憶體
116‧‧‧MIO
119‧‧‧USB
120‧‧‧處理器核
122a‧‧‧介面單元0
122b‧‧‧介面單元1
123‧‧‧JTAG/EJTAG
124‧‧‧Pcle
126‧‧‧輸入處理單元
128‧‧‧自由池分配器
130‧‧‧2級快取記憶體和控制單元
132‧‧‧壓縮/解壓
133‧‧‧DRAM控制器
136‧‧‧I/O介面
138‧‧‧高性能I/O橋路
138a‧‧‧IOBN
138b‧‧‧IOBP
140‧‧‧取讀和添加單元
142‧‧‧I/O匯流排142
144‧‧‧相干記憶體互連
146‧‧‧封包輸出單元
148‧‧‧調度/同步和排序
150‧‧‧計時器單元
152‧‧‧LCACHE
154‧‧‧DCACHE
156‧‧‧密碼加速
160‧‧‧超有限自動機
162‧‧‧RAID/DE-DUP單元
172‧‧‧中央中斷單元
190‧‧‧MACs
300‧‧‧封包輸出處理器
308‧‧‧記憶體
320‧‧‧處理器核
330‧‧‧封包描述符管理器
340‧‧‧封包調度器和成形引擎
350‧‧‧封包引擎和緩衝單元
390‧‧‧MAC
400‧‧‧PKO處理封包流程圖
410,420,425,430,440,450,460,470‧‧‧步驟
500‧‧‧元封包
501‧‧‧元封包
505‧‧‧下一指標
510‧‧‧VAL
520‧‧‧FPD
530‧‧‧DS
540‧‧‧成形增量
550‧‧‧封包策略
560‧‧‧封包長度
605‧‧‧下一指針
610‧‧‧封包描述符
700‧‧‧PKO
705‧‧‧網控制緩衝器
706‧‧‧IOBP
708‧‧‧IOBP
712‧‧‧去往MAC封包
714‧‧‧MCI1塊
716‧‧‧MAC外部反壓介面
718‧‧‧MAC通道信用介面
722‧‧‧封包FPA介面
724‧‧‧SSO介面
726‧‧‧CIU介面
728‧‧‧MAC信用介面
730‧‧‧PDM
732‧‧‧DESC FPA介面
735‧‧‧DQ Req
736‧‧‧描述符預取緩衝器
740‧‧‧PSE
745‧‧‧控制/狀態介面(CSI)塊
750‧‧‧PEB
755‧‧‧封包引擎
757‧‧‧PEB FIFO
758‧‧‧TX狀態機
800‧‧‧拓撲
801‧‧‧模型
810‧‧‧端點
820‧‧‧節點1
830‧‧‧根
910‧‧‧模型端點節點
920‧‧‧模型內部節點
930‧‧‧模型根節點
1010‧‧‧端點
1020A‧‧‧內部節點A處理器
1020B‧‧‧內部節點B處理器
1030‧‧‧根節點處理器
1101,1102,1103,1104,1105‧‧‧推送命令
1106,1107,1108,1109,1110‧‧‧推送命令
1111,1112‧‧‧關斷命令
1113,1114‧‧‧拉取命令
1115,1116,1117‧‧‧開啟命令
1118,1119,1120,1121,1122,1123,1124‧‧‧拉取命令
1200‧‧‧模型網路拓撲
1201‧‧‧拓撲模型
1210‧‧‧端點
1215‧‧‧網路成形器
1220‧‧‧節點
1230‧‧‧根
1300‧‧‧雙速率、三色成形器模型
1301‧‧‧單速率、兩顏色成形器模型
1400‧‧‧時間輪
前文將從如在附圖中所示本發明的示例實施例的以下更特別的描述而變清楚,在附圖中,相似標號貫穿不同視圖指代相同部分。附圖未必按比例,代之以進行強調以舉例說明本發明的實施例。
第一圖是圖示其中可以實施本發明的實施例的網路服務處理器的方塊圖。
第二圖是圖示其中可以實施本發明的實施例的網路服務處理器的簡化的方塊圖。
第三圖是圖示一個實施例中的封包輸出處理器(PKO)的方塊圖。
第四圖是圖示由一個實施例中的PKO處理封包的過程的流程圖。
第五A圖至第五B圖是元封包和為存儲元封包而分配的記憶體空間的方塊圖。
第六圖是為存儲描述符而分配的記憶體空間的方塊圖。
第七圖是一個實施例中的PKO的詳細方塊圖。
第八A圖至第八B圖圖示用於封包調度的模型網路拓撲。
第九A圖至第九C圖是模型節點的方塊圖。
第十圖是節點的模型分支的方塊圖。
第十一A圖至第十一E圖是圖示經過模型分支的命令和封包移動的示圖。
第十二A圖至第十二B圖圖示用於封包成形的模型網路拓撲。
第十三A圖至第十三B圖是圖示兩色和三色成形的方塊圖。
第十四圖是時間輪的方塊圖。
第十五圖是圖示封包成形的流程圖。
本發明的示例實施例的描述如下。
第一圖是圖示網路服務處理器100的方塊圖。網路服務處理器100使用至少一個處理器核120來遞送高應用性能。
網路服務處理器100處理在接收的封包中封裝的開放系統互相連線網路L2-L7層協定。如本領域技術人員熟知的那樣,開放系統互相連線(OSI)參考模型定義七個網路通訊協定層(L1-L7)。實體層(L1)代表將設備連接到傳輸介質的實際電和物理介面。資料連結層(L2)執行資料成幀。網路層(L3)將資料格式化成封包。傳送層(L4)處置端到端傳送。工作階段層(L5)管理在設備之間的通信,例如,無論通信是半雙工或者全雙工。呈現層(L6)管理資料格式化和呈現,例如,語法、控制代碼、特殊圖形和字元集。應用層(L7)允許在用戶之間的通信,例如,檔傳送和電子郵件。
網路服務處理器100可以對用於上級網路通訊協定(例如,L4-L7)的工作(封包處理操作)進行調度和排隊,並且允許執行對接收的封包中的上級網路通訊協定的處理以在接線速度轉 發封包。接線速度是在其之上傳輸和接收資料的網路的資料傳送的速率。通過處理協定以在接線速度轉發封包,網路服務處理器未減緩網路資料傳送速率。
封包由多個介面單元122接收以用於處理。封包也可以由PCI介面124接收。介面單元122通過校驗在接收的封包中包括的L2網路通訊協定頭部中的各種欄位來執行對接收的包的預處理並且然後向封包輸入單元126轉發封包。至少一個介面單元122a可以從多個X附著單元介面(XAUI)、精簡X附著單元介面(RXAUI)或者串列吉比特介質獨立介面(SGMII)接收封包。至少一個介面單元122b可以從Interlaken介面(ILK)接收連接。
封包輸入單元126執行對在接收的封包中包括的網路通訊協定頭部(例如,L3和L4頭部)的進一步的預處理。預處理包括用於TCP/使用者資料包通訊協定(UDP)(L3網路通訊協定)的校驗和校驗。
自由池分配器128維護指向2級快取記憶體130和外部DRAM 108中的自由記憶體的指標的池。封包輸入單元126使用指標池之一以在2級快取記憶體130或者外部DRAM 108中存儲接收的封包資料而使用指標池中的另一個指標池以分配用於處理器核120的工作隊列條目。
封包輸入單元126然後向2級快取記憶體130或者外部DRAM 108中的緩衝器中寫入封包資料。優選地,以對於在處理器核120中的至少一個處理器核中執行的更高層軟體方便的格式向緩衝器中寫入封包資料。因此,有助於對更高級網路通訊協定的進一步處理。
網路服務處理器100也可以包括一個或者多個專用協同處理器。這些協同處理器在被包括時從核120卸載一些處理,由此使得網路服務器處理器能夠實現高輸送量封包處理。例如,提供專用於執行對接收的封包的壓縮和解壓的壓縮/解壓協同處理器 132。協同處理單元的其它實施例包括加速用於盤存儲應用的資料條化和資料重複處理的RAID/De-Dup單元162。
另一協同處理器是包括專用超有限自動機(HFA)執行緒引擎的HFA單元160,這些HFA執行緒引擎被適配為加速防病毒、入侵偵測系統和其它內容處理應用所必需的模式和/或簽名匹配。使用HFA單元160,加速例如在每秒數十吉比特以上的速率執行的模式和/或簽名匹配。HFA單元160在一些實施例中可以包括確定性有限自動機(DFA)、非確定性有限自動機(NFA)或者HFA算術單元中的任何單元。
I/O介面136管理總體協定和仲裁並且提供相干I/O分割。I/O介面136包括I/O橋路138和取讀和添加單元140。I/O橋路包括I/O封包橋路(IOBP)138a和I/O匯流排橋路(IOBN)138b這兩個橋路。I/O封包橋路138a被配置為管理總體協定和仲裁並且向相干I/O分撥主要提供封包輸入和輸出。I/O匯流排橋路138b被配置為管理總體協定和仲裁並且向相干I/O分撥主要提供I/O匯流排。取讀和添加單元140中的寄存器用來維護用於經過封包輸出單元146轉發處理的封包的輸出佇列的長度。I/O橋路138包括用於存儲將在相干記憶體互連(CMI)144、I/O匯流排142、封包輸入單元126和封包輸出單元146之間傳送的資訊的緩衝佇列。
雜項I/O介面(MIO)116可以包括輔助介面,比如通用I/O(GPIO)、Flash、IEEE 802兩接線管理介面(MDIO)、串列管理中斷(SMI)、通用非同步接收器-傳輸器(UART)、精簡吉比特介質獨立介面(RGMII)、介質獨立介面(MII)、兩接線序列介面(TWSI)和其它序列介面。
網路服務提供商100也可以包括聯合測試行動組(“JTAG”)介面123,JTAG介面123支援MIPS EJTAG標準。根據JTAG和MIPS EJTAG標準,網路服務提供商100內的多個核將各自具有內部測試訪問埠(“TAP”)控制器。這允許網路服務提供 商100的多核調適(debug)支持。
調度/同步和排序(SSO)模組148對用於處理器核120的工作進行排隊和調度。通過向佇列添加工作隊列條目來對工作進行排隊。例如,由封包輸入單元126為每個封包到達而添加工作隊列條目。計時器單元150用來調度用於處理器核120的工作。
處理器核120請求來自SSO模組148的工作。SSO模組148選擇(即,調度)用於處理器核120之一的工作並且向處理器核120返回指向描述工作的工作隊列條目的指標。
處理器核120轉而包括指令快取記憶體152、1級數據快取記憶體154和密碼加速156。在一個實施例中,網路服務處理器100包括超標量精簡指令集電腦(RISC)型處理器核120。在一些實施例中,超標量RISC型處理器核120中的每個超標量RISC型處理器核包括MIPS64版本3處理器核的擴展。在一個實施例中,超標量RISC型處理器核120中的每個超標量RISC型處理器核包括cnMIPS II處理器核。
2級快取記憶體記憶體130和外部DRAM 108由所有處理器核120和I/O協同處理器設備共用。每個處理器核120由CMI 144耦合到2級快取記憶體記憶體130。CMI 144是用於在處理器核100、I/O介面136以及2級快取記憶體記憶體130和控制器之間的所有記憶體和I/O事務的通信通道。在一個實施例中,CMI 144可伸縮成32個處理器核120,從而支援具有直通寫入的全相干1級數據快取記憶體154。優選地,CMI 144被高度地緩衝以具有對I/O區分優先順序的能力。CMI耦合到被配置為捕獲匯流排請求的軌跡控制單元164,從而軟體可以以後讀取請求並且在CMI上生成事件序列的軌跡。
2級快取記憶體控制器131維護記憶體參考相干性。它返回用於每個填充請求的塊的最新副本,無論塊是否存儲在2級快取記憶體130中、外部DRAM 108中或者“在飛行中”。它也存儲用 於每個處理器核120中的資料快取記憶體154的標籤的重複副本。它比較快取記憶體塊存儲請求的位址與資料快取記憶體標籤,並且無效化(均複製)用於處理器核120的資料快取記憶體標籤,無論存儲指令是否來自另一處理器核或者經由I/O介面136來自I/O部件。
在一些實施例中,多個DRAM控制器133支持上至128吉比特DRAM。在一個實施例中,多個DRAM控制器包括四個DRAM控制器,DRAM控制器中的每個DRAM控制器支持32吉比特DRAM。優選地,每個DRAM控制器133支援到DRAM 108的64位元介面。附加地,DRAM控制器133可以支援優選協定,比如DDR-III協定。
在封包已經由處理器核120處理之後,封包輸出單元146從2級快取記憶體130、108讀取封包資料、執行L4網路通訊協定後處理(例如,生成TCP/UDP校驗和)、經過介面單元122或者PCI介面124轉發封包並且釋放由封包使用的L2快取記憶體130/DRAM 108。
DRAM控制器133管理去往/來自DRAM 108的飛行中事務(載入/存儲)。在一些實施例中,DRAM控制器133包括四個DRAM控制器,DRAM 108包括四個DRAM記憶體,並且每個DRAM控制器連接到DRAM記憶體。DFA單元160直接耦合到旁路快取記憶體訪問路徑135上的DRAM控制器133。旁路快取記憶體訪問路徑135允許HFA單元從記憶體直接讀取而未使用2級快取記憶體130,這可以提高用於HFA操作的效率。
可以在硬體、軟體、固件或者這樣的實施方式的組合中實施網路服務處理器100以及它的以上描述的部件中的任何子集。本發明的實施例可以被實施在第一圖中所示的網路服務處理器100中並且可以更特別地涉及封包輸出單元(PKO)146。以下參照第二圖至第十五圖進一步詳細描述示例實施例。
第二圖是網路服務處理器101的簡化的方塊圖。處理器可與第一圖的處理器比較並且可以包括處理器100的部件中的一些或者所有部件。然而,處理器101被圖示以醒目顯示處理器101的與PKO 146的操作最相關的部件。除了第一圖的部件之外,處理器101也包括中央中斷單元(CIU)172,CIU 172控制在處理器101處的操作中斷。另外,處理器101與介質存取控制器(MAC)190通信,MAC 190與PKO 146和PKI 126對接並且操作以跨網路向和從目的地發送和接收封包。
第三圖是圖示一個實施例中的封包輸出處理器(PKO)300的方塊圖。可以在以上參照第一圖和第二圖描述的網路處理器100、101中實施PKO 300。PKO 300可以包括封包描述符管理器(PDM)330、封包調度器和成形引擎(PSE)340以及封包引擎和緩衝單元(PEB)350。PKO 300與處理器核320通信以接收用於將向MAC 390輸出的每個封包的“發送封包”(以下被稱為“sendpkt”)命令。每個sendpkt命令可以對應於給定的封包,並且可以標識記憶體308的在該處存儲給定的封包的段以及用於處理封包的指令。PKO 308從每個sendpkt命令確定相對於其它封包傳輸封包的順序、從記憶體308構造封包、根據由命令提供的指令處理封包並且向MAC 390轉發處理的封包以用於跨網路向目的地傳輸。
PDM 330可以被配置為基於接收的sendpkt命令生成元封包和描述符、管理封包描述符和元封包佇列以及管理保持用於每個佇列的頭部和尾部快取記憶體線的讀取和寫入預取緩衝器。元封包一般提供用於對封包進行取回和排序的資訊,並且可以包括資訊,比如封包的大小、封包的目的地以及用於對封包進行排序的其它特性和指令。以下參照第五A圖至第五B圖描述示例元封包。描述符一般提供用於處理封包的資訊,並且可以包括資訊,比如指示存儲封包的記憶體的位址的指標以及用於處理封包的指令。以下 參照第六圖描述示例描述符。
PSE 340可以主要操作以確定傳輸每個封包的相對順序。為了進行這一確定,PSE 340可以利用每個元封包以對每個封包經過模型網路拓撲的傳輸進行建模。一旦封包的順序被確定,PEB 350就可以基於在描述符中指示的指令對封包執行處理操作,從而產生用於向MAC 390轉發的處理的封包。
以下參照第四圖描述PKO 300的示例操作,其中以下參照第七圖描述更詳細的操作。
第四圖是圖示由一個實施例中的PKO處理封包的過程400的流程圖。參照第三圖,在向PKO 300發表sendpkt命令(410)時,PDM 330可以分配記憶體308並且生成對應的封包描述符和元封包(420),從而將各自寫入到它們的相應的緩衝器中(425)。封包描述符緩衝器可以被連結在一起以形成封包描述符佇列(PDQ),而元封包緩衝器可以被連結在一起以形成元封包佇列(MPQ)。PDM 330可以對於PKO 300中的每個活躍流維護用於這些佇列中的每個佇列的頭部和尾部指標。PDM 330從快取記憶體線大小的塊中的連結的緩衝器讀取描述符和元封包並且在PDM內部的預取RAM中存儲它們。向PSE 340提供個別元封包,PSE 340確定用於調度封包以用於傳輸的時間。在PSE 340確定具體封包準備好向MAC 390傳輸時,向PEB 350提供封包描述符,PEB 350取回和處理封包,從而向MAC 390發送處理的封包以用於向目標目的地傳輸。
PSE 340可以被配置為確定接著為設備上的每個活躍鏈路傳輸哪個封包。特別地,這一封包順序可以通過封包成形(430)和封包調度(440)的操作而被確定。PSE 340可以是事件驅動的系統,該系統提供指示對佇列和成形器狀態的改變的事件。PSE 340執行為了確定在調度和成形分級的每級傳輸下一封包並且相應地更新佇列和成形器狀態而必需的計算和校驗。
PEB 350可以被配置為在轉發處理的封包以用於向目的地傳輸(470)之前構造封包(450)並且執行在封包描述符中包含的指令和由描述符指向(例如,使用跳躍指令)的任何擴展的結構(460)。PSE 350可以發佈讀取事務以便走遍緩衝器鏈或者收集用於每個封包的段。由PEB 350發佈的狀態資訊可以用來控制迴圈冗餘校驗(CRC)生成器、桶移位元器、插入和標記邏輯加上將封包存儲到FIFO中以用於傳輸。可以保存並且在從記憶體返回、處理和存儲屬於不同封包的資料塊時恢復PEB 350的操作狀態。描述符中的指令也可以提示PEB 350向記憶體308中的位置發佈原子操作並且在完成封包傳送之後向SSO發表短形式(short-form)“添加工作”命令。可以在固定(例如,128位元組)的塊中取讀封包,並且PEB 350可以具有上至固定最大值(例如,32個)一次未完成的多個請求。
第五A圖至第五圖圖示示例實施例中的元封包。首先參照第五A圖,示出被分配用於存儲元封包的記憶體空間的配置。該分配包括元封包501的排序的塊,元封包501可以被分組成用於由PKO定址的一個或者多個組。在多個記憶體段被串鏈以存儲元封包的配置中,該分配也可以包括“下一指標”505,該指標指示下一分配的記憶體位址。
第五B圖是示例元封包500的方塊圖。如以上描述的那樣,元封包500可以由PDM 330(圖3)使用在從處理器核接收的sendpkt命令中提供的資訊來構造。元封包可以包含封包的以位元組為單位的總長度(分組長度)560,該總長度可以用來從記憶體取讀封包。這一長度可以與簽名的成形值(成形增量)540組合以創建封包的成形長度,該成形長度可以用於PSE 340的所有調度和成形信用計算。元封包也可以包含用於超越佇列級分群組原則設置的每封包狀態(分群組原則)550。這一設置允許PKO 300在逐個封包的基礎上標識在佇列建立的一般策略規則的任何例外。例如, 控制封包可以被設置為具有“在RED上發送”策略,該策略超越在佇列級設立的任何“在RED上拖延”策略。這一設置將允許向網路中發送封包而最小延時未受成形規則影響,這些成形規則延遲普通資料平面流量。也可以存在“排除”標誌,該標誌允許傳輸封包而未影響任何信用計算。標誌排除封包在向流指派的頻寬中被記帳,並且允許流未由於輸送端點未請求或者利用的封包而被懲罰。
元封包500可以包括其它可配置設置,比如用於指示有效性的有效標誌(VAL)510、用於標識對應的描述符的位置的描述符定位符(FPD)520和用於指示是否發送關聯的分組的未發送標誌(DS)530。
第六圖是被分配用於存儲封包描述符610的記憶體空間的方塊圖。封包描述符610可以由頭部資訊和由sendpkt命令提供的指令構造。封包描述符610可以具有固定或者最大大小(例如,128位元組)並且可以在固定(例如,128位元組)的位址上被對準。描述符610可以被存儲到從FPA分配的固定(例如,4K位元組)的緩衝器中。每個緩衝器可以保持某個範圍(例如,25至200個)的封包描述符、長度/策略子描述符和在串鏈多個緩衝器的情況下指向鏈605中的下一緩衝器的連結。4KB緩衝器大小提供預定義的描述符陣列,這些描述符的位址可以被容易地計算以實現流水線化的訪問。在與封包描述符相同的緩衝器中包括子描述符允許PKO 300使用相同頭部和尾部指針以跟蹤每個陣列。可能需要最小(例如,7位元)偏移以標識子描述符陣列的頭部和尾部。
第七圖是一個實施例中的PKO 700的具體方塊圖。可以與以上參照第三圖描述的PKO 300可比較地配置PKO 700,PKO 700包括PDM 730、PSE 740和PEB 750。另外,圖示並且以下描述了若干附加部件及其在對封包進行排序、處理和轉發的示例過程中的實現方式,這些部件提供對封包的排序、構造和處理以及與外部模組對接。
網控制緩衝器(NCB)705可以包括用於向PKO 700提供控制平面管道的介面。配置和命令由PKO經由NCB 705介面從處理器核(例如,第三圖中的處理器核320)接收。NCB 705還可以將PKO 700連接到支援存儲操作的主記憶體。因此,來自PDM 730的所有封包描述符存儲、來自PSE 740的命令回應和從PEB 750到記憶體的原子操作都可以由NCB 705服務。
IOBP 706、708包括到IBOC塊的介面(例如,128位元介面),該IOBC介面是通向相干記憶體匯流排(CMB)的橋路。IOB0介面處置來自PDM 730的填充操作以及來自PEB 750中的封包引擎755的上下文取讀作為在封包描述符中嵌入的跳躍(JUMP)指令的結果。IOBP1介面邏輯從封包引擎755取得封包緩衝器位址和傳送大小資訊並且從主記憶體取讀封包資料。緩衝並且向PEB呈現返回的封包資料。封包資料由引擎處理和存儲到與目標MAC關聯的FIFO中。這些介面706、708與NCB 705一起可以被並行運行以與命令、描述符和封包傳送重疊。
也被稱為P2X_DATA匯流排的MAC封包介面712從PKO向MAC移動輸出封包以用於晶片的傳輸輸出。匯流排可以是128位元寬。MAC緩衝器信用介面714實施信用系統,該信用系統防止MAC傳輸緩衝器溢出。
MAC外部反壓介面716可以用來從MAC向PKO 700傳送xon/xoff通道狀態。每個MAC可以向PKO 700每週期發送n位元xon/xoff資訊並且在8週期時段內報告所有支援的通道的狀態。PKO中的介面邏輯檢測用於每個通道的xon/xoff(通道開啟/關斷)的改變、將通道映射到具體PKO佇列編號並且然後生成向PSE 740發送的用於處理的FlowCtl(Q,Xoff)命令。
除了提供流控制的外部介面,控制PKO 700的軟體還可以向調度器表中的適當欄位經由基於NCB 705的訪問直接設置用於每個佇列的xon/xoff狀態。每個調度器表條目可以包含一對xoff 標誌、一個用於硬體並且一個用於軟體。如果這些xoff標誌中的任一xoff標誌被設置,則對佇列進行流控制。
MAC通道信用介面718可以處置從MAC(例如,第三圖中的MAC 390)對信用的返回,這些信用用來限制在向任何具體通道的飛行中的資料量。在外部反壓由下游設備施加時,它可以在傳輸實際停止之前接受的資料量是有限的。信用可以防止比在鏈路的遠端的設備一旦它用信號發送xoff就可以吸收的資料更多的資料向通道排隊。
PKO 700接收來自兩個MAC中的每個MAC的(例如,4位元)匯流排以及來自DPI塊和所有MAC的(例如,2位元)串列匯流排。每個序列介面發送16位字,這些字包含“100”開始序列、通道編號、在該通道上返回的信用字的數目和EOP標誌。
MAC在晶片外傳輸封包資料時返回信用。這些更新可能是頻繁的並且可以每更新返回範圍(例如,從1個信用(16位元組)至16個信用(256位元組))。PKO 700可以將鏈路和通道映射到具體佇列,並且可以生成和向PSE 740發送“creditrtn(Q,credit,eop)”事件。可以保持用於可用通道信用的運行總數作為調度器RAM中的通道佇列狀態的部分。creditrtn事件可以用來向這一總數添加信用。在通道佇列的信用大於待發送的下一封包的大小時,它被啟用以用於傳輸。從這一佇列選擇封包以用於傳輸,從總數減去封包長度。如果總數值降至待發送的下一封包的大小以下,則佇列被禁用於傳輸。
PKO 700可以使用描述符FPA介面732以分配和釋放用於描述符和元封包的記憶體緩衝器,並且可以使用封包FPA介面722以釋放先前為一個或者多個封包而分配的記憶體緩衝器。PKO 700可以使用SSO介面724以向處理器核調度工作。
PKO 700可以對於每個活躍描述符佇列(DQ)並且在如由封包描述符指令的每封包基礎上生成高和低水中斷。PKO 700也 可以生成用於ECC錯誤和用於若干類型的硬體(HW)故障的中斷。這些中斷可以通過PKO的CIU介面726被傳送到外部CIU塊(例如,第二圖中的CIU 172)。
控制/狀態介面(CSI)塊745可以與NCB 705和RSL匯流排二者對接並且提供用於這些介面讀取和寫入到在PKO 700處的控制/狀態寄存器(CSR)的訪問和仲裁點。CSI 745可以包括專用寄存器並且也擴展到PKO 700中以允許調適對在其它塊中包含的狀態寄存器和記憶體的訪問。經由NCB 705或者RSL匯流排可訪問的寄存器和記憶體可以讀取和寫入可訪問,並且具有副作用的CSR可能已經混淆(alias)了允許訪問而無副作用的位址。
PKO命令介面可以是NCB 705位址空間的分配的(例如,128位元組)記憶體映射區域,處理器(例如,第三圖中的處理器核320)可以在該記憶體映射區域處發送用於配置和管理PKO 700資源以及對封包進行排隊以用於從設備鏈路傳輸出去的命令。每個處理器可以向PKO命令緩衝器傳輸上至固定長度(例如,128位元組)的命令作為單個原子存儲。NCB介面705可以向PDM 750傳遞這些命令,其中它解析命令並且執行以下校驗:1)校驗命令有效。2)校驗創建命令以未使用的佇列為目標並且描述符緩衝器可用。3)校驗去除命令以使用中的佇列為目標。4)校驗發送命令以使用中的佇列為目標並且描述符緩衝器可用。
對於向PKO 700發送的每個命令,可以預計向發佈命令的處理器提供迴響應。向處理器返回的命令回應(例如,64位)發回接收的命令代碼和狀態碼。狀態碼標識命令是否成功完成或者是否遇到錯誤。丟棄校驗失敗的任何命令並且生成可選中斷。在sendpkt命令的情況下,部分(例如,較低48位元)可以根據DQ的配置而包含以位元組或者封包為單位的暫態DQ深度。所有其它命令在這一欄位中返回零。NCB介面705中的計時器可以用來跟蹤每個命令以防範PKO 700失效。命令逾時可以通過在NCB 705 處的命令介面邏輯向適當處理器自動生成迴響應。
PDM 730也可以管理封包描述符和元封包預取緩衝器736、735。可以對於系統中的每個活躍DQ完成預取以便減少延時、節約DRAM頻寬並且允許PSE 740將調度判決流水線化。封包長度可能是速率成形和DWRR信用計算的中心。為了實現必需輸送量,可以在向PKO 700返回第一描述符之前將上至固定數目(例如,32個)的封包描述符取讀置於飛行中。如果在描述符中保持封包長度,則將需要完成信用計算,其中假設最大傳輸單位(MTU)或者某個平均封包長度並且然後在實際封包長度可用時以後校正信用計算。這一方式的一個缺點是在這麼多的封包未完成時,在任何給定的時刻的信用計算錯誤可能是顯著的,並且從這些計算得到的調度和成形判決可能不正確。另一問題是有時不應完成對計算的校正,比如在佇列從活躍向不活躍轉變時未對不足加權的迴圈(DWRR)校正。這一場景可能在第一描述符在PKO 700可用之前出現多次。因此,將需要附加狀態資訊以在逐個佇列的基礎上回憶哪個封包生成和未生成校正動作。這些動作也可能需要處理附加事件從而消耗寶貴的PSE週期和調度錶帶寬。
為了信用計算準確以及避免這些複雜性,PKO可能要求在取讀描述符之前知道傳輸的封包的確切長度。為了適應這一要求,用來存儲封包描述符的緩衝器也可以包含小資料結構,該小資料結構保持每個封包的個別長度。每個DQ可以具有PKO 700中的用於保持封包長度的兩個專用緩衝器。封包長度/策略預取緩衝器735(PLRB)的一部分例如可以保持用於每個DQ中的前N個封包的長度,其中N例如可配置為16、32或者64。同樣地,描述符預取緩衝器736(PLWB)的一部分可以用來將封包長度打包在一起以用於在每個DQ的尾部突發存儲。可以每當選擇DQ以用於傳輸時從PLRB取得封包長度,並且在緩衝器耗用至一半以下時標記N/2個封包長度的下一集合中的DMU取讀。在向DQ添加封包時, 描述符可以被存儲到它的DDR記憶體緩衝器,並且向PLWB發送封包長度。一旦N/2個封包長度被打包到PLWB中,就可以向DDR記憶體刷新輸出它們作為單個突發寫入事務。
為了從單個封包佇列(PQ)提供大量輸送量(例如,100Mbps)和這些封包都可以從調度樹中的單個DQ發源這樣的事實,可以要求樹中的每個DQ被配置用於N=64。這一配置將支援讓32個封包從任何單個DQ在飛行中並且允許它維繫這一輸出水準。這一配置的一個結果是增加DQ封包長度緩衝器的存儲可能減少可以支援的DQ的數目。在共計64KB用於封包長度存儲時,將所有DQ設置成類型2將允許系統中的最多256個DQ。
PKO也可以管理描述符佇列頭部表和尾部指標表這兩個表,這些表包含用於每個描述符佇列的頭部和尾部指標加上有效位。位址位可以保持零,因為可以從本地DDR記憶體分配描述符緩衝器。
以下描述了PKO 700在它操作以處理sendpkt命令、確定相應的封包的順序、構造和處理封包以及轉發封包以用於傳輸時的示例工作流程過程。以下編號的操作對應於第七圖內的帶圓圈的編號以圖示每個操作出現的位置。
(1)通過NCB 705匯流排從處理器核接收sendpkt命令。
(2)向PDM 730轉發sendpkt命令。
(3)PDM 730中的命令邏輯從sendpkt命令提取DQ、封包長度和分群組原則欄位並且向封包預取緩衝器735發送它們。向描述符預取緩衝器736發送整個sendpkt命令。
(4)向PSE 740發送addpkt事件。
(5)PSE 740更新DQ深度並且向NCB介面705發佈sendpkt回應以用於向MIPS處理器傳輸。
(6)如果DQ為空,則啟動它並且向在PSE 740處的PA狀態機發佈pktadvance命令;否則,addpkt終止。PA機器推進封 包經過調度級直至它被阻止或者到達PQ寄存器。在封包從佇列到佇列向前推進時,向統計塊發佈命令以按照封包和位元組二者記錄傳輸。
(7)一旦封包已經到達PQ,則將與PQ關聯的鏈路分級寄存器(在PSE 740處)設置為有效。分級寄存器保持與被選擇用於傳輸的封包關聯的所有狀態資訊。這一狀態資訊可以包括DQ,該DQ保持封包、封包長度、顏色和策略位元、通道編號以及向目標鏈路指派的PEB 750 FIFO編號。
(8)鏈路選擇邏輯比較有效分級寄存器與由MCI1塊提供的被優先的鏈路狀態、任何活躍鏈路成形器的狀態和來自PEB 750的每鏈路資源狀態並且選擇PEB 750可以服務於的最高優先順序的有效鏈路。
(9)向PEB塊750傳遞來自選擇的PSE鏈路寄存器的FIFO編號和封包狀態,其中它被排隊以用於處理。
(10)PSE 740向PG狀態機發佈packetget命令以填充現在為空的PQ寄存器。命令沿著它的從PQ到調度樹的葉佇列一路工作從而從下一級向前拉取封包以反向填充空佇列。它也向統計塊發佈用於在來自每個佇列的封包傳輸穿越調度樹時記錄它的命令。(可以連續地重複在步驟7至10中體現的過程以每12個週期提供新封包選擇。)
(11)PEB 750中的封包引擎755向PDM 730中的描述符預取緩衝器736發佈對於封包的描述符的請求。可以代表PEB 750 FIFO完成請求,該FIFO具有這一封包的所有權。封包引擎755通過DQ編號和PEB FIFO編號標識請求的描述符。
(12)如果描述符在緩衝器中,則描述符預取緩衝器736向在PEB 750處的封包引擎755返回描述符,否則告知引擎在從主記憶體取讀描述符之時睡眠。如果需要取讀,則向IOBP0介面706發佈它,並且DQ編號用作流ID。一旦描述符在緩衝器中,則向PEB FIFO發信號以喚醒和重新發佈描述符請求。
(13)使用在從PDM提供的描述符中的指標,封包引擎755使用一個或者多個快取記憶體線(128位元組)讀取事務來代表PEB FIFO經由IOBP1介面708取讀封包。為FIFO而發佈的所有封包取讀事務使用相同流ID並且被保障按順序完成。用於封包取讀操作的流ID總是等於PEB FIFO數目。在支持多個鏈路時,在PEB內的多個FIFO將競用封包引擎755。封包引擎755使用迴圈機制來服務於這些FIFO。
(14)使用描述符中的子操作,封包資料或者“封包段”的每128位元組傳送由封包引擎755處理並且與PEB創建的頭部一起存儲到與目標鏈路關聯的PEB FIFO 757中。在通過IOBP1介面接收並且由封包引擎處理來自不同封包的段時在每FIFO狀態記憶體中保存和恢復部分狀態和殘留封包資料。
(15)一旦完整地取讀、處理、存儲封包和進行任何最終更新(比如CRC計算),封包引擎755就向與FIFO 756關聯的封包段計數器添加在FIFO 756中存儲的“段”的數目。這一動作向TX狀態機通知封包被排隊以用於向鏈路傳輸。PEB 750向FPA返回空封包緩衝器並且向FPA提供以位元組或者緩衝器數目為單位的封包長度以用於佇列記帳目的。
(16)TX狀態機基於由MCI1塊714供應的被優先的鏈路服務向量在段中從具體TX FIFO 756拉取並且通過P2X匯流排向目標鏈路發送封包。
(17)無論何時從鏈路的TX FIFO 757拉取並且線上上放置資料,鏈路都向PKO 700提供回信用。BGX鏈路也提供用於在BXG介面處的小FIFO的skid信用返回,這些信用返回饋給在BGX內部的四個TX FIFO。
(18)信用計數器跟蹤飛行中並且為每個鏈路而排隊的資料量。MCI0和1塊714、718基於這些計數器標識待服務於的最 高優先順序鏈路並且向PSE中的鏈路選擇邏輯和PEB中的TX狀態機提供這一資訊。
(19)PEB 750中的TX狀態機758向目標鏈路發送封包,並且一旦傳送了EOP位元組,PEB就發佈在描述符中指定的任何可選SSO事件、中斷或者記憶體更新。在PTP封包的情況下,PEB 750可以在執行這些操作之前等待MAC確立時間戳記提交線。
(20)來自MAC的通道級信用返回和通道級反壓(xon/xoff)狀態由PKO 700捕獲。LUT 728將通道編號翻譯成PSE佇列ID並且向PSE發表creditrtn和FlowCtrol事件。
封包調度
為了確定傳輸封包的順序,PKO(例如,以上參照第三圖和第七圖描述的PKO 300、700)可以實施封包成形和/或封包調度。在以上描述的示例中,這樣的成形和調度可以由相應的PSE(例如,PSE 340、740)操作。為了實施調度,PSE可以定義用於對封包將被傳輸到的網路的拓撲進行建模的樹資料結構。在樹結構內的節點可以代表在網路內的路由點,而封包可以由以上描述的元封包代表。PSE可以利用包括“推送”和“拉取”技術的演算法以對經過網路拓撲推進的封包進行建模。可以優化演算法和資料結構以用於向記憶體高效存儲和從記憶體取回以及如下處理,該處理支援廣泛多種硬體處理選項。演算法和資料結構可以被配置為支援對任意大的網路的建模,這些網路包括具有很大數目的級別和每節點高扇入的網路。
第八A圖至第八B圖圖示用於封包調度的模型網路拓撲。第八A圖從模型(即,主控PKO的、被示出為EP0 830的端點)的觀點示出示例模型網路拓撲800。EP0 830能夠通過中間節點820的集合(被標注為節點0-節點9)向多個其它端點810(被標注為EP1-EP35)發送封包。對於在最左節點830的PKO,網路拓撲表現為樹結構,其中PKO在根處。樹中的分支代表分組經過網路穿越以 到達其它端點的物理路徑。在這一視圖中,EP0傳輸的封包經過分支沿著樹向上流動並且最終到達葉,這些葉是其它端點。
元封包如以上參照第五B圖描述的那樣可以包含關於封包的對於它的建模而言必需的資訊。可以優化這一資訊的格式以用於向記憶體存儲和從記憶體取回。元封包可以包括1)關聯的封包的長度、2)對封包將被傳輸到的端點的引用、3)表示元封包是否有效的位和4)表示元封包是否為冒泡(bubble)的位。在沒有其它有效元封包要發送時的一些情況下,可以經過模型推進冒泡元封包以取代有效元封包。元封包也可以包括支援專門化的機制的定制資訊,這些機制用於選擇下一封包以傳輸這樣的網路流量調度和成形。
第八B圖圖示順序與在第八A圖中所示的拓撲800相反(即,鏡像)的模型網路拓撲801。出於選擇接著向網路中傳輸哪個分組的目的,可以實施在第八A圖中所示的模型拓撲。在這一模型中,端點(EP0 810)傳輸的封包經過分支從葉沿著樹向下流動並且最終到達根830。節點0可以是與PKO關聯的根節點(其中端點EP0 830代表包含PKO本身的硬體),並且節點1、節點2和節點3是它的子代。節點4轉而是節點1的子代。子封包流聚合成父流量流直至它們到達根節點,在該點向網路中傳輸從根節點出來的封包流。
模型801中的每個節點820可以維護記錄,該記錄指定它如何相配到網路拓撲中。這一記錄可以包括1)表示是否啟用節點的位、2)父節點引用、3)對子節點的列表中的第一子節點的引用、4)對用於由父節點的子代列表使用的接下來和先前節點的引用以及5)狀態位元數。每個節點820也可以具有用於元封包的記憶體,並且可以限於一次存儲一個元封包。這一元封包可以被稱為 節點的結果,並且它代表將由節點820輸出的下一封包。在模型中,為了類比傳出封包流量,元封包可以僅朝著根830向前移動或者推進;它們不可以向後移動。根節點的結果代表將向網路中傳輸的下一封包。
第九A圖至第九C圖是模型節點的框圖。第九A圖提供模型端點節點910的概念視圖。端點910可以能夠與來自外部源的關聯的元封包一起接收推送命令。端點910向FIFO結構中存儲這些元封包。FIFO中的元封包可用於由分級中的下一節點讀取和無效化。端點可以向它們的父節點發送推送命令。用於端點的拓撲記錄保持關於它的FIFO狀態的資訊並且不包含子引用。
第九B圖提供模型內部節點920的概念視圖。內部節點920可以能夠從它們的子代接收推送命令並且從它們的父代拉取命令。它們也能夠向它的子代發送拉取命令和向它們的父代發送推送命令。可以使內部節點的單個結果時隙可用于由父節點讀取和無效化。
第九C圖提供模型根節點930的概念視圖。根930可以能夠從它的子代接收推送命令和從外部源接收拉取命令。它也能夠向它的子代發送拉取命令。可以使它的所得元封包可用於外界源在使用時被讀取和無效化。根930的拓撲記錄可以不包括父引用。
參照第九A圖至第九C圖,所有三個節點類型910、920、930也可以能夠接收啟用或者禁用節點的“開”和“關”命令。所有推送、拉取、開和關命令包含對將對其施加操作的父代和子代的引用。以這一方式,命令指定應用什麼操作以及何處發現對其應用它們的子和父資料結構。
雖然模型中的三個不同節點類型910、920、930可以如以上描述的那樣不同,但是它們的功能和資料結構相似到足以使得單個演算法可以用於所有三個類型。單個演算法允許在通用和/或定制硬體上容易地完成各種節點計算。以這一方式,運行軟體的通 用處理器可以用來處置更高分級級別,而定制硬體可以用來處置更低分級級別。資料結構的共性實現在運行軟體的通用硬體與定制硬體之間的高效存儲、取回和操縱。
作為在拓撲中的每個節點910、920、930具有結果元封包的結果,對接著傳輸哪個封包的計算可以被劃分成在逐個節點基礎上被評估的更小計算的集合。因此,無需在傳輸封包時同時評估整個分支需要。將計算分解成更小、原子條具有若干優點。雖然依賴性在相鄰節點之間存在,但是可以無序完成計算;可以在相同或者不同處理器上執行計算;以及演算法容易伸縮成具有長分支的大模型,這些分支有許多節點。
回顧第八B圖的模型801,封包流演算法可以使用推送和拉取技術以從FIFO(在EP1至EP35 810)向在右側上的網路介面830推進元封包。元封包可以根據它們被發送到哪個端點810而向模型801輸入。如果端點的父節點已經具有結果,則輸入的元封包將在端點的FIFO中排隊。如果端點的父節點尚無結果,則輸入的元封包從FIFO被立即推進以經由“推送”命令變成父節點。推送命令可以是如下手段,元封包通過該手段在分支內的結果為空時經過模型801推進並且被它的子代之一發送到節點。一系列推送命令將沿著分支向下推進元封包,直至發現已經具有結果的節點。如果未發現節點具有結果,則元封包將經過樹一路推進以變成節點0的結果。
在節點820接收推送命令並且它已經具有結果時,提供命令的節點被追加到子代列表,並且子代的連接狀態在“拼接”操作中被更新。備選地,在節點接收推送命令並且它尚未具有結果時,它然後向它自己的結果推進子代的結果、無效化子代的結果並且向它的父代轉發推送命令。父代然後重複以上過程。
推送機制可以是在網路負荷輕時的元封包推進的主要手段。在網路比模型810提供封包更快地接受它們時,推送命令然後 將大部分時間經過模型快速推進。然而,在元封包比網路可以傳輸封包並且分支開始填滿更快地被輸入到模型801時,推送命令發現越來越少空結果要填充,並且“拉取”機制可以代之以變成為主。拉取命令如同推送命令那樣也可以指引節點以從子節點的結果向它自己的結果推進元封包,但是有不同。例如,如果接收拉取命令的節點不具有任何連接的子代,則它推進“冒泡”元封包並且經過“修剪”操作而變得空閒。如果存在連接的節點,則它從它們之一向它自己的結果推進結果、無效化子代結果並且向子代轉發拉取命令。子代然後重複以上過程。
如果模型801忙碌,則無論何時向網路中傳輸節點0的結果,都發起一系列拉取命令。節點0先執行它自己的拉取命令以向它自己的結果推進子代結果,並且然後它向分支中的下一節點轉發拉取命令。這一過程可以繼續,直至從端點FIFO推進了下一元封包。
如以上描述的那樣,拉取命令可以造成修剪,而推送命令可以造成拼接。修剪和拼接是向樹資料結構施加的操作,這些樹資料結果控制是否包括記錄作為資料結構的部分。模型的優點是在拓撲資料結構中僅包括具有要發送的元封包的節點(即,有效結果)。儘管節點820的拓撲記錄包括節點如何相配到網路中,但是節點直至它具有有效結果才可以被拼接到資料結構中。反言之,在節點不再能夠產生有效結果時,它從資料結構被修剪。
在拼接節點820時,認為它變成連接的,並且在修剪節點時,認為它變成斷開的。用兩位元跟蹤節點的連接狀態。被稱為p_con的第一位跟蹤節點是否連接到它的父代。被稱為c_con的第二位跟蹤節點是否具有任何連接的子節點。P_con和c_con位允許推送和拉取命令快速和高效地確定命令是否應當繼續傳播。
ON命令使節點能夠被連接到資料結構中。如果開啟的節點已經具有結果,則可以立即拼接節點。OFF命令防止節點被連接 到資料結構中。連接的節點將在接收OFF命令時被修剪。已經被關斷的節點將忽略除了ON命令之外的所有命令。ON和OFF命令由外部實體驅動並且可以用作流控制的簡單形式。
第十圖是節點的模型分支1000的方塊圖,模型分支1000可以代表網路模型(比如第八圖的模型801)的一部分。分支1000包括四個節點:端點1010(可與第九A圖的端點節點910比較)、節點B 1020A和節點A 1020B(與第九B圖的內部節點920可比較)這些內部節點和根節點1030(與第九C圖的根節點930可比較)。端點910可以代表封包目的地,而根節點可以代表網路介面。以下參照第十一A圖至第十一E圖描述利用分支1000的示例操作集合,包括推送和拉取操作。一般而言,各圖示出節點在給定的步驟上接收推送或者拉取請求,並且然後在後繼步驟上進行狀態改變和元封包推進。示出了一系列五個元封包推送跟隨有XOFF、後續XON和最終為一系列五個拉取操作。
第十一A圖至第十一E圖是圖示經過模型分支的命令和封包移動的示圖。具體而言,第十一A圖圖示一系列推送命令,第十一B圖圖示關斷命令,第十一C圖圖示跟隨關斷命令的又一拉取命令,第十一D圖圖示開啟命令,並且第十一E圖圖示一系列拉取命令。
首先參照第十一A圖,在1101中,分支完全地空閒。端點節點1010的輸入FIFO為大小為零的空以及三個其它節點1020A、1020B、1030的所有結果時隙。在每級取消確立所有有效c_con和p_con位。第一活動是對於向端點1010發送的元封包0(MP0)的推送請求。
在1102中,端點1010處理對於MP0的推送請求。向FIFO輸入第一MP0,並且FIFO大小增加至一。然後,由於取消確立了p_con位,所以端點1010向它的父節點、節點B-1020A發送推送請求。無論何時處理推送命令,其中發現p_con位被取消確立 並且向父節點發送推送命令,都認為推送命令被“轉發”。
在1103中,節點B 1020B處理對於MP0的推送命令。由於節點B尚未具有結果並且取消確立了p_con和c_con位二者,所以如果它向自己的結果移動MP0並且無效化端點的結果。無論何時以這一方式移動元封包,都認為它“推進”。注意,端點的FIFO的深度減少回至零並且在節點B無效化端點的有效位的結果時清除端點的有效位。由於取消確立了p_con位,所以向節點A轉發推送。
在1104中,端點和節點A二者活躍。端點處理對於MP1的推送請求。向FIFO輸入MP1,FIFO深度增加至1,並且向節點B轉發推送。同時,節點A通過推進MP0並且向根節點轉發推送來處理推送請求。
在1105中,節點B和根節點二者活躍。節點B通過推進MP1並且向節點A轉發推送來處理對於MP1的推送請求。根推進MP0,但是由於它是分支中的最後節點,所以不存在轉發推送的概念。取而代之,MP0將保持作為根的結果直至附著的網路準備好傳輸它。
在1106中,端點和節點A二者活躍。端點通過向FIFO中輸入MP2並且向節點B轉發推送來處理對於MP2的推送請求。節點A通過推進MP1並且向根轉發推送來處理推送請求。
在1107中,節點B和根節點二者活躍。節點B通過推進MP2並且向節點A轉發推送來處理對於MP2的推送請求。然而,關於根,節點1030接收推送而它已經具有結果。根已經以MP0作為它的結果,因此它不能推進MP1。根節點代之以通過設置子代結果的確立c_con位和確立p_con位來完成拼接。這向節點A指示它不應再向根轉發推送,因為沒有更多封包可以這時推進。反言之,它向根指示它的現在連接的子代沒有更多元封包要傳輸。
在1108中,端點和節點A二者活躍。端點1010通過向 FIFO中輸入MP2並且向節點B轉發推送來處理對於MP3的推送請求。節點A處理推送,但是如同在步驟7中的根,它也不能推進元封包,因此它完成拼接。
在1109中,節點B通過執行拼接來處理推送。在這一點,在分支中的每個節點存在有效結果,並且每個節點已經被拼接到它的父代。重要的是,注意,這一示例僅示出了單個路徑,其中在實踐中,節點B、節點A和根可以具有任何數目的連接的子節點。以這一方式,c_con位元意味著存在一個或者多個連接的子節點。
在1110中,端點向FIFO中推送MP4、將FIFO大小遞增至二,並且由於FIFO大小變成大於一,所以也確立c_con位。用於端點的c_con位是向節點B指示多於一個元封包被排隊在FIFO中。
參照第十一B圖,1111示出了向節點A的關斷請求(XOFF)。XOFF請求的目的是禁用節點B。
在1112中,節點A通過從它的子代列表修剪節點B來處理XOFF,並且取消確立節點B的p_con位。並且在這一簡單示例中,由於節點B是節點A的僅有子代,所以也取消確立節點A的c_con位。節點B從節點A被有效地斷開。
參照第十一C圖,1113向示例引入第一拉取操作。附著的網路決定傳輸MP0。在這樣做時,根的結果已經被無效化並且已經向根發佈了拉取請求。
在1114中,根通過從節點A推進MP1來執行拉取命令;然而,由於節點A的結果並未讓它的c_con位被確立,所以根並未轉發拉取。拉取在根處停止並且節點A被修剪。
參照第十一D圖,在1115中,向節點A發送XON請求。XON的目的是啟用節點B。
在1116中,節點A推進MP2,因為它自己的結果時隙為空,它向根發送推送,並且它向節點B發送拉取。注意,發送推 送是因為p_con位被取消確立,並且發送拉取是因為節點B的c_con位被確立。節點B也被拼接到節點A,這也因為節點B的p_con位被取消確立。源於節點B的子分支現在重新連接到節點A。
在1117中,節點B和根1030二者活躍。根1030通過拼接節點A來處理推送。節點B通過推進MP3來對拉取做出回應,並且在它被推進時,端點FIFO大小被減少至一,c_con位被取消確立。
參照第十一E圖,1118開始從根1030拉取元封包而產生的一系列拉取命令。這始於從根拉取MP1。
在1119中,根1030通過推進MP2並且向節點A 1020A轉發拉取來處理拉取。
在1120中,從根拉取MP2,並且節點A通過推進MP3並且向節點B 1020B轉發拉取來處理拉取。
在1121中,節點B和根二者活躍。節點B通過從端點推進MP4來處理拉取。端點FIFO現在為空,因此它被修剪並且它的有效位被取消確立。根推進MP3並且向節點A轉發拉取。
在1122中,從根拉取MP3,並且節點A通過推進MP4來處理拉取。從節點A修剪節點B。
在1123中,根通過推進MP4並且修剪節點A來處理拉取。
在1124中,從根拉取MP4。並未採取其它動作,因為沒有當前連接到根的子代,並且因此沒有更多元封包可用於發送。
在示例實施例中,p_con和c_con位元可以服務於除了加速命令轉發判決之外的目的。由PSE運行的操作可以被優化用於同時處理多個節點,並且連接狀態位元被演算法用來管理在父節點與子節點之間的依賴性。例如,參照第十圖,如果節點A 1020A推進節點B 1020B的結果並且然後向節點B 1020B發佈拉取命令,則未確保節點B 1020B將在節點A 1020A再次準備好推進節點B的結 果之前執行該拉取命令。節點A 1020A可以在節點B已經產生它的下一結果之前嘗試從節點B拉取;然而,由於節點B將最終執行拉取命令,所以確保有效結果將變成可用。c_con位元用來管理這一情況。在節點讀取子代結果並且發現有效位被取消確立而c_con位被確立時,這指示一旦未決拉取命令執行並且節點被允許拖延直至子代結果可用,結果就將可用。
反言之,在推送命令遇到其p_con位被確立的結果時,這意味著結果已經連接到父代而無論有效位如何,並且處理將繼續進行,如同結果有效。這保證在拉取未決時未向父節點轉發推送。
連接位也可以用來管理關鍵互鎖,該關鍵互鎖防止多個處理器對相同節點同時執行推送和拉取命令。衝突在處理器從用於另一處理器已經從父節點同時接收拉取命令的相同節點的子節點接收推送命令時出現。這經常在連接的子分支的尾隨末尾處發生。p_con位與拉取命令相關,同時c_con位與拉取命令相關。在節點讀取它的結果並且發現c_con位被確立而有效位被取消確立時,這指示結果已經被父節點推進並且存在向該節點的未決的關聯的拉取命令。這允許推送命令在衝突時終止。
封包成形
為了確定傳輸封包的順序,PKO(例如,以上參照第三圖和第七圖描述的PKO 300、700)可以實施封包成形和/或封包調度。在以上描述的示例中,這樣的成形和調度可以由相應的PSE(例如,PSE 340、740)操作。
網路流量成形是一種使封包的發送限於指定的速率的機制。這通過根據是否已經超過了指定的速率延遲對封包的傳輸來實現。它具有許多實際應用,比如網路擁塞預防、速率合同履行和服務品質。
在網路變成擁塞時不利地影響封包輸送量和延時。向網路中發送的太多封包可能導致丟棄並且然後重發封包。封包成形通 過限制向網路中傳輸封包的速率來預防網路擁塞。以這一方式,將被正常傳輸的封包被延遲,直至確定網路可以處置它們。為了實施封包成形,PSE可以執行如以下參照第十二圖至第十五圖描述的操作。
第十二A圖至第十二B圖圖示用於封包成形的模型網路拓撲。第十二A圖從模型(即,主控PKO的、被標識為EP0 1230的端點)的觀點示出示例模型網路拓撲1200。EPO 1230能夠經過中間節點820的集合(被標注為節點0-節點9)向多個其它端點1210(被標注為EP1-EP35)發送封包。網路拓撲向在最左節點830的PKO表現為樹結構,其中PKO在根處。樹中的分支代表封包經過網路穿越以到達其它端點的物理路徑。在這一視圖中,EP0傳輸的封包經過分支沿著樹向上流動並且最終到達葉,這些葉是其它端點。模型1200可以與以上參照第八A圖描述的模型800可比較,其中添加在節點1220和目的地端點1210中的每個節點和目的地端點處指示的頻寬限制。
在從封包成形受益的示例中,醒目顯示的路徑示出了從EP0 1230到EP7的路由。沿著路徑,節點0能夠有100吉比特每秒(Gbps)的最大輸送量。如果EP0 1230以比100Gbps更快的資料速率向節點0發送封包,則擁塞將在該節點出現。相似地,如果EP0以比50Gbps更高的資料速率向節點1發送封包;以比20Gbps更高的資料速率向節點4發送封包;以及以比5Gbps更高的資料速率向EP7發送封包,則擁塞將出現。流量成形可以用來保證未超過這些速率。
網路流量成形也可以用來限制封包流以滿足合同服務速率。以這一方式,網路服務提供商可以基於資料速率賦予不同服務等級。網路流量成形可以用來實行服務速率。網路流量成形也可以用來基於封包分類來限制流量流。不同類的封包流可以被配置為具有不同的保障的輸送量。以這一方式,視頻封包流可以被配置為僅 取得為了維持可視相干性而需要的頻寬數量。
第十二B圖圖示順序與在第八A圖中所示的拓撲800相反(即,鏡像)的模型網路拓撲801。除了節點1220、端點1210和根1230之外,網路成形器1215被示出為與每個節點1220和端點1210關聯。
第十三A圖至第十三B圖是圖示兩色和三色成形的方塊圖。第十三A圖圖示可以在第十二B圖的拓撲模型1201中的每個節點1220處存在的雙速率、三色成形器模型1300。成形器可以由PSE操作的成形演算法和用於節點的支援資料結構的組合實施。成形器演算法可以基於如由模型1300舉例說明的權杖桶。在模型1300中,向累加器(即,桶)添加信用(即,權杖)以提供使封包推進有資格的信用。在信用可用時,允許封包推進。在信用不可用時,可以丟棄封包或者拖延封包直至信用變成可用,或者根據如何配置成形器以別的方式推進封包。
一個信用累加器實行承諾的速率而另一信用累加器實行峰值(或者過量)速率。承諾的速率是兩個速率中的較低速率並且可以是保障的速率。在正常條件之下,封包應當總是至少在承諾的速率經過節點進行進展。然後,無論何時過量頻寬可用,節點都可以傳遞封包上至它們的指定的峰值速率。過量容量可以在對等子節點未使用所有它們的承諾的頻寬時變成可用。
CAC(承諾的累加器)跟蹤可用於在承諾的速率推進封包的信用數量。CAC是被劃分成18位元有符號整數部分和8位元分數部分的26位元值。CAC的大小向成形器給予128千位元組的最大可能突發大小。PAC(峰累加器)使用與CAC相同的特性以跟蹤可用於在峰速率推進封包的信用。
兩個信用累加器的狀態確定成形器的顏色:綠色、黃色或者紅色。在兩個累加器為正時,成形器顏色是綠色。在綠色狀態中推進的封包利用節點的承諾的頻寬。在CAC為負而PCA為正 時,成形器是黃色,並且推進封包利用節點的過量頻寬。在CAC和PAC二者均為負時,成形器顏色是紅色,並且封包可以根據成形器配置而推進或者可以不推進。
關於模型的拓撲資料結構,被允許推進元封包的節點被拼接到資料結構中。修剪未被允許推進元封包的節點。因此,推進其成形器是綠色的封包的節點將被拼接或者保持拼接到它的父節點。通常,推進其成形器變成紅色的封包的節點將從它的父節點被修剪。
在成形器推進元封包時,它的累加器之一或者二者根據元封包的大小欄位被借記。在累加器值從非負轉變成負時,這指示顏色降級。顏色可以從綠色向黃色、綠色向紅色和黃色向紅色降級。在降級出現時,節點必須從它當前引用的子代列表被去除並且移向新成形器顏色的子代列表。
在下表1中舉例說明了用於對為每個封包而提供的資料進行成形的示例資料結構。可以在元封包(例如,第五B圖中的元封包500)中包括表1的資料結構或者可以將該資料結構實施為經由指標或者其它手段而與封包關聯的分離的分配。
參照表1,成形器資料結構中的2位元RED_ALGO欄位控制成形器將如何在紅色狀態之中處置封包。成形器提供三個選項:丟棄_開啟_紅色、拖延_開啟_紅色或者發送_開啟_紅色。如在模型1300中所示,如果成形器是紅色則不更新累加器。無論選擇 哪個處理選項都保持這種情況。丟棄_開啟_紅色推進封包而沒有任何成形器狀態改變,同時設置元封包的丟棄位。這向後續節點信號通知將不對元封包執行進一步操作。封包將被視為NO-OP直至它退出拓撲。然後預計外部邏輯丟棄封包而不是向附著的網路中傳輸它。發送_開啟_紅色推進封包而沒有任何成形器狀態改變。封包仍然被紅色成形器視為NO-OP,但是它然後被後續節點視為恰如任何其它節點。注意,在紅色狀態中推進的封包很可能引起擁塞並且可能最終在網路中被丟棄。拖延_開啟_紅色具有無論何時成形器到達紅色狀態都從父代修剪節點的效果。在被修剪時,節點不再被包括在它的父代的子代列表中的任何子代列表中,因此它不能接收任何拉取命令。將最終使節點被拼接回去並且推進分組的僅有命令是來自時間輪的推送命令。
PAC和CAC如以上描述的那樣各自操作以基於相應的成形器資料跟蹤可用信用並且有選擇地推進封包。CAC由CBS(承諾的突發大小)限制,而PAC由PBS(峰值突發大小)限制。從成形器資料結構的CBS_MAN(8位元尾數)和CBS_EXP欄位(4位指數)計算CBS值。相似地,從PBS_MAN和PBS_EXP欄位計算PBS。用於CBS和PBS的等式如下:
CBS=(1+CBS_MAN/256) * 2CBS_EXP
PBS=(1+PBS_MAN/256) * 2PBS_EXP
向CAC添加信用的速率被稱為CIR(承諾的資訊速率)。向PAC添加信用的速率被稱為PIR(峰資訊速率)。以位元組每秒為單位指定這些速率。從被稱為CIR_ADD(CIR加數)和CIR_PER(CIR週期)的兩個中間值計算CIR。CIR_ADD指定由CIR_PER指定的每個時間段向CAC添加的位元組的數目。相似地從PIR_ADD和PIR_PER計算PIR。用於CIR和PIR的等式如下:
CIR=CIR_ADD/CIR_PER
PIR=PIR_ADD/PIR_PER
從成形器資料結構的CIR_MAN(8位元尾數)和CIR_EXP(4位指數)欄位計算CIR_ADD值。從PIR_MAN和PIR_EXP欄位計算PIR_ADD值。用於CIR_ADD和PIR_ADD的等式如下:
CIR_ADD=(1+CIR_MAN/256) * 2CIR_EXP
PIR_ADD=(1+PIR_MAN/256) * 2PIR_EXP
使用時間輪硬體的週期(TW_PER)和成形器資料結構的被稱為CIR_DIV的4位元頻率除數欄位來計算CIR_PER值。相似地從PIR_DIV欄位計算PIR_PER。用於CIR_PER和PIR_PER的等式如下:
CIR_PER=TW_CLK_PER * 2CIR_DIV
PIR_PER=TW_CLK_PER * 2PIR_DIV
時間輪週期(TW_PER)由時間輪的硬體實現方式規定。第十四圖示出簡化的時間輪1400。時間輪使用簡單計數器作為索引來經過成形器資料結構迴圈。對於每個索引,時間輪從記憶體讀取成形器資料結構;使用資料結構中的欄位以計算下一CAC和PAC值並且然後將那些值存儲回到記憶體。在一個示例實施例中,PKO可以每時間輪支援256個成形器資料結構,並且關聯的時間輪週期是768納秒。
時間輪1400的一個功能是無論何時成形器由於向累加器添加信用而改變狀態都向父節點發送拼接命令。無論何時累計器從負值向正值穿越,成形器都已經改變了狀態。這些狀態改變可以是紅色向黃色、紅色向綠色或者黃色向綠色轉變。在成形器改變狀態時,關聯的節點必須從舊顏色列表移向新顏色列表。這用向父節點的拼接命令來完成。
再次參照上表1,元封包可以包括被稱為顏色的2位欄 位,該欄位用於基於元封包在穿過模型網路拓撲之時遇到的成形器狀態標記封包。在一個實施例中,元封包顏色可以總是在它進入模型時作為綠色開始。無論何時標記綠色的元封包遇到黃色成形器,它的顏色都降級成黃色。無論何時標記綠色或者黃色的元封包遇到紅色成形器,它的顏色都降級成紅色。所得元封包的顏色將反映在它退出模型時在模型中遇到的最低成形器顏色。外部邏輯然後可以基於這一顏色分類來改變封包。
如以上描述的那樣,綠色或者黃色成形器無論何時推進封包都根據封包的大小借記它們的信用累加器。提供用於調整封包大小的兩種機制。這一調整可以反映封包封裝或者CRC插入或者任何種類的下游封包操縱,該下游封包操縱將改變封包在附著的網路中的實際傳輸之前的大小。
相對于成形器,一個調整是靜態的並且另一調整是動態的。靜態調整是在被稱為調整的成形器資料結構內包含的9位元有符號整數欄位。這一調整被應用于穿過成形器的所有封包。另一調整是在也被稱為調整的元封包本身中攜帶的9位元有符號整數欄位。這一調整僅應用於攜帶調整的元封包。在更新信用累計器之前應用兩個調整如下:ADJ_PKT_大小=PKT_大小+成形器[調整]+META_PKT[調整]
與第十三A圖對照,第十三B圖圖示單速率、兩顏色成形器模型1301。模型可以與以上描述的模型1300可比較,但是CAC被禁用(由變黑的組成圖示)並且保持於零以提供單速率、兩顏色成形。
第十四圖是以上參照第十三A圖進一步詳細描述的時間輪1400的方塊圖。
第十五圖是圖示可以如何更新模型節點的拓撲資料結構以維護與三個可能的成形器顏色對應的三個子代列表的流程圖。在 節點被拼接到它的父代時,節點的成形器的顏色確定它將被追加到的列表。在被拼接時,具有綠色成型器的節點可以被追加到父代的綠色列表;具有黃色成形器的節點可以被追加到父代的黃色列表;具有被配置成在紅色上發送的紅色成形器的節點可以被追加到紅色列表;並且可以修剪具有被配置成在紅色上拖延的紅色成形器的節點。
應當理解,以上呈現的示例流程圖可以被容易地轉換成以與以上闡述的方式相似的方式操作的模組、子系統或者系統。例如,示例實施例可以包括初始化模組、計算模組和報告模組。
還應當理解,這裡呈現的示例可以包括更多或者更少部件、被分割成子單元或者被實施在不同組合中。另外,可以在硬體、固件或者軟體中實施這裡的示圖。如果在軟體中被實施,則可以用任何適當軟體語言編寫軟體。可以在任何形式的電腦可讀介質(比如隨機存取記憶體(RAM)、唯讀記憶體(ROM)或者磁片或者光碟)上體現並且由通用或者定制處理器載入和執行軟體。
儘管已經參照本發明的示例實施例特別地示出和描述本發明,但是本領域技術人員將理解,可以在其中做出形式和細節上的各種改變而未脫離由所附權利要求涵蓋的本發明的範圍。
300‧‧‧封包輸出處理器
308‧‧‧記憶體
320‧‧‧處理器核
330‧‧‧封包描述符管理器
340‧‧‧封包調度器和成形引擎
350‧‧‧封包引擎和緩衝單元
390‧‧‧MAC

Claims (20)

  1. 一種用於管理封包的傳輸的電路,所述電路包括:封包描述符管理器(PDM),被配置為從命令信號生成元封包,所述元封包指示將由所述電路傳輸的封包的大小和目的地;封包調度引擎(PSE),被配置為經過從所述目的地到所述電路的網路拓撲的模型對所述封包的傳輸進行建模,所述網路拓樸的模型包含模擬在所述目的地與所述電路之間的所述網路拓撲中的多個節點以及在所述複數個節點之間的連結的情況,所述PSE基於所述模型傳輸來確定在多個封包之中傳輸所述封包的順序;以及封包引擎和緩衝(PEB)模組,被配置為處理所述封包並且使得處理的所述封包根據由所述PSE確定的所述順序朝著所述目的地被傳輸。
  2. 根據申請專利範圍第1項所述的電路,其中所述PSE還被配置為對在所述目的地與所述電路之間的所述網路拓撲中的多個節點進行建模。
  3. 根據申請專利範圍第2項所述的電路,其中所述PSE還被配置為對在所述節點中的每個節點處的網路成形器進行建模,所述網路成形器中的每個網路成形器定義峰值速率和承諾的速率中的至少一個速率。
  4. 根據申請專利範圍第3項所述的電路,其中所述PSE還被配置為將所述封包的模型應用於在所述電路與所述目的地之間的路徑中的所述網路成形器中的每個網路成形器,所述PSE基於所述應用來確定所述順序。
  5. 根據申請專利範圍第1項所述的電路,其中所述PSE還被配置為基於所述封包相對於其它封包在所述模型傳輸中到達所述電路來確定所述順序。
  6. 根據申請專利範圍第5項所述的電路,其中所述PSE還被配置為對所述多個封包從多個相應的目的地向所述電路的傳輸進 行建模,所述PSE基於在所述模型傳輸中在所述多個封包中的所述封包的到達來確定所述順序。
  7. 根據申請專利範圍第6項所述的電路,其中所述PSE還被配置為對在所述多個目的地與所述電路之間的所述網路拓撲中的多個節點進行建模。
  8. 根據申請專利範圍第7項所述的電路,其中所述PSE還被配置為向模型多個節點的輸入中的每個輸入指派相對的優先順序。
  9. 根據申請專利範圍第7項所述的電路,其中所述PSE還被配置為基於不足加權的迴圈計算對所述多個封包經過模型多個節點的傳輸進行建模。
  10. 根據申請專利範圍第1項所述的電路,其中所述PSE還被配置為基於與所述封包關聯的信用計數來確定所述順序,所述信用計數指示傳輸緩衝器的用於接收所述封包的容量。
  11. 一種管理封包的傳輸的方法,所述方法包括:接收標識待處理和傳輸的封包的命令信號;從所述命令信號生成元封包,所述元封包包括所述封包的大小的指示和所述封包的目的地;經過從所述目的地到所述電路的網路拓撲的模型對所述封包的傳輸進行建模,所述網路拓樸的模型包含模擬在所述目的地與所述電路之間的所述網路拓撲中的多個節點以及在所述複數個節點之間的連結的情況;基於模型傳輸來確定在多個封包之中傳輸所述封包的順序;對所述封包處理操作以產生處理的封包;以及使得所述處理的封包根據所述順序朝著所述目的地被傳輸。
  12. 根據申請專利範圍第11項所述的方法,還包括對在所述目的地與所述電路之間的所述網路拓撲中的多個節點進行建模。
  13. 根據申請專利範圍第12項所述的方法,還包括對在所述節點中的每個節點處的網路成形器進行建模,所述網路成形器中的 每個網路成形器定義峰值速率和承諾的速率中的至少一個速率。
  14. 根據申請專利範圍第13項所述的方法,還包括將所述封包的模型應用於在所述電路與所述目的地之間的路徑中的所述網路成形器中的每個網路成形器,所述PSE基於所述應用來確定所述順序。
  15. 根據申請專利範圍第11項所述的方法,還包括基於所述封包相對於其它封包在所述模型傳輸中到達所述電路來確定所述順序。
  16. 根據申請專利範圍第15項所述的方法,還包括對所述多個封包從多個相應的目的地向所述電路的傳輸進行建模,所述確定所述順序基於在所述模型傳輸中在所述多個封包中的所述封包的到達。
  17. 根據申請專利範圍第16項所述的方法,還包括對在所述多個目的地與所述電路之間的所述網路拓撲中的多個節點進行建模。
  18. 根據申請專利範圍第17項所述的方法,還包括向模型多個節點的輸入中的每個輸入指派相對的優先順序。
  19. 根據申請專利範圍第17項所述的方法,還包括基於不足加權的迴圈計算對所述多個封包經過模型多個節點的傳輸進行建模。
  20. 根據申請專利範圍第11項所述的方法,還包括基於與所述封包關聯的信用計數來確定所述順序,所述信用計數指示傳輸緩衝器的用於接收所述封包的容量。
TW104105253A 2014-02-28 2015-02-16 網路處理器中的封包調度 TWI559706B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/193,933 US9397938B2 (en) 2014-02-28 2014-02-28 Packet scheduling in a network processor

Publications (2)

Publication Number Publication Date
TW201543848A TW201543848A (zh) 2015-11-16
TWI559706B true TWI559706B (zh) 2016-11-21

Family

ID=52345599

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104105253A TWI559706B (zh) 2014-02-28 2015-02-16 網路處理器中的封包調度

Country Status (4)

Country Link
US (1) US9397938B2 (zh)
CN (1) CN106031107B (zh)
TW (1) TWI559706B (zh)
WO (1) WO2015130403A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9559982B2 (en) * 2014-02-28 2017-01-31 Cavium, Inc. Packet shaping in a network processor
US9680742B2 (en) 2014-02-28 2017-06-13 Cavium, Inc. Packet output processing
US9397938B2 (en) 2014-02-28 2016-07-19 Cavium, Inc. Packet scheduling in a network processor
US9641448B1 (en) * 2015-01-31 2017-05-02 Netronome Systems, Inc. Packet ordering system using an atomic ticket release command of a transactional memory
US10437523B2 (en) * 2016-02-25 2019-10-08 Red Hat Israel, Ltd. Secure receive packet processing for network function virtualization applications
CN106452840B (zh) * 2016-09-09 2019-12-31 青岛海信宽带多媒体技术有限公司 一种网络终端事件上报方法及装置
CN107016604A (zh) * 2017-02-22 2017-08-04 阿里巴巴集团控股有限公司 缓冲记账的方法、装置及设备
CN110999221B (zh) * 2017-06-08 2024-02-20 海恩尼斯港研究公司 具有修改通知的动态tcp流处理
US10805434B2 (en) 2017-06-08 2020-10-13 Hyannis Port Research, Inc. Dynamic TCP stream processing with modification notification
CN109391556B (zh) * 2017-08-10 2022-02-18 深圳市中兴微电子技术有限公司 一种报文调度方法、装置及存储介质
US11095626B2 (en) * 2018-09-26 2021-08-17 Marvell Asia Pte, Ltd. Secure in-line received network packet processing
US11038856B2 (en) * 2018-09-26 2021-06-15 Marvell Asia Pte, Ltd. Secure in-line network packet transmittal
JP7096190B2 (ja) * 2019-03-29 2022-07-05 株式会社日立製作所 データ収集サーバ及びデータ収集方法
US11269644B1 (en) 2019-07-29 2022-03-08 Marvell Asia Pte, Ltd. System and method for implementing strong load ordering in a processor using a circular ordering ring
EP3866417A1 (en) * 2020-02-14 2021-08-18 Deutsche Telekom AG Method for an improved traffic shaping and/or management of ip traffic in a packet processing system, telecommunications network, network node or network element, program and computer program product
CN112995960B (zh) * 2021-03-09 2023-10-31 保定市兆微软件科技有限公司 链式组网终端直通通信的数据传送方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430620B1 (en) * 1997-03-25 2002-08-06 Matsushita Electric Industrial Co., Ltd. System and method for locating and retransferring lost data through the use of position number within a file
TW538609B (en) * 1999-12-29 2003-06-21 Intel Corp Method and apparatus for gigabit packet assignment for multithreaded packet processing
US20070104210A1 (en) * 2005-11-10 2007-05-10 Broadcom Corporation Scheduling of data transmission with minimum and maximum shaping of flows in a network device
US20080016265A1 (en) * 2006-07-11 2008-01-17 Koji Oshikiri Information processing apparatus and data communication device
US20090122700A1 (en) * 2007-11-14 2009-05-14 Microsoft Corporation Spectrum and medium access allocation for fairness
US7965708B2 (en) * 2005-06-07 2011-06-21 Cisco Technology, Inc. Method and apparatus for using meta-packets in a packet processing system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL144709A (en) 2000-08-03 2010-11-30 Cisco Tech Inc Path discovery in a distributed network management architecture
US6862291B2 (en) 2000-11-03 2005-03-01 Telcordia Technologies, Inc. Method and system for quality of service provisioning for IP virtual private networks
US7349405B2 (en) * 2003-06-23 2008-03-25 Transwitch Corporation Method and apparatus for fair queueing of data packets
US8406131B2 (en) 2008-08-14 2013-03-26 Verizon Patent And Licensing Inc. System and method for monitoring and analyzing network traffic
CN101478483B (zh) * 2009-01-08 2011-09-07 中国人民解放军信息工程大学 交换设备内实现分组调度的方法及交换设备
US7986706B2 (en) 2009-04-29 2011-07-26 Telefonaktiebolaget Lm Ericsson Hierarchical pipelined distributed scheduling traffic manager
US20110219113A1 (en) 2010-03-02 2011-09-08 Grewal Avininder Pal Singh Method and system for client assisted stateful handling of packets in a communications network
US20110282642A1 (en) * 2010-05-15 2011-11-17 Microsoft Corporation Network emulation in manual and automated testing tools
US8391896B2 (en) 2010-07-09 2013-03-05 Nokia Corporation Method and apparatus for providing a geo-predictive streaming service
JP5673321B2 (ja) 2011-04-18 2015-02-18 富士通株式会社 伝送装置およびインタフェースカード
US8542586B2 (en) 2011-09-20 2013-09-24 Telefonaktiebolaget L M Ericsson (Publ) Proportional bandwidth sharing of the excess part in a MEF traffic profile
WO2013064603A1 (en) 2011-11-04 2013-05-10 Packet Architects Ab Device for efficient use of packet buffering and bandwidth resources at the network edge
US9397938B2 (en) 2014-02-28 2016-07-19 Cavium, Inc. Packet scheduling in a network processor
US9559982B2 (en) 2014-02-28 2017-01-31 Cavium, Inc. Packet shaping in a network processor
US9680742B2 (en) 2014-02-28 2017-06-13 Cavium, Inc. Packet output processing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430620B1 (en) * 1997-03-25 2002-08-06 Matsushita Electric Industrial Co., Ltd. System and method for locating and retransferring lost data through the use of position number within a file
TW538609B (en) * 1999-12-29 2003-06-21 Intel Corp Method and apparatus for gigabit packet assignment for multithreaded packet processing
US7965708B2 (en) * 2005-06-07 2011-06-21 Cisco Technology, Inc. Method and apparatus for using meta-packets in a packet processing system
US20070104210A1 (en) * 2005-11-10 2007-05-10 Broadcom Corporation Scheduling of data transmission with minimum and maximum shaping of flows in a network device
US20080016265A1 (en) * 2006-07-11 2008-01-17 Koji Oshikiri Information processing apparatus and data communication device
US20090122700A1 (en) * 2007-11-14 2009-05-14 Microsoft Corporation Spectrum and medium access allocation for fairness

Also Published As

Publication number Publication date
CN106031107A (zh) 2016-10-12
US9397938B2 (en) 2016-07-19
TW201543848A (zh) 2015-11-16
US20150249604A1 (en) 2015-09-03
CN106031107B (zh) 2018-04-20
WO2015130403A1 (en) 2015-09-03

Similar Documents

Publication Publication Date Title
TWI668975B (zh) 網路處理器中封包成形之電路與方法
TWI559706B (zh) 網路處理器中的封包調度
TWI566551B (zh) 封包輸出處理之裝置及方法
CN106817317B (zh) 具有入口控制的业务量管理
US7809009B2 (en) Pipelined packet switching and queuing architecture
CN116018790A (zh) 基于接收方的精密拥塞控制
US11593136B2 (en) Resource fairness enforcement in shared IO interfaces
CN115917520A (zh) 用于通过分布式算法为可编程数据平面提供lpm实现的系统
US20230127722A1 (en) Programmable transport protocol architecture
CN115917473A (zh) 用分布式lpm实现的高度可扩展算法构建数据结构的系统
CN111490969A (zh) 网络设备中的灵活报头变更
US20220166718A1 (en) Systems and methods to prevent packet reordering when establishing a flow entry
US10084709B1 (en) Methods and apparatus for scheduling transmission of data in a network
US9667546B2 (en) Programmable partitionable counter
US20230224261A1 (en) Network interface device
US20230300063A1 (en) Network interface device-based computations
Nemeth et al. Network Infrastructure Optimization

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees