Linux流量控制2
使用过滤器分类
每块网卡都有一个出口根排队规则,缺省情况下是pfifo_fast 排队规则。每个排队规则都指定一个句柄,句柄有两个部分,一个主号码和一个次号码。习惯上把根队列规定称为“1:”,等价于“1:0”。类的主号码必须与它们父辈的主号码一致。如下图。
数据包是在根队列规定处入队和出队的,而内核只同根打交道。一个数据包可能是按照下面这个链状流程进行分类的:1: -> 1:1 -> 12: -> 12:2,数据包现在应该处于12:2 下属的某个队列规定中的某个队列中。在这个例子中,树的每个节点都附带着一个过滤器,用来选择下一步进入哪个分支。然而,这样也是允许的:1: -> 12:2,也就是说,根所附带的一个过滤器要求把数据包直接交给12:2。
当内核决定把一个数据包发给网卡的时候,根队列规定1:会得到一个出队请求,然后把它传给1:1,然后依次传给10:、11:和12:,然后试图从它们中进行 dequeue()操作。也就是说,内核需要遍历整颗树,因为只有12:2 中才有这个数据包。换句话说,类及其兄弟仅仅与其“父队列规定”进行交谈,而不会与网卡进行交谈。只有根排队规则才能由内核进行出队操作。而且,任何类的出队操作都不会比它们的父类更快。
为了决定用哪个类处理数据包,必须调用所谓的“分类器链” 进行选择。这个链中包含了这个分类队列规定所需的所有过滤器。
Linux下可用的分类器有fw、u32、route等。fw根据防火墙如何对这个数据包做标记进行判断;u32根据数据包中的各个字段进行判断;route根据数据如何被路由进行判断。rsvp、rsvp6根据数据包的RSVP 情况进行判断,它只能用于自己的网络,互联网并不遵守RSVP;tcindex用于DSMARK排队规则。
分类器一般都能接受几个参数,如下:
protocol
分类器所接受的协议。一般来说只会接受IP 数据。必要参数。
parent
分类器附带在哪个句柄上。句柄必须是一个已经存在的类。必要参数。
prio
分类器的优先权值。优先权值低的优先。
handle
对于不同过滤器,它的意义不同。
fw
fw分类器要依靠防火墙把需要引导的封包标识起来。所以必须先设定好防火墙,使用 ipchains/iptables给数据包打标签。
例如:iptables -t mangle -A PREROUTING -p udp -m udp --dport 53 -j MARK --set-mark 1
它的意思是把发往目的端口为53(DNS)的UDP数据包都打上标记1。
相关文档:
Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......
名称: dd
使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file
使用方式:
dd [option]
如果你想要在线看 manual, 可以试试:
dd --help
或是
info dd
如果你想要看看这个版本如何:
dd --version
输入或输出
dd if=[STDIN] of=[STDOUT]
强迫输入或输出的Si ......
1 引言
线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中
期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进
程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Li ......
尚学堂Linux笔记(一)
MBR:硬盘MBR(Master Boot Record)就是我们经常说的”硬盘主引导记录”,它是由FDISK等磁盘分区命令写在硬盘绝对0扇区的一段数据,它由主引导程序、硬盘分区表及扇区结束标志字(55AA).
这三部分组成,如下:
组成部分
所占字节数
内容
主引导程序
4 ......
getenv(取得环境变量内容)
相关函数 putenv,setenv,unsetenv
表头文件 #include<stdlib.h>
定义函数 char * getenv(const char *name);
函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回 ......