已阅读5页,还剩56页未读, 继续免费阅读
(电路与系统专业论文)linux中流量控制机制的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西北工业大学硕士论文摘要 摘要 传统的i n t e r n e t 只提供尽力而为的服务,网络节点既不为特定的数据流分配 资源,也不对某些数据包进行特殊的处理。这样虽然使网络资源得到最大的利用, 同时网络的实现相对简单但是近年来,在互联网上快速发展的实时多媒体业务 却希望网络能够提供满足其实时性要求的服务质量,因此如何在i p 网络中提供服 务质量保证( q o s ) 成为网络研究的热点之一。 为实现q o s ,网络节点必须提供流量控制的功能。l i n u x 从内核2 2 版起就增 加了对网络q o s 的支持,提供了一套功能强大的流量控制机制,当网络节点发送 数据包时,它负责将等待发送的数据包按照一定的规则分类、排队以及调度发送 出去;但是该机制缺乏详细的配置参考资料,普通用户在使用时,由于参数选择 的不当会严重影响网络节点的发送速率,限制了流量控制机制的应用。本文的工 作主要是在分析该机制实现代码的基础上,从理论上提出参数的优化配置原则, 克服了流量控制机制因对参数敏感而影响性能的缺点,并通过实验进一步验证了 该原则的正确性。论文的成果集中在以下三部分: 1 流量控制机制是如何在l i n u x 网络实现中发挥作用,以及其对传统网络实 现的改进; 2 常用的各种队列算法的实现。论文重点分析了旨在避免和控制网络拥塞的 随机先期检测( r e d ) 队列和在共享一条链路的多个组织、协议和通信量 类型之间分配带宽的基于类的队列( c b q ) ; 3 在实验室的环境下,测量了不同情况下c b q 队列的性能,分析实验结果, 并在实验的基础上提出了在使用c b q 队列时的配置原则,依据这些原则能 够更好的发挥c b q 的作用。 关键 司:q o s l i n u x流量控制 随机先期检测基于类的队列 带宽分配 西北工业大学硕士论文a b s t r a c t a b s t r a c t t r a d i t i o n a li n t e m e t o n l yp r o v i d eb e s t - e f f o r ts e r v i c e ,a n dt h en e t w o r k n o d en e i t h e r a l l o c a t er e s o u r c ef o ru n u s u a ld a t af l o w sn o rd e a lw i 廿ls o m e p a c k e t se s p e c i a l l y t h e r e f o r , t h en e t w o r kr e s o u r c ec a nb eu t i l i z e de f f i c i e n t l ya n dt h ei m p l e m e n t a t i o ni sa l s os i m p l y r e l a t i v e l y b u tr e c e n t l y , w i m t h e r a p i dd e v e l o p m e n t o f r e a l - t i m em u l t i m e d i a a p p l i c a t i o n i ni n t e m e t , i ti sh o p e dt h a ti n t e r a c tc a nm e e tt h e s ea p p l i c a t i o n s r e q u i r e m e n ta b o u t r e a l - t i m e ,s oh o w t op r o v i d eq u a l i t yo fs e r v i c eg u a r a n t e e sb e c o m e sah o tt o p i ci n c u r r e n tn e t w o r kr e s e a r c h i no r d e rt os u p p o r tq o s ,t h en e t w o r kn o d e m u s t d os o m ew o r ko f t r a f f i cc o n t r 0 1 f r o mv e r s i o n2 2o n ,l i n u xk e r n e lp r o v i d eam e c h a n i s mo f t r a f f i cc o n t r 0 1 b e f o r et h e n o d e d e l i v e r yp a c k e t s ,t h i sm e c h a n i s mc l a s s i f yp a c k e t sr e f e r r i n g t os o m e r u l e s ,t h e n t h e s ep a c k e t sq u e u ea n db es e n do u t b y s o m es c h e d u l i n ga l g o r i t h m s b u t ,f o rl a c ko f t h e c o n f i g u r i n gd o c u m e n t sa b o u t t h i sm e c h a n i s m ,g e n e r a lu s e rc a l l th a v ei te m p l o y e d e f f e c t i v e l yo n t h eb a s i so f s t u d y i n gc o d e so f t h e t r a f f i cc o n t r o lm e c h a n i s m ,t h i sp a p e r w i l lp o i n to u ts o m e c o n f i g u r i n gp r i n c i p l e si no r d e rt oa v o i d i t sp e r f o r m a n c e d e s c e n d i n g t h em a i nr e s e a r c hc o n t e n to f t h i st h e s i sa r ea sf o f l o w s : 1 h o wt h em e c h a n i s mo f t r a f f i cc o n t r o li nl i n u xf u c t i o n s ,a n di t si m p r o v e m e n t c o m p a r e w i t ht h et m d i o n ; 2 s e v e r a l q u e u e i n ga l g o r i t h m t h i st h e s i se m p h a s i z e t h a tr e d ( r a n d o m e a r l y d e t e e t ) w h i c hc a na v o i da n dc o n t r o ln e t w o r kc o n g e s t i o n ,a n dc b q ( c l a s sb a s e d q u e u e ) w h i c h a l l o c a t e sb a n d w i d t hb e t w e e n l i n k - s h a r i n gc l a s s e s ; 3 t e s t e dt h ep e r f o r m a n c eo f c b q i nd i f f e r e n tc o n d i t i o n s ,a n l y s e dt h er e s u l to f t e s ta n d p o i n t e d o u tt h ep r i n c i p l e so f c o n f i g u r i n gc b q k e y w o r d s :q o s l i n u xt r a f f i cc o n t r o lr e d c b q b a n d w i d t ha l l o c a t i o n i i 西北工业大学硕士论文第一章互联网和服务质量保证 第一章互联网和服务质量保证 互联网在过去的十年中取得了巨大的成功,深刻的改变了人们的工作和生 活方式。作为互联网协议构架的基础,i p 协议的无连接设计、灵活性强、可靠 性高等优点使得它迅速发展,成为当今网络世界事实上的公认标准。然而,面 对不断出现的新业务和人们的新要求,i p 网络也暴露出无法为特定业务提供服 务质量保证( q o s ) 的不足。 1 1 t c p i p 协议 t c p i p 起源于6 0 年代末美国政府资助的一个分组交换网络研究项目,到9 0 年代已发展成为计算机之间最常应用的组网形式,它是一个真正的开放系统,因 为协议族的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到,它 成为互联网的基础。 1 1 1t c p f l p 协议族的结构 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个 协议族,是一组不同层次上的多个协议的组合。t c p i p 通常被认为是一个四层协 议系统 1 5 ,如图1 一l 所示: 应用层 传输层 网络层 链路层 h t t p 、f t p 望4 t c p 、u d p i p 、i c m p 、工g i p 设备驱动程序硬接口卡 图1 1t c p f l p 协议族的四个层次 每一层负责不同的功能: 1 ) 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的 设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆( 或 其他任何传输媒介) 的物理接口细节。 2 ) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的 选路。在t c p i p 协议族中,网络层协议包括i p 协议( 网际协议) ,i c m p 协议( i n t e r n e t 控制报文协议) ,以及i g m p 协议( i n t e r n e t 组管理协议) 。 3 ) 传输层主要为两台主机上的应用程序提供端到端的通信。在t c p i p 协议 族中,有两个互不相同的传输协议:t c p ( 传输控制协议) 和u d p ( 用户 西北工业大学硕士论文第一章互联网和服务质量保证 数据报协议) 。t c p 为两台主机提供高可靠性的数据通信。它所做的工作 包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认 接收到的分组,设置发送最后确认分组的超时时钟等。由于传输层提供 了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另 一方面,u d p 贝i j 为应用层提供种非常简单的服务。它只是把称作数据报 的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一 端。任何必需的可靠性必须由应用层来提供。 4 ) 应用层负责处理特定的应用程序细节。提供诸女h w e b 、t e l n e t 、f t p 等服 务。 1 1 2i p 数据报在网络中的处理过程 i p 是t c p i p 协议族中最为核心的协议,i p 提供不可靠、无连接的数据报传送 服务。不可靠的意思是它不能保证i p 数据报能成功地到达目的地,无连接的意思 是i p 并不维护任何关于后续数据报的状态信息,每个数据报的处理是相互独立 的。所有的t c p 、u i ) p 、i c 咿及1 6 b l p 数据都以i p 数据报的格式传输。在通过网络时, i p 数据报被当作处理的基本对象。根据功能的不同,我们将网络内的主机分为终 端和路由器( 也被称为网关) 。 1 )终端一般只有一个网络接口,它只属于一个网络。当网络接口设备将 接收到的数据复原为i p 数据报后,i p 层会检查此数据报的报头信息,若报头中的 目的i p 地址与此终端主机的i p 地址相同,则将此数据报递交上层继续处理;否则 将数据报丢弃。当上层协议需要发送数据时,i p 协议会将这些数据打包,并在报 头内设置目的i p 地址、源i p 地址、报文长度等各种信息后,送交链路层绑定链路 层地址( 即物理地址后) 排队至发送队列,等待系统调度网络接口设备的驱动 程序将其发送到网络上。 2 )路由器有多个网络接口,同时也拥有多个i p 地址,用于互连多个不同 的网络。当i p 数据报到达路由器的i p 层时,若数据报的目的地址不同与本机地址, $ j j i p 协议根据数据报目的地址查找自身路由表,选择适当的路由出口将其送至输 出网络接口的发送队列中。这一过程也被称为i p 转发。 图1 2 显示了i p 数据报在网络主机中的处理流程: 2 西北工业大学硕士论文 第一章互联网和服务质量保证 在传统的网络实现时,输出队列往往是简单的先进先出队列( f i r s t i n f i r s t 。u td u e u e ,f i f 0 ) 。f i f 0 队列不对报文进行分类,f i f 0 按报文到达接口 的先后顺序让报文进入队列,同时在队列的出口让报文按进队的顺序出队,先 进的报文将先出队,后进的报文将后出队。在管理f i f 0 队列的长度时,往往设 定一队列长度最大值( 以数据报的个数为单位) ,若队列中数据报的个数没有超 过最大值就继续接收新的数据报,若超出则丢弃后到的数据报,这就是所谓的 尾部丢弃( t a i ld r o p ) 技术。 1 2i p0 0 s 及其度量标准 随着互联网的普及和发展,i p 电话、视频会议等实时多媒体应用已作为一 种业务进入互联网,并且由于这些业务极大的降低了人们通信的成本,所以正 在以惊人的速度成长,据市场研究公司i i ) c2 0 0 2 年1 1 月2 日发表的报告称, 亚太地区( 不含日本) 的i p 电话收入到2 0 0 6 年将从2 0 0 1 年的1 0 亿美元增长 到1 4 3 亿美元。 传统的互联网中,网络节点( 路由器) 使用的f i f 0 队列是在所有的i p 数 据包之间共享,对不同业务类型的数据包并不加以区分。只是尽最大的可能传 输收到的每个数据包。当网络拥塞时,因为队列溢出f i f 0 队列将丢弃不能入列 的数据包。发送者通过超时重传保证数据的完整性,包丢弃对于如文件传输、 w e b 测览和媒体下载等非实时业务影响不大,因为通过超时重传,接受者总能 最终收到所有的数据。但是对于多媒体应用一般都有实时性要求,如果一个数 据包在预定时间之后收到,那么收到的数据将不可用。所咀要在互联网上传输 语音、视频等多媒体数据,网络必须对这些数据流提供定的服务质量保证。 i po o s 是指i p 的服务质量,是指i p 数据流通过网络时的性能,它的目的 就是向用户的业务提供端到端的服务质量保证。不同的应用有不同的o o s 要求, 例如i p 电话不能容忍较大的延迟,延迟超过0 2 5 秒就会让使用者感到不舒服; 与此相对应在视频点播中,绝对的延迟并不重要,而延迟抖动对播放效果有较 大影响。i pq o s 有一套度量指标,包括延迟、延迟抖动、带宽和丢包率。 延迟( d e l a y ) 延迟一般是指端到端的延时,可以分为固定部分和可变 部分。固定部分主要是指数据包转发和在传输线路上传播的延迟:可变 部分主要是数据包在网络节点的队列中等待引起的延迟。对于固定部分 的延迟,一般没有什么办法可以减少,但是可变部分的延迟可以通过路 由器队列调度等方式加以改善。 延迟抖动( j i t t e r ) 抖动是指延迟的变化,即相邻两个数据包到达接受 者的时间间隔相对于发送者发送这两个数据包的时间间隔之间的差异。 带宽( b a n d w i d t h ) 带宽是网络发送数据能力的一种度量。通常带宽足 西北工业大学硕士论文第一章互联网和服务质量保证 够的情况下由于排队而引起的延迟会比较小。 丢报率( p a c k e tl o s sr a t e ) 是指整个传输过程中丢失的包占全部传输包 的比率。造成包丢失的原因很多,首先i n t e m e t 本身是不可靠的,数据 包可能因为传输错误( 如校验错误) 而被丢弃:此外网络节点在拥塞时 也可能丢包。 1 3i pq o s 模型 为了满足实时多媒体业务对i pq o s 的要求,i e t f ( i n t e m e te n g i n e e r i n gt a s k f o r c e ) 定义了两种i pq o s 模型:一种是基于资源预留的每个数据流在通信之 前先在沿途的每个节点上预留一定的资源,这样在通信的过程中数据流就能获 得满意的服务质量;另一种是基于优先级的,不同的数据流在进入网络的时候 被打上不同的标记,网络的每个节点根据数据包的不同标记提供不同的服务。 前一种模型称为综合服务模型( i n t s e r v ) ,后一种称为区分服务模型( d i f f - s e r v l 。 1 3 1 综合服务模型 i n t - s e r v 在 1 7 】中定义,资源预留协议( r s v p ) 作为i n t s e r v 模型中的主要 信令协议,该协议假定从接收方到发送方之间沿途的每个路由器都要为每一个 要求q o s 的数据流预留资源。r s v p 信息跨越整个网络,请求预留资源。路径 沿途的各路由器咆括核心路由器必须为r s v p 数据流维护软状态。 r s v p 的工作过程是:首先,发送方应该向接收方发送一个r s v p 信息。r s v p 信息同其他i p 包一样通过各个路由器到达目的站点;接收端接收到发送端发送 的路径信息之后,由接收端逆向发起资源预留的过程;资源预留信息沿着原来 信息包相反的方向对沿途的路由器逐个进行资源预留。资源预留信息逐个询问 沿途的路由器,其现有资源是否可以完全满足该应用数据流的要求。如果资源 预留信息成功地回到发送方,则发送方就可以成功地在这条已经预留资源的路 径上发送应用数据了;否则,应用将无法进行。 i m s e r v 的缺陷有: 可扩展性差是i n t - s e r v 结构最致命的一个问题,因为i n t s e r v 要求端到端的 信令,这在一个实际运行的运营商网络中几乎无法实现。 其次,h a t - s e r v 还有一个目前很难解决的问题,那就是资源预留和路由协议 之间的矛盾。对于一条数据报的转发路径,从路由协议的角度来看它是一条好 的路径:可从资源预留来看,路由器没有足够的资源可以预留,不能为应用数 据流建立起一条路径,因此这一进程只能停留在这里,等待上层超时拆除这个 应用进程,再重新建立路径。 第三,资源预留协议还要求沿途的每个路由器为每一个数据流都维持一个” 西北工业大学硕士论文 第一章互联网和服务质量保证 软状态( p e r - f l o w s o f ts t a t e ) ”。这无疑也限制了这种结构的可扩展性,因为每个路 由器的内存有限。可以保存的软状态信息都是有限的,在一个运营商规模的网 络中几乎不可能实现这一要求。 除去上述这些具体的问题,单纯从i n t - s e r v 模型的实质来看,资源预留本 身就与i p 网络的最大特点“无连接”相冲突。在一个纯粹的i p 网络中,无需事 先建立好一条链路,尔后再在上面传送数据,而是通过动态路由协议动态地根据 网络拓扑的变化计算一条或者几条到达目的地的最短路径,将数据包发送出去。 一个应用基本上可以不沿着同一条路径传送到目的地,这也是分组交换的特点。 无连接的i p 网络最大的优点就是不需要复杂的信令,可扩展性很强,这也是 i n t e m e t 在如此短的时间内得以如此大发展的原因。i n t s e r v 模型利用r s v p 协 议作为信令,建立了一条“虚连接”,在本质上破坏了i p 网络“无连接”的优 势。 1 3 2 区分服务模型 d i f f - s e r v 1 8 是一个相对较新的q o s 模型,它不像综合服务那样为每个数 据流预留资源,而是以数据流的聚类为单位处理。网络边缘的节点对流入的数 据包进行分类并打上标记,一个标记标志一个流的聚类,多个数据流可能被打 上同样的标记,决定对所包含的数据包应该采用的转发行为。由于在网络内部 对数据包的分类操作变得简单,而且标记的个数( 即数据流聚类的个数) 远远 少于数据流的个数,因而区分服务的可扩展性较好。 区分服务模型对i p 包头中的业务类型( t o s ) 字段的前六位重新定义,把这 个字段称作d s c p ( d sc o d e p o i n t ) 。所谓给数据包打标记就是设置数据包中 d s c p 的值,下行节点通过识别这个字段,获取足够的信息来处理到达输入端 口的数据包,并将它们正确地转发给下一跳的路由器。 区分服务是在一个个d s 域 1 9 内实现的,一个d s 域指一个连续的支持区 分服务的网络节点的集合,一个d s 域有一个明确定义的边界。边界上的节点是 连接该d s 域和其它d s 域或其它非d s 域的节点;d s 域内不是边界点的节点称 为内部结点。边界节点和内部结点都应该实现分类的功能,在边界节点还必须 实现流量适应的功能。 区分服务的两个组成部分分别是: ( 1 ) 分类器 在区分服务中有两种分类器,一种是m f ( m u l t i f i e l d ) 分类器,这种 分类器一般在d s 域边界节点实现,它可以根据数据包头的多个数据域,如 i p 地址、端口号、协议类型等对其分类:另一种是b a ( b e h a v i o ra g g r e g a t e ) 分类器,这种分类器在内部节点实现,它只根据数据包的d s c p 进行分类。 西北工业大学硕士论文第一章互联网和服务质量保证 ( 2 ) 流量适应器 流量适应器( t r a f f i cc o n d i t l o n e r ) 主要在d s 域的边界节点实现,一 个d s 域通常和相邻的网络之间都有服务级约定s l a ,规定什么样的数据将 享受什么样的服务质量。为了实施这些约定,必须在d s 域的边界节点实现 流量适应的功能。流量适应器就是用来对数据流进行适应的,它的目的在 于使数据流符合事先规定的流量轮廓。流量适应器一般包括以下几个部分: 测量器( m e t e r ) 。测量器主要是用来测量一个数据流的时间特性是否 与流量轮廓相符,这种判断的结果将影响随后对该数据包的处理。 标记器( m a r k e r ) 用来对数据包打标记,即设置其d s c p 值。对数据包 打标记要根据预先对标记器的配置和测量器返回的状态结合来执行。 整形器( s h a p e r ) 的作用是对某些或所有的数据包进行延时,以使得 发送出去得数据流的时间特性符合预先规定的流量轮廓。 丢弃器( d r o p p e r ) 的作用是通过丢弃数据流中的某些包,使其时间特 性满足预先规定的轮廓。 d i f f s e r v 的缺点是没有办法完全依靠自己来提供端到端的q o s 结构。 d i f f s e r v 需要大量网络单元的协同运作,才能向用户提供端到端的服务质量, 鉴于这些组件高度分散的特点和对它们进行集中管理的需要,必须有一个对全 局资源进行动态管理的机制与之配合。 6 西北工业大学硕士论文第二章l i n u x 中的流量控制机制 第二章l i n u x 中的流量控制机制 无论是综合服务模型还是区分服务模型,在实现网络的o o s 时都需要在网 络节点( 路由器) 处按照一定的规则来区分不同的数据流,并根据需要将这些 数据流作单独的处理,从而达到保证某些数据流服务质量的目的。l i n u x 内核 从2 2 版起就提供了一套灵活、功能强大的流量控制机制,当网络节点发送数 据包时,它负责将等待发送的数据包按照一定的规则分类、排队以及调度发送 出去,它不仅包括了支持i e t f 提出的i n t s e r v 模型所必须的机制,也可作为 实现d i f f s e r v 模型的基础。 2 1l i n u x 介绍 l i n u x 诞生于1 9 9 0 年,l i n u st o r v a l d s ,芬兰赫尔辛基大学的一名大学生, 想要了解i n t e l 的新c p u 8 0 3 8 6 。他认为比较好的学习方法是自己编写一个操 作系统的内核。出于这种目的,加上他对于当时u n i x 变种版本对于8 0 3 8 6 类机器 的脆弱支持十分不满,他决定要开发出一个全功能的、支持p o s i x 标准的、类u n i x 的操作系统内核,该系统吸收了b s d 和s y s t e r m v 的优点,同时摈弃了它们的缺点。 l i n u s 独自把内核开发n o 0 2 版本,并于1 9 9 1 年1 0 月5 日发布。随即,l i n u x 弓 起 了黑客们的注意,通过计算机网络加入了l i n u x 的内核开发,由于一批世界上最 优秀的程序员的加入,使l i n u x 发展迅猛,到写稿为止最新的l in u x 内核稳定版本 是2 4 2 0 。 l i n u x 强大的生命力来源于其公开的开发方式,它最大的特点在于它是g n u 的一员,遵循公共版权许可证( g p l ) ,秉承“自由的思想,开放的源码”的原则, 成千上万的专家及爱好者可以自由的使用、拷贝、查询、重用、修改甚至重新发 布它。每个人都可以通过各种方式( 大部分是i n t e r n e t ) 自由获取内核源程序, 每个人都可以对源程序加以修改,并将其放在网络上使其他人也可以自由的获取 你修改后的代码;如果你发现了缺陷,可以提交错误报告在网上,供世界范围内 的众多程序员讨论并加以修改完善。因此l i n u x 操作系统和供它使用的工具程序 的开发是国际化的努力结果,也可以说是i n t e r n e t 的产物。 l i n u x 在源代码级上兼容绝大部分u n i x 标准( 指的是i e e ep o s i x 、s y s t e mv 、 b s d ) ,是一个支持多用户、多进程、多线程、实时性较好的功能强大而稳定的 操作系统。它可以运行在x 8 6p c 、s u ns p a r c 、d i g i t a la l p h a 、6 8 0 x 0 、p o w e rp c 、 m i p s 等平台上,是目前运行硬件平台最多的操作系统。 l i n u x 操作系统继承t u n i x 操作系统的超过二十五年的经验、源代码以及技 术支持。这使得l i n u x 操作系统虽然是最新操作系统中的一员,却远比当今流行 的商业化的操作系统成熟。 西北工业大学硕士论文第二章l i n u x 中的流量控制机制 l i n u x 系统因为具有很高的稳定性,加之发行版本中带有各种免费的提供源 代码的网络服务器软件,所以往往被选作网络服务器的操作系统,不仅可以节约 大量的经费,网络管理员还可以修改软件代码来提高服务器的安全性。装有l i n u x 的机器可以很方便的配置成w e b 、f t p 、文件服务器接入网关,实现i p 伪装、地 址转换,路由,代理等功能。 2 2 l i n u x 的网络实现 l i n u x 中完整的实现了t c p i p 协议,这部分实现以4 4 b s d 为模板,支持 b s ds o c k e t 编程接口,因此一般使用普通u n i x 中b s ds o c k e t 通用接口编程的 程序都可以移植到l i n u x 中 7 。 2 2 1l i n u x 网络系统的分层结构 用户空间 内核空间 硬件设备 图2 1 从整体角度考虑,l i n u x 网络系统基本可以分为硬件层数据链路层、i p 层、 i n e ts o c k e t 层、b s ds o c k e t 层和应用层五个部分。 应用层中的操作对象是s o c k e t 文件描述符,通过文件系统定义的通用 接口,使用系统调用从用户空间切换到内核空间; b s i ) s o c k e t 层的操作对象是s o c k e t ( ) 结构,每一个这样的结构对用的 是一个网络连接,通过网络地址族的不同来区分不同的操作方法,判断 是否应该进入i n e ts o c k e t 层: 西北工业大学硕士论文 第二章l i m l x 中的流量控制机制 i n e ts o c k e t 层根据建立连接的类型,分为面向连接和面向无连接两种 类型,这是区分t c p 和u d p 协议的主要原则; i p 层主要负责i p 数据包的路由,发送时根据发送的目标地址确定需要 使用的网络设备接口和下一个需要传送到的机器地址,接收数据时判断 该数据包是要发送给上层协议处理还是进行转发; 硬件层即网络接口设备的驱动程序,是有关硬件的控制方法。 2 2 2l i n u x 中i p 包的收发过程 传输层( t c p 、u d p ) 处理 t上 i p _ l o c a l _ d e l i v e r ( )r e t _ f f o m _ s y s _ c a l l oi p _ q u e u e _ x m i t ( ) j n e t _ r x _ a c t i o n ( ) n e tt x a c f i o n o 1 r i po u t p u t o 。 p j 咖 l7 l p _ f o r w a r d ol i pf i n i s h _ o u t p u t ( ) t 【删f r x oii a e u u e u n o i l l 。 e l i n t e r r u p t ( )h a r d _ s m r t _ x m i t o 十0 网络硬件设备( 此处是以太网卡) 图2 2 上图简要描述了i p 数据包在l i n u x 内核中的收发过程: 以太网卡接收到数据包后,产生硬件中断,中断处理函数e i i n t e r r u p t0 调用n e t i f _ r x 0 ,将收到的数据包放到接收队列中。l i n u x 内核在每次系统调 用结束前或处理b o t t o mh a l f 队列、信号等事务时都要执行r e t f r o ms y s c a l l 0 ,此函数通过n e t r x a c t i o n 0 调用i p _ r c v 0 处理接收到的i p 包。如果 该数据包是到本机的,便调用i p _ l o c a l d e l i v e r0 交由上层协议处理;如果不 是到本机的那么调用i p f o r w a r d 0 ,交给i p _ f i n i s h _ o u t p u t0 处理并最终发送 出去。 本机发送的数据包调用i p _ q u e u e x m i t 0 交给i p 层,查找到路由后,调用 i p o u t p u t0 和i p f i n i s h o u t p u t0 ,d e v q u e u e x m i t0 将数据包交给网络设 西北工业大学硕士论文第二章l i n u x 中的流量控制机制 备进行发送,并调用与设备硬件相关的h a r d s t a r t _ x m i t0 最终发送出去。 与n e t r x a c t i o n 0 类似,r e t f r o m _ s y s c a l0 同时会调用函数 n e t t x a c t i o n 0 查找是否有数据包等待发送,若有则调用# 处的q d i s c r u n 0 , 此函数将在随后的章节中详细介绍。 2 3 流量控制机制的组成及用法 l i n u x 中的流量控制分为两部分:提供特定队列操作的内核模块和用于人 机操作的用户空间程序_ t c 。内核部分源码在内核源码目录下的n e t s c h e d 目 录,t c 程序源码包含在i p r o u t e 2 程序包中,用于在内核与用户空间通信的 r t n e t l i n k 机制在n e t c o r e r t n e t l i n k c 和i n c l u d e 1 i n u x r t n e t l i n k h 中实 现。流量控制作用在网络设备的输出队列( 见图1 - 2 ) ,通过d e vq u e u e x m i t0 函数调用的q d i s c r u n ( ) 来实现。流量控制机制通过为网络设备的输出队列配 置不同的队列算法实现了以下功能: 整形当数据流被整形后,它的传输速率就得以控制。整形一般会减 少数据流实际可用的带宽,但更重要的用途是平滑数据报传输时所发生 的突发现象,从而改善网络性能。整形发生在输出队列的出口。 调度通过调度数据报的发送顺序,可以使那些对交互性要求比较高 的应用的数据报优先得到发送服务的同时,也保证了网络带宽的有效利 用。调度也被称为优先级排序,仅仅发生在输出队列的出口。 丢弃策略当数据流中的包违反了某些规则时,可选择在入口或出口 按照特定的策略将数据包丢弃。 2 3 1 流量控制机制的组成元素 l i n u x 内核中的流量控制代码在概念上分为以下几种元素 2 : 队列规则( q u e u i n gd i s c i p li n e ) 类( 包涵子队列规则) ( c l a s s ) 过滤器( 包分类器) ( f i l t e r 或c l a s s i e r ) 策略( p a l i c e ) 通常每一个网络设备都有与之相关的队列规则,用来控制进入队列的数据 包。一个非常简单的队列规则可能只包含一个队列,所有的数据包都按它们入 列的顺序存储,网络设备发送时,将所有的数据包尽可能快地发送出去。 图2 3 显示了一种较复杂的队列规则。数据包进入队列后,通过按照一定 规则( 如i p 地址,协议类型。服务类型) 建立的过滤器,能够匹配的数据包进入 与过滤器对应的类,并进入类中所包涵的队列规则中等待发送。不同的类可以 有不同的优先级,高优先级类中的数据优先发送。 1 0 西北工业大学硕士论文 第二章l i n u x 中的流量控制机制 图2 3 类和队列规则是紧密联系的。类就像是一个队列规则的容器,可以在类中 单独指定一子队列。因为队列规则之间是没有联系的,所以类可以起到“黏合 剂”的作用,将多种队列组织在一起,从而完成特定的流量控制功能。 策略的目标就是通过一些机制确保经过的数据流不会超出某些限制条件。 图2 4 显示了流量控制各元素与i pq o s 体系模型的关系: 图2 4 西北工业大学硕士论文第二章l i n u x 中的流量控制机制 2 3 2 t c 的用法 t c 是l i n u x 中用以配置内核中流量控制机制各组成元素的用户空间程序,它 运行在l i n u x 中的s h e l l 环境中,它的基本用法如下: t e o p t i o n s o b j e c t c o m m a n dlh e l p d e vd e v o p t i o n s := 一s t a t i s t i e s i d e t a i l s l r a w l b a r c h f i l e o b j e c t := q d i s c ic l a s sif i l t e r c o , n t n d := a d dc h a n g er e p l a c e ) i ) e v := 流量控制作用的网络设备名称 根据需要配置的对象( o b j e c t ) 的不同,t c 有不同的配置参数,详细资料见 t c 的h o i v f o 文档 6 和各队列、过滤器的帮助文档。 2 3 3 队列规则 在l i n u x 中网络设备接口使用数据结构n e t d e v i c e ) j 系统中所有的网络 接口都有一个对应的n e t d e v i c e ) 结构的变量存在。 s t r c u tn e t d e v i c e s t r u c tq d i s c * q d i s c : s t r u c to d i s c * q d i s c l i s t : u n s i g n e dl o n gt x q u e u e _ l e n j 其中q d i s c 指向此网络接口当前使用的队列,q d i s c l i s t 指向所有绑定在 该设备上的队列规则列表( 包括它所包涵的所有子队列) t x q u e u e l e n 表示 队列允许的最大长度。在q d i s c 结构和由其引出的q d i s c _ o p s ( 结构( i n c l u d e n e t p k t s c h e d h ) 中定义了队列规则的各种属性和接口。每一种队规则都会 提供以下函数来完成它的操作: e n q u e u e将一个数据包加入队列。如果队列内还有类,e n q u e u e 函数 首先会选择一个类。然后调用类中子队列的e n q u e k l e 函数继续这个数 据包入列的过程: d e q u e u e出列操作,该函数返回下一个将要发送出去的数据包。如 果队列中没有需要发送的数据包( 比如队列是空的或因为某些原因队 列不能发送数据包) ,此时d e q u e u e 返回n u l l 值; 西北工业大学硕士论文第二章l i n u x 中的流量控制机制 r e q u e u e把一个利用d e q u e u e 函数得到的数据包重新放回到队列中。 它与e n q u e u e 函数的区别在于数据包应当被放回到d e q u e u e 函数将它 移出时的位置,另外在进行队列的流量统计时,也不应将这个数据包 再次计算在内( e n q u e u e 函数作用于此数据包时会把它包括在内) : d r o p从队列中丢弃一个数据包; i n i t 初始化一个队列规则,并配置它: r e s e t 将队列返回到它的初始状态。清除队列中的所有数据包,停止 时钟等等; d e s t r o y移走一个队列,包括所有的类和过滤器,删除所有“悬挂” 事件,释放此队列占用的所有资源( 不包括描述此队列规则的数据结 构) : d u m p返回用于存档的诊断数据,特别是队列的配置数据和状态变量。 当上层协议完成对数据的处理,选择好发送网络设备接口后,就会调用 d e v q u e u e x m i t0 函数( n e t c o r e d e v c ) 开始硬件层的发送。 in t d e v _ q u e u e x m it ( s t r u c ts k _ b u f f * s k b ) ( s t r u c tn e td e v ic e * d e v = s k b 一 d e v : s t r u c tq d i s c 4 q : q = d e v 一 q d i s c : if ( q - e n q u e u e ) in t r e t = q - e n q u e u e ( s k b ,q ) : q d is c _ r u n ( d e v ) : ) j s k b 指向需要发送的数据包,d e v 是该数据包的发送设备,q 是该设备的队 列规则。首先调用q 的e n q u e u e 函数将数据包入列,而后调用q d i s c r u n 0 。 在q d i s c r u n ( ) 中调用q d i s c _ r e s t a r t0 ( n e t s c h e d s c h g e n e r i c c ) 完成q 的出列操作。 i n tq d i s c r e s t a r t ( s t r u c tn e t d e v i c e * d e v ) s t r u c to d i s c 术q = d e v 一 q d i s c : s t r t l c ts kb l u f f 十s k b 西北工业大学硕士论文第二章l i n u x 中的流量控制机制 i f ( ( s k b = q - d e q u e u e ( q ) ) n u l l ) ( i f ( d e v 一 h a r d s t a r t x m i t ( s k b ,d e v ) = = 0 ) ) s k b 就是从队列q 出列操作中得到的数据包,如果不为空,则调用与各设 备相关的底层发送函数将s k b 指向的数据包发送出去。 2 3 4 类 有两种方法可以区分类:依靠由管理员指定的c l a s si d 或是依靠由队列规 则分配的内部i d 。当类外部的父队列进行入列操作时,e n q u e q u 函数利用绑定 在父队列的过滤器,将数据包分类返回适合该数据包的类的内部i d ,根据该i d 寻找目标类,再继续调用该类内部的子队列e n q u e u e 函数。 带有类的队列规则可以使用以下函数来操作它包含的类( 这些函数再 i n c l u d e n e t p k t s c h e d h 中的q d i s c c l a s s _ u p sf 结构中声明) : g r a f t 将一个新队列放入类中作为子队列,并返回类原来的子队列: g e t根据c l a s si d 寻找类的内部i d 。如果类有引用计数变量的话, g e t 还需将该类的引用计数值加1 ; p u t与g e t 函数作用相反。如果类有引用计数变量的话,p u t 需将 该类的引用计数值减1 。若引用计数值为1 ,将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 瘢痕子宫孕妇阴道分娩围产期管理全流程循证总结2026
- 2025年建筑行业数字化转型组织文化建设
- 2026届达州市高三第二次调研历史试卷含解析
- 2025-2026学年驻马店市高考历史二模试卷含解析
- 基于认知冲突的初中数学课堂问题解决能力培养策略教学研究课题报告
- 循证康复实践中的康复-应用创新
- 2026年智能纤维创新应用报告
- 影像组学特征与肿瘤血管生成的相关性及疗效预测
- 生成式AI在教育内容创作中的知识产权保护与利益平衡教学研究课题报告
- 2026年自动驾驶交通管理创新报告及未来五至十年基础设施报告
- 密封条范文模板(A4打印版)
- 新人教版高中物理必修二第八章《机械能守恒定律》测试题(含答案解析)
- 免费DDOS攻击测试工具大合集
- 水库运行管理试题
- 无创呼吸机课件
- 反恐应急演练过程记录表
- 中学生宪法知识竞赛试题附有答案
- 电气工程竣工验收表格模板
- 幼升小大班衔接教育PPT模板幼儿园大班《我要上小学了》幼儿园与小学不同情况介绍ppt课件
- 食品安全抽样检验抽样单
- 14S501-1 球墨铸铁单层井盖及踏步施工
评论
0/150
提交评论