使用TC进行Linux流量整形

使用TC进行Linux流量整形,第1张

概述我的网络连接是这样的: 互联网< -128kbps链接 - > Cisco路由器(公共IP)< -LAN-> Linux路由器/服务器(公共IP)< -LAN->普通电脑(公共IP) Cisco路由器: >第一个分配给我的公共IP 机构(/ 29) >被编程为发送所有数据包 通过Linux路由器 Linux路由器 >分配给我的第二个公共IP 机构 >被编程为转发数据包 常规PC和思科之间 路由器 我的网络连接是这样的:

互联网< -128kbps链接 - > Cisco路由器(公共IP)< -LAN-> Linux路由器/服务器(公共IP)< -LAN->普通电脑(公共IP)

Cisco路由器:

>第一个分配给我的公共IP
机构(/ 29)
>被编程为发送所有数据包
通过linux路由器

linux路由器

>分配给我的第二个公共IP
机构
>被编程为转发数据包
常规PC和思科之间
路由器
>也充当服务器(邮件,网络等)

常规PC(其中4个):

>其余的公共IP
>使用linux路由器作为网关

我启用了linux路由器上的iptables数据包登录,有时我发现:

>有些数据包很大,大于
20KB.这是正常的吗? (是的,这是正常的.这些不是数据包,这些是IP数据报,正如Some Guy所说的那样)
>传输数据的次数过多
(在互联网上)比大
16KB.例如在一个特定的
第二个10572字节进入(没有
问题),63521字节输出(到
思科路由器).这需要4个
秒至少发送64KB
通过128kbps链接.与此同时
linux路由器正在发送更多数据
到思科路由器堵塞它
缓冲区.不好.

现在,我如何配置linux路由器以这样的方式塑造流量

>保持传输速度最大化
当交通在这些之间时
普通PC和linux服务器.
>减慢到外面的流量
世界,以避免堵塞“出”
线,使用所有(或几乎所有)
可用带宽(128 kbps).没有
更多“> 16KB秒”
跟踪.
>保证每个常规24kbps
PC,24kbps到linux服务器
随时. (剩余8bkps用于开销
如有必要). IOW,5(伪)
“乐队”,每个24kbps.
>如果有任何PC没有使用
它的全频段,相当分享闲置
其余部分的带宽
传输PC
>优先考虑某些数据包
(DNS查找,控制数据包),拿
远离他人的优先权
(洪流!!!),INSIDE每个乐队,和
不影响其他乐队.

我已经为每台PC标记了(使用IP表–set-xmark选项)每个传出数据包:

> linux路由器对外界,
高prio
> linux路由器对外界,
正常的prio
> linux路由器对外界,
低prio
>第一台常规PC到外面
世界,高prio

… 等等.

每个传入的数据包也使用此方案从16开始标记.

对于这个长期的问题,我很抱歉,但是我已经放弃了使用tc命令设置它,关于流量整形的文档太少,我不知道下一步该去哪里.

解决方法 假设eth0是与Cisco路由器的100mbit以太网连接,它应该是这样的(不是吗?):
tc qdisc add dev eth0 root handle 1: htb default 2# 100 mbpstc class add dev eth0 parent 1: classID 1:1 htb rate 100mbit# To LAN traffictc class add dev eth0 parent 1:1 classID 1:2 htb rate 99000kbit ceil 100mbit# IN traffictc class add dev eth0 parent 1:1 classID 1:3 htb rate 120kbit# OUT traffictc class add dev eth0 parent 1:1 classID 1:4 htb rate 120kbit# IN “bands” (one for each PC)tc class add dev eth0 parent 1:3 classID 1:10 htb rate 24kbit ceil 120kbittc class add dev eth0 parent 1:3 classID 1:11 htb rate 24kbit ceil 120kbittc class add dev eth0 parent 1:3 classID 1:12 htb rate 24kbit ceil 120kbittc class add dev eth0 parent 1:3 classID 1:13 htb rate 24kbit ceil 120kbittc class add dev eth0 parent 1:3 classID 1:14 htb rate 24kbit ceil 120kbit# OUT “bands” (one for each PC)tc class add dev eth0 parent 1:4 classID 1:15 htb rate 24kbit ceil 120kbittc class add dev eth0 parent 1:4 classID 1:16 htb rate 24kbit ceil 120kbittc class add dev eth0 parent 1:4 classID 1:17 htb rate 24kbit ceil 120kbittc class add dev eth0 parent 1:4 classID 1:18 htb rate 24kbit ceil 120kbittc class add dev eth0 parent 1:4 classID 1:19 htb rate 24kbit ceil 120kbit

会得到这样的东西:

+-----------------------------------------------------------+|                      100 mbits (1:1)                      |+---------+------------------------+------------------------+| 99mbits |   120 kbits In (1:3)   |  120 kbits Out(1:4)    |+  (1:2)  +----+----+----+----+----+----+----+----+----+----++---------+ PC1| PC2| PC3| PC4| PC5| PC1| PC2| PC3| PC4| PC5|          |1:10|1:11|1:12|1:13|1:14|1:15|1:16|1:17|1:18|1:19|          +----+----+----+----+----+----+----+----+----+----+

对于每个乐队:

# PC1,INtc qdisc add dev eth0 parent 1:10 handle 20: priotc qdisc add dev eth0 parent 20:1 handle 22: sfq perturb 10tc qdisc add dev eth0 parent 20:2 handle 23: sfq perturb 10tc qdisc add dev eth0 parent 20:3 handle 24: sfq perturb 10# PC1,OUTtc qdisc add dev eth0 parent 1:15 handle 21: priotc qdisc add dev eth0 parent 21:1 handle 25: sfq perturb 10tc qdisc add dev eth0 parent 21:2 handle 26: sfq perturb 10tc qdisc add dev eth0 parent 21:3 handle 27: sfq perturb 10+--------------------++--------------------+|       PC1 IN       ||      PC1 OUT       |+--------------------++--------------------+|     PRIO (20:0)    ||     PRIO (21:0)    ||      |      |      ||      |      |      || Prio | Prio | Prio || Prio | Prio | Prio ||   1  |   2  |   3  ||   1  |   2  |   3  ||(20:1)|(20:2)|(20:3)||(21:1)|(21:2)|(21:3)|+------+------+------++------+------+------+|  SFQ |  SFQ |  SFQ ||  SFQ |  SFQ |  SFQ ||(22:0)|(23:0)|(24:0)||(25:0)|(26:0)|(27:0)|+------+------+------++------+------+------+

等等.

规则应该是这样的

# PC1,OUTtc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 1 fw flowID 21:1tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 2 fw flowID 21:2tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 3 fw flowID 21:3# PC1,INtc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 16 fw flowID 20:1tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 17 fw flowID 20:2tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 18 fw flowID 20:3

等等.

有什么建议,评论等吗? (我没有该领域的经验)

总结

以上是内存溢出为你收集整理的使用TC进行Linux流量整形全部内容,希望文章能够帮你解决使用TC进行Linux流量整形所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1037750.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存