TWI566551B - 封包輸出處理之裝置及方法 - Google Patents

封包輸出處理之裝置及方法 Download PDF

Info

Publication number
TWI566551B
TWI566551B TW104104215A TW104104215A TWI566551B TW I566551 B TWI566551 B TW I566551B TW 104104215 A TW104104215 A TW 104104215A TW 104104215 A TW104104215 A TW 104104215A TW I566551 B TWI566551 B TW I566551B
Authority
TW
Taiwan
Prior art keywords
packet
circuit
node
pse
meta
Prior art date
Application number
TW104104215A
Other languages
English (en)
Other versions
TW201536004A (zh
Inventor
喬瑟夫B 湯普金斯
布萊恩 羅伯特 佛森
威爾森P 辛德二世
理查E 凱斯勒
艾德恩 藍吉凡
安德魯J 瓊斯
伊凡 費德瑞克 羅賓斯
庫巴 沙卡O S 瑪拉發魯普
瑪黑希 朵艾
那卡拉吉G 希拉里
拉吉 庫瑪V 哈盧爾
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 TW201536004A publication Critical patent/TW201536004A/zh
Application granted granted Critical
Publication of TWI566551B publication Critical patent/TWI566551B/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • 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/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames

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基於在元封包中指示的封包的大小和目的地決定順序。一旦封包被調度用於傳輸,PEB就對封包執行處理操作以基於在描述符中指示的指令產生處理的封包。PEB然後使得處理的封包朝著目的地被傳輸。
在進一步的實施例中,PDM還包括元封包佇列,PDM被配置為向元封包佇列存儲元封包。PSE還可以被配置為從元封包佇列擷取元封包的至少一部分。PDM也可以包括描述符佇列,其中PDM向描述符佇列存儲描述符。PEB可以從描述符佇列 擷取描述符的至少一部分。
在更進一步的實施例中,PSE可以比較與目的地關 聯的封包傳輸速率和與目的地關聯的峰值速率和承諾的速率中的至少一個速率,PSE基於比較來決定順序。基於這一比較,PSE可以向封包指派顏色。PSE也可以對於在電路與目的地之間的路徑中的多個節點,比較與節點關聯的封包傳輸速率和與節點關聯的峰值速率和承諾的速率中的至少一個速率,PSE基於比較來決定順序。
在更進一步的實施例中,PSE可以經過網路拓撲的 模型對封包從目的地向電路的傳輸進行建模,PSE基於模型傳輸來決定順序。為了實現這一點,PSE可以對在目的地與電路之間的網路拓撲中的多個節點進行建模,並且可以在模型傳輸中基於到達電路之封包相對於其它封包來決定順序。PSE也可以對多個封包從多個相應的目的地向電路的傳輸進行建模,PSE基於在模型傳輸中在多個封包中的封包的到達來決定順序。PSE還可以對在多個目的地與電路之間的網路拓撲中的多個節點進行建模,並且可以向模型多個節點的輸入中的每個輸入指派相對的優先順序。模型傳輸可以基於不足加權的迴圈(deficit-weighted round robin)計算對傳輸。
在更進一步的實施例中,PEB可以基於描述符中的 指標構成封包,指標指示儲存封包的記憶體的位址。PEB也可以向輸出緩衝器儲存處理的封包,PEB使得封包基於與緩衝器關聯的信用狀態被傳輸。元封包可以包括封包的大小的指示和用於對封包進行排序的指令。對照而言,描述符可以包括指示存儲封包的記憶體的位址的指標,以及用於由PEB處理封包的指令。用於構成和處理封包的指令可以由命令信號提供。PEB可以用指示與封包流量規則相符的顏色標記封包,並且可以向封包添加時間戳記。PEB也可以基於來自PSE的指示來有選擇地丟棄封包。
在更進一步的實施例中,提供了一種管理封包的傳輸的方法。在一種這樣的方法中,接收命令信號,命令信號識別 待處理和傳輸的封包。從命令信號生成元封包,元封包包括封包大小的指示和用於對封包進行排序的指令。也從命令信號生成描述符,其中描述符包括指示儲存封包的記憶體的位址的指標以及用於處理封包的指令。決定在多個封包之中傳輸封包的順序。這樣的決定可以基於在元封包中指示的封包大小和目的地。一旦進行了這一確定,就構成封包,並且基於在描述符中指示的指令處理對封包的操作以產生處理的封包。然後朝著目的地傳輸處理的封包。
100‧‧‧網路服務處理器
101‧‧‧處理器
108‧‧‧外部DRAM
119‧‧‧USB
116‧‧‧雜項I/O介面
120‧‧‧處理器核
122a‧‧‧介面單元
150‧‧‧計時器單元
152‧‧‧指令快取記憶體
154‧‧‧1級數據快取記憶體
156‧‧‧密碼加速
164‧‧‧軌跡控制單元
160‧‧‧HFA單元
162‧‧‧RAID/De-Dup單元
122b‧‧‧介面單元
123‧‧‧聯合測試行動組介面
124‧‧‧PCI介面
126‧‧‧封包輸入單元
128‧‧‧自由池分配器
130‧‧‧2級快取記憶體
132‧‧‧壓縮/解壓協同處理器
133‧‧‧DRAM控制器
135‧‧‧旁路快取記憶體訪問路
136‧‧‧I/O介面
138‧‧‧I/O橋路
138b‧‧‧I/O匯流排橋路
138a‧‧‧I/O封包橋路
140‧‧‧取讀和添加單元
142‧‧‧I/O匯流排
144‧‧‧同調記憶體互連
146‧‧‧封包輸出單元
148‧‧‧調度/同步和排序模組
500‧‧‧元封包
501‧‧‧元封包
505‧‧‧下一指針
520‧‧‧描述符定位符
530‧‧‧未發送標誌
540‧‧‧成形增量
550‧‧‧分群組原則
560‧‧‧封包長度
172‧‧‧中央中斷單元
190‧‧‧介質存取控制器
300‧‧‧封包輸出處理器
308‧‧‧記憶體
320‧‧‧處理器核
330‧‧‧封包描述符管理器
340‧‧‧封包調度器和成形引擎
350‧‧‧封包引擎和緩衝單元
390‧‧‧介質存取控制器
400‧‧‧處理封包的過程
410‧‧‧流程
420‧‧‧流程
425‧‧‧流程
430‧‧‧流程
440‧‧‧流程
450‧‧‧流程
460‧‧‧流程
470‧‧‧流程
740‧‧‧封包調度器和成形引擎
750‧‧‧封包引擎和緩衝單元
755‧‧‧封包引擎
757‧‧‧TX FIFO
758‧‧‧TX狀態機
745‧‧‧控制/狀態介面塊
830‧‧‧端點
820‧‧‧中間節點
605‧‧‧指向鏈
610‧‧‧封包描述符
700‧‧‧封包輸出單元
705‧‧‧網控制緩衝器
706‧‧‧IOBP0介面
708‧‧‧IOBP1介面
712‧‧‧MAC封包介面
714‧‧‧MAC緩衝器信用介面
716‧‧‧MAC外部反壓介面
718‧‧‧MAC通道信用介面
722‧‧‧封包FPA介面
724‧‧‧SSO介面
726‧‧‧CIU介面
728‧‧‧LUT
730‧‧‧封包描述符管理器
732‧‧‧描述符FPA介面
735‧‧‧封包預取緩衝器
736‧‧‧描述符預取緩衝器
1107‧‧‧過程
1108‧‧‧過程
1109‧‧‧過程
1110‧‧‧過程
1111‧‧‧過程
1112‧‧‧過程
1113‧‧‧過程
1114‧‧‧過程
1115‧‧‧過程
1116‧‧‧過程
1117‧‧‧過程
810‧‧‧端點
801‧‧‧模型網路拓撲
800‧‧‧模型網路拓撲
910‧‧‧端點
920‧‧‧內部節點
930‧‧‧模型根節點
1010‧‧‧端點
1020A‧‧‧節點B
1020B‧‧‧節點A
1030‧‧‧根節點
1101‧‧‧過程
1102‧‧‧過程
1103‧‧‧過程
1104‧‧‧過程
1105‧‧‧過程
1106‧‧‧過程
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)執行資料訊框(framing)。網路層(L3)將資料格式化成封包。傳送層(L4)處置端到端傳送。會話層(L5)管理在設備之間的通信,例如,無論通信是半雙工或者全雙工。呈現層(L6)管理資料格式化和呈現,例如,語法、控制代碼、特殊圖形和字元集。應用層(L7)允許在用戶之間的通信,例如,檔傳送和電子郵件。
網路服務處理器100可以對用於上級網路通訊協定(例如,L4-L7)的工作(封包處理操作)進行調度和佇列,並且允許執行對接收的封包中的上級網路通訊協定的處理以接線速度(wire-speed)轉發封包。接線速度是在其之上傳輸和接收資料的網路的資料傳送的速率。通過處理協定以接線速度轉發封包,網路服務處理器未減緩網路資料傳送速率。
封包由多個介面單元122接收以用於處理。封包也 可以由PCI介面124接收。介面單元122通過校驗在接收的封包中所包括的L2網路通訊協定標頭(network protocol header)中的各種欄位來執行對接收的封包的預處理並且然後向封包輸入單元126轉發封包。至少一個介面單元122a可以從多個X附著單元介面(XAUI)、精簡X附著單元介面(RXAUI)或者串列吉比特介質獨立介面(SGMII)接收封包。至少一個介面單元122b可以從Interlaken介面(ILK)接收連接。
封包輸入單元126執行對在接收的封包中包括的網 路通訊協定標頭(例如,L3和L4標頭)的進一步的預處理。預處理包括用於TCP/使用者資料包通訊協定(UDP)(L3網路通訊協定)的校驗和(checksum)校驗。
自由池分配器128維護指標的池來釋放(free)2級 快取記憶體記憶體130和外部DRAM 108中的記憶體。封包輸入單元126使用指標池之一以在2級快取記憶體130或者外部DRAM 108中存儲接收的封包資料而使用指標池的另一個以分配用於處理器核120的工作隊列條目(work queue entries)。
封包輸入單元126然後向2級快取記憶體130或者 外部DRAM 108中的緩衝器中寫入封包資料。優選地,以對於在處理器核120中的至少一個處理器核中執行的更高層軟體方便的格式向緩衝器中寫入封包資料。因此,有助於對更高級網路通訊協定的進一步處理。
網路服務處理器100也可以包括一個或者多個專用 協同處理器。這些協同處理器,在被包括時,從核120卸載一些處理,由此使得網路服務器處理器能夠實現高輸送量封包處理。 例如,提供專用於執行對接收的封包的壓縮和解壓的壓縮/解壓協同處理器132。協同處理單元的其它實施例包括加速用於盤存儲應用的資料條化和資料重複處理的RAID/De-Dup單元162。
另一協同處理器是包括專用超有限自動機(HFA) 執行緒引擎的HFA單元160,這些HFA執行緒引擎被適配為加速 防病毒、入侵偵測系統和其它內容處理應用所必需的模式和/或簽名匹配。使用HFA單元160,加速例如在每秒數十Gbps以上的速率執行的模式和/或簽名匹配。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支持上至 128GB DRAM。在一個實施例中,多個DRAM控制器包括四個DRAM控制器,DRAM控制器中的每個DRAM控制器支持32GB DRAM。優選地,每個DRAM控制器133支援到DRAM 108的64位元介面。附加地,DRAM控制器133可以支援優選協定,比如DDR-III協定。
在封包已經由處理器核120處理之後,封包輸出單 元146從2級快取記憶體130、108讀取封包資料、執行L4網路通訊協定後處理(例如,生成TCP/UDP校驗和(checksum))、經過介面單元122或者PCI介面124轉發封包並且釋放由封包使用的L2快取記憶體130/DRAM 108。
DRAM控制器133管理去往/來自DRAM 108的執行 中事務(載入/存儲)。在一些實施例中,DRAM控制器133包括四個DRAM控制器,DRAM 108包括四個DRAM記憶體,並且每個DRAM控制器連接到DRAM記憶體。HFA單元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的的區段(segments)以及用於處理封包的指令。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圖至第五B圖圖示示例實施例中的元封包。 首先參照第五A圖,示出被分配用於儲存元封包的記憶體空間的配置。該分配包括元封包501的排序的塊,元封包501可以被分組成用於由PKO定址的一個或者多個組。在多個記憶體段被串鏈以儲存元封包的配置中,該分配也可以包括“下一指針”505,該指標指示下一分配的記憶體位址。
第五B圖是示例元封包500的方塊圖。如以上描述 的那樣,元封包500可以由PDM 330(第三圖)使用從處理器核接收的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緩衝器大小提供預定義的描述符陣列,這些描述符的位址可以被容易地計算以實現管線作業存取(pipelined accesses)。在與封包描述符相同的緩衝器中包括子描述符允許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在晶片外(off-chip)傳輸封包資料時返回信用。 這些更新可能是頻繁的並且可以每更新返回範圍(例如,從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),並 且在如由封包描述符指令的每封包基礎上,生成高和低水中斷(water interrupts)。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位)回應接收的命令代碼和狀態碼。狀態碼識別命令是否成功完成或者是否遇到錯誤。丟棄校驗失敗的任何命令並且生成可選中斷(optional interrupt)。在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週期和調度表格寬(table bandwidth)。
為了信用計算準確以及避免這些複雜性,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(flow 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和MCI1塊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的子代。子封包流聚合成父(parent)流量流直至它們到達根節點,在該點向網路中傳輸從根節點出來的封包流。
模型801中的每個節點820可以維護記錄,該記錄 指定它如何相配到網路拓撲中。這一記錄可以包括1)表示是否啟用節點的位元、2)父(parent)節點參考、3)對子節點的列表中 的第一子節點的參考、4)對用於由父節點的子代列表使用的接下來和先前節點的參考以及5)狀態位元數。每個節點820也可以具有用於元封包的記憶體,並且可以限於一次存儲一個元封包。這一元封包可以被稱為節點的結果,並且它代表將由節點820輸出的下一封包。在模型中,為了類比傳出封包流量,元封包可以僅朝著根830向前移動或者推進;它們不可以向後移動。根節點的結果代表將向網路中傳輸的下一封包。
第九A圖至第九C圖是模型節點的方塊圖。第九A 圖提供模型端點節點910的概念視圖。端點910可以能夠與來自外部源的關聯的元封包一起接收推送命令(push commands)。端點910向FIFO結構中存儲這些元封包。FIFO中的元封包可用於由分級中的下一節點讀取和無效化。端點可以向它們的父節點發送推送命令。用於端點的拓撲記錄保持關於它的FIFO狀態的資訊並且不包含子參考。
第九B圖提供模型內部節點920的概念視圖。內部 節點920可以能夠從它們的子代接收推送命令(push commands)並且從它們的父代拉取命令。它們也能夠向它的子代發送拉取命令和向它們的父代發送推送命令。可以使內部節點的單個結果時隙可用于由父節點讀取和無效化。
第九C圖提供模型根節點930的概念視圖。根930 可以能夠從它的子代接收推送命令(push commands)和從外部源接收拉取命令(pull commands)。它也能夠向它的子代發送拉取命令。可以使它的所得元封包可用於外界源在使用時被讀取和無效化。根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時,推送命令發現越來越少空結果要填充,並且“拉取”機制可以代之以變成為主。拉取命令如同推送命令那樣也可以指引節點以從子節點的結果向它自己的結果推進元封包,但是有不同。例如,如果接收拉取命令(push command)的節點不具有任何連接的子代,則它推進“磁泡”元封包並且經過“修剪”操作而變得空閒。如果存在連接的節點,則它從它們之一向它自己的結果推進結果、無效化子代結果並且向子代轉發拉取命令。子代然後重複以上過程。
如果模型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比較)、節點B1020A和節點A1020B(與第九B圖的內部節點920可比較)這些內部節點和根節點1030(與第九C圖的根節點930可比較)。端點910可以代表封包目的地,而根節點可以代表網路介面。以下參照第十一A圖至第十一E圖描述利用分支1000的示例操作集合,包括推送和拉取操作。一般而言,各圖示出了節點在給定的步驟上接收推送或者拉取請求,並且然後在後繼步驟上進行狀態改變和元封包推進。示出了一系列五個元封包推送跟隨有XOFF、後續XON和最終為一系列五個拉取操作。
第十一A圖至第十一E圖是圖示經過模型分支的命 令和封包移動的示圖。具體而言,第十一A圖圖示一系列推送命令,第十一B圖圖示關斷(off)命令,第十一C圖圖示跟隨關斷命令的又一拉取命令,第十一D圖圖示開啟(on)命令,並且第十一E圖圖示一系列拉取命令。
首先參照第十一A圖,在1101中,分支完全地空閒。 端點節點1010的輸入FIFO為大小為零的空(empty)以及三個其它節點1020A、1020B、1030的所有結果時隙。在每級取消確立(de-asserted)所有有效c_con和p_con位元。第一活動是對於向端點1010發送的元封包0(MP0)的推送請求。
在1102中,端點1010處理對於MP0的推送請求。 向FIFO輸入第一MP0,並且FIFO大小增加至一。然後,由於取消確立(de-asserted)了p_con位,所以端點1010向它的父節點、節點B-1020A發送推送請求。無論何時處理推送命令,其中發現p_con位被取消確立(de-asserted)並且向父節點發送推送命令, 都認為推送命令被“轉發”。
在1103中,節點B 1020B處理對於MP0的推送命 令。由於節點B尚未具有結果並且取消確立(de-asserted)了p_con和c_con位二者,所以如果它向自己的結果移動MP0並且無效化端點的結果。無論何時以這一方式移動元封包,都認為它“推進”。 注意,端點的FIFO的深度減少回至零並且在節點B無效化端點的有效位的結果時清除端點的有效位。由於取消確立(de-asserted)了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。根節點代之以通過設置子代結果的確立(asserted)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大小變成大於一,所以也確立(asserted)c_con位元。用於端點的c_con位元是向節點B指示多於一個元封包被佇列在FIFO中。
參照第十一B圖,1111示出了向節點A的關斷請求 (XOFF)。XOFF請求的目的是禁用節點B。
在1112中,節點A通過從它的子代列表修剪節點B 來處理XOFF,並且取消確立(de-asserted)節點B的p_con位元。 並且在這一簡單示例中,由於節點B是節點A的僅有子代,所以也取消確立(de-asserted)節點A的c_con位元。節點B從節點A被有效地斷開。
參照第十一C圖,1113向示例引入第一拉取操作。 附著的網路決定傳輸MP0。在這樣做時,根的結果已經被無效化並且已經向根發佈了拉取請求。
在1114中,根通過從節點A推進MP1來執行拉取 命令;然而,由於節點A的結果並未讓它的c_con位元被確立(asserted),所以根並未轉發拉取。拉取在根處停止並且節點A被修剪。
參照第十一D圖,在1115中,向節點A發送XON 請求。XON的目的是啟用節點B。
在1116中,節點A推進MP2,因為它自己的結果 時隙為空,它向根發送推送,並且它向節點B發送拉取。注意, 發送推送是因為p_con位元被取消確立(de-asserted),並且發送拉取是因為節點B的c_con元位被確立(asserted)。節點B也被拼接到節點A,這也因為節點B的p_con位元被取消確立(de-asserted)。源於節點B的子分支現在重新連接到節點A。
在1117中,節點B和根1030二者活躍。根1030通 過拼接節點A來處理推送。節點B通過推進MP3來對拉取做出回應,並且在它被推進時,端點FIFO大小被減少至一,c_con位元被取消確立(de-asserted)。
參照第十一E圖,1118開始從根1030拉取元封包 而產生的一系列拉取命令。這始於從根拉取MP1。
在1119中,根1030通過推進MP2並且向節點A 1020A轉發拉取來處理拉取。
在1120中,從根拉取MP2,並且節點A通過推進 MP3並且向節點B 1020B轉發拉取來處理拉取。
在1121中,節點B和根二者活躍。節點B通過從 端點推進MP4來處理拉取。端點FIFO現在為空,因此它被修剪並且它的有效位元被取消確立(de-asserted)。根推進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位元用來管理這一情況。在節點讀取子代結果並且發現有效位被取消確立(de-asserted)而c_con位被確立時,這指示一旦未決(pending)拉取命令執行並且節點被允許拖延直至子代結果可用,結果就將可用。
反言之,在推送命令遇到其p_con位被確立 (asserted)的結果時,這意味著結果已經連接到父代而無論有效位如何,並且處理將繼續進行,如同結果有效。這保證在拉取未決時,未向父節點轉發推送。
連接位元也可以用來管理關鍵互鎖,該關鍵互鎖防 止多個處理器對相同節點同時執行推送和拉取命令。衝突出現在一處理器從子節點接收推送命令,同時對於相同節點,另一處理器已經從父節點接收拉取命令。這經常在連接的子分支的尾隨末尾處發生。p_con位元與拉取命令相關,同時c_con位元與拉取命令相關。在節點讀取它的結果並且發現c_con位元被確立(asserted)而有效位被取消確立(de-asserted)時,這指示結果已經被父節點推進並且存在向該節點的未決的關聯的拉取命令。 這允許推送命令在衝突時終止。
封包成形
為了決定傳輸封包的順序,PKO(例如,以上參照第三圖和第七圖描述的PKO 300、700)可以實施封包成形和/或封包調度。在以上描述的示例中,這樣的成形和調度可以由相應的PSE(例如,PSE 340、740)操作。
網路流量成形是一種使封包的發送限於指定的速率的機制。這通過根據是否已經超過了指定的速率延遲對封包的傳輸來實現。它具有許多實際應用,比如網路擁塞預防、速率契約履行和服務品質。
在網路變成擁塞時不利地影響封包輸送量和延時。 向網路中發送的太多封包可能導致丟棄並且然後重發封包。封包成形通過限制向網路中傳輸封包的速率來預防網路擁塞。以這一方式,將被正常傳輸的封包被延遲,直至確定網路可以處置它們。 為了實施封包成形,PSE可以執行如以下參照第十二圖至第十五圖描述的操作。
第十二A圖至第十二B圖圖示用於封包成形的模型 網路拓撲。第十二A圖從模型(即,主控PKO的、被標識為EP0 1230的端點)的觀點示出示例模型網路拓撲1200。EP0 1230能夠經過中間節點820的集合(被標注為節點0-節點9)向多個其它端點1210(被標注為EP1-EP35)發送封包。網路拓撲向在最左節點830的PKO表現為樹結構,其中PKO在根處。樹中的分支代表封包經過網路穿越以到達其它端點的物理路徑。在這一視圖中,EP0傳輸的封包經過分支沿著樹向上流動並且最終到達葉,這些葉是其它端點。模型1200可以與以上參照第八A圖描述的模型800可比較,其中添加在節點1220和目的地端點1210中的每個節點和目的地端點處指示的頻寬限制。
在從封包成形受益的示例中,醒目顯示的路徑示出 從EP0 1230到EP7的路由。沿著路徑,節點0能夠有100Gbps的最大輸送量。如果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舉例說明的符記桶(token bucket)。在模型1300中,向累加器(即,桶)添加信用(即,符記)以提供使封包推進有資格的信用。在信用可用時,允許封包推進。在信用不可用時,可以丟棄封包或者拖延封包直至信用變成可用,或者根據如何配置成形器以別的方式推進封包。
一個信用累加器實行承諾的速率而另一信用累加器 實行峰值(或者過量)速率。承諾的速率是兩個速率中的較低速率並且可以是保障的速率。在正常條件之下,封包應當總是至少在承諾的速率經過節點進行進展。然後,無論何時過量頻寬可用,節點都可以傳遞封包上至它們的指定的峰值速率。過量容量可以在對等子節點未使用所有它們的承諾的頻寬時變成可用。
CAC(承諾的累加器)跟蹤可用於在承諾的速率推 進封包的信用數量。CAC是被劃分成18位元有符號整數部分和8位元分數部分的26位元值。CAC的大小向成形器給予128千位元組的最大可能突發大小。PAC(峰值累加器)使用與CAC相同的特性以跟蹤可用於在峰值速率推進封包的信用。
兩個信用累加器的狀態決定成形器的顏色:綠色、 黃色或者紅色。在兩個累加器為正時,成形器顏色是綠色。在綠色狀態中推進的封包利用節點的承諾的頻寬。在CAC為負而PCA為正時,成形器是黃色,並且推進封包利用節點的過量頻寬。在CAC和PAC二者均為負時,成形器顏色是紅色,並且封包可以根 據成形器配置而推進或者可以不推進。
關於模型的拓撲資料結構,被允許推進元封包的節 點被拼接到資料結構中。修剪未被允許推進元封包的節點。因此,推進其成形器是綠色的封包的節點將被拼接或者保持拼接到它的父節點。通常,推進其成形器變成紅色的封包的節點將從它的父節點被修剪。
在成形器推進元封包時,它的累加器之一或者二者 根據元封包的大小欄位被借記(debited)。在累加器值從非負轉變成負時,這指示顏色降級。顏色可以從綠色向黃色、綠色向紅色和黃色向紅色降級。在降級出現時,節點必須從它當前參考的子代列表被去除並且移向新成形器顏色的子代列表。
在下表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奈秒。
時間輪14的一個功能是,無論何時成形器由於向累加器添加信用而改變狀態,都向父節點發送拼接命令。無論何時累計器從負值向正值穿越,成形器都已經改變了狀態。這些狀態改變可以是紅色向黃色、紅色向綠色或者黃色向綠色轉變。在成形器改變狀態時,關聯的節點必須從舊顏色列表移向新顏色列表。這用向父節點的拼接命令來完成。
再次參照上表1,元封包可以包括被稱為顏色 (COLOR)的2位元欄位,該欄位用於,基於元封包在穿過模型網路拓撲之時遇到的成形器狀態,標記封包。在一個實施例中,元封包顏色可以總是在它進入模型時作為綠色開始。無論何時標記綠色的元封包遇到黃色成形器,它的顏色都降級成黃色。無論何時標記綠色或者黃色的元封包遇到紅色成形器,它的顏色都降級成紅色。所得元封包的顏色將反映在它退出模型時在模型中遇到的最低成形器顏色。外部邏輯然後可以基於這一顏色分類來改變封包。
如以上描述的那樣,綠色或者黃色成形器無論何時 推進封包都根據封包的大小借記(debit)它們的信用累加器。提供用於調整封包大小的兩種機制。這一調整可以反映封包封裝或者CRC插入或者任何種類的下游封包操縱,該下游封包操縱將改變封包在附著的網路中的實際傳輸之前的大小。
相對于成形器,一個調整是靜態的並且另一調整是動態的。靜態調整是在被稱為調整(ADJUST)的成形器資料結構內包含的9位元符號整數欄位。這一調整被應用于穿過成形器的所有封包。另一調整是在也被稱為調整(ADJUST)的元封包本身中攜帶的9位元符號整數欄位。這一調整僅應用於攜帶調整(ADJUST)的元封包。在更新信用累計器之前應用兩個調整如下:ADJ_PKT_大小=PKT_大小+成形器[調整]+META_PKT[調整]
與第十三A圖對照,第十三B圖圖示單速率、兩顏色成形器模型1301。模型可以與以上描述的模型1300可比較,但是CAC被禁用(由變黑的組成圖示)並且保持於零以提供單速率、兩顏色成形。
第十四圖是以上參照第十三A圖進一步詳細描述的時間輪1400的方塊圖。
第十五圖是圖示可以如何更新模型節點的拓撲資料結構以維護與三個可能的成形器顏色對應的三個子代列表的流程 圖。在節點被拼接到它的父代時,節點的成形器的顏色確定它將被追加到的列表。在被拼接時,具有綠色成型器的節點可以被追加到父代的綠色列表;具有黃色成形器的節點可以被追加到父代的黃色列表;具有被配置成在紅色上發送(send-on-red)的紅色成形器的節點可以被追加到紅色列表;並且可以修剪具有被配置成在紅色上拖延(stall-on-red)的紅色成形器的節點。
應當理解,以上呈現的示例流程圖可以被容易地轉 換成以與以上闡述的方式相似的方式操作的模組、子系統或者系統。例如,示例實施例可以包括初始化模組、計算模組和報告模組。
還應當理解,這裡呈現的示例可以包括更多或者更 少部件、被分割成子單元或者被實施在不同組合中。另外,可以在硬體、固件或者軟體中實施這裡的示圖。如果在軟體中被實施,則可以用任何適當軟體語言編寫軟體。可以在任何形式的電腦可讀介質(比如隨機存取記憶體(RAM)、唯讀記憶體(ROM)或者磁片或者光碟)上體現並且由通用或者定制處理器載入和執行軟體。
儘管已經參照本發明的示例實施例特別地示出和描述了本發明,但是本領域技術人員將理解,可以在其中做出形式和細節上的各種改變而未脫離由所附權利要求涵蓋的本發明的範圍。
300‧‧‧輸出處理器
308‧‧‧儲存器
320‧‧‧處理器核
330‧‧‧封包描述符管理器
340‧‧‧封包調度器和成形引擎
350‧‧‧封包引擎和緩衝單元
390‧‧‧介質存取控制器

Claims (24)

  1. 一種用於管理封包的傳輸的電路,所述電路包括:封包描述符管理器(PDM),被配置為從命令信號生成元封包和描述符,所述命令信號識別將由所述電路傳輸的封包;封包調度引擎(PSE),被配置為決定在多個封包之中傳輸所述封包的順序,所述PSE基於在所述元封包中指示的所述封包的大小和目的地來確定所述順序;以及封包引擎和緩衝模組(PEB)模組,被配置為對所述封包執行處理操作,以基於在所述描述符中指示的指令產生處理的封包,所述PEB使得所述處理的封包朝著所述目的地被傳輸。
  2. 根據申請專利範圍第1項所述的電路,其中所述PDM還包括元封包佇列,所述PDM被配置為向所述元封包佇列存儲所述元封包。
  3. 根據申請專利範圍第2項所述的電路,其中所述PSE還被配置為從所述元封包佇列擷取所述元封包的至少一部分。
  4. 根據申請專利範圍第1項所述的電路,其中所述PDM還包括描述符佇列,所述PDM被配置為向所述描述符佇列存儲所述描述符。
  5. 根據申請專利範圍第4項所述的電路,其中所述PEB還被配置為從所述描述符佇列擷取所述描述符的至少一部分。
  6. 根據申請專利範圍第1項所述的電路,其中所述PSE還被配置為比較與所述目的地關聯的封包傳輸速率以及與所述目的地關聯的峰值速率和承諾的速率中的至少一個速率,所述PSE基於所述比較來決定所述順序。
  7. 根據申請專利範圍第6項所述的電路,其中所述PSE還被配置為基於所述比較來向所述封包指派顏色。
  8. 根據申請專利範圍第6項所述的電路,其中所述PSE還被配置為,對於在所述電路與所述目的地之間的路徑中的多個節點,比較與所述節點關聯的封包傳輸速率以及與所述節點關聯的峰值速率和承諾的速率中的至少一個速率,所述PSE基於所述比 較來決定所述順序。
  9. 根據申請專利範圍第1項所述的電路,其中所述PSE還被配置為經過網路拓撲的模型對所述封包從所述目的地向所述電路的傳輸進行建模,所述PSE基於模型傳輸來決定所述順序。
  10. 根據申請專利範圍第9項所述的電路,其中所述PSE還被配置為對在所述目的地與所述電路之間的所述網路拓撲中的多個節點進行建模。
  11. 根據申請專利範圍第9項所述的電路,其中所述PSE還被配置為基於所述封包相對於其它封包在所述模型傳輸中到達所述電路來確定所述順序。
  12. 根據申請專利範圍第11項所述的電路,其中所述PSE還被配置為對所述多個封包從多個相應的目的地向所述電路的傳輸進行建模,所述PSE基於在所述模型傳輸中在所述多個封包中的所述封包的到達來決定所述順序。
  13. 根據申請專利範圍第12項所述的電路,其中所述PSE還被配置為對在所述多個目的地與所述電路之間的所述網路拓撲中的多個節點進行建模。
  14. 根據申請專利範圍第13項所述的電路,其中所述PSE還被配置為向模型多個節點的輸入中的每個輸入指派相對的優先順序。
  15. 根據申請專利範圍第13項所述的電路,其中所述PSE還被配置為,基於不足加權的迴圈計算,對所述多個封包經過模型多個節點的傳輸進行建模。
  16. 根據申請專利範圍第1項所述的電路,其中所述PEB還被配置為基於所述描述符中的指標構成所述封包,所述指標指示儲存所述封包的記憶體的位址。
  17. 根據申請專利範圍第1項所述的電路,其中所述PEB還被配置為向輸出緩衝器儲存所述處理的封包,所述PEB使得所述封包基於與所述緩衝器關聯的信用狀態而被傳輸。
  18. 根據申請專利範圍第1項所述的電路,其中所述元封包 包括所述封包的大小的指示和用於對所述封包進行排序的指令。
  19. 根據申請專利範圍第1項所述的電路,其中所述描述符包括1)指示儲存所述封包的記憶體的位址的指標以及2)用於由所述PEB處理所述封包的指令。
  20. 根據申請專利範圍第1項所述的電路,其中所述命令信號還指示用於構成和處理所述封包的指令。
  21. 根據申請專利範圍第1項所述的電路,其中所述PEB還被配置為,用指示與封包流量規則相符的顏色,標記所述封包。
  22. 根據申請專利範圍第1項所述的電路,其中所述PEB還被配置為向所述封包添加時間戳記。
  23. 根據申請專利範圍第1項所述的電路,其中所述PEB還被配置為,基於來自所述PSE的指示,來丟棄封包。
  24. 一種管理封包的傳輸的方法,所述方法包括:接收識別待處理和傳輸的封包的命令信號;從所述命令信號生成元封包,所述元封包包括所述封包的大小的指示和用於對所述封包進行排序的指令;從所述命令信號生成描述符,所述描述符包括1)指示儲存所述封包的記憶體的位址的指標以及2)用於處理所述封包的指令;基於在所述元封包中指示的所述封包的大小和目的地來決定在所述多個封包之中傳輸所述封包的順序;基於在所述描述符中指示的指令來處理對所述封包的操作以產生處理的封包;以及使得所述處理的封包朝著所述目的地被傳輸。
TW104104215A 2014-02-28 2015-02-09 封包輸出處理之裝置及方法 TWI566551B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/193,895 US9680742B2 (en) 2014-02-28 2014-02-28 Packet output processing

Publications (2)

Publication Number Publication Date
TW201536004A TW201536004A (zh) 2015-09-16
TWI566551B true TWI566551B (zh) 2017-01-11

Family

ID=52392238

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104104215A TWI566551B (zh) 2014-02-28 2015-02-09 封包輸出處理之裝置及方法

Country Status (3)

Country Link
US (1) US9680742B2 (zh)
TW (1) TWI566551B (zh)
WO (1) WO2015130402A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9680742B2 (en) 2014-02-28 2017-06-13 Cavium, Inc. Packet output processing
US9559982B2 (en) * 2014-02-28 2017-01-31 Cavium, Inc. Packet shaping in a network processor
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
US10129102B2 (en) * 2016-05-11 2018-11-13 Spirent Communications, Inc. Service based testing
US11258679B2 (en) 2015-07-28 2022-02-22 Spirent Communications, Inc. Systems and methods for automated testing of MoCA networks
US10437523B2 (en) * 2016-02-25 2019-10-08 Red Hat Israel, Ltd. Secure receive packet processing for network function virtualization applications
CN107783845B (zh) * 2016-08-25 2021-04-13 阿里巴巴集团控股有限公司 消息传输系统、方法和装置
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
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
US11546171B2 (en) * 2020-05-15 2023-01-03 Acronis International Gmbh Systems and methods for synchronizing anonymized linked data across multiple queues for secure multiparty computation
US11018943B1 (en) 2020-05-20 2021-05-25 Cisco Technology, Inc. Learning packet capture policies to enrich context for device classification systems
US11809558B2 (en) * 2020-09-25 2023-11-07 Advanced Micro Devices, Inc. Hardware security hardening for processor devices

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020145982A1 (en) * 2000-11-03 2002-10-10 Talpade Rajesh Rasik Method and system for quality of service provisioning for IP virtual private networks
US20090303876A1 (en) * 2008-06-04 2009-12-10 Zong Liang Wu Systems and methods for flow control and quality of service
US20100039957A1 (en) * 2008-08-14 2010-02-18 Verizon Corporate Services Group Inc. System and method for monitoring and analyzing network traffic
US7965708B2 (en) * 2005-06-07 2011-06-21 Cisco Technology, Inc. Method and apparatus for using meta-packets in a packet processing system
US20120009890A1 (en) * 2010-07-09 2012-01-12 Nokia Corporation Method and apparatus for providing a geo-predictive streaming service

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100302263B1 (ko) 1997-03-25 2001-09-22 모리시타 요이찌 스트림 데이터 전송방법 및 시스템
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
IL144709A (en) 2000-08-03 2010-11-30 Cisco Tech Inc Path discovery in a distributed network management architecture
US7349405B2 (en) 2003-06-23 2008-03-25 Transwitch Corporation Method and apparatus for fair queueing of data packets
US8730982B2 (en) 2005-11-10 2014-05-20 Broadcom Corporation Scheduling of data transmission with minimum and maximum shaping of flows in a network device
US7426610B2 (en) 2005-12-29 2008-09-16 Intel Corporation On-device packet descriptor cache
JP5108261B2 (ja) 2006-07-11 2012-12-26 株式会社リコー 情報処理装置およびデータ通信装置
US7778170B2 (en) 2007-11-14 2010-08-17 Microsoft Corporation Spectrum and medium access allocation for fairness
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
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020145982A1 (en) * 2000-11-03 2002-10-10 Talpade Rajesh Rasik Method and system for quality of service provisioning for IP virtual private networks
US7965708B2 (en) * 2005-06-07 2011-06-21 Cisco Technology, Inc. Method and apparatus for using meta-packets in a packet processing system
US20090303876A1 (en) * 2008-06-04 2009-12-10 Zong Liang Wu Systems and methods for flow control and quality of service
US20100039957A1 (en) * 2008-08-14 2010-02-18 Verizon Corporate Services Group Inc. System and method for monitoring and analyzing network traffic
US20120009890A1 (en) * 2010-07-09 2012-01-12 Nokia Corporation Method and apparatus for providing a geo-predictive streaming service

Also Published As

Publication number Publication date
WO2015130402A1 (en) 2015-09-03
US9680742B2 (en) 2017-06-13
US20150249603A1 (en) 2015-09-03
TW201536004A (zh) 2015-09-16

Similar Documents

Publication Publication Date Title
TWI668975B (zh) 網路處理器中封包成形之電路與方法
TWI566551B (zh) 封包輸出處理之裝置及方法
TWI559706B (zh) 網路處理器中的封包調度
CN106817317B (zh) 具有入口控制的业务量管理
US7809009B2 (en) Pipelined packet switching and queuing architecture
US9081742B2 (en) Network communications processor architecture
US11593136B2 (en) Resource fairness enforcement in shared IO interfaces
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
US20230109533A1 (en) Memory usage hints between a processor of a server and a network interface device
Nemeth et al. Network Infrastructure Optimization