将你的 scp 会话的最大上传带宽设定为 100 KB/s:
$ trickle -u 100 scp backup.tgz alice@remote_host.com:
另一种控制你的带宽资源的方式是在每一个接口上限制带宽。这在你与其他人分享你的网络连接的上行带宽时尤为实用。同其他一样,Linux 有一个工具来为你做这件事。wondershaper就是干这个的。
wondershaper 实际上是一个 shell 脚本,它使用 tc 来定义流量调整命令,使用 QoS 来处理特定的网络接口。外发流量通过放在不同优先级的队列中,达到限制传出流量速率的目的;而传入流量通过丢包的方式来达到速率限制的目的。
举个例子, 将 eth0 的最大下载/上传带宽分别设定为 1000Kbit/s 和 500Kbit/s:
$ sudo wondershaper <interface><download-rate><upload-rate>
首先你得netem QDiscipline设置看起来没什么区别,limit太大,loss 0%和默认一样,剩下的delay 10ms都是指所有pakcat按照延迟10ms进行发送至于你的TBF设置,用了TBF自身提供的两个途径
TBF叫做Token Bucket Filter.总体的思路就是数据包要领到Token(令牌)才能被发送,而令牌的产生速率收到rate这个参数的限制。Token是一个抽象的概念,Token的大小都是指的Token所指向的数据包的大小。
当要发送的速率低于令牌产生的速度时,所有的数据包都能领到Token,并且多余的Token会在你的Buffer里积累。积累的上限由Buffer/Burst这个参数指定。
当发送的速率等于Token产生的速度时,Token正好被完全消耗,所有的数据包都会发送,并且buffer不会积累多余的Token
当发送的速率大于Token的速率,如果Buffer里还有多余的Token,就会开始消耗Buffer的Token,同时允许数据包通过。如果buffer的Token耗尽,数据包就不被允许通过,并且进入Txqueue(发送队列)排队。如果排队的尺寸大于limit(你的第一个TBF有指定),则队列不能再增长,新到来的数据包会被drop。
明白上面的概念之后你的两条命令的区别也就容易看懂了。
第一个是用的Buffer/Limit
Buffer就是瞬间可以额外提供的Token的数量。Rate限制了你的持续上传速率为1Mb/s,然后在你长时间网络流量很低时,你得Token会积累,最后你可以有Buffer这么大(1600b)的缓冲无视rate的限制(可以瞬间发送1600b,所以叫做突发)。至于后面的limit 3000,是指你当你的缓冲区(Txqueue)超过3000b时,新来的包会被Drop
第二个用的是Burst/latency/rate组合
这里的burst和上面的buffer含义完全相同,都是能够以高于rate所限定的速度发送的数据量(4Mb,比第一个的大很多)。至于Latency,是对应limit的量。Latency规定的是数据包能在Txqueue中呆的最长的时间(你的是1S),在Txqueue中呆超过1s的包都会被Drop。所以结合你的rate来计算,latency 1s+rate 1Mbit/s 等价于 limit为1Mbit*1s=1Mb
*tc只能规整egress traffic,就是从NIC流出的流量(上传),对于下载,要用IFB将ingress(下载)模拟成egress
需要重置的,因为千兆的连接速度是1Gbps,有些路由器标称千兆路由,但LAN口实际是百兆的,买路由器的时候要留意一下哦!百兆路由器配备的是百兆网口,不支持100M以上的宽带,即使接入也只能被限制到一百兆,这种情况最多,所以更换千兆路由器即可解决,要认准全千兆,也就是千兆WAN口和千兆LAN口,无线速率也要千兆以上。
首先要客户找一下环境原因,路由器,交换机,网线等是不是千兆的,看看设备连接路由器是100M的,如果连接交换机要看看交换机的LAN口是不是千兆的,2.4GWiFi速度只有3M只有,移动设备在局域网尽量连接5GWiFi,速度达不到的可以看看手机连接WiFi的速率。
网线限制网速。
五类线只连接了四芯到水晶头上,也就是以前的只连接1236这四芯的网线,最大只能支持100Mbps的传输速度。如果你家的网线是这样的话,你下载也就只能达到10MB/s了。如果想要跑到大于10MB/s的网速,至少需要五类线八芯都连接才能达到,而且需要五类线的质量比较好。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)