# Week 3 ( mmWave ) Note
## Name : Christofel Rio Goenawan
## University : Bandung Institute of Technology (ITB)
## Date : 19/1/2020 - 24/1/2020
## Objectives:
1. Understand concept and work of iPerf (What? How? Why ? )
2. Know how to use iPerf.
## 1. What is IPerf?
iPerf3 is a tool for measuring real archievable bandwith of a connection in IP network. iPerf3 supports tuning of various parameters related to timing, buffers and protocols (TCP, UDP, SCTP with IPv4 and IPv6).

For each test it reports :
1. **bandwidth**
2. **loss**
3. etc
This is a new implementation of iPerf and have no independencies in iPerf and also is not backwards compatible. iPerf was orginally developed by NLANR/DAST and iPerf3 is principally developed by ESnet / Lawrence Berkeley National Laboratory.
Some importan features of iPerf3 is shown as below.
* **TCP and SCTP** :Measure bandwidth, Report MSS/MTU size and observed read sizes, Support for TCP window size via socket buffers.
* **UDP** :Client can create UDP streams of specified bandwidth, Measure packet loss, Measure delay jitter, Multicast capable
* **Cross-platform**: Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, NetBSD, VxWorks, Solaris, etc.
* Client and server can have **multiple simultaneous connections** (-P option).
* Server handles **multiple connections**, rather than quitting after a single test.
* Can run for **specified time** (-t option), rather than a set amount of data to transfer (-n or -k option).
* Print **periodic, intermediate bandwidth, jitter, and loss** reports at **specified intervals** (-i option).
* Run the server as a **daemon** (-D option)
## 2. Why using iPerf3?
As explained above, iPerf3 have been popular tool for maesure bandwith of a connection either wireless or with wire because a lot of useful features , high throughput of the program because it low complexity , work in multiple platform / OS, have a lot of parameter users can measure through option and can run the server as a daemon.
## 3. How to use iPerf 3 for Measuring Bandwith
The work of iPerf3 for measuring bandwith can be explained as diagram below.

First the user make a PC as a iPerf3 **server**. Then the user use another PC in same connection that want to be measured, and make it as **client**. The 2 PC can have different OS , but must have same internet protocol and in the same connection. Than the user make a ****ping**** from client that will measure the bandwith , loss , and other parameters through the connection of PC Server and PC Client.
### 3.1. Download the iPerf3
First we must download the binary file in zip in this link.
https://iperf.fr/iperf-download.php
The download web shown as below.

Then we download the version that we wanted and in OS we have. Because I use Windows 10 OS, then I download the iPerf3 for Windows 10 64 bit.
Then save the zip file in a folder and unzip it. After the zip it contain file as below.

### 3.2. Make a PC as Server
To make PC the client , first we open the ```iPerf3.exe``` using either command prompt or window power shell prompt. The writer decide to use power shell by holding the ```shift``` key and right click the file ```iPerf3.exe```, then choose ```Open PowerShell window here``` as below.

Then the power shell window will open.
For making the PC server, first we must see the **IPv4 address** of the server PC in the connection. This can be done by type code as below.
```ipconfig```
Then the connection information of the PC will be shown as below.

From the information above the writer's server PC IP adress is 192.168.5.44.
Then to make the PC as server, use the code below.
```./iperf3.exe -s```
The ```-s``` is flag to make the PC the server. Then the prompt will be shown as below.

This sign that the PC has been server for the iPerf3 test. To stop the host, use ```ctrl + c``` .
### 3.3. Make a PC as Client and Measure Bandwith
Then to make the PC as client , first download and open the power shell prompt as above. And use this code in the prompt.
```./iperf3.exe -c 192.168.5.44```
That is use ```-c``` for client and the server PC's IP address.
Then the prompt will measure the measurement as below.
## Source:
1. https://iperf.fr/
2. https://documentation.meraki.com/zGeneral_Administration/Tools_and_Troubleshooting/Troubleshooting_Client_Speed_using_iPerf
3. https://www.youtube.com/watch?v=74SPZFgTudM