OpenWrt チューニング ベンチマーク

# はじめに
::: note
### 初心者対応構成
- スクリプトでの自動設定
- UCIとLuCi及びWinSCPにて比較しながら作業がおススメ
:::

::: note
### [PowerShell](https://learn.microsoft.com/ja-jp/powershell/scripting/what-is-windows-powershell?view=powershell-7.4)で[SSHアクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)

- [PowerShellの開始](https://learn.microsoft.com/ja-jp/powershell/scripting/windows-powershell/starting-windows-powershell?view=powershell-7.4) (キー入力)：`Win`+`x` > `a` > `はい`
※Windows7以降標準搭載

```sh
ssh root@192.168.1.1
```

<details><summary>ssh root@192.168.1.1のショートカット作成（デスクトップ）</summary>

```powershell:powershell
$DESKTOP = ([Environment]::GetFolderPath("Desktop") + "\192.168.1.1.lnk")
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$DESKTOP")
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$Shortcut.Arguments = '-windowstyle hidden -ExecutionPolicy RemoteSigned "Start-Process ssh root@192.168.1.1"'
$Shortcut.IconLocation = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe,0"
$Shortcut.WorkingDirectory = "."
$Shortcut.Save()

```

- `強制的に貼り付け`
- `yes`

---

</details>

<details><summary>SSHログイン出来ない場合:exclamation:</summary>

known_hostsクリア
- `C:\Users\yourusername\.ssh\known_hosts` ※Windows隠しファイル
```powershell:powershell
Clear-Content .ssh\known_hosts -Force

```
---
OpenSSHのインストール
※Windows 10 Fall Creators Update(1709)以降標準搭載
- 機能の確認
```powershell:powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

```
- 機能のインストール
```powershell:powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

```
---

</details>

:::

### ベンチマーク

::: note
#### [SQMチューニング](https://openwrt.org/docs/guide-user/network/traffic-shaping/sqm-details#sqmbasic_settings_tab)
参考値
- 回線環境：OCNバーチャルコネクト1G
- デバイス：WXR-5950AX12

設定値
```bash
DOWNLOAD='870400' #参考値
UPLOAD='665600' #参考値
```
設定
```bash
opkg update
opkg install luci-app-sqm
opkg install luci-i18n-sqm-ja
. /lib/functions/network.sh
network_flush_cache
network_find_wan6 NET_IF6
network_get_physdev NET_L2D6 "${NET_IF6}"
uci set sqm.@queue[0].enabled='1'
uci set sqm.@queue[0].interface=${NET_L2D6}
uci set sqm.@queue[0].download=${DOWNLOAD}
uci set sqm.@queue[0].upload=${UPLOAD}
uci commit sqm
/etc/init.d/sqm start
/etc/init.d/sqm enable
# reboot

```
###### チューニング方法
※有線かつSQMオフ推奨
- 無設定状態で最速安定するサイトでの最高速を基準に調整
- アップロードとダウンロードの差を見ながら調整

###### 参考サイト
- [Speed Test / Cloudflare](https://speed.cloudflare.com/)
- [MLABO / Google](https://speed.measurementlab.net/)
- [FAST / Netflix](https://fast.com/ja/)
- [SPEED TEST Powered by RBB SPEED TEST](http://www.speed-visualizer.jp/)
- [ブロードバンドスピードテスト](https://www.bspeedtest.jp/) 
- [みんなのネット回線速度](https://minsoku.net/)
- [Use Speedtest](https://www.speedtest.net/ja)
- [インターネットスピードテスト](https://www.nperf.com/ja/)
- [SPEEDCHECK](https://www.speedcheck.org/ja/)
- [Radish Network Speed Testing](http://netspeed.studio-radish.com/index.html)

参考結果
- Speed Test / Cloudflare
![Cloudflare.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/6ba11655-d46c-882c-0203-3a8461d1dd3e.png)

- MLABO / Google
![google.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/67352032-86f2-0113-efa2-103d5e6bb321.png)


- ブロードバンドスピードテスト
![スピードテスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/76a2b6c8-ebb4-211a-9d7e-fc7488759f46.png)


おまけ(Windows用)
- [SG TCP/IP Analyzer](https://www.speedguide.net/analyzer.php)
  - [SG TCP オプティマイザー](https://www.speedguide.net/downloads.php)
    - [SG TCP Optimizer 日本語化パッチファイル](https://donkichirou.okoshi-yasu.net/download/TCPOptimizer.html)

:::
::: note
### [IPERF3](https://openwrt.org/docs/guide-user/perf_and_log/benchmark.nat)
ネットワークベンチマーク

- デバイスの設定(サーバー)
  - [iperf3](https://github.com/site-u2023/iperf/blob/main/iperf3) 

※アクセスポイント未対応
```sh:SSH
opkg update
opkg install iperf3
# iperf3
wget --no-check-certificate -O /etc/init.d/iperf3 https://raw.githubusercontent.com/site-u2023/iperf/main/iperf3
chmod +x /etc/init.d/iperf3
NET_IF="lan"
. /lib/functions/network.sh
network_flush_cache
network_get_ipaddr NET_ADDR "${NET_IF}"
sed -i -e "s/192.168.1.1/${NET_ADDR}/g" /etc/init.d/iperf3
# /etc/init.d/iperf3 enable

```
- デバイスのサーバーモード開始

```sh:SSH
/etc/init.d/iperf3 start

```
- Windowsの設定(クライアント)

  - 以下のサイトからWindows 64 bits [iPerf](https://iperf.fr/download/windows/iperf-3.1.3-win64.zip)をダウンロード
  [iperf3](https://iperf.fr/iperf-download.php#windows)
  - ファイルを解凍し`iperf3.exe`と`cygwin1.dll`を以下のディレクトリにインストール
　　`C:\Windows\System32`

- Windows powershellを起動
  - powershell > Win+x > a > はい


- 計測
  - [ユーザー ドキュメント](https://iperf.fr/iperf-doc.php)

```powershell:powershell@TCP(8コネクション)
iperf3 -c 192.168.1.1 -t 30 -P 8

```

```powershell:powershell@udp(2000M)
iperf3 -c 192.168.1.1 -t 30 -u -b 2.4G

```
- Windowsのクライアントモード終了
  - powershellに以下を入力
```powershell:powershell
exit

```
- デバイスのサーバーモード終了
```sh:SSH
/etc/init.d/iperf3 stop

```
参考結果
デバイス：[Velop WRT Pro 7 OpenWrt](https://qiita.com/site_u/items/aa619d4330a4f206d16b)
クライアント：[Wi-Fi7 be200](https://www.intel.co.jp/content/www/jp/ja/products/sku/230078/intel-wifi-7-be200/specifications.html)

`iperf3 -c 192.168.1.1 -t 30 -P 8`
[ ID] Interval           Transfer     Bandwidth
[SUM]   0.00-30.01  sec  4.98 GBytes  1.43 Gbits/sec                  sender
[SUM]   0.00-30.01  sec  4.98 GBytes  1.43 Gbits/sec                  receiver

`iperf3 -c 192.168.1.1 -t 30 -u -b 2.4G`
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-30.00  sec  4.21 GBytes  1.20 Gbits/sec  0.089 ms  3699/551556 (0.67%)
[  4] Sent 551556 datagrams

デバイス：[WXR-5950AX12 / WiFi@HE160](https://qiita.com/site_u/items/1197d2b7888dc4cf322c)
クライアント：[Wi-Fi6E AX210](https://ark.intel.com/content/www/jp/ja/ark/products/204836/intel-wifi-6e-ax210-gig.html)

`iperf3 -c 192.168.1.1 -t 30 -P 8`
[ ID] Interval           Transfer     Bandwidth
[SUM]   0.00-30.00  sec  5.85 GBytes  1.68 Gbits/sec                  sender
[SUM]   0.00-30.00  sec  5.85 GBytes  1.68 Gbits/sec                  receiver

`iperf3 -c 192.168.1.1 -t 30 -u -b 2.4G`
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-30.00  sec  4.49 GBytes  1.29 Gbits/sec  0.072 ms  2792/588949 (0.47%)
[  4] Sent 588949 datagrams

デバイス：[BPI-R3 / WiFi@HE160](https://qiita.com/site_u/items/4c3363f7c1ce2b7b3bfa)
クライアント：[Wi-Fi7 be200](https://www.intel.co.jp/content/www/jp/ja/products/sku/230078/intel-wifi-7-be200/specifications.html)
`iperf3 -c 192.168.1.1 -t 30 -P 8`
[ ID] Interval           Transfer     Bandwidth
[SUM]   0.00-30.00  sec  4.91 GBytes  1.41 Gbits/sec                  sender
[SUM]   0.00-30.00  sec  4.91 GBytes  1.41 Gbits/sec                  receiver

`iperf3 -c 192.168.1.1 -t 30 -u -b 2.4G`
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-30.00  sec  5.30 GBytes  1.52 Gbits/sec  0.039 ms  9186/695244 (1.3%)
[  4] Sent 695244 datagrams
:::

::: note
### [HDPARM](https://openwrt.org/docs/guide-user/perf_and_log/benchmark.usb)
```bash
opkg update
opkg install hdparm

```

```bash
hdparm -Tt /dev/sda1

```
参考結果
デバイス：WXR-5950AX12 
- USB：[SSD-PUT250U3-BKC](https://www.buffalo.jp/product/detail/ssd-put250u3-bkc.html) / ext4
  Timing cached reads:   1726 MB in  2.00 seconds = 862.41 MB/sec
  Timing buffered disk reads: 804 MB in  3.00 seconds = 267.98 MB/sec

- USB：[MF-DAU3064GBK](https://www.elecom.co.jp/products/MF-DAU3064GBK.html) / f2fs
  Timing cached reads:   1696 MB in  2.00 seconds = 848.15 MB/sec
  Timing buffered disk reads: 544 MB in  3.01 seconds = 180.79 MB/sec

:::

::: note
### BONNIEXX

```ruby
opkg update
opkg install bonniexx

```
```ruby
mkdir -p /mnt/benchmark
# ****にファイルタイプを入力
mount -O rw,noatime -t **** /dev/sda1 /mnt/benchmark
bonnie++ -d /mnt/benchmark -s 64 -r 32 -u 0 -f -b

```
:::

:::note
### [カスタムDNS](https://openwrt.org/docs/guide-user/base-system/dhcp_configuration#providing_custom_dns_with_dhcp)
- [129.250.35.250/251はNTTのお客様向けのキャッシュDNSサーバでありPublic DNSではありません](https://www.google.com/search?q=129.250.35.250%E3%81%A8%E3%81%AF)
```ruby
# delete
uci -q delete dhcp.lan.dhcp_option
uci -q delete dhcp.lan.dns
# IPV4
uci add_list dhcp.lan.dhcp_option="6,1.1.1.1,8.8.8.8,129.250.35.250"
uci add_list dhcp.lan.dhcp_option="6,1.0.0.1,8.8.4.4,129.250.35.251"
# IPV6
uci add_list dhcp.lan.dns="2606:4700:4700::1111"
uci add_list dhcp.lan.dns="2001:4860:4860::8888"
uci add_list dhcp.lan.dns="2001:418:3ff::53"
uci add_list dhcp.lan.dns="2606:4700:4700::1001"
uci add_list dhcp.lan.dns="2001:4860:4860::8844"
uci add_list dhcp.lan.dns="2001:418:3ff::1:53"
uci commit dhcp
/etc/init.d/dnsmasq restart

```
:::

# あとがき

# 参考サイト(感謝:relaxed:)
- [OpenWrtで サービスを作成する( iperf3 の例)](https://takuya-1st.hatenablog.jp/entry/2022/02/19/181733)