久しぶりにGNS3（その39：帯域制御とPAgP）

# 帯域制御
GNS3アプライアンスに、[NETem](https://www.gns3.com/marketplace/appliances/netem)という帯域制御や遅延を実現できるネットワークブリッジがある。これを使って、帯域制御を行なってみる。内容的には、前回の「[久しぶりにGNS3（その38：PAgPとiperf　期待どおりにならず）](https://qiita.com/infinite1oop/items/a440f5a9c8254d875870)」の続きであり、iperfを用いて確認する。なお、クライアントも前回同様、GNS3アプライアンスにある、[ipterm](https://www.gns3.com/marketplace/appliances/ipterm)を用いる。

## 単純な構成
まずは、下記ネットワークで単純な帯域制御を行う。

![Bridge直結.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/e8cb510e-9b1a-5c48-6cb4-68652fedeb91.png)

中央にあるNETemがネットワークブリッジ。GNS3にて起動後、Consoleをクリックすると、下記が表示される。

![BeforeConfiguration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/fa56f257-921d-7c1b-efd4-86d696ff364f.png)

ここで、Enterを入力し、下記画面で、50Mbpsを指定する。

![５０M.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/40b9a5b2-96bb-7c73-3059-a3a3e025ba47.png)

OKにより戻ると、下記画面となる。

![AfternConfiguration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/0c706fdd-11fb-6666-469c-60a6c67aae49.png)

この状態でiperfを実施（左側PCがClient、右側PCがServer）した結果が下記となる。

```
root@ipterm-a1:~# iperf3 -c 10.1.1.2 -u -b 100m -t 100

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-100.00 sec  1.16 GBytes   100 Mbits/sec  0.000 ms  0/863253 (0%)  sender
[  5]   0.00-100.25 sec   573 MBytes  48.0 Mbits/sec  0.399 ms  448194/863248 (52%)  receiver
```

Server側の結果が48Mbps、ほぼ50Mbpsとなっている。

## PAgPと組み合わせ
下記ネットワークで検証。

![1-NeTem&1-NoNeTEM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/fe9e2692-83f0-22ee-7c3c-5114ecc2c783.png)

PAgPの設定内容は、[前回](https://qiita.com/infinite1oop/items/a440f5a9c8254d875870)と同じである。左の2台のPCからiperfを実行する。

### 帯域制御なし
上図の上側の結果。

```
root@ipterm-1:~# iperf3 -c 10.1.1.2 -u -b 100m -t 100

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-100.00 sec  1.16 GBytes   100 Mbits/sec  0.000 ms  0/863252 (0%)  sender
[  5]   0.00-100.05 sec  1.02 GBytes  87.3 Mbits/sec  0.164 ms  109637/863252 (13%)  receiver
```

下側の結果。

```
root@ipterm-3:~# iperf3 -c 10.1.1.4 -u -b 100m -t 100

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-100.00 sec  1.16 GBytes   100 Mbits/sec  0.000 ms  0/863256 (0%)  sender
[  5]   0.00-100.01 sec  1003 MBytes  84.2 Mbits/sec  0.098 ms  136753/863253 (16%)  receiver
```

100Mbps指定に対して、84-87Mbpsの実効値が出ている。

### 帯域制御あり（50Mbps）
先ほどと同じく、上側にて、NETemで50Mbpsの帯域制御を行う。

```
root@ipterm-1:~# iperf3 -c 10.1.1.2 -u -b 100m -t 100

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-100.00 sec  1.16 GBytes   100 Mbits/sec  0.000 ms  0/863252 (0%)  sender
[  5]   0.00-100.21 sec   550 MBytes  46.0 Mbits/sec  0.308 ms  465107/863188 (54%)  receiver
```

下側の結果。

```
root@ipterm-3:~# iperf3 -c 10.1.1.4 -u -b 100m -t 100

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-100.00 sec  1.16 GBytes   100 Mbits/sec  0.000 ms  0/863254 (0%)  sender
[  5]   0.00-100.01 sec   994 MBytes  83.4 Mbits/sec  0.034 ms  143239/863254 (17%)  receiver
```

ネットワークブリッジNETemを経由した上側のPC（ipterm-1）の結果は46Mbpsとなり、指定された50Mbpsに近い値である。それを経由しない下側のPC（ipterm-2）の結果は先ほどと同じような値（83Mbps）となっている。

PAgPを用いても、あまり意味がなかった。

## 終わりに（おまけ）
Aggregationの標準方式としてLACPもあるが、LACPはネットワークブリッジ（ここではNETem）を通過できないようだ。下記が見つかる。
- [Linux BridgeはLACPを通さない、](https://x.com/yutannihilation/status/797718344098942976)
- [https://bugzilla.kernel.org/show_bug.cgi?id=202663](https://bugzilla.kernel.org/show_bug.cgi?id=202663)