123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- %description:
- Testing TCP communication speed
- TCP
- TCP_NSC
- %#--------------------------------------------------------------------------------------------------------------
- %testprog: opp_run
- %#--------------------------------------------------------------------------------------------------------------
- %file: test.ned
- import ned.DatarateChannel;
- import inet.node.inet.StandardHost;
- import inet.node.inet.Router;
- import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
- channel C extends DatarateChannel
- {
- delay = 0.01us; // ~ 2m
- datarate = 10Mbps;
- }
- module SubTest
- {
- parameters:
- string cliTcpType = default("n/a");
- string srvTcpType = default("n/a");
- int k = default(3);
- submodules:
- server: StandardHost {
- parameters:
- numTcpApps = 1;
- tcpType = srvTcpType;
- }
- switch: Router {
- parameters:
- }
- client[k]: StandardHost {
- parameters:
- numTcpApps = 1;
- tcpType = cliTcpType;
- tcpApp[0].connectAddress = substringBeforeLast(fullPath(),".client[")+".server";
- }
- connections:
- server.pppg++ <--> C <--> switch.pppg++;
- for i=0..k-1 {
- client[i].pppg++ <--> C <--> switch.pppg++;
- }
- }
- module STest
- {
- parameters:
- string srvTcpType = default("n/a");
- submodules:
- clients_INET: SubTest {
- parameters:
- srvTcpType = srvTcpType;
- cliTcpType = "TCP";
- }
- clients_NSC: SubTest {
- parameters:
- srvTcpType = srvTcpType;
- cliTcpType = "TCP_NSC";
- }
- clients_LWIP: SubTest {
- parameters:
- srvTcpType = srvTcpType;
- cliTcpType = "TCP_lwIP";
- }
- }
- network TcpSpeedTest
- {
- submodules:
- server_INET: STest {
- parameters:
- srvTcpType = "TCP";
- }
- server_NSC: STest {
- parameters:
- srvTcpType = "TCP_NSC";
- }
- server_LWIP: STest {
- parameters:
- srvTcpType = "TCP_lwIP";
- }
- configurator: IPv4NetworkConfigurator {
- @display("p=70,40");
- }
- }
- %#--------------------------------------------------------------------------------------------------------------
- %inifile: omnetpp.ini
- [General]
- network = TcpSpeedTest
- total-stack = 7MiB
- tkenv-plugin-path = ../../../etc/plugins
- #debug-on-errors = true
- #record-eventlog = true
- **.vector-recording = false
- sim-time-limit = 2s+60s
- #sim-time-limit = 2s+60s+12s
- **.server*.tcpApp[0].typename = "TCPEchoApp"
- **.client*.tcpApp[0].typename = "TCPSessionApp"
- #client app:
- **.client*.tcpApp[0].active = true
- **.client*.tcpApp[0].localPort = -1
- **.client*.tcpApp[0].connectPort = 1000
- **.client*.tcpApp[0].tOpen = 1s
- **.client*.tcpApp[0].tSend = 2s
- **.client*.tcpApp[0].sendBytes = 10000000B
- **.client*.tcpApp[0].sendScript = ""
- **.client*.tcpApp[0].tClose = 100s
- #server app:
- **.server*.tcpApp[0].localPort = 1000
- **.server*.tcpApp[0].echoFactor = 2.0
- **.server*.tcpApp[0].echoDelay = 0
- ## tcp apps
- ## tcp layer
- **.tcp.sackSupport = true
- # NIC configuration
- **.ppp[*].queueType = "DropTailQueue" # in routers
- **.ppp[*].queue.frameCapacity = 10
- #**.ppp[*].queue.frameCapacity = 100 # good:(13,15,16,18,19,21-25, 7) bad:(17,20)
- %#--------------------------------------------------------------------------------------------------------------
- %postrun-command: Rscript check.r
- %#--------------------------------------------------------------------------------------------------------------
- %file: check.r
- #!/usr/bin/env Rscript
- options(echo=FALSE)
- options(width=160)
- library("omnetpp", warn.conflicts=FALSE)
- #TEST parameters
- scafile <- 'results/General-#0.sca'
- cliPerSrv <- 3
- srvCount <- 3 * 3
- cliCount <- srvCount * cliPerSrv
- echoFactor <- 2
- cliSentBytes <- 10000000
- cliRcvdBytes <- cliSentBytes * echoFactor
- srvRcvdBytes <- cliPerSrv * cliSentBytes
- srvSentBytes <- srvRcvdBytes * echoFactor
- # begin TEST:
- dataset <- loadDataset(scafile)
- cat("\nOMNETPP TEST RESULT:\n")
- cli <- dataset$scalars[grep("\\.client\\[\\d\\]\\.tcpApp\\[\\d\\]$",dataset$scalars$module),]
- cliSent <- cli[cli$name == "bytesSent",]
- cliRcvd <- cli[cli$name == "bytesRcvd",]
- srv <- dataset$scalars[grep("\\.server\\.tcpApp\\[\\d\\]$",dataset$scalars$module),]
- srvSent <- srv[srv$name == "bytesSent",]
- srvRcvd <- srv[srv$name == "bytesRcvd",]
- cat("\nTCP SPEED TEST RESULT:\n")
- if(length(cliSent$value) == cliCount & min(cliSent$value) == cliSentBytes)
- {
- cat("CLIENT SENT OK\n")
- } else {
- cat("CLIENT SENT BAD:\n")
- cliSent$rate = cliSent$value*100/cliSentBytes
- print(cliSent[cliSent$value != cliSentBytes,])
- }
- if(length(srvRcvd$value) == srvCount & min(srvRcvd$value) == srvRcvdBytes)
- {
- cat("SERVER RCVD OK\n")
- } else {
- cat("SERVER RCVD BAD:\n")
- srvRcvd$rate = srvRcvd$value*100/srvRcvdBytes
- print(srvRcvd[srvRcvd$value != srvRcvdBytes,])
- }
- if(length(srvSent$value) == srvCount & min(srvSent$value) == srvSentBytes)
- {
- cat("SERVER SENT OK\n")
- } else {
- cat("SERVER SENT BAD:\n")
- srvSent$rate = srvSent$value*100/srvSentBytes
- print(srvSent[srvSent$value != srvSentBytes,])
- }
- if(length(cliRcvd$value) == cliCount & min(cliRcvd$value) == cliRcvdBytes)
- {
- cat("CLIENT RCVD OK\n")
- } else {
- cat("CLIENT RCVD BAD:\n")
- cliRcvd$rate = cliRcvd$value*100/cliRcvdBytes
- print(cliRcvd[cliRcvd$value != cliRcvdBytes,])
- }
- cat("\n")
- %#--------------------------------------------------------------------------------------------------------------
- %contains: postrun-command(1).out
- OMNETPP TEST RESULT:
- TCP SPEED TEST RESULT:
- CLIENT SENT OK
- SERVER RCVD OK
- SERVER SENT OK
- CLIENT RCVD OK
- %#--------------------------------------------------------------------------------------------------------------
|