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