Improve My Home Network (particularly Gaming Environment)
目次
更新履歴
ギガにした
マンションタイプのインターネットが巣ごもり需要が増えたからなのかスピードがかなり落ちたと思う。
昨年からテレワークなども増えてきたので家で仕事したりすることが多くなってきたのだが尋常じゃなく遅くなるため、光ケーブルを引き込んでギガのプランに変更した。
1Gbps(≒GigabitEthernet)という魅惑の言葉。
もうワクワクが押し寄せてくる。
すごい改善された、、、、が
実際に切り替えてみたのだが、驚いたのがレンタルルータにSFPポートがあって、ちゃんとトランシーバで接続されていること。
こんな時代になったのか。
で、体感でとんでもない実感できる結果になった。
今まで悪い時で下り10Mbpsぐらいまで落ち込むときがあったが、今測ると平均100Mbpsで最高で330Mbpsぐらい出ているときがある。
目覚ましい改善ぶり。数日間は充実した時間を過ごしていた。
と、ここまではよかったのだが、Every time it comes to me suddenly.
その時は突然来たのであった。

スプラでエラーが発生しまくる
回線だけ変更しただけなのに、なぜかスプラでエラーが出まくることに。
しかもFPS/TPSでは致命的な試合中に複数回にわたり数秒止まる状態に。
ガチマでは味方に迷惑がかかるのでこれはいかんと思い原因を調べる。
まず、何がいけないのかわからないのである程度あたりをつける
- プロバイダ
- レンタルルータ
- スイッチングハブ
- ケーブル
- 内向きDNSサーバ
ここらへんか。で、1つずつ調べてみる。

プロバイダ
プランは変更したが、接続設定は一切変更していない。でも経路は変わったので、サーバとの距離が変わったのか。
いやスプラって相手のスイッチと直接通信を行うはずなので、切替前後の条件は大して変わらないはず。
でも、念の為、LAN内のサーバとルータ、外部DNSに対して生死監視をしてみる。
前回の記事でPing監視の仕組みを紹介したのは、まさにこの件の調査のため。
で、ラズパイに設置して数日経ったのだが、わかったことがあった。
レンタルルータ
生死監視の結果、満遍なく監視対象に対するPingを落とすときがある。なんと。
このレンタルルータが一番怪しい。やはり前後で変わっているところはこの機器なので。
ルータの性能のせいでゲームに影響が出ている可能性があるな。

スイッチングハブ
次にスイッチングハブに挿していたラズパイをルータに直接挿して監視してみてもあまり変わらない。んー。
家のスイッチングハブを全部取り替えてみる。それでも改善されず。
もともとギガビット対応スイッチで古かったので刷新したので、よかったけど。
予期せぬタイミングでの結構な出費。くそ。
ケーブル
これは一番やりたくない。いや、そもそも家の環境はCAT5eケーブルでギガ対応している。
ルータ交換と同じタイミングで断線するなんてことは考えにくいが、一応機器に挿さっている既存ケーブルを入れ替えみたけど改善はされず。
そりゃそうだ。

内向きDNSサーバ
家の中にいるDNSサーバの応答性能かと思った。
ただ名前解決をゲーム中に頻繁にやるかと言われると絶対にそんな変な仕組みにはしないだろうしな。
でも仕組みがわからないので、まず調査からしてみる。
ゲーム中の通信を見る
家のサーバにSquidを立てて、最低限の設定を施す。
あとパケットキャプチャしながらいつ名前解決しているか確認してみる。
$ sudo apt-get update
$ sudo apt-get install squid
$ sudo vi /etc/squid/squid.conf
ごにょごにょ...
$ sudo systemctl enable squid
$ sudo systemctl stop squid
$ sudo systemctl start squid
$ sudo tcpdump -i eth0 udp dst port 53 and src host 192.168.0.xxx
IPアドレスの部分はNintendo SwitchのIPアドレス。
で、Nintendo Switchのプロキシ設定をしてサーモンランをプレイしてみる。
そしたら、やはりNintendoのサーバにアクセスしているのも、名前解決を試みるのもバイト前だけで、バイト中は一切していないようだ。
てことは家のサーバは関係なさそうだ。
調査結果
やはりレンタルルータが怪しい。というのは、消去法でしかないのだが、他は疑わしくないのでなのでお前だろと。
ではどうするか。

別経路を作ることに
結論。このレンタルルータを経由しないで別ルートを作ることにした。
ルータだけ変更するだけでもよいのかもしれないのだが、まずSFPポートが付いているルータが手元にないのと、ひかり電話に入っているのでその対応ルータも持っていないので、このレンタルルータを最大限活かしながら考えたい。
また、単純にプロバイダを変えるのも、今の固定IPアドレスプランも変更することになり、そうなるとパブリックDNSのエントリーも変更する必要もあるので影響を与えず済ませたい。
ただギガのプランにしている以上、このSFPモジュールを使わなくてはいけない。
そこで家に余っているCiscoのSmall BusinessのL2スイッチSG200を使ってみることした。
このスイッチしかSFPポート付いているのがなかったから。
あとでもっと電気代節約できるの買ってこようかな。
早速作ってみる。
構成
graph TD
ISP1([ISP1])
ISP2([ISP2])
A[/Optical Plug/]
B[/Gigabit Switch w/ SFP/]
C((Router1 for ISP1))
D((Router2 for ISP2))
HUB[Switching Hub]
E[Nintendo Switch]
F[PC]
G[Smartphone]
H[Google Chromecast]
I[Raspberry Pi]
ISP1-...-A
ISP2-...-A
A---B
B---C
B---D
C---HUB
D---HUB
HUB---E
HUB---F
HUB---G
HUB---H
HUB---I
fig.1
こんな感じだろうか。
肝はレンタルルータに挿してあるSFPモジュールをL2スイッチに挿し直して、ルータ2台構えでその回線を共有するってだけ。
構築準備
さて、ルータもう1台と新しいプロバイダを選ぶことにする。
で、新しく使う経路をゲーム専用にするために、Raspberry PiにてDHCPサーバを起動させているので、MACアドレスごとにDefault Gatewayを変更させてあげれば経路の制御はできる。
ルータ
以前からWiFiアクセスポイントとして使っていたTP-Link AX73をルータモードに変更して使うことにした。
あとは別になんも特別なことはしない。
NATルータとして動いてくれればそれでよし。
プロバイダ
FPSゲームに使うプロバイダはPing値も気にしなくてはいけないんだろうけど、今のところAX73であれば処理能力もそれなりにありそうだから、安いプロバイダで様子を見ようと思う。
てことで、BBエキサイトにしてみた。

あ、間違った。

構築
更新した
graph TD
ISP1([ISP1])
ISP2([ISP2])
A[/Optical Plug/]
B[/Gigabit Switch w/ SFP/]
C((Router1 for ISP1))
D((Router2 for ISP2))
HUB[Switching Hub]
E[Nintendo Switch]
F[PC]
G[Smartphone]
H[Google Chromecast]
I[Raspberry Pi]
ISP1-...-A
ISP2-...-A
A---C
C---D
C---HUB
D---HUB
HUB---E
HUB---F
HUB---G
HUB---H
HUB---I
fig.2
Router1: asahi-net
Router2: bbexcite
ひかり電話が繋がらなくなったのでこういう構成にしたところ、Router2がRouter1の多段接続であっても問題なくいけた。
Router1のpppoeブリッジ機能は有効にしている。
さらに更新
結局最初の構成に戻した。
graph TD
ISP1([ISP1])
ISP2([ISP2])
A[/Optical Plug/]
B[/Gigabit Switch w/ SFP/]
C((Router1))
D((Wifi Bridge ex.Router2))
HUB[Switching Hub]
E[Nintendo Switch]
F[PC]
G[Smartphone]
H[Google Chromecast]
I[Raspberry Pi]
ISP1-...-A
ISP2-...-A
A---C
C---HUB
HUB---D
HUB---E
HUB---F
HUB---G
HUB---H
HUB---I
fig.3
Router1: asahi-net, bbexcite
Router2: WiFi Bridge
突然通信が不安定になる事象が発生。
pppoeブリッジのための接続がおかしいのか、どちらの経路もインターネットに繋がらなくなるときがあったため、結局レンタルルータにpppoeを2セッション張らせて運用してみたところ、現時点では問題ない。
結果fig.3の構成になっている。
だが、ASAHIネット経由でのPingは相変わらずパケットを落とす。
そしてBBエキサイトのスループットが異常に悪い。
でもスプラトゥーンは快適にプレイできる不思議。。。なんだかな。。。
作業
※現在はもとに戻している
といっても、大したことはしていない。
上の図の通りに構築した。
SG200は完全にデフォルト。
Default VLANのままで使っている。
レンタルルータからSFPモジュールを抜く。
抜くときはFCケーブル抜いてから、モジュールの青い爪カギを起こす。
これで引き抜けるのだが、青い爪を持って引くと壊れそうなので、本体側を持つ。
引き抜くときも若干上下にずらしながら抜くとよいかも。
抜けたら、今度はSG200のG26に挿す。
あとはDHCPサーバの設定ぐらいか。
家のIPアドレスは一部を除きDHCPでのリースなので、そこでNintendo SwitchのMACアドレスには特別に以下の設定を配信する。
# /etc/dhcp/dhcpd.conf
host switch01 {
hardware ethernet FF:FF:FF:FF:FF:FF;
fixed-address 192.168.0.NNN;
option routers 192.168.0.DDD;
option domain-name-servers ........;
}
hardware ethernetはSwitchのMACアドレス。
fixed-addressはスイッチに割り当てたいIPアドレス。
option routersが今回新しく追加AX73のLAN側のIPアドレス。
$ sudo systemctl restart isc-dhcp-server
$
再起動完了。
テスト
で、早速Nintento Switchの設定画面を開いて、インターネットのところから有線接続を再接続してみる。
なんかうまく行かない。
再起動する。
再接続したらうまくいった。
接続テストしてみる、、、遅い。
従来のプロバイダ+ルータの方が2倍近くスループットが出ている。
うーん、、、、、時間帯かな??
いや、今大事なのはこれではない。
早速スプラを起動してサモランを始めてみる。
尋常じゃなく改善された。
1日のうち朝夕や深夜帯、休日の日中帯といろんなところでプレイしてみたけど、全く出なくなった。
結果
ゲーム環境のためだけに、こんなの用意してどうなの。
これで結果うまく行っているけど、これで駄目だったらどうしたらよかったんだろう、、、、。
これ以上は何も起きないでほしいなぁ。
