linux-iproute2系列-TC命令

TC 规则:
1  流量控制方式:
   SHAPING(限制)        传输速率限制在某个值一下,只要是对外的流量
   SCHEDULING(调度)  在带宽范围内,按照优先级分配带宽
   POLICING(策略)       处理接收到的流量
   DROPING(丢弃)       流量超过某个设定的值,不管向内还是向外流量,直接丢弃

2 流量控制处理对象

   qdisc(排队规则)      
        (1)无类别QDISC 
                  pfifo    bfifo   纯粹的先进先出
                  pfifo_fast        队列包含三个波段,band0 优先级最高,band1次之,band2最低
                  red  (Random Early Detection),到达带宽阀值时随机丢弃
                  sfq    (Stochastic Fairness Queueing)   按照会话为流量进行排序
                  tbf    (ken Bucket Filter)    适合于把流速降低到某个值
             配置举例:
                     tc  qdisc  add  dev    eth0  root   QDISC   QDISC-PARAMETERS
                     tc  qdisc   del   dev   eth0  root 
        
       (2)分类的QDISC
                   CBQ  (Class Based Queueing)基于类别排队,它实现了一个丰富的连接共享类别结构,既有限制(shaping)带宽的能力,也具有带宽优先级管理的能力。
                   HTB   Hierarchy Token Bucket, 它实现了一个丰富的连接共享类别体系。使用HTB可以很容易地保证每个类别的带宽,虽然它也允许特定的类可以突破带宽上限,占用别的类的带宽,通过TBF(Token Bucket Filter)实现带宽限制   
                   PRIO   用PRIO QDisc可以很容易对流量进行优先级管理 


tc过滤器(tc filter)  
    如果过滤器附属于一个类,相关的指令就会对它们进行查询。过滤器能够匹配数据包头所有的域,也可以匹配由ipchains或者iptables做的标记。

服务类型(Type of Service)
某些QDisc有基于服务类型(Type of Service,ToS)的内置的规则为数据包分类。

命名规则
所有的QDisc、类和过滤器都有ID。ID可以手工设置,也可以有内核自动分配。ID由一个主序列号和一个从序列号组成,两个数字用一个冒号
一个QDisc会被分配一个主序列号,叫做句柄(handle),然后把从序列号作为类的命名空间。句柄采用象10:一样的表达方式。习惯上,需要为有子类的QDisc显式地分配一个句柄。

类(CLASS)
在同一个QDisc里面的类分享这个QDisc的主序列号,但是每个类都有自己的从序列号,叫做类识别符(classid)。类识别符只与父QDisc有关,和父类无关。类的命名习惯和QDisc的相同。


TC命令:
add     remove      change     replace   link  

tc qdisc [ add | change | replace | link ] dev eth0 [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]
tc class [ add | change | replace ] dev eth0 parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]
tc filter [ add | change | replace ] dev eth0 [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id
tc [-s | -d ] qdisc show [ dev eth0 ]
tc [-s | -d ] class show dev eth0 tc filter show dev eth0

具体步骤:
Linux  流量控制主要分为
      建立队列
      建立分类
      建立过滤器

2、环境模拟实例:

流量控制器上的以太网卡(eth0) 的IP地址为192.168.1.66,在其上建立一个CBQ队列。假设包的平均大小为1000字节,包间隔发送单元的大小为8字节,可接收冲突的发送最长包数目为20字节。

假如有三种类型的流量需要控制:       
1) 是发往主机1的,其IP地址为192.168.1.24。其流量带宽控制在8Mbit,优先级为2;       
2) 是发往主机2的,其IP地址为192.168.1.30。其流量带宽控制在1Mbit,优先级为1;       
3) 是发往子网1的,其子网号为192.168.1.0,子网掩码为255.255.255.0。流量带宽控制在1Mbit,优先级为6。

    1 建立队列
      eth0   1:0      实际带宽10Mbit   包平均大小1000字节,包间隔发送单元8字节,最小传送包大小64字节     
      tc  qdisc  add  dev   eth0   root handle  1:  cdq  bandwidth 10Mbit   avpket  1000  cell  8    mpu  64
    2  建立分类
      一般情况下,针对一个队列需建立一个根分类,然后再在其上建立子分类。对于分类,按其分类的编号顺序起作用,编号小的优先;一旦符合某个分      类匹配规则,通过该分类发送数据包,则其后的分类不再起作用。
            
       (1)创建根分类1:1, 分配带宽 10Mbit, 优先级为8, 可接收发送最长包数目为20字节,最大MTU  1514字节,包平均大小为1000字节,加权速              率为1Mbit
              tc  class add  dev  eth0  parent 1:0  classid 1:1  cbq   bandwidth   10Mbit  rate 10Mbit  maxburst  20  allot 1514  prio 8 avpkt               1000  cell 8 weight  1Mbit
              
        (2)  创建分类1:2  其父类为1:1,分配带宽为8Mbit,优先级为2, 可接收发送最长包数目为20字节,最大MTU  1514字节,包平均大小为1000               字节,加权速率为800kbit  分离点 1:0
              tc  class  add  dev  eth0 parent 1:1  classid 1:2  cbq  bandwidth 10Mbit  rate 8Mbit  maxburst 20  allot 1514  prio 2  avpkt                1000  cell  8   weight  800Kbit   split 1:0  bounded  
           
        (3)  创建分类1:3  其父类为1:1,分配带宽为1Mbit,优先级为1, 可接收发送最长包数目为20字节,最大MTU  1514字节,包平均大小为1000字              节,加权速率为100kbit  分离点 1:0 
             tc class add dev eth0 parent 1:1 classid 1:3 cbq bandwidth 10Mbit rate 1Mbit maxburst 20 allot 1514 prio 1 avpkt 1000 cell               8 weight 100Kbit split 1:0
             
        (4)  创建分类1:4   其父类为1:1,分配带宽为1Mbit,优先级为6, 可接收发送最长包数目为20字节,最大MTU  1514字节,包平均大小为1000             字节,加权速率为100kbit  分离点 1:0 
             tc class add dev eth0 parent 1:1 classid 1:4 cbq bandwidth 10Mbit rate 1Mbit maxburst 20 allot 1514 prio 6 avpkt 1000 cell              8 weight 100Kbit split 1:0

     3  建立过滤器
       (1)应用路由分类到cbq队列的根,分类编号1:0, 过滤协议 ip, 优先级 100,过滤器基于路由表
         tc filter add dev eth0 parent 1:0 protocol ip prio 100 route
     (2)建立路由映射分类1:2, 1:3, 1:4
         tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 2 flowid 1:2
         tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 3 flowid 1:3
         tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 4 flowid 1:4

      4 建立路由
         ip route add 192.168.1.24 dev eth0 via 192.168.1.66 realm 2
         ip route add 192.168.1.30 dev eth0 via 192.168.1.66 realm 3
         ip route add 192.168.1.0/24 dev eth0 via 192.168.1.66 realm 4


 3  相关信息查看
    tc qdisc ls dev eth0      #显示队列情况
    tc -s qdisc ls dev eth0  #显示详细信息
    tc class  ls  dev   eth0   #显示分类情况
    tc -s filter ls dev eth0   #显示过滤器情况
    ip  route                       #显示现有路由情况   
     
4   维护,相关的增删改查, add/del/change
    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "ip route-static" 是一个在 Cisco 路由器上使用的命令,用于配置静态路由。这个命令允许用户在路由器上手动添加路由条目,而不是让路由器自动学习路由。 语法:ip route [目的网络] [子网掩码] [下一跳地址/接口] [权重/跃点数] 参数说明: - [目的网络] 指定路由的目的网络 - [子网掩码] 指定该网络的子网掩码 - [下一跳地址/接口] 指定数据包经过的下一跳地址或接口 - [权重/跃点数] 指定路由的权重或跃点数 (可选) 示例: ip route 192.168.1.0 255.255.255.0 10.1.1.1 上面的命令添加了一条静态路由,将目的网络为192.168.1.0/24的数据包发往10.1.1.1(下一跳地址) ### 回答2: 在计算机网络中,路由器是一个用于转发数据包的网络设备。路由器根据一定的路由策略,将数据包从一个网络发送到另一个网络。在Linux操作系统中,我们可以使用ip route-static命令来配置静态路由。本篇文章将对该命令进行详细的介绍。 ip route-static命令的语法如下: ``` ip route-static [to DST_NETWORK] [via GATEWAY] [dev INTERFACE] [metric METRIC_VALUE] [table TABLE_ID] ``` 该命令包含以下选项: - to DST_NETWORK:要访问的目标网络地址。可以是IP地址、子网地址或网络地址。 - via GATEWAY:指定必须经过的网关地址,即下一跳地址。 - dev INTERFACE:指定数据包的出站网络接口,可以是物理接口或虚拟接口。 - metric METRIC_VALUE:设置路径的度量标准。 - table TABLE_ID:指定要路由的表的ID。默认情况下,路由将添加到主路由表中。 使用ip route-static命令添加静态路由的步骤如下: 1. 查看当前路由表:使用ip route命令或route -n命令可以查看当前的路由表。 2. 添加静态路由:使用ip route-static命令添加静态路由。例如: ``` ip route-static add 192.168.1.0/24 via 192.168.0.2 dev eth0 ``` 3. 验证静态路由是否已添加成功:使用ip route命令或route -n命令可以再次查看路由表,确认静态路由是否已添加成功。 静态路由的优缺点: 静态路由的优点是简单、快速、可靠。由于静态路由是手动配置的,因此可以根据需求对路由进行精细的控制。另外,静态路由不需要额外的计算机资源,所以在小型网络中使用较为适宜。 静态路由的缺点是不够灵活。当网络拓扑发生改变时,需要手动调整路由配置。静态路由也不能完全解决网络拓扑中的一些复杂问题,例如负载平衡和故障转移等,这需要动态路由协议的支持。 总结: 本文对Linux操作系统中的ip route-static命令进行了详细的介绍,并讲解了静态路由的优缺点。对于小型网络,使用静态路由可以快速、可靠地进行路由控制。但是,在大型网络中,使用动态路由协议更为恰当。我们需要根据实际情况的要求,选择合适的路由策略。 ### 回答3: 路由器作为网络的重要设备,承担着将数据包从源地址发送到目标地址的重要任务,而ip route-static命令是路由器中配置路由表的命令之一。 ip route-static命令的格式为ip route-static <目标网络> <子网掩码> <下一跳地址> [跃点数] [状态] 其中,目标网络指的是需要进行路由转发的目标网络,子网掩码则是用于区分网络地址和主机地址的编码,下一跳地址指的是该数据包需要发送到的下一个路由器或者直接到达目标网络的主机的地址。 ip route-static命令可以实现路由策略的配置,可以将不同的IP地址段,通过不同的下一跳地址,发送到不同的路由器或主机。通过设置不同的跃点数和状态,可以控制该路由的优先级和是否生效等参数。 此外,在实际应用中,还可以通过ip route-static命令实现流量均衡和负载均衡的功能,以实现路由的高可用性和数据包的快速传输。 总的来说,ip route-static命令是路由器配置路由表的一个重要命令,通过该命令的灵活使用,可以实现路由策略的优化和网络流量的控制,以确保网络的高效运行和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值