`

NS by Example 笔记(12)Add New Queue

阅读更多

Add New Queue

(Tested with ns-2.1b8a, ns-2.1b9a and ns-2.26)

 

  • 目标 Objective
  •  

    建立一个简单的drop-tail router output queue, 这个队列使用round-robin dequeue scheduling 在priority 15数据包 (from a "MmApp" over "UDPmm")和队列中其他数据包上。 当priority 15 包和其他包在队列中共存时, 它让每一类中在队列中时间最长(oldest)的数据包依次出列。

     

     

     

  • 设计 Design
  •  

    队列含有2个逻辑上的FIFO队列LQ1和LQ2, 则总的大小等于physical queue (PQ)的大小, i.e. LQ1 + LQ2 = PQ。 去实现普通的drop-tail的出列方式, 当一个数据包将要进入队列时, 排队管理器(enqueue  manager)检查LQ1 + LQ2的大小是否小于最大允许的PQ的大小。 如果小于, 则数据包加入到适当的逻辑队列去。 要实现round-robin dequeue scheduling的话, 出列管理器(dequeue manager)依次使一个逻辑队列的数据包离开并下一个数据包从另一个逻辑队列出列。 也就是说, 数据包以1:1的比例从两个逻辑队列中出列如果两个队列中都有数据包的话。

     

     

     

  • 实现 Implementation
  •  

    我们来给这个队列对象取个C++形式的名字叫"DtRrQueue" (Drop-Tail Round-Robin Queue)由"Queue"类衍生得来, 对应的OTcl名为"Queue/DTRR"。 当"Queue"类(in "queue.cc")中的成员函数"recv"收到一个数据包, 它调用queue对象的成员函数"enqueue", 并调用"dequeue"如果link对象没有被blocked 的话。 当link来自于blocked state, 它也调用它的queue对象的成员函数"dequeue"。 因此, 我们需要去编写"DtRrQueue"对象的类的成员函数"enqueue"和"dequeue"。Figure 30为"DtRrQueue"类的定义和它的"enqueue"和"dequeue"成员函数。 完整内容请见"dtrr-queue.h"和"dtrr-queue.cc"文件。




     
    Figure 30. "DtRrQueue" class implementation

     

  • 模拟测试 Test Simulation
  •  

    使用在测试"MmApp" over "UDPmm"中用到的模拟脚本, 只需改变link r1-r2的RED queue为DTRR queue。 见 Figure 31. 脚本到这里this script下载或见本文附件。




     
    Figure 31. "DtRrQueue" test simulation script

    • 大小: 12.5 KB
    • 大小: 4.3 KB
    分享到:
    评论

    相关推荐

      An example of C_queue

      THis is an example source code for the queue implemented by systemc.

      red-queue.zip_NS2 red_RED NS2_ns2_red queue_red tcl

      标题中的"red-queue.zip_NS2 red_RED NS2_ns2_red queue_red tcl"部分,主要涉及了几个关键概念:NS2、RED算法以及TCL脚本语言。这些概念都是网络模拟领域的核心元素。 首先,NS2(Network Simulator 2)是一个广泛...

      NS by example

      ### NS by Example: A Comprehensive Guide for Beginners #### Introduction NS (version 2) is an advanced and powerful network simulator developed at the University of California, Berkeley. It is ...

      NS by examples.doc

      NS documentation includes mini-HOWTOs, which provide step-by-step guidance on implementing specific features or scenarios, such as adding new applications or queue types. More Examples NS comes with ...

      tcl.rar_NS2 red_TCL简单代码_ns2 queue_queue_简单 red

      这个"tcl.rar_NS2 red_TCL简单代码_ns2_queue_queue_简单_red"的压缩包包含了一个使用TCL实现的RED和Droptail队列的源代码示例。通过这些脚本,我们可以学习如何在NS2中设置和操作这两种队列。 具体到TCL代码,可能...

      C语言头文件 QUEUE.H

      C语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言...

      droptail-queue.zip_DropTail ns2_Droptail_NS2 DropTail_droptail

      标签"droptail__ns2 droptail ns2_droptail droptail_tcl ns2_queue"进一步明确了关键词,如"droptail"、"ns2"、"droptail_tcl"和"ns2_queue",这些都是与NS2中的DropTail队列模拟和TCL脚本相关的元素。其中,...

      C# MessageQueue示例

      MessageQueue queue = new MessageQueue(".\\Private$\\MyQueue"); // 创建消息 Message msg = new Message("Hello, World!"); msg.Label = "Example Message"; // 发送消息 queue.Send(msg); // 接收消息...

      The Python 3 Standard Library by Example (Developer's Library)

      The Python 3 Standard Library by Example introduces Python 3.x’s new libraries, significant functionality changes, and new layout and naming conventions. Hellmann also provides expert porting ...

      fred.rar_FRED_fred ns2_ns2_ns2 队列管理_queue management ns2

      在NS2(网络模拟器2,Network Simulator 2)中,队列管理是网络模型中的一个关键组件,它负责处理到达的数据包,并决定它们的发送顺序。本压缩包"fred.rar"包含的是针对FRED(Fairness in Random Early Detection)...

      thinkphp-queue 笔记.md

      thinkphp-queue 笔记.md

      Unity QueueExample

      Unity Queue操作实例

      ns2卫星网络仿真笔记

      - **轨道内链路**(Intra-plane ISLs):例如,`$ns add-islintraplane $n0 $n1 $opt(bw_isl) $opt(ifq) $opt(qlim)`表示在轨道平面1上建立卫星`n0`到卫星`n1`的链路,带宽为$opt(bw_isl)$,队列为$opt(ifq)$类型,...

      Two-level heaps a new priority queue structure with applications

      Two-level heaps a new priority queue structure with applications to the single source shortest path problem

    Global site tag (gtag.js) - Google Analytics