OPNET的队列调度模块.doc

OPNET的队列调度模块.doc

ID:57689485

大小:13.00 KB

页数:1页

时间:2020-09-01

OPNET的队列调度模块.doc_第1页
资源描述:

《OPNET的队列调度模块.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、OPNET中的队列调度模块(2008-7-5)看完simple_source,开始对接收到的数据包进行处理拉,比如RED,漏桶,队列调度等等。做队列调度的朋友们注意拉,一定要看OPNET中的队列调度模块,相信肯定会有很大收获的^_^   按数据包发送方式,这些模块分成两大类,一是被动方式,由接收节点发出ACCESS请求,然后队列模块发送数据包,有pc_fifo,pc_lifo,pc_prio,pf_fifo,prq_fifo共5个模块。二是主动方式,队列不为空,则发送,有acb_fifo,acb_fifo_ms,acp_fifo共3个模块。   第一

2、类模块相当简单。以pc_fifo为例,由3个状态组成:BRANCH(forced)、INS_TAIL(unforced)、SEND_HEAD(unforced)。并且INS_TAIL和SEND_HEAD都有一条没有条件的转移线指向BRANCH状态。   第一次收到ACCESS中断时,SERVICE条件满足,于是从BRANCH跳到SEND_HEAD,停在了此状态。然后有中断时,可能是ACCESS中断也可能是STRM中断,反正是无条件的,所以肯定会跳回BRANCH。由于BRANCH是forced嘛,所以又跳回SEND_HEAD(ACCESS中断)或者IN

3、S_TAIL(STRM中断),然后又停住等中断。如果第一次中断是STRM,也基本相同。  其他几个模块的处理过程大同小异:pc_lifo是lastcamefirstserved的;pc_prio是按优先级调度的,也就是PQ;prq_fifo对stream0的数据包进行FIFO,由op_subq_pk_insert(0,pkptr,OPC_QPOS_TAIL)实现,而对其它来源的数据包进行lastcamefirstserved,由(op_subq_pk_insert(0,pkptr,OPC_QPOS_HEAD)实现。而pf_fifo增加了对多个子队列的

4、支持,本质上就是pc_fifo的翻版。  最后是,使用第一类,必须让它连接一个能产生ACCESS中断的模块哈哈,所以可能使用得较少,基本上是用第二类噶:)   第二类稍微复杂一点,不过其实也是很基础的,但如果要做队列调度改进算法,相信这些模块可以帮大忙。这里以acb_fifo为例。   实现循环调度的关键是:   pk_svc_time=(double)pk_len/service_rate;             //按处理速率和包长计算包处理时间。   op_intrpt_schedule_self(op_sim_time()+pk_svc_t

5、ime,0);//定时,时间到则完成处理。   可见op_intrpt_schedule_self()实在是太有用了:)   而acb_fifo_ms支持多服务器,acp_fifo对所有的数据包,无论大小,保持恒定的处理速率。当然,由于这些模块都是FIFO的,更复杂的算法就要自己去改进拉。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。