「LAN 側 Pause 機能」とは（ルーターのネットワーク設定）

## TL; DR

### 「Pause 機能」とは

> 「Pause 機能」とは、受信側が送信相手に「データ送信の一時停止」をお願いする `pause` 信号を送信・受信する機能のこと。

つまり、受信バッファがオーバーフローしそうな場合、データを送ってくる相手（端末）にデータを送ってくるのを一時的に停止してもらうための信号です。

- 英語で「`Ethernet Flow Control`」
- [IEEE 802.3](https://en.wikipedia.org/wiki/IEEE_802.3) の標準規格
  - 規格番号：[IEEE802.3x](https://en.wikipedia.org/wiki/Ethernet_flow_control)
- 一時停止信号を「Pause フレーム」という
- 家庭用ルーターでは **Pause フレームはルーター越えしない**

### 「LAN 側 Pause 機能」とは

> 「LAN 側 Pause 機能」とは、ルーターの LAN ポート間で「Pause 信号」をフィルターするか否かの設定。

無効、つまり「LAN 側 Pause 機能をオフ」にすると、ルーターの LAN ポートの 1 つから送られて来た「Pause 信号」は、他の LAN ポートに転送されない（フィルターする）設定になります。

ローカル内（LAN ポート間）で大量かつ頻繁にデータのやりとりが行われない場合は「無効」に設定しても大丈夫ですが、<font color=darkorange>**通常は「有効」にしておいて問題ありません**</font>。

```text:Pause信号の流れ（オン時）
プロバイダ → × Pause 信号は届かない
└──(WAN側)
    └── ルーター（LAN側Pause機能が「オン」）
        ├── HUB
        │   ├── マシンC ← ● (Pause信号発信元）
        │   └── マシンD → ○ Pause 信号は届く
        ├── マシンA → ○ Pause 信号は届く
        └── マシンB → ○ Pause 信号は届く
```
```text:Pause信号の流れ（オフ時）
プロバイダ → × Pause 信号は届かない
└──(WAN側)
    └── ルーター（LAN側Pause機能が「オフ」）
        ├── HUB
        │   ├── マシンC ← ● (Pause信号発信元）
        │   └── マシンD → ○ Pause 信号は届く
        ├── マシンA → × Pause 信号は届かない
        └── マシンB → × Pause 信号は届かない
```

#### あわせて読みたい

- 「[WiFi が不安定なときの確認事項（自宅・オフィス編）](https://qiita.com/KEINOS/items/33ad0fbc3b06843d9992)」 @ Qiita

## TS; DR（Pause 機能を完全に理解するコマケーこと）

以下は WiFi ルーターのマニュアル（家庭用無線 LAN 機能付きルーターの取扱説明書）にある記載の抜粋です。

> **LAN 側 Pause 機能** （初期値：使用する）
>　LAN 側 Pause 機能を使用する場合はチェックします。
>　LAN 側に接続された端末間でフロー制御することができます。
> (http://www.aterm.jp/function/guide13/web-data/type2_s/main/8300/8w_m7.html)）

**わかっている人にはわかる書き方**なのかもしれませんが、私にはわかりづらく、用語含め、調べてみたことをまとめてみました。

まず、少なくともわかるのは「LAN 側 Pause 機能」なる謎の機能を有効にすると「LAN 側に接続された端末（PC やネットワーク機器の）間でフロー制御することができる」ということです。つまり「フロー制御」を理解することがキモとなりそうです。

### フロー制御とは

落ち着いて考えれば難しくない単語なのですが、「オーバーフロー」というプログラマにとって怖い単語がチラついて「フロー」という単語に偏見を持ってしまったようです。

「フロー制御」の「フロー」（`flow`）はフローチャートなどのフローと同じで「流れ」を意味します。「<ruby>溢<rt>あふ</rt></ruby>れる」という意味ではありません。

反面、溢れる方の「オーバーフロー」は「[キャパ](https://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%91%E3%82%B7%E3%83%86%E3%82%A3)以上のデータが流れてきた」、つまり必要以上のモノが流れに加わったことにより溢れてしまい、**正常に流れなくなったときに使われる表現**です。

川で言えば氾濫。家で言えば、お風呂のお湯張りで止めるのを忘れたようなものです。

オーバーフローだけに ... ... ... つまり、「フロー制御」とは「フロー ＋ 制御」＝「データの流れ ＋ コントロール」＝「データの流れをコントロールする仕組み」です。

この「フロー制御」により、**データがどこかで溢れるのを防ぐ**、もしくは**溢れてもなんとかしてくれる**仕組みが提供されます。

### フロー制御が必要な理由

Pause 機能の前に、フロー制御が必要な事情について軽く説明したいと思います。

おそらく、この「Pause 機能」があるルーターは「[ジャンボフレーム](https://ja.wikipedia.org/wiki/%E3%82%AE%E3%82%AC%E3%83%93%E3%83%83%E3%83%88%E3%83%BB%E3%82%A4%E3%83%BC%E3%82%B5%E3%83%8D%E3%83%83%E3%83%88#%E6%8B%A1%E5%BC%B5%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3)」にも対応していると思います。「ジャンボフレーム」は、フレームのデータ長を長くすることで**分割されたデータを転送する「回数」を少なくさせる仕様**です。

「フレーム」はデータの単位で、複数[パケット](https://tech.nikkeibp.co.jp/it/members/NNW/NETHOT/20040227/1/)を１つの固まりとしたものです。恐れずに言うなら、TCP や UDP のデータの単位が「パケット」、[PPP](https://ja.wikipedia.org/wiki/Point-to-Point_Protocol) などの１つ上のレイヤーのデータの単位が「フレーム」と言えると思います。

<font color=darkorange>ジャンボフレームのイメージとしては、8 両編成だった電車が、16 両編成になったようなもの</font>です。例えば 8 パケット 1 フレームだったものが 16 パケット 1 フレームになるような感じです。いずれもデータ量が大きくなった昨今のネットワーク事情に対応した仕組みです。

そのような仕組みは、ギガビット級の速いネットワーク環境での利用が想定されています。つまり、カテゴリー 6 以上の LAN ケーブルとギガビット対応のルーターでネットワークを構築した環境です。最近の新築マンションや、会社などのネットワークでは一般的な環境かもしれませんね。

そこに 10 <ruby>メガ<rt>・・</rt></ruby>ビットの低速通信の機器が同じ LAN 内にあった場合、つまり、ルータまではデータをガンガン受け取れるのに、ルータから低速通信機器への転送が間に合わない場合を考えます。

以下は、その場合のイメージです。（ここでは便宜上、[ルーター](https://ja.wikipedia.org/wiki/%E3%83%AB%E3%83%BC%E3%82%BF%E3%83%BC)は[スイッチング HUB](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%83%B3%E3%82%B0%E3%83%8F%E3%83%96) と同じ役割として記載しています）

```text:高速・低速混在のネットワーク
プロバイダ
└──(WAN側)
    └── ルーター 💦
        ├── HUB(1Gb)
        │   ├── マシンC(1Gb)
        │   └── マシンD(1Gb)←[送信]
        ├── マシンA(1Gb)
        └── マシンB(10Mb)♪〜 →[受信] 

・データは「マシンD → HUB → ルーター → マシンB」へと流れる
```

低速通信機器（ここではマシン B）が大きなデータを他の端末（ここではマシン D）にリクエストするも、機器への転送が低速なため、ルーターは受け取っているデータを溜め込みながら少しずつ低速通信機器へ転送してゆきます。

この時、**溜め込んでいるデータを「バッファ」といいます**。お風呂の栓を少し開けたまま、お湯張りをしているイメージの場合、この溜まっているお湯が「バッファ」です。

```text:バッファのイメージ
プロバイダ
└──(WAN側)
    └── ルーター[ ■■■■□ ]💦
        ├── HUB(1Gb)[ ■□□□□ ]
        │   ├── マシンC(1Gb)
        │   └── マシンD(1Gb)←[送信][ ■■■□□ □□□□□ ]
        ├── マシンA(1Gb)
        └── マシンB(10Mb) →[受信][ ■■□□□ □□□□□ ] ♪〜

・データは「マシンD → HUB → ルーター → マシンB」へと流れる
```

Youtube などの動画をスマホで移動しながら観ていると、動画の解像度が大きい場合、読み込んでは再生を繰り返してカクカクする場合があります。その時、一時停止をして動画を溜め込ませてから再生することがあると思いますが、そういった溜め込み／先読みを「バッファしている」と呼びます。

しかし、溜め込む量より出力する量が少ない場合、そのまま受け取っているとキャパ・オーバーして溢れてしまいます。この**溜め込む側が溢れた状態を「バッファ・オーバーフロー」といいます**。お風呂のお湯が溢れたようなイメージです。口に牛乳を含んで笑わされた時の効果音（バッファ）を想像すると覚えられると思います。

この問題に対するネットワークの標準的な仕組みに「再送」があります。

TCP の「パケットが転送途中で壊れた場合に再送依頼する仕組み」は有名ですが、バッファが溢れた場合にも、この再送の仕組みは活用されます。つまり、バッファがオーバーフローした場合は**思い切って「バッファのデータを廃棄」してしまい、送り元に再送してもらうようにリクエストする**ことで回避する、力強くも単純な仕組みがあります。

厳密には、なるべく無駄のないようにもっと細かく制御が行われているのですが、基本的に、このように**データの流れをコントロールすることを「フロー制御」といいます**。お風呂の元栓の開け閉めや、排水口の開け閉めといった制御をするイメージです。

### Jennifer wait!（ちょっと待って）

先ほどの「受け手の都合により、再送させる」仕組みは小悪魔的とも言えますが、非常にシンプルであるため、ハードウェアの開発コストも少なく済みます。

しかし、問題もあります。

同じデータ（送信済みのデータ）を再度送るため「ネットワークの渋滞を招く」のと「時間のコストがかかる（時間の無駄が発生する）」という問題です。宅急便の再送依頼と同じイメージです。

宅急便の場合、「帰宅が遅れそうだ」とわかった時点で配達時間を遅らせることで、なるべく１回の配送で済ませ、お互いのロスを減らす工夫をします。ネットワークでは、同様の**再送問題を回避するために「Pause 機能」があります**。

「Pause」が「一時停止」という意味であるように、どんどんデータを送ってくる相手に対して、自身のバッファがオーバーフローしそうになると、送り手に「ちょっと●秒待った」と知らせることでデータ転送を少しのあいだ止めて待ってもらいます。これにより、データを破棄せず、再送ではなく続きのデータを受け取ることができるようになります。

Pause 信号を送ったにも関わらず、データを送りつけてくる場合は、従来位通りバッファを廃棄して再送依頼することになります。つまり、**「Pause 機能」も「フロー制御」の１つ**なのです。

この Pause 信号は他のデータと同じくパケット信号です。この **Pause 機能のための一連のパケット信号を「Pause フレーム」と呼びます**。Pause シグナルを含んだパケット、Pause 信号、Pause フレームいずれも同じ役割です。

### 家庭用ルーターでは Pause 信号は LAN 内のみ

この「Pause 機能」によって、無駄なデータのトラフィック（交通）の渋滞がなるべく起きないよう工夫しているわけですが、この信号はルータと他のデバイス（ネットワーク機器や PC 間）に限らず、デバイス間でも使われる信号です。

その場合、この信号はデータと同じようにネットワーク上に流れるので、その橋渡しとなるハブやルータを介してデバイス間に伝わることになります。

その時の留意点として、基本的に家庭用ルーターの場合<strong>「Pause 機能」は LAN 内でのみ機能します</strong>。つまりLAN 側のポートにブラ下がっているネットワーク機器に対して有効です。

これが文頭に記載した、説明書にある「`LAN 側に接続された端末間でフロー制御することができます`」の意味になります。

> `LAN 内の端末や機器でバッファがオーバーフローする場合に PAUSE フレームをマルチキャストします`

上記の説明の場合、「マルチキャスト」とは「ネットワーク上の機器に一斉通知する」という意味です。

噛み砕いて言うと「**受け手がテンパった時に、LAN 内の全端末に「アチキ宛に色々送ってる奴！ちょっと待って！」と Pause 信号を送る**」という意味です。

逆に言うと、ルーターでこの **Pause 機能の設定が「無効」になっている場合**、ルーターは **LAN ポート間でこの信号を伝達しません**。

つまり、ルータの LAN ポート１に繋がった機器が「Pause 信号」を発しても、LAN ポート２や LAN ポート３もしくは WiFi には転送しません。しかし、LAN ポート１に HUB がある場合は、HUB に繋がっている機器には伝わります。ここが **Pause 機能の設定をするか否かのポイント**になります。

### どのような時に設定すべきか

先に言ってしまうと、<font color=darkorange>**一般的な使い方では特別にオン／オフを意識する必要はありません。通常は「オン」（有効）で良い**</font>と思います。

と言うのも、この Pause フレーム（信号）は、Ethernet の規格（[IEEE802.3x](https://ja.wikipedia.org/wiki/IEEE_802.3)）であるため、大抵の機器は対応してるためです。

しかし、プロバイダからレンタル／支給されている家庭用ルーターを使っていて、以下の２つに該当する場合は注意が必要です。

1. ルーターをハブ替わりにしている（高速通信機器がルーターに直結してつながっている）
2. ルーターの１ポートにルーターより高速なハブをつなげている（高速／低速通信機器がハブにつながっている）

つまり、高速通信機器がルーターをまたぐ場合です。

上記の組み合わせで、ルーターに直結した高速機器と、ハブの下にぶら下がっている通信速度の遅い機器が、大量のデータをやりとりしている場合、**ルーターが不安定になりルーターの再起動が必要になるケースを多く見ます**。（WiFiルーター含む）

家庭用ルーターが遅くなったり、不安定になる一番の要因は熱暴走で、二番目が無駄なアクセスです。

まずはルーターが熱くなっていないか（放熱できているか）を確認したのち、Pause 機能を「オフ」にしてみてください。というのも、 **Pause 機能を「オン」にするということは、再送させない代わりに、その間のバッファのメモリ管理をちゃんと行うということでもあるから**です。

しかし、プロバイダ支給のルーターは型が古かったり、十分パワフルでない事があるため、高速ハブとルーター間の Pause 信号のやりとり、もしくはルーター内のバッファのメモリ管理が上手に扱えない時があります。熱暴走していると特に顕著です。

もう少し具体的に流れを復習してみましょう。

「おっせー」と感じた時の Pause 機能のオフで改善された場合、おそらくネットワークの組み方（配線）に問題があるか、ルーターの経年劣化の可能性を検討します。

一般的に家庭用ルーターは、ハブ（スイッチ）とゲートウェイの役割を兼任しています。

ハブとしては LAN ポート間のデータや Pause 信号を右から左（ポートからポート）へ転送するだけです。そして、データの宛先の IP アドレスが LAN 側のものでない場合はゲートウェイとして働き、 WAN 側に転送して次の WAN 側のルータに判断や処理をまかせます。

ここで注視したいのが、後者の「ゲートウェイとしてのルーターの働き」です。つまり LAN 側と WAN 側で通信する場合です。

WAN 側にリクエストしてレスポンスを待つ場合、つまりインターネット側にアクセスしてデータを取得する場合、戻ってきたデータ（パケット）はリクエストした LAN 側の IP アドレスに転送しないといけません。

そのため、LAN 側からのリクエストが完了する（レスポンスの転送が終わる）まで、<font color=darkorange>ルータは「リクエスト先とリクエスト元の IP アドレスを覚えておかないといけない」ということ</font>になります。その間はルータ側のメモリを必要とします。

しかし、その間もルータはハブとしても機能しないといけません。

さて、LAN 側にスイッチング・ハブ（インテリジェント・ハブ）がある場合、ルーターとハブの間でも Pause 信号を送り合う事があります。

この時、機器（この場合ルーター）がショボかったりすると、バッファできる量が少ないことがあります。特に一般家庭なのに発売当時では想定できなかったデータ量が流れた場合、バッファ・オーバーフローが発生します。**その結果、Pause 信号が乱発される**という悪循環が発生します。

また、機器が発熱しているとメモリに溜めていたデータが壊れてしまい、同じように処理できないゴミデータがメモリに溜まってメモリ不足による Pause 信号の乱発が発生します。

これは PC の処理速度を上げたり、動作を安定させるために冷却するのと同じ理由です。くどいのですが、家庭用ルーターが不安定になる一番の理由が電力不足と熱暴走です。次点で経年劣化です。

Pause 信号の乱発は、ルータに限らず LAN 側の機器にも言えます。

特に Pause 機能を持たないストリーミング系のデバイスがある場合では顕著です。例えば安い監視用 Web カメラなどです。

「返事がないなら UDP でいいじゃない」と一方的に送りつけてくるくせに、Pause 信号を送っているのに言うこと聞かないし、リクエストしても返事もしてくれない、わがままなタイプのデバイスです。

しかも、再起動するたびに MAC アドレスが変わる気まぐれ屋さんなものだから、ルーターの DHCP は不明な機器でいっぱいになります。このようなデバイスがあると、必要以上の通信コストが発生します。

この場合、おそらくコールセンターに問い合わせても「再起動してどうか」という案内になると思います。基本的にネットワークの配線／構成や機器自体を変えない限り回避できないからです。

しかし、ネットワーク・トポロジ（ネットワークの組み方や構成）を見直すことで、かなり改善されます。具体的には、ルーターや高速ハブにぶら下げる機器の構成を工夫します。

例えば、以下のような確認事項があります。一言で言うと<strong>「ルータを[テンパ](https://ja.wikipedia.org/wiki/%E8%81%B4%E7%89%8C)らせないためには何ができるか」を考える</strong>ということです。

1. プロバイダ支給のルーターは内部から外部、つまり LAN ←→ WAN に専念させる
2. LAN ←→ LAN はギガビットハブを介するようにし、ルーターを経由しないようにする
3. LAN ケーブルを見直す（ノイズだけでなく、実は断線しそうで銅線一本の皮一枚でも実は通信できてしまうもロスが多くなり遅くなるため）
4. お互いに通信する頻度が多い機器（PS4 と Nasne など）は、階層をまたがずに同じハブに繋げる
5. ルーターやハブの放熱対策をする（設置場所の見直し、本体に CPU の放熱板を付けるだけでも違う）
6. ルーターやハブの電源をタコ足にしない（電圧・電力が低いと発熱する＋タコ足の他の機器から電源ノイズを拾ってしまうため）

#### あわせて読みたい

- 「[WiFi が不安定なときの確認事項（自宅・オフィス編）](https://qiita.com/KEINOS/items/33ad0fbc3b06843d9992)」 @ Qiita

## 初夏の所感（あとがき）

最近のマシンはギガビット・イーサーが標準です。しかし、家庭内の LAN（特に昔の同梱）ケーブルはカテゴリー 5（もしくは 5e）のものが多く、経年劣化が発生していたり、電源と平行して（束ねて）配線されている事が多いため、ノイズなども含めて速度が出ない事が多々あります。

また、マンションの壁内 LAN も実は新築でも Cat5/5e が平気で使われていることが多くあります。Cat6 より安くて作成が簡単だからです。特に Cat６ に移行する過渡期（2010〜2015）には、マンション・ブームと重なり、業者さんが買い溜めしていた Cat5e のケーブルを処理するには都合がよかったからです。それでも Cat5e の場合はギガビット対応なので嘘はないのです。

このようなインターネット完備のマンションでも、ルーターや HUB なども放熱を考えずに密閉したり、壁内の LAN ケーブルを電源ケーブルと一緒に束ねたりする事が多くあります。特に、この電源が空調、冷蔵庫や電子レンジなどにも使われていたりすると、動きはしますが速度が思いのほか出ません。

HD 画像（1K）は遠い昔、今や 4K が普通で、8K に移行しているこの時代、8K スカパー！プレミアムを観たい場合はアンテナだけでなくアンテナのケーブルも（シールド加工された上位品に）交換しないと、まともに見れないのと同じで、無線より遅い LAN ケーブルが壁内配線に使われた場合、後々の交換が大変なのは明白です。

しかし、建築工事はコスト（金額と時間）がシビアなので生死にかかわる事以外は「動けばおk」である、つまり「要件は網羅しているし、 嘘は付いてない」事が優先されるので、そもそも**要件を定義する設計側が知らないといけない知識の１つ**になってきています。建築設計側・工事主任側の知識が足りないと、竣工後（引渡し後）のクレームを転嫁して電気施工の技術屋さんを泣かせることでしょう。

ネットワークの速度のチューニング（調整）は別の話であるため、住宅の建築・施工におけるネットワーク障害の切り分けは別の記事で~~書きたいと思います~~[書きました](https://qiita.com/KEINOS/items/33ad0fbc3b06843d9992)が、まずはこの記事が Pause 機能のオン・オフの決定の参考になれば幸いです。


## 参考文献
- **第9回 イーサネット（その４） - フロー制御とVLAN、トラブルシューティング** @  IT<br>http://www.atmarkit.co.jp/ait/articles/0110/02/news003.html
- **Ethernetで通信をスムーズに行なう工夫とは？**　@ ASCII.jp<br>
http://ascii.jp/elem/000/000/428/428911/index-2.html