linux内核tc命令的简单介绍

linux tc 命令

你问的这么详细不如直接去看教程

企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,成都创新互联面向各种领域:花箱成都网站设计公司成都营销网站建设解决方案、网站设计等建站排名服务。


但是初接触TC看教程还真有点费力,你还是多写写,读别人写的脚本去理解他们的意思

class就是规则分支,你用TC来限制速度,首先要写一些规则,比如优先级别,流量限制等

规则写完后,接下来就要过滤,,就是让系统知道哪些包符合规则,根据你的过滤条件来让数据包走不同的分支(规则,class)

基本步骤就是这样,具体清你看教程去把。

linux运行命令

winver 检查Windows版本

wmimgmt.msc 打开Windows管理体系结构(wmi)

wupdmgr Windows更新程序

wscript Windows脚本宿主设置

write 写字板

winmsd 系统信息

wiaacmgr 扫描仪和照相机向导

winchat xp自带局域网聊天

mem.exe 显示内存使用情况

msconfig.exe 系统配置实用程序

mplayer2 简易widnows media player

mspaint 画图板

mstsc 远程桌面连接

mplayer2 媒体播放机

magnify 放大镜实用程序

mmc 打开控制台

mobsync 同步命令

dxdiag 检查directx信息

drwtsn32 系统医生

devmgmt.msc 设备管理器

dfrg.msc 磁盘碎片整理程序

diskmgmt.msc 磁盘管理实用程序

dcomcnfg 打开系统组件服务

ddeshare 打开dde共享设置

dvdplay dvd播放器

net stop messenger 停止信使服务

net start messenger 开始信使服务

notepad 打开记事本

nslookup 网络管理的工具向导

ntbackup 系统备份和还原

narrator 屏幕“讲述人”

ntmsmgr.msc 移动存储管理器

ntmsoprq.msc 移动存储管理员操作请求

netstat -an (tc)命令检查接口

syncapp 创建一个公文包

sysedit 系统配置编辑器

sigverif 文件签名验证程序

sndrec32 录音机

shrpubw 创建共享文件夹

secpol.msc 本地安全策略

syskey 系统加密,一旦加密就不能解开,保护Windows xp系统的双重密码

services.msc 本地服务设置

sndvol32 音量控制程序

sfc.exe 系统文件检查器

sfc /scannow windows文件保护 tsshutdn 60秒倒计时关机命令

tourstart xp简介(安装完成后出现的漫游xp程序)

taskmgr 任务管理器

eventvwr 事件查看器

eudcedit 造字程序

explorer 打开资源管理器

packager 对象包装程序

perfmon.msc 计算机性能监测程序

progman 程序管理器

regedit.exe 注册表

rsop.msc 组策略结果集

regedt32 注册表编辑器

rononce -p 15秒关机

regsvr32 /u *.dll 停止dll文件运行

regsvr32 /u zipfldr.dll 取消zip支持

cmd.exe cmd命令提示符

chkdsk.exe chkdsk磁盘检查

certmgr.msc 证书管理实用程序

calc 启动计算器

charmap 启动字符映射表

cliconfg sql server 客户端网络实用程序

clipbrd 剪贴板查看器

conf 启动netmeeting

compmgmt.msc 计算机管理

cleanmgr 垃圾整理

ciadv.msc 索引服务程序

osk 打开屏幕键盘

odbcad32 odbc数据源管理器

oobe/msoobe /a 检查xp是否激活

lusrmgr.msc 本机用户和组

logoff 注销命令

iexpress 木马捆绑工具,系统自带

nslookup ip地址侦测器

fsmgmt.msc 共享文件夹管理器

utilman 辅助工具管理器

gpedit.msc 组策略

以下为Windows操作系统的常用运行命令,执行这些命令,就能打开系统对应的相关实用程序,如果大家能基本利用,就能检查并修复系统的最基本的故障,除注销,关闭系统命令外,其它所有命令,大家不妨一试!!

运行\输入CMD\输入 对应的相关实用程序:

. 打开C:\Documents and Settings\XXX(当前登录Windows XP的用户名)

.. 打开Windows XP所在的盘符下的Documents and Settings文件夹

... 打开“我的电脑”选项。

accwiz.exe 辅助工具向导

actmovie.exe 直接显示安装工具

append.exe 允许程序打开制定目录中的数据

arp.exe 显示和更改计算机的IP与硬件物理地址的对应列表

at.exe 计划运行任务

atmadm.exe ATM调用管理器统计

attrib.exe 显示和更改文件和文件夹属性

autochk.exe 检测修复文件系统 (XP不可用)

autoconv.exe 在启动过程中自动转化系统 (XP不可用)

autofmt.exe 在启动过程中格式化进程 (XP不可用)

autolfn.exe 使用长文件名格式 (XP不可用)

arp.exe 显示和更改计算机的IP与硬件物理地址的对应

calc.exe 计算器

Bootvrfy.exe 通报启动成功

cacls.exe 显示和编辑ACL

cdplayer.exe CD播放器

change.exe 与终端服务器相关的查询 (XP不可用)

charmap.exe 字符映射表

chglogon.exe 启动或停用会话记录 (XP不可用)

chgport.exe 改变端口(终端服务) (XP不可用)

chgusr.exe 改变用户(终端服务) (XP不可用)

chkdsk.exe 磁盘检测程序

chkntfs.exe NTFS磁盘检测程序

cidaemon.exe 组成Ci文档服务

cipher.exe 在NTFS上显示或改变加密的文件或目录

cisvc.exe 打开索引内容

ckcnv.exe 变换Cookie

cleanmgr.exe 磁盘清理

cliconfg.exe SQL客户网络工具

clipbrd.exe 剪贴簿查看器

clipsrv.exe 运行Clipboard服务

clspack.exe 建立系统文件列表清单

cluster.exe 显示域的集群 (XP不可用)

cmd.exe 进2000\XP DOS

cmdl32.exe 自动下载连接管理

cmmgr32.exe 连接管理器

cmmon32.exe 连接管理器监视

cmstp.exe 连接管理器配置文件安装程序

comclust.exe 集群

comp.exe 比较两个文件和文件集的内容

conf 启动netmeeting聊天工具

control userpasswords2 XP密码管理.

compmgmt.msc 计算机管理

cprofile.exe 转换显示模式 (XP不可用)

开始,运行,输入CMD\输入net config workstation计算机名 \完整的计算机名\用户名

工作站处于活动状态(即网络描述) \软件版本(即软件版本号) \工作站域 工作站域的 DNS 名称

登录域 \COM 打开时间超时(秒) \COM 发送量(字节) \COM 发送超时 (msec)

CMD\输入net config workstation 更改可配置工作站服务设置。

CMD\输入net config server 可以显示不能配置的下服务器计算机名 \服务器注释 \服务器版本(即软件版本号)

服务器处于活动状态(即网络描述) \服务器处于隐藏状态(即 /hidden 设置)

最大登录用户数(即可使用服务器共享资源的最大用户数)

每个会话打开文件的最大数(即用户可在一个会话中打开服务器文件的最大数)

空闲会话时间(最小值)

chkdsk.exe 磁盘检查.

Chkdsk /r 2000命令控制台中的Chkdsk /r命令检查修复系统文件

cleanmgr 垃圾整理

Clipbrd 剪贴板查看器

C:boot.ini 打开启动菜单

compact.exe 显示或改变NTFS分区上文件的压缩状态

conime.exe IME控制台

control.exe 控制面板

convert.exe NTFS 转换文件系统到NTFS

convlog.exe 转换IIS日志文件格式到NCSA格式

cprofile.exe 转换显示模式

cscript.exe 较本宿主版本

csrss.exe 客户服务器Runtime进程 (XP不可用)

csvde.exe 格式转换程序 (XP不可用)

dcpromo 活动目录安装(XP不可用)

drwtsn32 系统医生

diskmgmt.msc 磁盘管理器(和PowerQuest PartitionMagic 8.0)

dvdplay DVD 播放器

devmgmt.msc 设备管理器(检查电脑硬件,驱动)

dxdiag 检查DirectX信息

dcomcnfg.exe DCOM配置属性 (控制台根目录)

dcpromo.exe 安装向导 (XP不可用)

ddeshare.exe DDE共享

debug.exe 检查DEBUG

dfrgfat.exe FAT分区磁盘碎片整理程序

dfrgntfs.exe NTFS分区磁盘碎片整理程序 (XP不可用)

dfs_cmd_.exe 配置DFS树 (XP不可用)

dfsinit.exe 分布式文件系统初始化(XP不可用)

dfssvc.exe 分布式文件系统服务器 (XP不可用)

diantz.exe 制作CAB文件

diskperf.exe 磁盘性能计数器

dmremote.exe 磁盘管理服务的一部分 (XP不可用)

doskey.exe 命令行创建宏

dosx.exe DOS扩展

dplaysvr.exe 直接运行帮助 (XP不可用)

drwatson.exe 华生医生错误检测

drwtsn32.exe 华生医生显示和配置管理

dvdplay.exe DVD播放

dxdiag.exe Direct-X诊断工具

edlin.exe 命令行的文本编辑

esentutl.exe MS数据库工具

eudcedit.exe 造字程序

eventvwr.exe 事件查看器

exe2bin.exe 转换EXE文件到二进制

expand.exe 解压缩

extrac32.exe 解CAB工具

fsmgmt.msc 共享文件夹

fastopen.exe 快速访问在内存中的硬盘文件

faxcover.exe 传真封面编辑

faxqueue.exe 显示传真队列

faxsend.exe 发送传真向导

faxsvc.exe 启动传真服务

fc.exe 比较两个文件的不同

find.exe 查找文件中的文本行

findstr.exe 查找文件中的行

finger.exe 一个用户并显示出统计结果

fixmapi.exe 修复MAPI文件

flattemp.exe 允许或者禁用临时文件目录 (XP不可用)

fontview.exe 显示字体文件中的字体

forcedos.exe 强制文件在DOS模式下运行

FTP下载

gpedit.msc 组策略

gdi.exe 图形界面驱动

grpconv.exe 转换程序管理员组

hostname.exe 显示机器的Hostname

Internat 输入法图标

iexpress 木马捆绑工具,系统自带

ieshwiz.exe 自定义文件夹向导

iexpress.exe iexpress安装包

iisreset.exe 重启IIS服务(未安装IIS,不可用)

internat.exe 键盘语言指示器 (XP不可用)

ipconfig.exe 查看IP配置

ipsecmon.exe IP安全监视器

ipxroute.exe IPX路由和源路由控制程序

ir 无线连接

ismserv.exe 安装或者删除Service Control Manager中的服务

jdbgmgr.exe Java4的调试器

jetconv.exe 转换Jet Engine数据库 (XP不可用)

jetpack.exe 压缩Jet数据库 (XP不可用)

jview.exe Java的命令行装载者

label.exe 改变驱动器的卷标

lcwiz.exe 许可证向导 (XP不可用)

ldifde.exe LDIF目录交换命令行管理 (XP不可用)

licmgr.exe 终端服务许可协议管理 (XP不可用)

lights.exe 显示连接状况 (XP不可用)

llsmgr.exe Windows 2000 许可协议管理 (XP不可用)

llssrv.exe 启动许可协议服务器 (XP不可用)

locator.exe RPC Locator 远程定位

lodctr.exe 调用性能计数

logoff.exe 注销当前用户

lpq.exe 显示远端的LPD打印队列的状态,显示被送到基于Unix的服务器的打印任务

lpr.exe 用于Unix客户打印机将打印任务发送给连接了打印设备的NT的打印机服务器。

lsass.exe 运行LSA和Server的DLL

lserver.exe 指定默认Server新的DNS域 (XP不可用)

lusrmgr.msc 本地账户管理

mmc 控制台

mplayer2 播放器

macfile.exe 管理MACFILES (XP不可用)

magnify.exe 放大镜

makecab.exe 制作CAB文件

mem.exe 显示内存状态

migpwd.exe 迁移密码

mmc.exe 控制台

mnmsrvc.exe 远程桌面共享

mobsync.exe 同步目录管理器

mountvol.exe 创建、删除或列出卷的装入点。

mplay32.exe Media Player 媒体播放器

mpnotify.exe 通知应用程序

mqbkup.exe 信息队列备份和恢复工具

mqmig.exe MSMQ Migration Utility 信息队列迁移工具

mrinfo.exe 使用SNMP多点传送路由

mscdexnt.exe 安装MSCD

msdtc.exe 动态事务处理控制台

msg.exe 发送消息到本地或远程客户

mshta.exe HTML应用程序主机

msiexec.exe 开始Windows安装程序

mspaint.exe 打开画图板

mstask.exe 任务计划表程序

mstinit.exe 任务计划表安装

Msconfig.exe 系统配置实用程序 (配置启动选项,服务项)

mem.exe 显示内存使用情况

mspaint 画图板

Net Stop Messenger 停止信使服务

Net Start Messenger 恢复信使服务

nslookup 网络管理的工具

Nslookup IP 地址侦测器

ntbackup 系统备份和还原

nbtstat.exe 使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前 TCP/IP 连接。

nddeapir.exe NDDE API服务器端

netsh.exe 用于配置和监控 Windows 2000 命令行脚本接口(XP不可用)

netstat.exe 显示协议统计和当前的 TCP/IP 网络连接。

nlsfunc.exe 加载特定国家的信息。Windows 2000 和 MS-DOS 子系统不使用该命令接受该命令只是为了与 MS-DOS 文件兼容。

notepad.exe 打开记事本

nslookup.exe 该诊断工具显示来自域名系统 (DNS) 名称服务器的信息。

ntbackup.exe 备份和故障修复工具

ntfrs.exe NT文件复制服务 (XP不可用)

ntvdm.exe 模拟16位Windows环境

nw16.exe NetWare转向器

nwscript.exe 运行Netware脚本

odbcad32.exe 32位ODBC数据源管理 (驱动程序管理)

odbcconf.exe 命令行配置ODBC驱动和数据源

packager.exe 对象包装程序

pathping.exe 包含Ping和Tracert的程序

pentnt.exe 检查Pentium的浮点错误

perfmon.exe 系统性能监视器

ping.exe 验证与远程计算机的连接

posix.exe 用于兼容Unix

print.exe 打印文本文件或显示打印队列的内容。

progman.exe 程序管理器

psxss.exe Posix子系统应用程序

qappsrv.exe 在网络上显示终端服务器可用的程序

qprocess.exe 在本地或远程显示进程的信息(需终端服务)

query.exe 查询进程和对话 (XP不可用)

quser.exe 显示用户登陆的信息(需终端服务)

qwinsta.exe 显示终端服务的信息

rononce -p 15秒关机

rasAdmin 远程访问服务.

regedit.exe 注册表编辑器

rasadmin.exe 启动远程访问服务 (XP不可用)

rasautou.exe 建立一个RAS连接

rasdial.exe 宽带,拨号连接

ras.exe 运行RAS连接 (XP不可用)

rcp.exe 计算机和运行远程外壳端口监控程序 rshd 的系统之间复制文件

rdpclip.exe 终端和本地复制和粘贴文件

recover.exe 从坏的或有缺陷的磁盘中恢复可读取的信息。

redir.exe 运行重定向服务

regedt32.exe 32位注册服务

regini.exe 用脚本修改注册许可

regwiz.exe 注册向导

replace.exe 用源目录中的同名文件替换目标目录中的文件。

rexec.exe rexec 命令在执行指定命令前,验证远程计算机上的用户名,只有安装了 TCP/IP 协议后才可以使用该命令。

risetup.exe 运行远程安装向导服务 (XP不可用)

route.exe 控制网络路由表

rsh.exe 在运行 RSH 服务的远程计算机上运行命令

rsnotify.exe 远程存储通知回显

runas.exe 允许用户用其他权限运行指定的工具和程序

rundll32.exe 启动32位DLL程序

rwinsta.exe 重置会话子系统硬件和软件到最初的值

Sndvol32 音量控制程序

sfc.exe 或CMD\ sfc.exe 回车 系统文件检查器

services.msc 网络连接服务

syskey 系统加密,(一旦加密就不能解开,保护windows xp系统的双重密码wupdmgr WIDNOWS UPDATE)

SCANREG/RESTORE 命令恢复最近的注册表

secedit.exe 自动化安全性配置管理

services.exe 控制所有服务

sethc.exe 设置高对比

setver.exe 设置 MS-DOS 子系统向程序报告的 MS-DOS 版本号

sfc.exe 系统文件检查

shadow.exe 监控另外一台中端服务器会话

shrpubw.exe 建立和共享文件夹

sigverif.exe 文件签名验证

smlogsvc.exe 性能日志和警报 (XP不可用)

sndrec32.exe 录音机

sndvol32.exe 显示声音控制信息

snmp.exe 简单网络管理协议 (XP不可用)

snmptrap.exe SNMP工具 (XP不可用)

srvmgr.exe 服务器管理器 (XP不可用)

subst.exe 将路径与驱动器盘符关联

sysedit.exe 系统配置编辑器

syskey.exe NT账号数据库加密工具

sysocmgr.exe Windows 安装程序

systray.exe 在低权限运行systray

taskmgr 任务管理器

tasklist /svc(CMD)了解每个SVCHOST进程到底提供了多少系统服务(2000\98不可用)

tlist -S(CMD) 了解每个SVCHOST进程到底提供了多少系统服务(

taskman.exe 任务管理器 (XP不可用)

taskmgr.exe 任务管理器

tcmsetup.exe 电话服务客户安装

tcpsvcs.exe TCP服务

termsrv.exe 终端服务

t 将文件传输到正在运行 TFTP 服务的远程计算机或从正在运行 TFTP 服务的远程计算机传输文件

themes.exe 桌面主题 (XP不可用)

tlntadmn.exe Administrator Telnet服务管理

tlntsess.exe 显示目前的Telnet会话

tlntsvr.exe 开始Telnet服务

tracert.exe 诊断实用程序将包含不同生存时间 (TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标采用的路由

tsadmin.exe Administrator 终端服务管理器 (XP不可用)

tscon.exe 粘贴用户会话到终端对话

tsdiscon.exe 断开终端服务的用户

tskill.exe 杀掉终端服务

tsprof.exe 用终端服务得出查询结果

tsshutdn.exe 关闭系统

unlodctr.exe 性能监视器的一部分

upg351db.exe 升级Jet数据库 (XP不可用)

ups.exe UPS service UPS服务

user.exe Windows核心服务

userinit.exe 打开我的文档

usrmgr.exe 域用户管理器

utilman.exe 指定2000启动时自动打开那台机器

vwipxspx.exe 调用IPX/SPX VDM

w32tm.exe 时间服务器

wextract.exe 解压缩Windows文件

winchat.exe 打开Windows聊天工具

winhlp32.exe 运行帮助系统

winmsd.exe 查看系统信息

winver.exe 显示Windows版本

wizmgr.exe Windows管理向导 (XP不可用)

wjview.exe Java 命令行调用Java

write.exe 打开写字板

wscript.exe 脚本工具

wupdmgr.exe Windows update 运行Windows update升级向导

winver 检查Windows版本

Win98系统工具

开始,运行,输入Msconfig 系统配置实用工具 配置启动选项,包括config.sys、autoexec.bat、win.ini、system.ini和注册表及程序菜单中的启动项。并可设置是否故障启动。

开始,运行,输入Regedit 注册表修改工具 注册表编辑器,如果没有把握不要随意修改注册表!

开始,运行,输入Regsvr32 dll注册工具 当提示找不到dll文件时,可用此来注册该动态连接库。

开始,运行,输入Regwiz 注册向导 用于注册。校验系统文件,并可恢复系统文件。

如果启动时出现类似*.vxd文件错误,可用此恢复该vxd文件。

开始,运行,输入Scandskw 磁盘扫描程序,用于扫描修复磁盘。如果磁盘或文件出现错误,可用来初步修复。

开始,运行,输入DxDiag DirectX诊断工具可用于检测DirectX运行是否正常。

开始,运行,输入NETSCAPE

ESC:清除当前命令行;

F7:显示命令历史记录,以图形列表窗的形式给出所有曾经输入的命令,并可用上下箭头键选择再次执行该命令。

F8:搜索命令的历史记录,循环显示所有曾经输入的命令,直到按下回车键为止;

F9:按编号选择命令,以图形对话框方式要求您输入命令所对应的编号(从0开始),并将该命令显示在屏幕上;

Ctrl+H:删除光标左边的一个字符;

Ctrl+C Ctrl+Break,强行中止命令执行;

Ctrl+M:表示回车确认键;

Alt+F7:清除所有曾经输入的命令历史记录;

Alt+PrintScreen:截取屏幕上当前命令窗里的内容。

病毒破坏了系统文件,请使用杀毒软件查杀病毒,然后利用Windows 2000提供的“命令控制台”中的Chkdsk /r命令检查修复系统文件即可。

各位,linux下TC是不是有什么开关

流量控制方式

流量控制包括以下几种方式:

SHAPING(限制) 当流量被限制,它的传输速率就被控制在某个值以下。限制值可以大大小于有效带宽,这样可以平滑突发数据流量,使网络更为稳定。shaping(限制)只适用于向外的流量。

SCHEDULING(调度) 通过调度数据包的传输,可以在带宽范围内,按照优先级分配带宽。SCHEDULING(调度)也只适于向外的流量。

POLICING(策略) SHAPING用于处理向外的流量,而POLICIING(策略)用于处理接收到的数据。

DROPPING(丢弃) 如果流量超过某个设定的带宽,就丢弃数据包,不管是向内还是向外。

2、流量控制处理对象

流量的处理由三种对象控制,它们是:qdisc(排队规则)、class(类别)和filter(过滤器)。

QDISC(排队规则) QDisc(排队规则)是queueing discipline的简写,它是理解流量控制(traffic control)的基础。无论何时,内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。最简单的QDisc是pfifo它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。不过,它会保存网络接口一时无法处理的数据包。

QDISC的类别如下:

(1)、CLASSLESS QDisc(不可分类QDisc)

1无类别QDISC包括:

[p|b]fifo

使用最简单的qdisc,纯粹的先进先出。只有一个参数:limit,用来设置队列的长度,pfifo是以数据包的个数为单位;bfifo是以字节数为单位。

pfifo_fast

在编译内核时,如果打开了高级路由器(Advanced Router)编译选项,pfifo_fast就是系统的标准QDISC。它的队列包括三个波段(band)。在每个波段里面,使用先进先出规则。而三个波段(band)的优先级也不相同,band 0的优先级最高,band 2的最低。如果band里面有数据包,系统就不会处理band 1里面的数据包,band 1和band 2之间也是一样。数据包是按照服务类型(Type of Service,TOS)被分配多三个波段(band)里面的。

red

red是Random Early Detection(随机早期探测)的简写。如果使用这种QDISC,当带宽的占用接近于规定的带宽时,系统会随机地丢弃一些数据包。它非常适合高带宽应用。

linux内核中配置tc命令

只需要修改iproute2应用层的makefile就可以了,编译tc并把tc拷贝到执行目录里

模拟网络故障--tc

网络故障一般包含网络数据异常,网络丢包和网络延迟。

Linux内核从2.2开始提供TC(Traffic Control)去控制Linux内核的流量,一般系统都是自带tc工具。

TC控制流程:

这里使用paping而不是ping,按照原作者说法是为了防止在防火墙开启的状态下可以ping通,但无法进行tcp连接的问题。

网络延迟:

tc qdisc add dev eth0 root netem delay 300ms

网络丢包:

tc qdisc add dev eth0 root netem loss 7% 25% #代表丢掉7%的包,但是成功率只有25%

tc qdisc add dev eth0 root netem loss 7% #只设置7%是代表随机丢掉7%的包

网络数据异常:

tc qdisc add dev eth0 root netem corrupt 10% # 10%的数据包损坏,不是没传过去,而是传过去不对。

网络数据重复:

tc qdisc add dev eth0 root netem duplicate 1% #随机产生1%的包重复

网络数据包乱序:

tc qdisc add dev eth0 root netem delay 10ms reorder 25% 50% #有25%的数据包(50%相关)会被立即发送,其他的延迟10秒

关闭网络异常模拟:

tc qdisc del dev eth0 root netem

监控网卡:

tc qdisc add dev eth0 root netem

其余命令:

tc qdisc change dev eth0 root netem duplicate 1%

tc qdisc replace dev eth0 root netem duplicate 1%

tc是要在client端设置的,因为只能控制数据发出,它模拟的是异常的数据到达Server后如何被处理,前提是数据在到达Server的时候已经异常了。

至于server端的控制,需要使用iptables。

参考文档:

TC的详细使用方法

给你个TC中文MAN,参考参考,也可以去我的BLOG看看,最近我也在学,

名字

tc - 显示/维护流量控制设置

摘要

tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]

tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]

tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id

tc [-s | -d ] qdisc show [ dev DEV ]

tc [-s | -d ] class show dev DEV tc filter show dev DEV

简介

Tc用于Linux内核的流量控制。流量控制包括以下几种方式:

SHAPING(限制)

当流量被限制,它的传输速率就被控制在某个值以下。限制值可以大大小于有效带宽,这样可以平滑突发数据流量,使网络更为稳定。shaping(限制)只适用于向外的流量。

SCHEDULING(调度)

通过调度数据包的传输,可以在带宽范围内,按照优先级分配带宽。SCHEDULING(调度)也只适于向外的流量。

POLICING(策略)

SHAPING用于处理向外的流量,而POLICIING(策略)用于处理接收到的数据。

DROPPING(丢弃)

如果流量超过某个设定的带宽,就丢弃数据包,不管是向内还是向外。

流量的处理由三种对象控制,它们是:qdisc(排队规则)、class(类别)和filter(过滤器)。

QDISC(排队嬖?

QDisc(排队规则)是queueing discipline的简写,它是理解流量控制(traffic control)的基础。无论何时,内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。

最简单的QDisc是pfifo它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。不过,它会保存网络接口一时无法处理的数据包。

CLASS(类)

某些QDisc(排队规则)可以包含一些类别,不同的类别中可以包含更深入的QDisc(排队规则),通过这些细分的QDisc还可以为进入的队列的数据包排队。通过设置各种类别数据包的离队次序,QDisc可以为设置网络数据流量的优先级。

FILTER(过滤器)

filter(过滤器)用于为数据包分类,决定它们按照何种QDisc进入队列。无论何时数据包进入一个划分子类的类别中,都需要进行分类。分类的方法可以有多种,使用fileter(过滤器)就是其中之一。使用filter(过滤器)分类时,内核会调用附属于这个类(class)的所有过滤器,直到返回一个判决。如果没有判决返回,就作进一步的处理,而处理方式和QDISC有关。

需要注意的是,filter(过滤器)是在QDisc内部,它们不能作为主体。

CLASSLESS QDisc(不可分类QDisc)

无类别QDISC包括:

[p|b]fifo

使用最简单的qdisc,纯粹的先进先出。只有一个参数:limit,用来设置队列的长度,pfifo是以数据包的个数为单位;bfifo是以字节数为单位。

pfifo_fast

在编译内核时,如果打开了高级路由器(Advanced Router)编译选项,pfifo_fast就是系统的标准QDISC。它的队列包括三个波段(band)。在每个波段里面,使用先进先出规则。而三个波段(band)的优先级也不相同,band 0的优先级最高,band 2的最低。如果band里面有数据包,系统就不会处理band 1里面的数据包,band 1和band 2之间也是一样。数据包是按照服务类型(Type of Service,TOS)被分配多三个波段(band)里面的。

red

red是Random Early Detection(随机早期探测)的简写。如果使用这种QDISC,当带宽的占用接近于规定的带宽时,系统会随机地丢弃一些数据包。它非常适合高带宽应用。

sfq

sfq是Stochastic Fairness Queueing的简写。它按照会话(session--对应于每个TCP连接或者UDP流)为流量进行排序,然后循环发送每个会话的数据包。

tbf

tbf是Token Bucket Filter的简写,适合于把流速降低到某个值。

不可分类QDisc的配置

如果没有可分类QDisc,不可分类QDisc只能附属于设备的根。它们的用法如下:

tc qdisc add dev DEV root QDISC QDISC-PARAMETERS

要删除一个不可分类QDisc,需要使用如下命令:

tc qdisc del dev DEV root

一个网络接口上如果没有设置QDisc,pfifo_fast就作为缺省的QDisc。

CLASSFUL QDISC(分类QDisc)

可分类的QDisc包括:

CBQ

CBQ是Class Based Queueing(基于类别排队)的缩写。它实现了一个丰富的连接共享类别结构,既有限制(shaping)带宽的能力,也具有带宽优先级管理的能力。带宽限制是通过计算连接的空闲时间完成的。空闲时间的计算标准是数据包离队事件的频率和下层连接(数据链路层)的带宽。

HTB

HTB是Hierarchy Token Bucket的缩写。通过在实践基础上的改进,它实现了一个丰富的连接共享类别体系。使用HTB可以很容易地保证每个类别的带宽,虽然它也允许特定的类可以突破带宽上限,占用别的类的带宽。HTB可以通过TBF(Token Bucket Filter)实现带宽限制,也能够划分类别的优先级。

PRIO

PRIO QDisc不能限制带宽,因为属于不同类别的数据包是顺序离队的。使用PRIO QDisc可以很容易对流量进行优先级管理,只有属于高优先级类别的数据包全部发送完毕,才会发送属于低优先级类别的数据包。为了方便管理,需要使用iptables或者ipchains处理数据包的服务类型(Type Of Service,ToS)。

操作原理

类(Class)组成一个树,每个类都只有一个父类,而一个类可以有多个子类。某些QDisc(例如:CBQ和HTB)允许在运行时动态添加类,而其它的QDisc(例如:PRIO)不允许动态建立类。

允许动态添加类的QDisc可以有零个或者多个子类,由它们为数据包排队。

此外,每个类都有一个叶子QDisc,默认情况下,这个叶子QDisc使用pfifo的方式排队,我们也可以使用其它类型的QDisc代替这个默认的QDisc。而且,这个叶子叶子QDisc有可以分类,不过每个子类只能有一个叶子QDisc。

当一个数据包进入一个分类QDisc,它会被归入某个子类。我们可以使用以下三种方式为数据包归类,不过不是所有的QDisc都能够使用这三种方式。

tc过滤器(tc filter)

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

服务类型(Type of Service)

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

skb-priority

用户空间的应用程序可以使用SO_PRIORITY选项在skb-priority域设置一个类的ID。

树的每个节点都可以有自己的过滤器,但是高层的过滤器也可以直接用于其子类。

如果数据包没有被成功归类,就会被排到这个类的叶子QDisc的队中。相关细节在各个QDisc的手册页中。

命名规则

所有的QDisc、类和过滤器都有ID。ID可以手工设置,也可以有内核自动分配。

ID由一个主序列号和一个从序列号组成,两个数字用一个冒号分开。

QDISC

一个QDisc会被分配一个主序列号,叫做句柄(handle),然后把从序列号作为类的命名空间。句柄采用象10:一样的表达方式。习惯上,需要为有子类的QDisc显式地分配一个句柄。

类(CLASS)

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

过滤器(FILTER)

过滤器的ID有三部分,只有在对过滤器进行散列组织才会用到。详情请参考tc-filters手册页。

单位

tc命令的所有参数都可以使用浮点数,可能会涉及到以下计数单位。

带宽或者流速单位:

kbps

千字节/秒

mbps

兆字节/秒

kbit

KBits/秒

mbit

MBits/秒

bps或者一个无单位数字

字节数/秒

数据的数量单位:

kb或者k

千字节

mb或者m

兆字节

mbit

兆bit

kbit

千bit

b或者一个无单位数字

字节数

时间的计量单位:

s、sec或者secs

ms、msec或者msecs

分钟

us、usec、usecs或者一个无单位数字

微秒

TC命令

tc可以使用以下命令对QDisc、类和过滤器进行操作:

add

在一个节点里加入一个QDisc、类或者过滤器。添加时,需要传递一个祖先作为参数,传递参数时既可以使用ID也可以直接传递设备的根。如果要建立一个QDisc或者过滤器,可以使用句柄(handle)来命名;如果要建立一个类,可以使用类识别符(classid)来命名。

remove

删除有某个句柄(handle)指定的QDisc,根QDisc(root)也可以删除。被删除QDisc上的所有子类以及附属于各个类的过滤器都会被自动删除。

change

以替代的方式修改某些条目。除了句柄(handle)和祖先不能修改以外,change命令的语法和add命令相同。换句话说,change命令不能一定节点的位置。

replace

对一个现有节点进行近于原子操作的删除/添加。如果节点不存在,这个命令就会建立节点。

link

只适用于DQisc,替代一个现有的节点。

历史

tc由Alexey N. Kuznetsov编写,从Linux 2.2版开始并入Linux内核。

SEE ALSO

tc-cbq(8)、tc-htb(8)、tc-sfq(8)、tc-red(8)、tc-tbf(8)、tc-pfifo(8)、tc-bfifo(8)、tc-pfifo_fast(8)、tc-filters(8)

Linux从kernel 2.1.105开始支持QOS,不过,需要重新编译内核。运行make config时将EXPERIMENTAL _OPTIONS设置成y,并且将Class Based Queueing (CBQ), Token Bucket Flow, Traffic Shapers 设置为 y ,运行 make dep; make clean; make bzilo,生成新的内核。

在Linux操作系统中流量控制器(TC)主要是在输出端口处建立一个队列进行流量控制,控制的方式是基于路由,亦即基于目的IP地址或目的子网的网络号的流量控制。流量控制器TC,其基本的功能模块为队列、分类和过滤器。Linux内核中支持的队列有,Class Based Queue ,Token Bucket Flow ,CSZ ,First In First Out ,Priority ,TEQL ,SFQ ,ATM ,RED。这里我们讨论的队列与分类都是基于CBQ(Class Based Queue)的,而过滤器是基于路由(Route)的。

配置和使用流量控制器TC,主要分以下几个方面:分别为建立队列、建立分类、建立过滤器和建立路由,另外还需要对现有的队列、分类、过滤器和路由进行监视。

其基本使用步骤为:

1) 针对网络物理设备(如以太网卡eth0)绑定一个CBQ队列;

2) 在该队列上建立分类;

3) 为每一分类建立一个基于路由的过滤器;

4) 最后与过滤器相配合,建立特定的路由表。

先假设一个简单的环境

流量控制器上的以太网卡(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.26。其流量带宽控制在1Mbit,优先级为1;

3) 是发往子网1的,其子网号为192.168.1.0,子网掩码为255.255.255.0。流量带宽控制在1Mbit,优先级为6。

1. 建立队列

一般情况下,针对一个网卡只需建立一个队列。

将一个cbq队列绑定到网络物理设备eth0上,其编号为1:0;网络物理设备eth0的实际带宽为10 Mbit,包的平均大小为1000字节;包间隔发送单元的大小为8字节,最小传输包大小为64字节。

?tc qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit avpkt 1000 cell 8 mpu 64

2. 建立分类

分类建立在队列之上。一般情况下,针对一个队列需建立一个根分类,然后再在其上建立子分类。对于分类,按其分类的编号顺序起作用,编号小的优先;一旦符合某个分类匹配规则,通过该分类发送数据包,则其后的分类不再起作用。

1) 创建根分类1:1;分配带宽为10Mbit,优先级别为8。

?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

该队列的最大可用带宽为10Mbit,实际分配的带宽为10Mbit,可接收冲突的发送最长包数目为20字节;最大传输单元加MAC头的大小为1514字节,优先级别为8,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相应于实际带宽的加权速率为1Mbit。

2)创建分类1:2,其父分类为1:1,分配带宽为8Mbit,优先级别为2。

?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

该队列的最大可用带宽为10Mbit,实际分配的带宽为 8Mbit,可接收冲突的发送最长包数目为20字节;最大传输单元加MAC头的大小为1514字节,优先级别为1,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相应于实际带宽的加权速率为800Kbit,分类的分离点为1:0,且不可借用未使用带宽。

3)创建分类1:3,其父分类为1:1,分配带宽为1Mbit,优先级别为1。

?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

该队列的最大可用带宽为10Mbit,实际分配的带宽为 1Mbit,可接收冲突的发送最长包数目为20字节;最大传输单元加MAC头的大小为1514字节,优先级别为2,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相应于实际带宽的加权速率为100Kbit,分类的分离点为1:0。

4)创建分类1:4,其父分类为1:1,分配带宽为1Mbit,优先级别为6。

?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

该队列的最大可用带宽为10Mbit,实际分配的带宽为 64Kbit,可接收冲突的发送最长包数目为20字节;最大传输单元加MAC头的大小为1514字节,优先级别为1,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相应于实际带宽的加权速率为100Kbit,分类的分离点为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.建立路由

该路由是与前面所建立的路由映射一一对应。

1) 发往主机192.168.1.24的数据包通过分类2转发(分类2的速率8Mbit)

?ip route add 192.168.1.24 dev eth0 via 192.168.1.66 realm 2

2) 发往主机192.168.1.30的数据包通过分类3转发(分类3的速率1Mbit)

?ip route add 192.168.1.30 dev eth0 via 192.168.1.66 realm 3

3)发往子网192.168.1.0/24的数据包通过分类4转发(分类4的速率1Mbit)

?ip route add 192.168.1.0/24 dev eth0 via 192.168.1.66 realm 4

注:一般对于流量控制器所直接连接的网段建议使用IP主机地址流量控制限制,不要使用子网流量控制限制。如一定需要对直连子网使用子网流量控制限制,则在建立该子网的路由映射前,需将原先由系统建立的路由删除,才可完成相应步骤。

5. 监视

主要包括对现有队列、分类、过滤器和路由的状况进行监视。

1)显示队列的状况

简单显示指定设备(这里为eth0)的队列状况

?tc qdisc ls dev eth0

qdisc cbq 1: rate 10Mbit (bounded,isolated) prio no-transmit

详细显示指定设备(这里为eth0)的队列状况

?tc -s qdisc ls dev eth0

qdisc cbq 1: rate 10Mbit (bounded,isolated) prio no-transmit

Sent 7646731 bytes 13232 pkts (dropped 0, overlimits 0)

borrowed 0 overactions 0 avgidle 31 undertime 0

这里主要显示了通过该队列发送了13232个数据包,数据流量为7646731个字节,丢弃的包数目为0,超过速率限制的包数目为0。

2)显示分类的状况

简单显示指定设备(这里为eth0)的分类状况

?tc class ls dev eth0

class cbq 1: root rate 10Mbit (bounded,isolated) prio no-transmit

class cbq 1:1 parent 1: rate 10Mbit prio no-transmit #no-transmit表示优先级为8

class cbq 1:2 parent 1:1 rate 8Mbit prio 2

class cbq 1:3 parent 1:1 rate 1Mbit prio 1

class cbq 1:4 parent 1:1 rate 1Mbit prio 6

详细显示指定设备(这里为eth0)的分类状况

?tc -s class ls dev eth0

class cbq 1: root rate 10Mbit (bounded,isolated) prio no-transmit

Sent 17725304 bytes 32088 pkts (dropped 0, overlimits 0)

borrowed 0 overactions 0 avgidle 31 undertime 0

class cbq 1:1 parent 1: rate 10Mbit prio no-transmit

Sent 16627774 bytes 28884 pkts (dropped 0, overlimits 0)

borrowed 16163 overactions 0 avgidle 587 undertime 0

class cbq 1:2 parent 1:1 rate 8Mbit prio 2

Sent 628829 bytes 3130 pkts (dropped 0, overlimits 0)

borrowed 0 overactions 0 avgidle 4137 undertime 0

class cbq 1:3 parent 1:1 rate 1Mbit prio 1

Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

borrowed 0 overactions 0 avgidle 159654 undertime 0

class cbq 1:4 parent 1:1 rate 1Mbit prio 6

Sent 5552879 bytes 8076 pkts (dropped 0, overlimits 0)

borrowed 3797 overactions 0 avgidle 159557 undertime 0

这里主要显示了通过不同分类发送的数据包,数据流量,丢弃的包数目,超过速率限制的包数目等等。其中根分类(class cbq 1:0)的状况应与队列的状况类似。

例如,分类class cbq 1:4发送了8076个数据包,数据流量为5552879个字节,丢弃的包数目为0,超过速率限制的包数目为0。

显示过滤器的状况

?tc -s filter ls dev eth0

filter parent 1: protocol ip pref 100 route

filter parent 1: protocol ip pref 100 route fh 0xffff0002 flowid 1:2 to 2

filter parent 1: protocol ip pref 100 route fh 0xffff0003 flowid 1:3 to 3

filter parent 1: protocol ip pref 100 route fh 0xffff0004 flowid 1:4 to 4

这里flowid 1:2代表分类class cbq 1:2,to 2代表通过路由2发送。

显示现有路由的状况

?ip route

192.168.1.66 dev eth0 scope link

192.168.1.24 via 192.168.1.66 dev eth0 realm 2

202.102.24.216 dev ppp0 proto kernel scope link src 202.102.76.5

192.168.1.30 via 192.168.1.66 dev eth0 realm 3

192.168.1.0/24 via 192.168.1.66 dev eth0 realm 4

192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.66

172.16.1.0/24 via 192.168.1.66 dev eth0 scope link

127.0.0.0/8 dev lo scope link

default via 202.102.24.216 dev ppp0

default via 192.168.1.254 dev eth0

如上所示,结尾包含有realm的显示行是起作用的路由过滤器。

6. 维护

主要包括对队列、分类、过滤器和路由的增添、修改和删除。

增添动作一般依照"队列-分类-过滤器-路由"的顺序进行;修改动作则没有什么要求;删除则依照"路由-过滤器-分类-队列"的顺序进行。

1)队列的维护

一般对于一台流量控制器来说,出厂时针对每个以太网卡均已配置好一个队列了,通常情况下对队列无需进行增添、修改和删除动作了。

2)分类的维护

增添

增添动作通过tc class add命令实现,如前面所示。

修改

修改动作通过tc class change命令实现,如下所示:

?tc class change dev eth0 parent 1:1 classid 1:2 cbq bandwidth 10Mbit

rate 7Mbit maxburst 20 allot 1514 prio 2 avpkt 1000 cell

8 weight 700Kbit split 1:0 bounded

对于bounded命令应慎用,一旦添加后就进行修改,只可通过删除后再添加来实现。

删除

删除动作只在该分类没有工作前才可进行,一旦通过该分类发送过数据,则无法删除它了。因此,需要通过shell文件方式来修改,通过重新启动来完成删除动作。

3)过滤器的维护

增添

增添动作通过tc filter add命令实现,如前面所示。

修改

修改动作通过tc filter change命令实现,如下所示:

?tc filter change dev eth0 parent 1:0 protocol ip prio 100 route to

10 flowid 1:8

删除

删除动作通过tc filter del命令实现,如下所示:

?tc filter del dev eth0 parent 1:0 protocol ip prio 100 route to 10

4)与过滤器一一映射路由的维护

增添

增添动作通过ip route add命令实现,如前面所示。

修改

修改动作通过ip route change命令实现,如下所示:

?ip route change 192.168.1.30 dev eth0 via 192.168.1.66 realm 8

删除

删除动作通过ip route del命令实现,如下所示:

?ip route del 192.168.1.30 dev eth0 via 192.168.1.66 realm 8

?ip route del 192.168.1.0/24 dev eth0 via 192.168.1.66 realm 4


文章名称:linux内核tc命令的简单介绍
地址分享:http://ybzwz.com/article/hcgdph.html