1. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[Python] send Omnet statistics (end-to-end delay, throughput, packet loss rate, etc.) from...

Discussão em 'Python' iniciado por Stack, Outubro 4, 2024 às 13:33.

  1. Stack

    Stack Membro Participativo

    i wanna know if it is possible to send Omnet statistics (end-to-end delay, throughput, packet loss rate, etc.) from Omnet++ to python through socket communication, I was able set up the communication and I was able to send a message from Omnet and received it in Vscode, but i need the statistics that are saved in the results forlder, is there anyway to send these? Because I will need them for my RL training (in teh state space and reward), thank you in advance!

    I tried to modify the C++ code but I only got incremented values, not the actual delay values!

    package inet.tutorials.testresult;

    import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
    import inet.node.ethernet.EthernetSwitch;
    import inet.node.inet.StandardHost;
    import ned.DatarateChannel;
    import inet.node.inet.WirelessHost;

    import inet.node.inet.Router;
    import ned.DatarateChannel;
    import inet.node.wireless.AccessPoint;
    import inet.physicallayer.wireless.ieee80211.packetlevel.Ieee80211ScalarRadioMedium;
    import inet.common.scenario.ScenarioManager;
    import inet.marl.RLCommModule;
    import inet.applications.pingapp.PingApp;
    import inet.visualizer.common.IntegratedVisualizer;


    network GiB
    {
    parameters:
    int numHosts;
    int numAdditionalHosts; // Extra hosts for router5 and router6
    @display("bgb=900,600");
    @statistic[genBWVecMBps](record=max,min,mean,vector);
    @statistic[numMsgs](record=mean,vector);
    @statistic[flowDuration](record=mean,vector);
    @statistic[interArrival](record=mean,vector);
    @statistic[msgSize](record=mean,vector);
    @statistic[flowRate](record=max,min,mean,vector);
    @statistic[endToEndDelay](title="end-to-end delay"; source="messageAge(rcvdPk)"; unit=s; record=vector; interpolationmode=none);
    @statistic[throughput](title="throughput"; unit=bps; source="throughput(rcvdPk)"; record=histogram,vector);

    types:
    channel Ether1000m extends DatarateChannel
    {
    datarate = 1000Mbps;
    delay = 0.1us;
    }

    submodules:
    rlComm: RLCommModule {
    numHosts = default(5);
    portNumber = 49152;
    @display("p=100,500");
    }
    configurator: Ipv4NetworkConfigurator {
    @display("p=100,1000");
    }
    radioMedium: Ieee80211ScalarRadioMedium {
    @display("p=50,50");
    }

    // Servers connected to router3 and router6
    server: StandardHost {
    @display("p=495.28,73.687996;i=device/server");
    }
    //server1: StandardHost {
    // @display("p=706.68,60.399998;i=device/server");
    //}

    // Routers in ring topology (each connected to one switch)
    router3: Router {
    hasOspf = true;
    @display("p=489.528,219.66");
    }
    router4: Router {
    hasOspf = true;
    @display("p=454.208,391.392");
    }
    router5: Router {
    hasOspf = true;
    @display("p=651.112,391.392");
    }
    router6: Router {
    hasOspf = true;
    @display("p=747.89,148.532");
    }

    // Switches (each connected to one router and one or more hosts)
    ethernetSwitch1: EthernetSwitch {
    @display("p=266.73,109.83");
    }
    ethernetSwitch2: EthernetSwitch {
    @display("p=373.272,299.58398");
    }
    ethernetSwitch3: EthernetSwitch {
    @display("p=726.97003,411.078");
    }
    ethernetSwitch4: EthernetSwitch {
    @display("p=829.478,195.602");
    }

    // Hosts connected to switches
    standardHost[numHosts]: StandardHost {
    @display("p=192.464,130.75");
    }
    standardHost1[numHosts]: StandardHost {
    @display("p=274.216,334.616");
    }
    additionalHost[numHosts]: StandardHost {
    @display("p=604,514.608");
    }

    // More hosts for router5 and router6

    extraHostRouter6[numAdditionalHosts]: StandardHost {
    @display("p=898.752,279.048");
    }

    connections:
    // Router-to-router connections in a ring topology
    router3.ethg++ <--> Ether1000m <--> router4.ethg++;
    router4.ethg++ <--> Ether1000m <--> router5.ethg++;
    router5.ethg++ <--> Ether1000m <--> router6.ethg++;
    router6.ethg++ <--> Ether1000m <--> router3.ethg++; // Closing the ring

    // Each router connected to its own switch
    router3.ethg++ <--> Ether1000m <--> ethernetSwitch1.ethg++;
    router4.ethg++ <--> Ether1000m <--> ethernetSwitch2.ethg++;
    router5.ethg++ <--> Ether1000m <--> ethernetSwitch3.ethg++;
    router6.ethg++ <--> Ether1000m <--> ethernetSwitch4.ethg++;

    // Servers connected to router3 and router6
    server.ethg++ <--> Ether1000m <--> router3.ethg++;
    server.ethg++ <--> Ether1000m <--> router5.ethg++;
    // server1.ethg++ <--> Ether1000m <--> router6.ethg++;

    // Hosts connections to their respective switches
    for i=0..numHosts-1 {
    ethernetSwitch1.ethg++ <--> Ether1000m <--> standardHost.ethg++;
    ethernetSwitch2.ethg++ <--> Ether1000m <--> standardHost1.ethg++;
    ethernetSwitch3.ethg++ <--> Ether1000m <--> additionalHost.ethg++;
    }

    // Additional hosts for router5 and router6
    for i=0..numAdditionalHosts-1 {
    ethernetSwitch4.ethg++ <--> Ether1000m <--> extraHostRouter6.ethg++;
    }
    }


    and this is my ini file: [General]

    **.numHosts = ${5..25 step 10} # Number of regular hosts
    **.numAdditionalHosts = ${5..10 step 5} # Number of additional hosts for router5 and router6

    **.channel.throughput.recordVector = true
    **.channel.throughput.statistic-recording = true
    **.channel.throughput.result-recording-modes = all
    **.*.vector-recording = true
    **.*.vector-recording-intervals = 0..900
    **.*.scalar-recording = true

    # Application configuration for standardHost (connects to server)
    **.standardHost[*].numApps = 1
    **.standardHost[*].app[*].typename = "UdpVideoStreamClient"
    **.standardHost[*].app[*].serverAddress = "server"
    **.standardHost[*].app[*].serverPort = 1000
    **.standardHost[*].app[*].startTime = 5s

    # Application configuration for additionalHost (connects to server1)
    **.additionalHost[*].numApps = 1
    **.additionalHost[*].app[*].typename = "UdpVideoStreamClient"
    **.additionalHost[*].app[*].serverAddress = "server" # Connecting to server1 instead
    **.additionalHost[*].app[*].serverPort = 1000
    #**.additionalHost[*].app[*].startTime = 5s

    # Application configuration for standardHost1 (connects to server)
    **.standardHost1[*].numApps = 1
    **.standardHost1[*].app[*].typename = "UdpVideoStreamClient"
    **.standardHost1[*].app[*].serverAddress = "server"
    **.standardHost1[*].app[*].serverPort = 1000

    # Application configuration for extraHostRouter5 (connects to server1)
    **.extraHostRouter5[*].numApps = 1
    **.extraHostRouter5[*].app[*].typename = "UdpVideoStreamClient"
    **.extraHostRouter5[*].app[*].serverAddress = "server" # Connecting to server1 instead
    **.extraHostRouter5[*].app[*].serverPort = 1000
    **.extraHostRouter5[*].app[*].startTime = 5s

    # Application configuration for extraHostRouter6 (connects to server1)
    **.extraHostRouter6[*].numApps = 1
    **.extraHostRouter6[*].app[*].typename = "UdpVideoStreamClient"
    **.extraHostRouter6[*].app[*].serverAddress = "server" # Connecting to server1 instead
    **.extraHostRouter6[*].app[*].serverPort = 1000
    **.extraHostRouter6[*].app[*].startTime = 5s

    # Application configuration for server (connected to router3)
    **.server.numApps = 1
    **.server.app[*].typename = "UdpVideoStreamServer"
    **.server.app[*].localPort = 1000
    **.server.app[*].sendInterval = 0.001s
    **.server.app[*].packetLen = 1400B
    **.server.app[*].videoSize = 1Gb

    # Application configuration for server1 (connected to router6)
    **.server1.numApps = 1
    **.server1.app[*].typename = "UdpVideoStreamServer"
    **.server1.app[*].localPort = 1000
    **.server1.app[*].sendInterval = 0.001s
    **.server1.app[*].packetLen = 1400B
    **.server1.app[*].videoSize = 1Gb

    # Mobility configuration for hosts and servers
    *.standardHost[*].mobility.constraintAreaMaxX = 650m
    *.standardHost[*].mobility.constraintAreaMinX = 0m
    *.standardHost[*].mobility.constraintAreaMaxY = 500m
    *.standardHost[*].mobility.constraintAreaMinY = 0m
    *.standardHost[*].mobility.constraintAreaMaxZ = 0m
    *.standardHost[*].mobility.constraintAreaMinZ = 0m

    *.extraHostRouter5[*].mobility.constraintAreaMaxX = 650m
    *.extraHostRouter5[*].mobility.constraintAreaMinX = 0m
    *.extraHostRouter5[*].mobility.constraintAreaMaxY = 500m
    *.extraHostRouter5[*].mobility.constraintAreaMinY = 0m
    *.extraHostRouter5[*].mobility.constraintAreaMaxZ = 0m
    *.extraHostRouter5[*].mobility.constraintAreaMinZ = 0m

    *.extraHostRouter6[*].mobility.constraintAreaMaxX = 650m
    *.extraHostRouter6[*].mobility.constraintAreaMinX = 0m
    *.extraHostRouter6[*].mobility.constraintAreaMaxY = 500m
    *.extraHostRouter6[*].mobility.constraintAreaMinY = 0m
    *.extraHostRouter6[*].mobility.constraintAreaMaxZ = 0m
    *.extraHostRouter6[*].mobility.constraintAreaMinZ = 0m

    # Mobility configuration for servers
    *.server[*].mobility.constraintAreaMaxX = 650m
    *.server[*].mobility.constraintAreaMinX = 0m
    *.server[*].mobility.constraintAreaMaxY = 500m
    *.server[*].mobility.constraintAreaMinY = 0m
    *.server[*].mobility.constraintAreaMaxZ = 0m
    *.server[*].mobility.constraintAreaMinZ = 0m

    *.server1[*].mobility.constraintAreaMaxX = 650m
    *.server1[*].mobility.constraintAreaMinX = 0m
    *.server1[*].mobility.constraintAreaMaxY = 500m
    *.server1[*].mobility.constraintAreaMinY = 0m
    *.server1[*].mobility.constraintAreaMaxZ = 0m
    *.server1[*].mobility.constraintAreaMinZ = 0m

    # Mobility for routers
    *.router3.mobility.constraintAreaMaxX = 650m
    *.router3.mobility.constraintAreaMinX = 0m
    *.router3.mobility.constraintAreaMaxY = 500m
    *.router3.mobility.constraintAreaMinY = 0m
    *.router3.mobility.constraintAreaMaxZ = 0m
    *.router3.mobility.constraintAreaMinZ = 0m




    `

    Continue reading...

Compartilhe esta Página