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

一、基础知识

让ip显示我们的链路

ip link  list

root@hbg:/# 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

root@hbg:/# 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

root@hbg:/# 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

root@hbg:/# 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

root@hbg:/# 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》

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

  1. linux下使用tc(Traffic Control) 流量控制命令模拟网络延迟和丢包

    目录 TC案例 TC常用命令 TC安装 TC原理介绍 TC规则 TC操作原理 TC命名规则 TC单位 TC命令 TC案例 如何使用tc模拟网络延迟和丢包 修改网络延时:  sudo tc qdisc  ...

  2. 基于TC做流量控制

    1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带 ...

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

    1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带 ...

  4. all about AIX MPIO

    Multipath  I/O (多路径)   在计算机存储技术里,多路径提供了容错和性能提高,在计算机系统里CPU有多条物理路径通道,块存储设备通过总线,控制器,交换设备以及桥接设备来连接.     ...

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

    1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带 ...

  6. kong插件应用

    插件概述 插件之于kong,就像Spring中的aop功能.在请求到达kong之后,转发给后端应用之前,你可以应用kong自带的插件对请求进行处理,合法认证,限流控制,黑白名单校验,日志采集等等.同时 ...

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

    1.网络异常的分类 在系统的运行过程中,可能会遇到各种各样的网络问题,其中主要可能出现的问题有 网络延迟:当网络信息流过大时,可能导致设备反应缓慢,造成数据传输延迟: 网路掉包:网路掉包是在数据传输的 ...

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

    tc 是linux 内置的命令:使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制: ne ...

  9. kong in kubernetes

    网关 这里提到的网关特指API网关.API网关是在微服务架构的演进过程中产生的,其核心功能是聚合后端服务,为客户端调用提供统一的门户.由于网关的集中式管理,在其上又衍生了限流.负载.路由管理.安全防护 ...

随机推荐

  1. IOS开发自定义tableviewcell的注意点😄

    自定义tableviewcell 1.xib,nib拖控件:awakefromnib: 设置2,不拖控件:- (instancetype)initWithStyle:(UITableViewCellS ...

  2. mybatis学习笔记三(关联关系)

    学习mybatis的关联关系,主要注解在代码上,这里不做解释.配置文件一样的就不贴了 1.关联关系表创建(学生对应老师 多对一) 学生老师表 2.表对应的实体类 package com.home.en ...

  3. SQL总结之导入导出

    (5)还原数据库[倒库] [数据泵模式]先要在D盘创建个目录,如D:/dbback 然后去plsql中创建目录sql命令:create directory dbback as 'D:\dbback'; ...

  4. hdu1029

    #include<iostream>#include<string.h>using namespace std;int main(){ int n,i; int t; int ...

  5. 《JavaScript网页经典特效300例》

    <JavaScript网页经典特效300例> 基础篇 进阶篇 高级篇

  6. Java 并发 关键字volatile

    Java 并发 关键字volatile @author ixenos volatile只是保证了共享变量的可见性,不保证同步操作的原子性 同步块 和 volatile 关键字机制 synchroniz ...

  7. 如何使用Maven的archetype快速生成一个新项目(解决生成项目目录不完整问题)

    Maven的archetype Plugin可能大家都听过,但不一定都能很好地用好它.缺省地如果你使用 mvn archetype:generate  会从maven的Repository里查找所有支 ...

  8. Json字符串转Json对象

    public partial class _Default : System.Web.UI.Page{    protected void Page_Load(object sender, Event ...

  9. i++与++i区别使用

    中心:使用变量自增或者处减使用尽量使用++i与--i,而不要去使用i++与i-- ++i与--i可以做左值也可以做右值,而i++与i--只能做右值. 对于基础类型i++与++i结果相同,但是i++肯定 ...

  10. c#简单易用的短信发送服务 悠逸企业短信服务

     悠逸企业短信发送服务,是一种比较简单易操作的短信发送服务,使用POST的方式,请求相应地址就可以实现短信发送功能 1 /// <summary> /// 短信发送服务 /// </ ...