面白いこと発見し隊

備忘録的な事やその他いろいろ

*

ルータ

ヤマハルータ『RTX1000』のCPU使用率が100%になる

2017/11/25

stux / Pixabay

某オンラインゲームのアップデートを実施した時に他の通信が全くできなくなるので調べてみたところ、いろいろ分かったので備忘録的に記載。

 

症状

某オンラインゲームソフトのバージョンアップを実施していると、ブラウザを含めインターネット向けの通信ができなくなる。(LAN内のPC同士、NASにはアクセス問題なし)

で、『RTX1000』にブラウザからアクセスしてみたところ…

このようにメモリ使用率はそれほどでもないのに、CPU使用率が100%近辺まで上がり張り付いていた。(もちろんブラウザから『RTX1000』にアクセスするのも不安定でよくエラーになる)

 

『RTX1000』のセッション数制限が原因?

そんなわけでネットで何かしら『RTX1000』でこういった不具合が発生していないか、調べたところドンピシャのモノがあった。

 

Yamahaのルータは非常に高性能なのですが弱点があります。
セッション数が上限に近づくと激しく不安定になります。

RTX1000/RTX1100の場合は4096が上限です。
RTX1200の場合は20000になりました。

RTX1200の場合は問題が起こりにくいのですが、RTX1000/RTX1100だとP2Pを利用する
端末が存在すると一気に不安定になります。
特にTorrent系は、大量のセッションを瞬時に利用するので相性が最悪です。

CPU負荷が10分おきに100%となり通信不可、PPPoEが切断される等の障害が発生したこともあります。

(かぼちゃ日記「YAMAHA RTX1100 とセッション数制限」 より)

これである。

どうもそのオンラインゲームソフトは昔バージョンアップの仕方をTorrent系でするか選べたようだったのが、選択が無くなりTorrent系一択のバージョンアップに改悪されてしまったことが分かった。

通常のブラウザやアプリケーションでの通信では足りていたセッション数が、Torrent系の「データがありそうなホストにやたらセッション繋ぎに行ってデータを落としてくる」動作の為にセッション張りまくり状態になり、NATディスクリプタテーブルが溢れて動作不安定になる…っていう認識でいいのかな?あんまりわからないけど…^^;

 

こちらも参考にしました。

NATを使用している環境に対するTCP SYN flooding攻撃が行われた際に、RTX1000/1100のNATディスクリプタテーブルが溢れ、CPU負荷の急上昇と、これに伴うルータの応答不能が発生する。
これはRTX1000/1100共にNATディスクリプタテーブルは4096レコードしかなく、値を増やす事もできない仕様に起因するが、仮にレコード数が多くてもそれを上回る飽和攻撃をされた場合には同じ事象が発生することとなる。

また、RTX1000/1100の仕様として、NATディスクリプタテーブルはIPフィルタの外側に位置しているため、IPフィルタにて特定の接続元を排除しても解消することができない。

Online External Strage「RTX1000/1100 運用Tips」より)

 

なぬ?
どうやら調べてみると、RTX1000はポート範囲は 4096 しか使えないようです。
RTX1500や1100も同様でした。
RTX1200はポート範囲20000までいけるようです。(仕様のNATセッション数)

3流プログラマのメモ書き「RTX1000でNATテーブルが溢れた」より)

 

マジか~セッション数4096までとか…orz

でも、そもそも『RTX1000』自体がSOHOでインターネットVPNとか使って業務的な通信するようなものだし、多数のPCとセッション繋ぎまくってなにがしする…みたいな使い道を想定されて作られてないだろうから、しょうがないと言えばしょうがないのかな?^^;

 

問題の状況で「show nat descriptor address」実行してみる

ここではないかという目星がついたところで、試しに検証も兼ねて実際問題のオンラインゲームソフトをアップデートして、100%張り付いた時に「show nat descriptor address」を実行してみたわけですが…

あれ929個しか使用してない?なんでだろ?4096個使用しなくてもCPU100%張り付きで不安定になるってこと…?

うーん、わからない…(?_?)

 

と思っていたら、こんなページが。

後は、NATテーブルがあふれる症状。 デフォルトでマスカレードのTTLが900秒もあるので、Linuxとかのイメージを落とすときにtorrentを立ち上げたりすると、NATデーブルがぐっちゃぐちゃになって落ちる(RTX1000では、NATテーブルは1000件しか保持できないので、FINパケットをしっかりと送ってくれないホストと通信していると結構簡単に溢れる)

お名前.com、さくらのVPS等のサーバーでの開発・設定メモ「RTX1000設定 – sshが切れる/NATテーブル溢れ」より)

えー『RTX1000』だとNATテーブルは1000件しか保持できない…だとぉぉぉぉぉーーー!

 

範囲は4096保持は1000くらいってこと?…

もうね…悲しくなってきた。

 

 

解決策

ま、何個か小手先で何とかできないか試したんですが、結局のところ決定的な解決策は

「RTX1000」を退役させて新しいルータを買う!

これに尽きるわけで…

それはそれで置いておいて、試したことと備忘録的に記載。

 

NATディスクリプタテーブルの保持期間を短くする方法

これは先ほどのページの下の方に書いてあった

RTX1000では対策1の機能が搭載されていないため、NATディスクリプタテーブルの保持期間を短くする方法で対処する。
初期値では900秒(15分)となっているため、この時間を以下のコマンドで短く設定する。

  • 例(600秒に変更する場合)

Online External Strage「RTX1000/1100 運用Tips」より)

や、

どうやら、NATテーブルで保持してるセッション情報の保持期間を短くしてやるといいようです。
デフォルトは全プロトコルで15分間(900秒)IPマスカレードのセッション情報を保持しているようです。

この保持期間を変更するには、nat descriptor timerコマンドを使うようです。

3流プログラマのメモ書き「RTX1000でNATテーブルが溢れた」より)

を参考に「nat descriptor timer」でセッションの保持期間を短くしてやろうとしました。

 

尚、『RTX1000』ですと、このコマンドで設定できる数値はこんな感じで、保持期間の秒数は30~21474836秒までみたいです。(上限どんだけだよw)

というわけで、すべてのセッションの保持期間を最低値の30秒に下げたところ、某オンラインゲームのアップロードによる負荷は和らいで常時CPU使用率70%ぐらいをウロウロするぐらいにはなり、ブラウザの通信も安定…一見すると問題解決か!?…と思ったのですが…

 

ニコ生を見ていると「コメントサーバーとのセッションが切れました」が頻発するようになる…

セッションの保持期間をデフォルトに戻すとニコ生問題なし…
…原因これだわ………orz

 

ということで、解決には至らず。

 

 

プロトコル・ポートオプションを設定してみる方法(仮運用)

先に参考にあげたサイトの方も設定していたので、私も試してみたのですが…

nat descriptor timer ディスクリプタ番号 秒数

この設定を使ってnat descriptor timer 1 300とバッサリ短縮してやったが、torrentの接続試行数が多く、まだ重めなので、プロトコル・ポートオプションを指定して、nat descriptor timer 1 protocol=tcp port=10080 60の設定を入れて、torrentの受け入れポートTCP:10080のTTLを60秒に切り詰めたらCPU負荷50%程度で落ち着くようになった。

お名前.com、さくらのVPS等のサーバーでの開発・設定メモ「RTX1000設定 – sshが切れる/NATテーブル溢れ」より)

「nat descriptor timer 1 protocol=tcp port=10080 60」をそのまま打ち込んでみるも、ゲームアップデートすると100%張り付き発生

やっぱり某オンラインゲームのアップデートに使っているTorrentのポートを検出して、どのポートか調べないとダメっすよね…そりゃ…

 

そんなわけで『TCP Monitor Plus』で調べてみました。

結果TCP80番ポート6900番~6907番台の複数のポートがゲームアップデートで使ってるみたいだけど…これはどう設定すれば…

 

なんかこれでいけた!

ただ…ゲームソフトのアップデートを実行するとCPUが100%に張り付く…

 

ので、ゲームソフトのアップデートの「最大ダウンロード速度」が「無制限」だったものを、「64KB/秒」に絞ったところ…

 

CPU使用率が70%あたりで安定した!

 

もちろんこの状態でストリーミング配信を見たり、Webの表示などもエラー・遅延なく普通に見れます。

 

試しにアップデート中に「show nat descriptor address」を実行しましたが、509個なんで半分ぐらいの使用率で安定。

 

これでちょっと『RTX1000』を騙し騙し使えるかもしれません。^^

 

後は、他の通信(特にニコ生コメントサーバなど)が切断されないかの確認して問題なければ、これでしばらく運用してみようかな。

 

まとめ

まさか『RTX1000』がそんな貧弱仕様だとは思わなかったので、原因追及する気も起きずにほったらかしだったのですが、調べてよかったです。

ほぼ宝の持ち腐れ状態だった『RTX1000』のコマンドによる設定もいろいろわかって非常に有意義でした。

 

 

・Amazon

ヤマハ RTX830 ギガアクセスVPNルーター

新品価格
¥53,115から
(2017/11/20 時点)

 ・楽天

ヤマハ ギガアクセスVPNルーター RTX830 目安在庫=○

価格:52,699円
(2017/11/20 時点)
感想(0件)

スポンサーリンク

-ルータ
-, , , ,