原創翻譯,轉載請註明出處。算法
下面是一個支持Qos的複雜報文處理流水線的圖;
流水線是經過DPDP可重用的軟件庫構建出來的。在流水線裏實現QoS主要是以下模塊:policer,dropper,shceduler。下面是這些模塊的功能性描述。緩存
# | 模塊 | 功能描述 |
1 | Packet I/O Rx&Tx | 從網卡端口接收/發送報文,Intel 1/10GbE輪詢模式(PMD) |
2 | Packet parser | 肯定報文的協議棧,檢查報文頭的完整性 |
3 | Flow classification | 映射輸入報文到一個已知的流,使用hash函數(jhash,CRC等)精確匹配表查找和用桶處理衝突。 |
4 | Policer | 報文統計,使用srTCM(RFC2697)或者trTCM(RFC2698) |
5 | LoadBalancer | 分發報文給每一個工做者,並使得每一個工做者負載均衡。保持對每一個工做者的傳輸流的親和性與報文在流的順序。 |
6 | Worker threads | 特定上層應用程序工做量的代稱(好比IP協議棧) |
7 | Dropper | 使用隨機丟棄或者帶權隨機丟棄算法來擁塞管理。丟包是基於當前調度器隊列負載級別和報文優先級,若是擁塞,首先丟棄低優先級報文 |
8 | Hierarchical Scheduler | 5級分層調度(級別是:出端口,子端口,流水線,流分類和隊列),有成千上萬(典型是64K)的葉子節點(隊列)。在子端口和流水線實現了流量整形,在流分類實現嚴格優先級,在每一個流水線的流分類的隊列裏實現WRR(加權循環)。 |
下面列出的基礎模塊始終在整個報文處理流水線中使用負載均衡
# | 模塊 | 功能描述 |
1 | Buffer manager | 支持全局緩衝區池和每一個線程的私有的緩存 |
2 | Queue manager | 支持在流水線之間傳遞消息 |
3 | Power saving | 支持在低利用率期間節能 |
在每一個特定應用程序須要的性能級別上,流水線塊到CPU核的映射是可配置的,而且這些特性對每個流水線塊都是開啓的。當其餘的塊可能映射到同一個CPU核時,有些流水線塊可能會消耗多個CPU核(即每一個CPU核運行不一樣的塊實例來處理不一樣的收包)。函數