`

NS by Example 笔记(7)RED Queue Monitor Example

阅读更多

RED Queue Monitor Example

 

 

Example 5中OTcl脚本建立了网络拓扑并运行Figure 15所描述的模拟场景。

 

备注RED队列可以持有最多25个数据包用于连接r1-r2, 并且我们可以看到RED队列如何通过测量当前队列大小和平均队列大小的动态变化来运行。




 
Figure 15. RED Queue Monitor Example Setup




     
    Example 5. RED Queue Monitor Simulation Script

     

     

    上面的脚本中要注意到

  • 高级的模拟对象的成员函数create-connection用来建立TCP连接。 
  • 在tracing a queue(monitoring)那段代码中, 首先给variable带入RED queue对象, 调用它的成员函数trace去监听当前队列大小(curq_)和平均队列大小(avg_), 然后让他们把结果写入到"all.q"文件中。下面是两个队列追踪信息输出的格式,分别是平均队列大小average queue size和当前队列大小current queue size.

     

    a time avg_q_size
    Q time crnt_q_size

     

    当模拟完成时,除了关闭"all.q"文件的以外,所有RED队列监听需要的命令都已经完成, 所以剩下的工作就是设计并编写post-simulation处理。 这个脚本使用awk去把监听信息转换到XGraph(a plotter)输入的格式, 然后启动它去根据已给信息画出分析图(见 Figure 16)。




     
    Figure 16. Red Queue Trace Graph

     

     

     

        red.tcl代码

    # Polly Huang 8-7-98
    
    set ns [new Simulator]
    #
    # Create a simple six node topology:
    #
    #        s1                 s3
    #         \                 /
    # 10Mb,2ms \  1.5Mb,20ms   / 10Mb,4ms
    #           r1 --------- r2
    # 10Mb,3ms /               \ 10Mb,5ms
    #         /                 \
    #        s2                 s4 
    #
    set node_(s1) [$ns node]
    set node_(s2) [$ns node]
    set node_(r1) [$ns node]
    set node_(r2) [$ns node]
    set node_(s3) [$ns node]
    set node_(s4) [$ns node]
    
    $ns duplex-link $node_(s1) $node_(r1) 10Mb 2ms DropTail 
    $ns duplex-link $node_(s2) $node_(r1) 10Mb 3ms DropTail 
    $ns duplex-link $node_(r1) $node_(r2) 1.5Mb 20ms RED 
    $ns queue-limit $node_(r1) $node_(r2) 25
    $ns queue-limit $node_(r2) $node_(r1) 25
    $ns duplex-link $node_(s3) $node_(r2) 10Mb 4ms DropTail 
    $ns duplex-link $node_(s4) $node_(r2) 10Mb 5ms DropTail 
    
    $ns duplex-link-op $node_(s1) $node_(r1) orient right-down
    $ns duplex-link-op $node_(s2) $node_(r1) orient right-up
    $ns duplex-link-op $node_(r1) $node_(r2) orient right
    $ns duplex-link-op $node_(r1) $node_(r2) queuePos 0
    $ns duplex-link-op $node_(r2) $node_(r1) queuePos 0
    $ns duplex-link-op $node_(s3) $node_(r2) orient left-down
    $ns duplex-link-op $node_(s4) $node_(r2) orient left-up
    
    
    set tcp1 [$ns create-connection TCP/Reno $node_(s1) TCPSink $node_(s3) 0]
    $tcp1 set window_ 15
    set tcp2 [$ns create-connection TCP/Reno $node_(s2) TCPSink $node_(s3) 1]
    $tcp2 set window_ 15
    set ftp1 [$tcp1 attach-source FTP]
    set ftp2 [$tcp2 attach-source FTP]
    
    # Tracing a queue
    set redq [[$ns link $node_(r1) $node_(r2)] queue]
    set tchan_ [open all.q w]
    $redq trace curq_
    $redq trace ave_
    $redq attach $tchan_
    
    
    $ns at 0.0 "$ftp1 start"
    $ns at 3.0 "$ftp2 start"
    $ns at 10 "finish"
    
    # Define 'finish' procedure (include post-simulation processes)
    proc finish {} {
        global tchan_
        set awkCode {
    	{
    	    if ($1 == "Q" && NF>2) {
    		print $2, $3 >> "temp.q";
    		set end $2
    	    }
    	    else if ($1 == "a" && NF>2)
    	    print $2, $3 >> "temp.a";
    	}
        }
        set f [open temp.queue w]
        puts $f "TitleText: red"
        puts $f "Device: Postscript"
        
        if { [info exists tchan_] } {
    	close $tchan_
        }
        exec rm -f temp.q temp.a 
        exec touch temp.a temp.q
        
        exec awk $awkCode all.q
        
        puts $f \"queue
        exec cat temp.q >@ $f  
        puts $f \n\"ave_queue
        exec cat temp.a >@ $f
        close $f
        exec xgraph -bb -tk -x time -y queue temp.queue &
        exit 0
    }
    
    $ns run
    

     

  • 大小: 4.7 KB
  • 大小: 3.5 KB
  • 大小: 15.2 KB
分享到:
评论

相关推荐

    NS by Example 笔记(12)Add New Queue

    在本篇“NS by Example 笔记(12)Add New Queue”中,我们将探讨如何在计算机网络模拟软件NS-2(Network Simulator 2)中添加新的队列管理器。NS-2是一款广泛用于研究和教学的开源网络模拟工具,它允许用户模拟各种...

    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)是一个广泛...

    An example of C_queue

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

    Laravel开发-laravel-queue-monitor

    在本文中,我们将深入探讨Laravel开发中的一个关键组件——`laravel-queue-monitor`,这是一个专门用于监视队列作业的Laravel包。队列在Web应用开发中扮演着重要角色,尤其在处理耗时任务时,它们可以提高应用程序的...

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

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

    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

    The RED queue monitor example demonstrates how to configure and analyze the performance of RED queues in NS. Example Utilities NS provides several built-in utilities, such as nsnam, which converts ...

    red-queue.rar_Written In Red

    this file represents a red queue algorithm that used in ad-hoc network , s file is written by tool command language TCL represents a wire ad hoc network with three nodes connected together by ftp ...

    boot-example-activemq-queue-2.0.5

    * 消息消费者从queue中取出并且消费消息 * 消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息 * queue中支持存在多个消费者,但是对一个消费者而言,只会有一个消费者可以消费,...

    Laravel-Queue-Monitor:使用数据库监视Laravel作业

    composer require romanzipp/laravel-queue-monitor 配置 将配置和迁移复制到您的项目: php artisan vendor:publish --provider="romanzipp\QueueMonitor\Providers\QueueMonitorProvider" 迁移队列监视表。 可以...

    TeamViewer_API_Example_Service_Queue.zip

    总之,TeamViewer API Example Service Queue.zip提供了一个实践平台,帮助开发者熟悉TeamViewer API的使用,从而能够更高效地集成远程访问功能到他们的应用或系统中。通过学习和研究这个压缩包中的内容,你可以掌握...

    fred.rar_FRED_fred ns2_ns2_ns2 队列管理_queue management ns2

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

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

    The Python 3 Standard Library by Example (Developer's Library) by Doug Hellmann English | 12 Jun. 2017 | ASIN: B072QZZDV7 | 1456 Pages | AZW3 | 199.27 MB This is the eBook of the printed book and may...

    Laravel开发-laravel-queue-monitor .zip

    在本文中,我们将深入探讨Laravel框架中的队列监控,主要基于提供的压缩包"laravel-queue-monitor .zip"。Laravel是一个优雅的PHP web应用框架,它提供了一系列强大的工具来帮助开发者更高效地构建高质量的web应用。...

    The Python 3 Standard Library by Example.pdf

    7. **并发和多线程**:`threading`模块提供了多线程支持,`concurrent.futures`模块则提供了一种更高级的并发执行接口。`queue`模块用于线程间的同步和通信。 8. **错误和异常处理**:`traceback`模块用于追踪和...

Global site tag (gtag.js) - Google Analytics