| 295 | == Setup == |
| 296 | |
| 297 | Divide the hosts that you want to use into pairs. In each pair, you'll run an iperf listener on the server, and make an iperf connection to it from the client. |
| 298 | |
| 299 | Identify the precise IP address on each server that you'll want to connect to. Make a table to keep track of which server you'll want to connect to from each client, e.g. |
| 300 | |
| 301 | || '''client''' || '''server''' || '''server address''' || |
| 302 | || ganel.gpolab.bbn.com || planetlab5.clemson.edu || server=10.42.17.105 || |
| 303 | || planetlab4.clemson.edu || pl5.myplc.grnoc.iu.edu || server=10.42.17.73 || |
| 304 | || of-planet1.stanford.edu || wings-openflow-3.wail.wisc.edu || server=10.42.17.96 || |
| 305 | |
| 306 | You'll use the "server=<ipaddr>" parts when you run the experiment. |
| 307 | |
| 308 | Identify a port that you'd like to use for the connection; call it <port>, and use it below when you run the iperf server and client commands. |
| 309 | |
| 310 | Divide 1000 by the number of host pairs you have (the number of rows in your table); call this number <size>, and use it below when you run the iperf client command. (This is how much data (in megabytes) each client will send to the server.) |
| 311 | |
| 312 | On each client and server, install iperf: |
| 313 | |
| 314 | {{{ |
| 315 | sudo yum -y install iperf |
| 316 | }}} |
| 317 | |
| 318 | == Execution == |
| 319 | |
| 320 | On each server, run |
| 321 | |
| 322 | {{{ |
| 323 | server=<ipaddr> |
| 324 | nice -n 19 iperf -B $server -p <port> -s -i 1 |
| 325 | }}} |
| 326 | |
| 327 | using the "server=<ipaddr>" line from your table, and the <port> value you identified earlier. That should print a few lines on your terminal immediately, including ones like |
| 328 | |
| 329 | {{{ |
| 330 | Server listening on TCP port <port> |
| 331 | Binding to local address <ipaddr> |
| 332 | }}} |
| 333 | |
| 334 | and then more lines once a client connects. |
| 335 | |
| 336 | On each client, run |
| 337 | |
| 338 | {{{ |
| 339 | nice -n 19 iperf -c $server -p <port> -n <size>M |
| 340 | }}} |
| 341 | |
| 342 | using the "server=<ipaddr>" line from your table, and the <port> value you identified earlier. That should print a few lines on your terminal immediately, including ones like |
| 343 | |
| 344 | {{{ |
| 345 | Client connecting to <ipaddr>, TCP port <port> |
| 346 | ------------------------------------------------------------ |
| 347 | [ 3] local 10.42.17.51 port 40997 connected with <ipaddr> port <port> |
| 348 | }}} |
| 349 | |
| 350 | The client IP address and port will be different, of course. |
| 351 | |
| 352 | The server will then start to print lines like |
| 353 | |
| 354 | {{{ |
| 355 | [ 4] local <ipaddr> port <port> connected with 10.42.17.51 port 40997 |
| 356 | [ 4] 0.0- 1.0 sec 359 KBytes 2.94 Mbits/sec |
| 357 | [ 4] 1.0- 2.0 sec 498 KBytes 4.08 Mbits/sec |
| 358 | }}} |
| 359 | |
| 360 | When the transfer finishes, the client will print lines like |
| 361 | |
| 362 | {{{ |
| 363 | [ ID] Interval Transfer Bandwidth |
| 364 | [ 3] 0.0- 2.2 sec 1.00 MBytes 3.79 Mbits/sec |
| 365 | }}} |
| 366 | |
| 367 | Copy that final block for your results. |
| 368 | |
| 369 | When the transfer finishes, on the server, hit ctrl-c to kill the iperf server process. |
| 370 | |
| 371 | ''FIXME: It would be better if this piped to 'tee', so that you get log files for free.'' |
| 372 | |
| 373 | == Results == |
| 374 | |
| 375 | The results of the experiment are the three-line statistics summary at the end of the output on the client. |
| 376 | |
| 377 | ''FIXME: Do we also want to capture the output from the server.'' |
| 378 | |
| 379 | == Cleanup == |
| 380 | |
| 381 | No special cleanup is needed. |
| 382 | |
| 386 | |
| 387 | == Setup == |
| 388 | |
| 389 | Divide the hosts that you want to use into pairs. In each pair, you'll run an iperf listener on the server, and make an iperf connection to it from the client. |
| 390 | |
| 391 | Identify the precise IP address on each server that you'll want to connect to. Make a table to keep track of which server you'll want to connect to from each client, e.g. |
| 392 | |
| 393 | || '''client''' || '''server''' || '''server address''' || |
| 394 | || ganel.gpolab.bbn.com || planetlab5.clemson.edu || server=10.42.17.105 || |
| 395 | || planetlab4.clemson.edu || pl5.myplc.grnoc.iu.edu || server=10.42.17.73 || |
| 396 | || of-planet1.stanford.edu || wings-openflow-3.wail.wisc.edu || server=10.42.17.96 || |
| 397 | |
| 398 | You'll use the "server=<ipaddr>" parts when you run the experiment. |
| 399 | |
| 400 | Identify a port that you'd like to use for the connection; call it <port>, and use it below when you run the iperf server and client commands. |
| 401 | |
| 402 | Divide 1000 by the number of host pairs you have (the number of rows in your table); call this number <size>, and use it below when you run the iperf client command. (This is how much data (in megabytes) each client will send to the server.) |
| 403 | |
| 404 | Decide how fast you'd like to send data (in megabits per second); call this number <rate>, and use it below when you run the iperf client command. |
| 405 | |
| 406 | On each client and server, install iperf: |
| 407 | |
| 408 | {{{ |
| 409 | sudo yum -y install iperf |
| 410 | }}} |
| 411 | |
| 412 | == Execution == |
| 413 | |
| 414 | On each server, run |
| 415 | |
| 416 | {{{ |
| 417 | server=<ipaddr> |
| 418 | nice -n 19 iperf -u -B $server -p <port> -s -i 1 |
| 419 | }}} |
| 420 | |
| 421 | using the "server=<ipaddr>" line from your table, and the <port> value you identified earlier. That should print a few lines on your terminal immediately, including ones like |
| 422 | |
| 423 | {{{ |
| 424 | Server listening on UDP port <port> |
| 425 | Binding to local address <ipaddr> |
| 426 | }}} |
| 427 | |
| 428 | and then more lines once a client connects. |
| 429 | |
| 430 | On each client, run |
| 431 | |
| 432 | {{{ |
| 433 | nice -n 19 iperf -u -c $server -p <port> -n <size>M -b <rate>M |
| 434 | }}} |
| 435 | |
| 436 | using the "server=<ipaddr>" line from your table, and the <port>, <size>, and <rate> values you identified earlier. That should print a few lines on your terminal immediately, including ones like |
| 437 | |
| 438 | {{{ |
| 439 | Client connecting to <ipaddr>, UDP port <port> |
| 440 | ------------------------------------------------------------ |
| 441 | [ 3] local 10.42.17.51 port 40997 connected with <ipaddr> port <port> |
| 442 | }}} |
| 443 | |
| 444 | The client IP address and port will be different, of course. |
| 445 | |
| 446 | The server will then start to print lines like |
| 447 | |
| 448 | {{{ |
| 449 | [ 4] local <ipaddr> port <port> connected with 10.42.17.51 port 40997 |
| 450 | [ 4] 0.0- 1.0 sec 359 KBytes 2.94 Mbits/sec |
| 451 | [ 4] 1.0- 2.0 sec 498 KBytes 4.08 Mbits/sec |
| 452 | }}} |
| 453 | |
| 454 | When the transfer finishes, the client will print lines like |
| 455 | |
| 456 | {{{ |
| 457 | [ ID] Interval Transfer Bandwidth |
| 458 | [ 3] 0.0-79.8 sec 954 MBytes 100 Mbits/sec |
| 459 | [ 3] Sent 680273 datagrams |
| 460 | [ 3] Server Report: |
| 461 | [ 3] 0.0-79.1 sec 881 MBytes 93.4 Mbits/sec 0.040 ms 52088/680272 (7.7%) |
| 462 | [ 3] 0.0-79.1 sec 256 datagrams received out-of-order |
| 463 | }}} |
| 464 | |
| 465 | Copy that final block for your results. |
| 466 | |
| 467 | When the transfer finishes, on the server, hit ctrl-c to kill the iperf server process. |
| 468 | |
| 469 | ''FIXME: It would be better if this piped to 'tee', so that you get log files for free.'' |
| 470 | |
| 471 | == Results == |
| 472 | |
| 473 | The results of the experiment are the three-line statistics summary at the end of the output on the client. |
| 474 | |
| 475 | ''FIXME: Do we also want to capture the output from the server.'' |
| 476 | |
| 477 | == Cleanup == |
| 478 | |
| 479 | No special cleanup is needed. |