1

我在 NS2 中工作并尝试使用 MD1 队列类型混合 tcp 和 udp 数据包。我想在每个 udp 和 tcp 数据包之间拆分到达率。我已经设法将 udp 设置为 Poisson 流量并找到了如何控制数据包的生成,但是在 tcp 中我还没有弄清楚如何控制数据包的生成,这意味着如何在 tcp 源流量中设置到达率, (我将使用 ftp 和 cbr 流量)。我尝试了很多方法,但我没有设法解决它。我应该使用 tcp 的 .tcl 文件中的哪个参数来执行此操作?

我的 .tcl 文件:

    set ns [new Simulator]

    set tf [open output.tr w]
    set nf [open nam.nam w]

    $ns trace-all $tf
    $ns namtrace-all $nf

    proc finish {} {
            global ns nf tf
            $ns flush-trace
            close $tf
        close $nf
        exec nam nam.nam &
            exit 0
    }

        set n0 [$ns node]
        set n1 [$ns node]
        set n2 [$ns node]
        set n3 [$ns node]

        $ns duplex-link $n0 $n2 1Mb 10ms DropTail
        $ns simplex-link $n1 $n2 1Mb 10ms DropTail
        $ns duplex-link $n2 $n3 0.04Mb 10ms DropTail

        $ns queue-limit $n0 $n2 100
        $ns queue-limit $n1 $n2 100
        $ns queue-limit $n2 $n3 100

    $ns duplex-link-op $n0 $n2 orient right-down
    $ns simplex-link-op $n1 $n2 orient right-up
    $ns duplex-link-op $n2 $n3 orient right

    $ns duplex-link-op $n0 $n2 queuePos 0.5
    $ns simplex-link-op $n1 $n2 queuePos 0.5
    $ns duplex-link-op $n2 $n3 queuePos 0.5

    set udp [new Agent/UDP]
    $ns attach-agent $n1 $udp
    set null [new Agent/Null]
    $ns attach-agent $n3 $null
    $ns connect $udp $null

    set exp  [new Application/Traffic/Exponential]
    $exp  attach-agent $udp
    $exp  set burst_time_ 0
    $exp  set idle_time_ 400ms
    $exp  set rate_ 1mb
    $exp  set packetSize_ 1000

    set tcp [new Agent/TCP]
    $tcp set class_ 2
    $ns attach-agent $n0 $tcp

    set sink [new Agent/TCPSink]
    $ns attach-agent $n3 $sink
    $ns connect $tcp $sink
    $tcp set window_ 20
    $tcp set packetSize_ 555

    set ftp [new Application/FTP]
    $ftp attach-agent $tcp
    $ftp set type_ FTP

    $ns at 0.2 "$exp start"
    $ns at 0.3 "$ftp start"
    $ns at 30000 "$exp stop"
    $ns at 30000 "$ftp stop"
    $ns at 30000 "finish"
        $ns run
4

0 回答 0