Linux QoS ingress处理流程
在傳統的TCP/IP網絡的路由器中,所有的IP數據包的傳輸都是采用FIFO(先進先出),盡最大努力傳輸的處理機制。在早期網絡數據量和關鍵業務數據不多的時候,并沒有體現出非常大的缺點,路由器簡單的把數據報丟棄來處理擁塞。但是隨著計算機網絡的發展, 數據量的急劇增長,以及多媒體,VOIP數據等對延時要求高的應用的增加。路由器簡單丟棄數據包的處理方法已經不再適合當前的網絡。單純的增加網絡帶寬也不能從根本上解決問題。所以網絡的開發者們提出了服務質量的概念。概括的說:就是針對各種不同需求,提供不同服務質量的網絡服務功能。提供QoS能力將是對未來IP網絡的基本要求。
Linux中的QOS分為入口(Ingress)部分和出口(Egress)部分,入口部分主要用于進行入口流量限速(policing),出口部分的QoS用于隊列調度(queuing scheduling)。
在 Linux 里面,對這個功能模塊的稱呼是 Traffic Control ,簡稱 TC。
這篇文章介紹Ingress。
?
大多數排隊規則(qdisc)都是用于輸出方向的,輸入方向只有一個排隊規則,即ingress qdisc。ingress qdisc本身的功能很有限(速率控制),但可用于重定向incoming packets。通過Ingress qdisc把輸入方向的數據包重定向到虛擬設備ifb,而ifb的輸出方向可以配置多種qdisc,就可以達到對輸入方向的流量做隊列調度的目的。
Linux TC是一個控發不控收的框架,然而這是對于TC所置于的位置而言的,而不是TC本身的限制,事實上,你完全可以自己在ingress點上實現一個隊列機制,說TC控發不控收只是因為Linux TC目前的實現沒有實現ingress隊列而已。
?
Linux QoS ingress處理函數調用圖:
tc filter add dev eth0 parent ffff: protocol ip prio 50 handle 1 fw police rate 1kbit burst 40 mtu 9k drop flowid :1
總結
以上是生活随笔為你收集整理的Linux QoS ingress处理流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界马鞍怎么做
- 下一篇: Linux QoS egress处理流程