zoukankan      html  css  js  c++  java
  • Traffic Ccontrol(流量控制)

    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》

  • 相关阅读:
    POJ1087 A Plug for UNIX 网络流
    HDU4405 Aeroplane chess 期望DP
    POJ1062 昂贵的聘礼 区间枚举
    HDU4403 A very hard Aoshu problem 枚举
    HDU4407 Sum 容斥定理
    POJ2750 Potted Flower 线段树+DP
    软件项目开发流程以及人员职责
    10款最流行的开源Web设计工具
    C# 把\\r\\n替换为\r\n
    jquery validation 用到的输入验证正则表达式
  • 原文地址:https://www.cnblogs.com/rohens-hbg/p/5207131.html
Copyright © 2011-2022 走看看