# 20210315  Gnuplot

## 課堂資料

{% file src="<https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MVoOuNe1oJdDOWnVs3p%2F-MVoRCv1OHAuQvNwGuOJ%2F20210315.pptx?alt=media&token=4ce52c77-2d45-4950-b37b-4c3a75173bd8>" %}

{% embed url="<https://www.sdnlab.com/11495.html>" %}

{% embed url="<https://github.com/intrig-unicamp/mininet-wifi>" %}

{% embed url="<https://matplotlib.org/1.4.2/faq/installing_faq.html>" %}

{% embed url="<https://github.com/gmiotto/dockernet>" %}

{% embed url="<http://csie.nqu.edu.tw/smallko/mininet-wifidockerp4.zip>" %}

## 課堂練習

### 建立網路拓樸

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-Mcj1PyT4nMg_koYuU8p%2F-Mcj5iKKfvhP-nAecvkz%2FUntitled%20Diagram%20\(1\).jpg?alt=media\&token=ea891912-1faa-4a9f-942d-de29e23baad7)

```
cd mininet
```

```
mn --link=tc,bw=10,delay=1ms,loss=5
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwWtV4Sg3K0owNAMN9%2F-MWwlcWEnAJKqajGBgMh%2Fimage.png?alt=media\&token=0808f8b1-ccd3-4f7e-ba32-3069ec5dbdd2)

```
mn --link=tc,bw=10,delay='1ms',loss=0
```

```
h1 ping h2
```

```
xterm h1 h2
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwWtV4Sg3K0owNAMN9%2F-MWwmaOh1ldNbJH-TFZU%2Fimage.png?alt=media\&token=f2e99177-8565-4308-a4ba-d39375ef5a57)

{% tabs %}
{% tab title="h2" %}

```
iperf -s -i 1
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwWtV4Sg3K0owNAMN9%2F-MWwewvyzSo60yuEIUcX%2Fimage.png?alt=media\&token=877b1c4f-d3d5-4320-9270-ad9d3b6614b6)
{% endtab %}

{% tab title="h1" %}

```
iperf -c 10.0.0.2 -t 100
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwWtV4Sg3K0owNAMN9%2F-MWwg5F1fT5MZH9BBktQ%2Fimage.png?alt=media\&token=9d0da3b0-6c12-46bf-9ebd-142b5657fbb5)
{% endtab %}
{% endtabs %}

```
h1 ping -c 1000 -i 0.01 h2
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwWtV4Sg3K0owNAMN9%2F-MWwn3ZBV-EFwjQVwQbz%2Fimage.png?alt=media\&token=2da2b656-680d-4a6b-a408-764f8d77faf8)

```
exit
```

```
mn --link=tc,bw=10,delay='10ms',loss=2
```

```
h1 ping -c 1000 -i 0.01 h2
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwnU3PWco2l_enNknp%2F-MWwpTxJ2etNSAyfP13A%2Fimage.png?alt=media\&token=1f951318-469f-43fb-8598-a0e2a7617432)

```
xterm h1 h2 h1 h2
```

{% tabs %}
{% tab title="h2 - 1" %}

```
iperf -s -i 1 -p 5555 > tcp
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwnU3PWco2l_enNknp%2F-MWwtA-QK2mynPUYDIXz%2Fimage.png?alt=media\&token=774639c6-47a6-434c-a7b6-70ac83370325)
{% endtab %}

{% tab title="h1 - 1" %}

```
iperf -c 10.0.0.2 -p 5555 -t 100
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwnU3PWco2l_enNknp%2F-MWwt4x0RGYq9Zbho1an%2Fimage.png?alt=media\&token=2114f764-da88-4ebe-9752-a5bc40424b2b)
{% endtab %}

{% tab title="h2 - 2" %}

```
iperf -s -i 1 -p 6666 -u | tee udp
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwnU3PWco2l_enNknp%2F-MWwsUHPnShCkiVgQfNs%2Fimage.png?alt=media\&token=45f84e75-7b92-468c-85cb-eccd9ce1cc28)
{% endtab %}

{% tab title="h1 - 2" %}

```
iperf -c 10.0.0.2 -p 6666 -u -b 3M -t 100
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwnU3PWco2l_enNknp%2F-MWwt-4s3HXlfW9-VYQV%2Fimage.png?alt=media\&token=68e4e57d-2244-4d82-9bf9-e9eaf2361c11)
{% endtab %}
{% endtabs %}

```
exit
```

```
mn --link=tc,bw=100,delay='10ms',loss=2
```

```
xterm h1 h2
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwnU3PWco2l_enNknp%2F-MWwtwmRVFSIHDJWYA82%2Fimage.png?alt=media\&token=f40b1240-a48f-452d-97ec-bfbb5802d60d)

{% tabs %}
{% tab title="h2" %}

```
iperf -c -i 1 -p 5555 | tee tee
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwnU3PWco2l_enNknp%2F-MWwwAw0TK44UrzEQxrJ%2Fimage.png?alt=media\&token=374bd485-eeda-4e67-902f-aa09a50b27d0)
{% endtab %}

{% tab title="h1" %}

```
iperf -c 10.0.0.2 -t 100 -p 5555
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWwnU3PWco2l_enNknp%2F-MWwwfWRQRi2oZ1Jzr16%2Fimage.png?alt=media\&token=0e07adb5-653d-490c-8602-60aff86cce2d)
{% endtab %}
{% endtabs %}

```
exit
```

```
mn --link=tc,bw=10,delay='10ms',loss=0
```

```
xterm h1 h2 h1 h2
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXquTCfel_lDV2qcG5E%2F-MXsFINyiW8VJOUgTG1T%2Fimage.png?alt=media\&token=9ffe7b1f-2620-4cb1-b471-4f983838e12a)

{% tabs %}
{% tab title="h2 - 1" %}

```
iperf -c -i 1 -p 5555 | tee tcp
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXquTCfel_lDV2qcG5E%2F-MXsGPz7wFCU1BrmPgw2%2Fimage.png?alt=media\&token=f527ca89-6439-481e-a993-5f24e51ac879)
{% endtab %}

{% tab title="h1 - 1" %}

```
iperf -c 10.0.0.2 -t 100 -p 5555
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXquTCfel_lDV2qcG5E%2F-MXsGCNMOgWLm5cS5dH9%2Fimage.png?alt=media\&token=175b3d46-09e0-4432-bca2-0005b7eadee2)
{% endtab %}

{% tab title="h2 - 2" %}

```
iperf -c -i 1 -p 6666 -u | tee udp
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXquTCfel_lDV2qcG5E%2F-MXsFvETdLe6UFrhRKKZ%2Fimage.png?alt=media\&token=e6de884d-7561-4d34-a5f8-6862e66e08b7)
{% endtab %}

{% tab title="h1 - 2" %}

```
iperf -c 10.0.0.2 -p 6666 -u -b 3M -t 100
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXquTCfel_lDV2qcG5E%2F-MXsGIG2Ftc925r9b7Yc%2Fimage.png?alt=media\&token=24e4a57e-ed91-43f8-af27-fb868a57c7b8)
{% endtab %}
{% endtabs %}

```
exit
```

```
cat tcp | grep "sec" | head -n 100 | tr "-" " " | awk '{print $4,$8}' > mytcp
```

```
cat udp | grep "sec" | head -n 100 | tr "-" " " | awk '{print $4,$8}' > myudp
```

### Gnuplot

```
gnuplot
```

```
plot "mytcp" title "tcp_flow" with linespoints, "myudp" title "udp_flow" with linespoints
```

```
set xrange [0:100]
```

```
set xtics 0,10,100
```

```
set yrange [0:10]
```

```
set ytics 0,1,10
```

```
replot
```

```
set xlabel "time(sec)" 
```

```
set ylabel "throughput(Mbps)" 
```

```
replot
```

```
set title "tcp vs. udp"
```

```
replot
```

```
set terminal "gif"
```

```
set output "a.gif"
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXquTCfel_lDV2qcG5E%2F-MXsI5f-S0OCS9efFqlK%2Fimage.png?alt=media\&token=d383b8b0-5cb2-4827-814c-66ec9c7dbf60)

```
report
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXquTCfel_lDV2qcG5E%2F-MXsIV-H5XA8KI0Dvg_O%2Fimage.png?alt=media\&token=dda574d1-68c3-487d-b107-bc1373078c68)

### 使用腳本建立 Mininet

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsaXSQ3oKOrnMCGtpS%2Fimage.png?alt=media\&token=90f6cd62-14fa-4e34-a159-97ba4af37ff1)

> #### 建立腳本

```
gedit 1.py
```

{% hint style="info" %}
**1.py**

```
#!/usr/bin/env python
from mininet.cli import CLI
from mininet.net import Mininet
from mininet.link import Link,TCLink
 
if '__main__' == __name__:
  net = Mininet(link=TCLink)
  h1 = net.addHost('h1')
  h2 = net.addHost('h2')
  Link(h1, h2)
  net.build()
  CLI(net)
  net.stop()
```

{% endhint %}

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXquTCfel_lDV2qcG5E%2F-MXsJMFQjyIpBQxf16VS%2Fimage.png?alt=media\&token=e326e23d-c8ef-4e07-a51d-165f47b49538)

```
python 1.py
```

```
net
```

```
h1 ifconfig
```

```
h2 ifconfig
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsXF4xsnHKBNL-lZVB%2Fimage.png?alt=media\&token=e2615d94-780c-418a-b16c-2b5b1db61aeb)

```
h1 ping -c 3 h2
```

```
exit
```

```
cp 1.py 2.py
```

```
gedit 2.py
```

{% hint style="info" %}
**2.py**

```
#!/usr/bin/env python
from mininet.cli import CLI
from mininet.net import Mininet
from mininet.link import Link,TCLink
 
if '__main__' == __name__:
  net = Mininet(link=TCLink)
  h1 = net.addHost('h1')
  h2 = net.addHost('h2')
  r = net.addHost('r')
  Link(h1, r)
  Link(h2, r)
  net.build()
  CLI(net)
  net.stop()
```

{% endhint %}

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsk29uTSYy1VGMuynf%2Fimage.png?alt=media\&token=380a751e-1346-4ab5-b18d-30187594e1ed)

```
python 2.py
```

```
xterm h1 h2 r
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsZ67Mr__iP7qJ-2qq%2Fimage.png?alt=media\&token=af1190e2-5194-4f77-98f3-1f44b69c87dd)

{% tabs %}
{% tab title="h1" %}

```
ifconfig
```

```
ifconfig h1-eth0 0
```

```
ip addr add 192.168.1.1/24 brd + dev h1-eth0
```

```
ip ro sh
```

```
route -n
```

```
ip ro add default via 192.168.1.254
```

```
ip ro sh
```

```
route -n
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXslOwo58DvZfZpHx-n%2Fimage.png?alt=media\&token=a5d6e38d-94c9-47cc-a8b5-479a7d8c42d6)

```
ping 192.168.1.254
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsnun77nwMFlFxmWNz%2Fimage.png?alt=media\&token=41d406cb-a705-4c83-95d8-8e7466fb4b4a)

```
ping 192.168.1.1
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsomMyH2986UGXjNhv%2Fimage.png?alt=media\&token=14d01d11-e4a5-482f-b588-93de8fa105fa)

```
ping 192.168.2.254
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXspOnsrrZsx5Wdd071%2Fimage.png?alt=media\&token=ac3d4855-80cb-40cb-97d1-5183f4467e5f)

```
arp -n
```

```
ip ro sh
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsreLU3uAFxs0SAsmk%2Fimage.png?alt=media\&token=68b0a8a8-efd2-4b55-b84c-c407c96701aa)
{% endtab %}

{% tab title="h2" %}

```
ifconfig
```

```
ifconfig h2-eth0 0
```

```
ip addr add 192.168.2.1/24 brd + dev h2-eth0
```

```
ip ro sh
```

```
route -n
```

```
ip ro add default via 192.168.2.254
```

```
ip ro sh
```

```
route -n
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsmDXHp_r8-cdJxMBz%2Fimage.png?alt=media\&token=bf8e0dbe-9c1e-4bca-bb5f-981d70cc24fb)

```
ping 192.168.2.1
```

```
ping 192.168.1.254
```

```
ping 192.168.1.1
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsrss5d0i6uh7x-J7d%2Fimage.png?alt=media\&token=65f84e4e-e666-4a02-a819-e44cf5629e75)

```
ping 192.168.1.1
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsscRUILQrkb4nYZh3%2Fimage.png?alt=media\&token=f251d88a-d439-46b9-b312-bbbd74f708af)
{% endtab %}

{% tab title="r" %}

```
ifconfig
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsmYznAgFV4BU1saMj%2Fimage.png?alt=media\&token=fc70c970-b250-4362-8b92-f678536d2c55)

```
ifconfig r-eth0 0
```

```
ifconfig r-eth1 0
```

```
ip addr add 192.168.1.254 brd + dev r-eth0
```

```
ip addr add 192.168.2.254 brd + dev r-eth1
```

```
ifconfig
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXsnY33u1tDs9JBwLEY%2Fimage.png?alt=media\&token=833c66d4-4e2a-4c25-95ce-2476a1d7e3e9)

```
ip add sh
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXso7mwpSLXfGeynkOY%2Fimage.png?alt=media\&token=c012e29a-8022-4540-89df-6cd435b14c01)

```
ifconfig r-eth0 0
```

```
ifconfig r-eth1 0
```

```
ip addr add 192.168.1.254/24 brd + dev r-eth0
```

```
ip addr add 192.168.2.254/24 brd + dev r-eth1
```

```
ifconfig
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXspCxamav11C-nsOdK%2Fimage.png?alt=media\&token=13c8dc78-a7f6-415e-b56b-1e5920b648dc)

```
cat /proc/sys/net/ipv4/ip_forward
```

```
echo 1 > /proc/sys/net/ipv4/ip_forward
```

```
cat /proc/sys/net/ipv4/ip_forward
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXsUd8DqKANQpdnfrlo%2F-MXssSsydb7XLn6TTw8p%2Fimage.png?alt=media\&token=6c141318-e9d6-4374-90dc-31cd8def4efc)
{% endtab %}
{% endtabs %}

```
net
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXssfz6X8AZMGH2mxoZ%2F-MXsuFlB5gV2KxivPq7_%2Fimage.png?alt=media\&token=9e05c8a6-85fe-4bf0-a61b-86e5169403ed)

```
gedit 3.py
```

{% hint style="info" %}
**3.py**

```
#!/usr/bin/env python
from mininet.cli import CLI
from mininet.net import Mininet
from mininet.link import Link,TCLink
 
if '__main__' == __name__:
  net = Mininet(link=TCLink)
  h1 = net.addHost('h1')
  h2 = net.addHost('h2')
  r1 = net.addHost('r1')
  r2 = net.addHost('r2')
  Link(h1, r1)
  Link(h2, r2)
  Link(r1, r2)
  net.build()
  h1.cmd("ifconfig h1-eth0 0")
  h1.cmd("ip addr add 192.168.1.1/24 brd + dev h1-eth0")
  h1.cmd("ip route add default via 192.168.1.254")
  h2.cmd("ifconfig h2-eth0 0")
  h2.cmd("ip addr add 192.168.2.1/24 brd + dev h2-eth0")
  h2.cmd("ip route add default via 192.168.2.254")
  r1.cmd("ifconfig r1-eth0 0")
  r1.cmd("ifconfig r1-eth1 0")
  r1.cmd("ip addr add 192.168.1.254/24 brd + dev r1-eth0")
  r1.cmd("ip addr add 10.0.0.1/24 brd + dev r1-eth1")
  r1.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward")
  r1.cmd("ip route add 192.168.2.0/24 via 10.0.0.2")
  r2.cmd("ifconfig r2-eth0 0")
  r2.cmd("ifconfig r2-eth1 0")
  r2.cmd("ip addr add 192.168.2.254/24 brd + dev r2-eth0")
  r2.cmd("ip addr add 10.0.0.2/24 brd + dev r2-eth1")
  r2.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward")
  r2.cmd("ip route add 192.168.1.0/24 via 10.0.0.1")
  CLI(net)
  net.stop()
```

{% endhint %}

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MYE3fPyeK8RvRusf0cm%2F-MYE4Qzewaae3nNnrCZO%2Fimage.png?alt=media\&token=d7d8aa7b-fec9-4f9b-a8ed-71535c78a87e)

```
python 3.py
```

```
net
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MYE3fPyeK8RvRusf0cm%2F-MYE4rf_zr2lYEyy0VWr%2Fimage.png?alt=media\&token=2ed2cb2b-b953-44a1-949b-161738e69c05)

### 練習：安裝 P4

#### 生成 SSH ( GitHub 新增 )

```
apt-get install ssh
```

```
ls -al ~/.ssh
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWNz_ldGIKnzJ9iPpg8%2Fimage.png?alt=media\&token=f10fc49b-23a4-4e4a-9c9a-8a9e5943d10c)

```
ssh-keygen -t rsa -C "xiaoji850312@gmail.com"
```

```
ssh-add ~/.ssh/id_rsa
```

```
cat /root/.ssh/id_rsa.pub
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWNzKSflgsQwQR0TwzK%2Fimage.png?alt=media\&token=ca8b6d58-81e1-47e4-9c16-452b44c9c066)

```
apt install python3.8
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWNptFvLQmMz5TQSc33%2Fimage.png?alt=media\&token=9dcced5f-3b3a-4a14-bb05-d78bfe0fb15a)

```
apt install python3.8-distutils
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWNqcIAXVQ2LiMPohOs%2Fimage.png?alt=media\&token=359c5f88-3f99-45e7-9e59-e2c8ce11eb09)

```
wget https://bootstrap.pypa.io/get-pip.py
```

```
python3.8 get-pip.py.1
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWNrIYYahcuk-ZhT31o%2Fimage.png?alt=media\&token=2a40f79b-2525-4bea-9067-e99f5cedf1d5)

```
git clone git@github.com:p4lang/behavioral-model.git
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWNzre8FdUniN3QmES2%2Fimage.png?alt=media\&token=14cfd48a-2448-4c41-9aaa-82656f5de5e8)

```
cd behavioral-model
```

```
./install_deps.sh
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWO-49fcuvaNxDWVcLI%2Fimage.png?alt=media\&token=9572c346-1527-4719-873f-c2f07fcd71f8)

```
./autogen.sh
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWO0ybAG0XtEa0dzyPB%2Fimage.png?alt=media\&token=126820f7-2d48-41c2-9e85-a25b565ddf85)

```
./configure
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWO19nVzmMZgmbVctkr%2Fimage.png?alt=media\&token=bce6e685-5769-46ec-b448-f4641925ff52)

```
make
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWO1Lag9Q-KABakgPRy%2Fimage.png?alt=media\&token=988d11e0-a55b-493e-81a6-a9332b23b854)

```
make install
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MWNmzacSaWDwjzHlBN6%2F-MWO5x9VL5H37yHaVpUE%2Fimage.png?alt=media\&token=fd3b298d-a476-4ab7-9bb3-77e8d80a8fd8)

### 練習：安裝 Mininet-WiFi ( 失敗 )

```
cd ..
```

```
apt-get install git
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXssfz6X8AZMGH2mxoZ%2F-MXswPEXRpis819_a8_Q%2Fimage.png?alt=media\&token=254514e8-6c37-43d2-a708-bb9a785f8b16)

```
git clone https://github.com/intrig-unicamp/mininet-wifi
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXssfz6X8AZMGH2mxoZ%2F-MXswab35u1NjsjbNzOq%2Fimage.png?alt=media\&token=af05da44-5c27-4b39-8de7-5cdff7db9f49)

```
cd mininet-wifi
```

```
util/install.sh -Wlnfv
```

![](https://1624492921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MU7EdDCmxVnXY6VZf4s%2F-MXssfz6X8AZMGH2mxoZ%2F-MXswvGBWtOUCqPk6mdJ%2Fimage.png?alt=media\&token=6bb92ae3-656d-4324-9cc9-e9600a9bd41a)

```
mn --wifi
```
