Traffic Ccontrol(流量控制)

linux有一个成熟的带宽供给系统,称为Traffic Control(流量控制)。这个系统支持各种方式进行分类、排序、共享和限制出入流量。

一、基础知识

让ip显示我们的链路

ip link  list

[email protected]:/# ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br-net state UP mode DEFAULT group default qlen 1000
    link/ether 78:c2:c0:e3:00:4d brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 78:c2:c0:e3:00:4e brd ff:ff:ff:ff:ff:ff
5: br-net: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
    link/ether 78:c2:c0:e3:00:4d brd ff:ff:ff:ff:ff:ff
7: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-net state UP mode DEFAULT group default qlen 1000
    link/ether 78:c2:c0:e3:00:4d brd ff:ff:ff:ff:ff:ff

iproute切断了“链路”和“IP地址”两个概念的直接联系。

用ip显示我们的ip地址

ip address show

[email protected]:/# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo                              /8表示IP地址表示网络地址的位数,因为一共是32个bit,所以我们的这个网络有了24bit的主机空间。
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br-net state UP group default qlen 1000
    link/ether 78:c2:c0:e3:00:4d brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 78:c2:c0:e3:00:4e brd ff:ff:ff:ff:ff:ff
5: br-net: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 78:c2:c0:e3:00:4d brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.125/24 brd 192.168.2.255 scope global br-net
       valid_lft forever preferred_lft forever
    inet 192.168.1.16/24 brd 192.168.1.255 scope global br-net:0
       valid_lft forever preferred_lft forever
7: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-net state UP group default qlen 1000
    link/ether 78:c2:c0:e3:00:4d brd ff:ff:ff:ff:ff:ff

让ip显示路由

ip route show

[email protected]:/# ip route show
192.168.1.0/24 dev br-net  proto kernel  scope link  src 192.168.1.16
192.168.2.0/24 dev br-net  proto kernel  scope link  src 192.168.2.125

让ip显示arp表

ip neigh show

[email protected]:/# ip neigh show
192.168.2.234 dev br-net lladdr 54:ee:75:4a:37:b5 REACHABLE

二 、路由策略数据库

当内核中拥有“IP:advanced router”和“IP:policy routing”两项时,支持路由策略。

缺省规则:

ip rule list

[email protected]:/# ip rule list
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

三、GRE和其他隧道

Linux有三种隧道,他们是 IP-in-IP 隧道、GRE隧道 和 非内核隧道(如PPTP).

四、带宽管理的队列规定

利用队列,我们决定了数据被发送的方式。

最广泛应用的规定是pfifo_fast队列规定,因为它是缺省配置。

pfifi_fast:先进先出(FIFO),也就是说没有任何数据包被特殊对待。这个队列有3个所谓的“频道”。FIFO应用于每一个频道。并且,如果在0频道有数据包等待发送,1频道的包就不会被处理,1频道和2频道之间的关系也是如此。

内核遵照数据包的TOS标记,把带有“最小延迟”标记的包放进0频道。不支持使用tc命令向其中添加其他的队列规定。

令牌桶过滤器(TBF):只允许不超过事先设定的速率到来的数据包通过,但可能允许短暂突发流量超过设定值。

TBF的实现在于一个缓冲器(桶),不断的呗一些叫做“令牌”的虚拟数据以特定速率填充着。桶最重要的参数就是它的大小,也及时它能够存储令牌的数量。

每个到来的令牌从数据队列中收集一个数据包,然后从桶中被删除。这个算法关系到两个流上--令牌流和数据流。

如果桶里存在令牌且允许没有令牌,相当于不限制速率(缺省情况)。

随机公平队列(SFQ)

SFQ:是公平队列算法家族中的一个简单实现。SFQ的关键词是“会话”(或称作“流”),主要针对一个TCP会话或者UDP流。流量被分成相当多数量的FIFO队列中,每个队列对应一个会话。数据安装简单轮转的方式发送,每个会话都按顺序得到发送机会。

分类的队列规定CBQ(class base queueing)

如果有多种数据流需要进行区别对待,分类的队列规定就非常有用。

每块网卡上都有一个出口“根队列规定”,缺省情况下是前面提到的pfifo_fast队列规定。除了出口队列规定之外,每块网卡上还有一个入口,以便policies进入的数据流。

文中绝大部分摘自《Linux高级路由和流量控制HOWTO》

时间: 2024-08-26 21:58:47

Traffic Ccontrol(流量控制)的相关文章

Windows和Linux环境,网络异常模拟测试方法【转载自光荣之路微信公众号】

1.网络异常的分类 在系统的运行过程中,可能会遇到各种各样的网络问题,其中主要可能出现的问题有 网络延迟:当网络信息流过大时,可能导致设备反应缓慢,造成数据传输延迟: 网路掉包:网路掉包是在数据传输的过程中,数据包由于各种原因在信道中丢失的现象: 网络节流:当数据传输量达到网络带宽上限时,数据包可能会被设备拦截下来在之后发出: 网络重发:当网络不稳定是可能会导致发送端判断数据包丢失导致部分数据包重发: 数据乱序:当数据传输有可能出现数据包到达接收端时间不一致,导致数据包乱序问题: 数据篡改:数据

linux 下使用 tc 模拟网络延迟和丢包

1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽.传输延迟.丢包等等情况.使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如 Fedora.Ubuntu.Redhat.OpenSuse.CentOS.Debian 等等. tc 是Linux 系统中的一个工具,全名为 traffic control(

linux 下使用 tc 模拟网络延迟和丢包(转)

1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽.传输延迟.丢包等等情况.使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如 Fedora.Ubuntu.Redhat.OpenSuse.CentOS.Debian 等等. tc 是Linux 系统中的一个工具,全名为 traffic control(

all about AIX MPIO

Multipath  I/O (多路径) 在计算机存储技术里,多路径提供了容错和性能提高,在计算机系统里CPU有多条物理路径通道,块存储设备通过总线,控制器,交换设备以及桥接设备来连接. 简单举例同一台计算机里1块SCSI磁盘连接2个SCSI控制器或者磁盘连接到两个FC端口.如果其中1个控制器,端口或交换设备故障,那操作系统就会自动切换I/O路径到冗余的控制器为应用程序使用,但这样可能会增加延迟. 一些多路径软件可以利用冗余的路径提高性能,例如: Dynamic load balancing 动

Linux运维 第三阶段 (十一)iptables

Linux运维第三阶段(十一)iptables iptables linux防火墙:netfilter(框架framework):iptables(生成防火墙规则并将其附加在netfilter上,真正实现数据报文过滤.NAT.mangle等规则生成的工具):真正起作用的是规则,规则放在netfilter上才能生效 网络防火墙的功能根据TCP/IP首部实现的 IP报文(见文末附图): fragment ID(段标识) MF(more fragment) DF(don't fragment,单个报文

linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux

tc 是linux 内置的命令:使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制: netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽.传输延迟.丢包等等情况.使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如

linux下TC+HTB流量控制

C规则涉及到 队列(QUEUE) 分类器(CLASS) 过滤器(FILTER),filter划分的标志位可用U32或iptables的set-mark来实现 ) 一般是"控发"不控收 linux下有两块网卡,一个eth1是外网,另一块eth0是内网.在eth0上做HTB.(注 意:filter划分标志位可用u32打标功能或iptables的set-mark功能,如果用iptables来打标记的话,下行速LV在eth0处 控制,但打标应在进入eth0之前进行,所以,"-i et

流量工程 traffic engineering (TE)

什么是流量工程 流量工程是指根据各种数据业务流量的特性选取传输路径的处理过程.流量工程用于平衡网络中的不同交换机.路由器以及链路之间的负载. [编辑] 流量工程的内容 流量工程在复杂的网络环境中,控制不同的业务流走不同的路径,关键的业务走可靠的路径并保证服务质量,并且在某段网络拥塞的情况下,动态调整路由,整个网络如同一个"可控的城市交通系统". 流量工程理念在上世纪90年代末提出,最初起源于互联网.其原理是在MPLS环境中,充分利用标签交换系统来为不同的业务流着色,通过LDP来传递LS

Linux TC(Traffic Control)框架原理解析

近日的工作多多少少和Linux的流控有点关系,自打几年前知道有TC这么一个玩意儿并且多多少少理解了它的原理之后,我就没有再动过它,因为我不喜欢TC命令行,实在是太繁琐了,iptables命令行也比较繁琐,但是比TC命令行直观,而TC命令行则太过于技术化.也许是我对TC框架没有对Netfilter框架理解深刻吧,也许是的.iptables/Netfilter对应的就是tc/TC.       Linux内核内置了一个Traffic Control框架,可以实现流量限速,流量整形,策略应用(丢弃,N