システム奮闘記:その106

オートネゴーシエーションでLANや通信機器の通信制御



Tweet

(2016年11月14日に掲載)

はじめに  ここでは半二重通信と全二重通信や、通信速度が異なる機器が混在するLANの中で どうやって通信制御しているのか、その仕組みについて触れました。

PAUSEフレームでフロー制御

 LANの中には通信速度が異なる機器が混在する事がある。  うちの会社も2013年までは、10Base-Tや100Base-TX、1000Base-Tのハブが混在する環境だった。  それぞれ通信速度が異なるのだが、お互い、どうやって制御していたのかだが・・・  そんな事、考えた事、あらへんかった!!  なのだ。  疑問に思わない事は、そこから先の進歩がない証拠。  まさに進歩していなかった私なのだ。  さて、色々調べていくと以下のサイトを発見。  ASCII.jp:Ethernetで通信をスムーズに行なう工夫とは? (2/3)|入門Ethernet  詳説 TCP/IPプロトコル:第9回 イーサネット(その4) - フロー制御とVLAN、トラブルシューティング (1/5) - @IT  サイトには、サーバーが100Base-TXでクライアントが10Base-Tの場合の 通信制御の事が書いている。  もし、以下のように送信する側が100Base-TX(100Mbps)対応で 受信側が10Base-T(10Mbps)対応の場合が起こりえる。
送信側と受信側で送受信できるデータ量が違う場合
送信する側が100Base-TX(100Mbps)対応で受信側が10Base-T(10Mbps)対応の場合
この場合、どうやってデータ送信量を調整するのかが疑問になる。

 そのため受信側がデータの受信処理ができないため
ハブのバッファ(メモリ)で一時保管しているのだ。

ハブのバッファ(メモリ)でデータ保管
受信側がデータの受信処理ができないためハブのバッファ(メモリ)で一時保管
ハブのバッファを使って、データの一時保管をして調整している。
雨が降って、大量の水が川に流れた時、ダムでせき止めて
水量を調整しているのと同じだ。

 でも、ハブのバッファは無限にデータを貯められるわけではない。
 もし、満杯に近づいた場合、溢れ出る恐れがある。

 リピーターハブの場合、CSMA/CDの技術を応用して
疑似衝突を起こして、送信側にデータ送信の中断を行なう。

リピータハブの場合の対応
リピーターハブの場合、CSMA/CDの技術を応用して疑似衝突を起こして、送信側にデータ送信の中断を行なう
CSMA/CDの技術を応用して、疑似衝突を発生させ、送信元のマシンに
送信を一時中止を伝えるのだ。

 さて、スイッチングハブの場合、CSMA/CDを使わないため
別の方法が使われる。

 PAUSEフレームというフロー制御

 なのだ。

 PAUSEフレームを使って、データ量の制御を行なうのだが
以下のように制御を行なう。

スイッチングハブの場合の対応
スイッチングハブの場合、PAUSE信号を送って、送信中止要請を行なう
ハブがPAUSE信号を、送信元に送って、送信中止要請を行なう。
その際、PAUSE信号には、中止時間が記述されているため
中止時間の間、送信元はデータ送信を中止して、待機をするのだ。

 そしてハブのバッファに余裕ができると、以下のような事を行なう。

バッファに余裕ができると
スイッチングハブの場合、中断時間「0」のPAUSE信号を送って、送信再開可能を知らせる
ハブのバッファに余裕ができると、ハブは中断時間「0」の
PAUSE信号を送信して、送信再開可能を知らせるのだ。

 こんな話

 全く知らへんかった!

 「システム奮闘記:その24」を書いた時、30才だった。
 10年以上の時を経て、調べる能力はあがったのだが
同時に年齢もあがり、すっかり40のオッサンになっていたのだ。


 ところでPAUSE信号とは、どういう信号なのかについては
後述しています。


オートネゴーシエーション

 送信速度が異なるマシンやハブが共存する場合だが どうやって、個々のマシンやハブの送信速度を認識しているのか。
どうやってお互いの送信速度や規格を知るのか
ハブや端末は、どうやってお互いの送信速度や規格を知るのか

 考えてみれば不思議なのだが・・・

 全く疑問に思ってへんかった!!

 なのだ。
 そこで調べていく事にしたのだが、意外と詳しい日本語の資料がない。
 仕方なく

 英語を読む事になった

 のだ。
 10年くらい前は、まだ英語をある程度覚えていたのだが
40過ぎると、すっかり単語なども忘れている。
 四苦八苦して英文の解読する事になった。

 Gigabit Ethernet Auto-Negotiation

 An introduction to the Auto-Negotiation process
 (UNIVERSITY of NEW HAMPSHIRE INTEROPERABILITY LABORATORY)

 What is Auto-Negotiation?
 (UNIVERSITY of NEW HAMPSHIRE INTEROPERABILITY LABORATORY)

 1000Base-T Auto Negotiation
 (IEEE 802.3ab Meeting Montreal, Canada)
 1000BASE-T AutoNegotiation & Link Criteria
 (IEEE 802.3ab Meeting San Jose, California)

 IEEE802.3の、1000Base-Tの標準化の会議の資料までネットで見つかった。


 10Base-Tの時代の方法を見てみる

10Base-Tの時代の方法
10Base-Tの時代のリンク確認と接続の方法はNLPパルスを使う
NLP(Normal Link Pulse)を16±8ms間隔で信号を送り合う。

 接続ができない場合の判定方法は以下のようになる。

10Base-Tでお互いが接続ができないと認識する場合
10Base-Tでお互いが接続ができないと認識する場合
NLPを受信した後、50〜150msの間、NLPを受信しなければ
接続確立ができなかったとしている。


 100Base-TXが登場すると、10Base-Tと区別する必要があるのだが
NLPだけだと、区別はできない。

 そこでFLPが登場した。

10Base-Tと100Base-TXとの混在環境では
10Base-Tと100Base-TXとの混在環境では、リンク確立にFLPパルスを使う
FLP(First Link Pulse)と呼ばれる物だ。
2msの間に、33個のパルスを発信する物だ。

 10Base-Tの機器だと、NLPしか発信できない。
 そこでNLPとFLPとの互換性を保つため、以下の工夫をしている。

NLPとFLPとの互換性を保つための工夫
NLPとFLPとの互換性を保つための工夫
FLPの先頭とNLPを同じ役目にさせている。
そしてFLPの33個のパルスの間隔と、NLPの間隔を同じにしている。

 ところでFLPは、どういう構造になっているのか。

FLPの構造
FLPの構造
17個の同期を取るクロックパルス信号と
16個のデータ信号の2つが交互に並んだ形になっている。
クロックパルスは「1」だが、データ信号は、内容によって「0」か「1」になる。

 データパルスを見てみる。

FLPのデータパルス
FLPのデータパルス(Link Word Code:LWC)
Babe Pageと呼ばれる物だ。
別名は、LWC(Link Word Code)と呼ばれる。 結構、LWCも使われるのだ。


 Base Page(Link Word Code:LWC)の構造を見てみる。

Base Page(Link Word Code:LWC)の構造
FLP Link Word Code(LWC)の構造
S0からS4は、どういった信号なのかを伝える部分だ。
CSMA/CDなのか、ISLAN-16なのかだ。

ISLANとは、音声とデータ通信を統合したネットワークのようで
ATM-LANの話に出てくるようだが、使わないので、わからんで逃げる。

A0〜A7は、10Base-Tなのか、100Base-TXなのか
半二重なのか、全二重なのかを表した部分だ。

 通常、使われているLANは、CSMA/CDを使って通信を行なっている。
 そして100Base-TXで全二重の場合は、FLPのデータパルス部分は
以下のようになっている。

100Base-TXで全二重の場合は、FLPのデータパルス部分
100Base-TXで全二重の場合は、FLPのデータパルス部分
FLPのデータ部分のビットが、上図のような並びになる。

 ところで、100Base-TXの場合、FLPのやりとりで接続確認をする。
 以下のような、やりとりが行なわれる。

最初のFLPについて
1回目のFLP受信について
資料によると、6〜17番目のビットで、FLPだと確認する。
これがFLP全体で見ているのか、パルス部分なのかは
資料に書いていなかったので、わからないが
ここでは全体で見た場合の図を描いた。

6〜17番目の前のビットで判断しないのは、もしかすると
いきなりビットを送られても、見落とす可能性があるため
それを前提にしているのではないかと、勝手に推測する。

 受信側は、少なくとも3個のFLPを受信する必要がある。

受信側は、少なくとも3個のFLPを受信する
受信側は、少なくとも3個のFLPを受信する
連続で3個以上のFLPを受信して、初めて接続していると認識するのだ、

 受信側で3回連続、FLPを受信したら、今度は、受信した事を表す
応答信号を返す。この際、受信側から、自分自身の送信方法として
FLPを送り、相手に知らせるのだ。

FLPに対する応答
FLPに対する応答
連続した3個以上のFLPを、受信したマシンは、今度はハブに対して
FLPを送るのだが、その際、受信確認のための応答信号(ACK)のビットを
「1」にして、送る。

 今度は、ハブはマシンから受け取ったFLPを受信した事を知らせるため
ACK付のFLPを送信する。

今度はハブがACK付のFLPを送信する
ハブがACK付のFLPを送信して、マシンにFLPを受信した事を知らせる。
このやりとりで、お互いがFLPを受信した事を確認するのだ。

 100Base-TXの場合、これで接続確認のやりとりが終わる。

1000Base-TでのFLP

 だが、このやりとりだと、相手が1000Base-Tの場合、 1000Base-Tである事を伝える事ができない。  そこで1000Base-Tの場合、以下のように拡張した形で やりとりが行なわれる。
1000Base-TでのFLPは4種類
1000Base-TでのFLPは4種類
1番目は、100Base-TXの時に使われているBasePage(LWC)だ。
2番目は、Message Page
3番目は、Uniformatted Page No1だ。
4番目は、Uniformatted Page No2だ。

この4種類のFLPを使って、お互いの機器が何かを判別しているのだ。

 まずは1番目のBase Page(LWC)を見てみる。

1000Base-TでのBase Page(LWC)の構造
1000Base-TでのBase Page(LWC)の構造
CSMA/CDの指定。
次のページがある事のビット(NP:Next Page)に「1」が入る。
FLPを送る際、受信確認でなければACKは「0」になる。

 2番目は、Message Pageになる。

FLP:Message Pageの構造
FLP:Message Pageの構造
M0〜M9では、通信方法の規定などが記述される。
いくつかあるが、資料を見ても、理解できなかったので
詳細は「わからへん」で逃げる事にする
この部分だが、大半は使われおらず、予約ビットになっている。

MPビットは、Message Pageの時「1」になるのだ。
後ろにUnformatted Pageが続くのでNPビットも「1」になる。


 ところで

 ACK2とTビットは何やねん?

 となる。


 まずは、ACK2ビットだが、FLP信号の応答のACKとは、違った役目を果たす。

FLP:ACK2ビットの役目
FLP:ACK2ビットの役目
ACK2とは、受け取ったメッセージの内容を見て
それをサポートしている場合にACK2ビットを「1」にして返している。

もし、Message Pageで1000Base-Tの全二重と送られてきても
1000Base-T半二重しか対応していない場合は、ACK2ビットは「0」で送り返す。

 Tビットは少し置いておいて、3番目のUnformatted Masage No1を見る。

FLP:Unformatted Masage No1の構造
FLP:Unformatted Masage No1の構造
Masterとslaveかの記述がある。
そして1000BaseTの全二重か半二重かの識別するビットもある。

 ところで・・・

 MasterとかSlaveとは何やねん?

 なのだ。
 そこで調べてみると、以下のサイトに書いていた。
 1週間で学ぶネットワークの要点 - 初めてのギガビット・イーサネット 第5回:ITpro

1000Base-TでのMasterとSlaveとは
1000Base-TでのMasterとSlaveとは同期をとるクロックをどっちに合わせるかの主従関係だ。
1Gbpsの速度になると、わずかなズレも許されないため
信号の送受信は難しくなっている。
そこで双方が厳密にタイミングを取るために、どちらかの装置の
クロックに合わせるという形(主従関係)をとっているのだ。

 どっちがMasterで、どっちがSlaveかを知らせる物だ。

 ところで具体的に、Unformatted Message Page No1には、どういう形の
ビットが入るのか見てみる事にした。

FLP:Unformatted Masage No1の
FLP:Unformatted Masage No1の各ビットに入る値 1000Base-Tで全二重の場合
「U0」はクロックの主導権(MasterかSlave)の固定の有無。
固定なら「1」。autonegoなら「0」だ。

「U1」は「U0」が「1」(Master、Slaveが固定)の場合に使われる。
Master(主)の場合は「1」で、Slave(従)の場合は「0」だ。

「U2」はポートタイプで、シングルポートタイプか、マルチポートタイプの
違いを表す。シングルなら「0」で、マルチなら「1」になる。

全二重の場合「U3」に「1」が入る。
半二重の場合「U4」に「1」が入る。

 MasterとSlaveの説明の前に、Tビットについて。
 Tとはtoggleの略で「切り替え」とか「スイッチ」の意味がある。
 FLPで使われる「T」ビットは

 Messeageの内容が変更になった

 という知らせだ。

 ここではMessage Pageを受信した後、送信するMessageの内容が

 Unformatted Message Page No1に変更

 になったので、Tを使って知らせているのだ。



 閑話休題。
 MasterかSlaveの決定方法に関わっている。

 端末(パソコン)とハブの両方が自動選択の場合は
ハブの方がMasterになる優先権がある。

 組み合わせは以下のようになっている。

MasterかSlaveかの選択
装置Aのタイプ装置Bのタイプ 装置Aの選択装置Bの選択
端末ハブ SlaveMaster
Slave固定Master固定 SlaveMaster
ハブMaster固定 SlaveMaster
Slave固定端末 SlaveMaster
ハブ端末 MasterSlave
Master固定Slave固定 MasterSlave
端末Slave固定 MasterSlave
Master固定ハブ MasterSlave
端末端末 場合による 場合による
ハブハブ 場合による 場合による
Master固定Master固定 失敗失敗
Slave固定Slave固定 失敗失敗
補足
Master固定とは端末・ハブ関係なく、Masterに固定されている装置の事を指す。
同様に、Slave固定は、Slaveに固定されている場合の事を指す。

 ところで上の表の青い文字で場合によると書いているが、どういう事なのか。
 SEED値の大きさによってMasterになったり、Slaveになったりするのだ。

 それは4番目のMassageのUnformatted Maggage Page No2で決定される。

FLP:Unformatted Message Page No2の構造
FLP:Unformatted Message Page No2の構造
MasterとSlaveを決める際に使われるSEEDの値の記述だ。
双方がMasterになりたいと主張した場合、SEED値が重要になる。

お互いが疑似乱数を発生させ、それをSEEDの値にして
SEED値の比較を行なって、大きい値の方をmasterにするようだ。

 FLPを使ってお互いが情報交換をした後、
以下の順序で通信方法を決めるという。

オートネゴーシエションにおける
通信方法の選択順
優先順位 動作方法
(1) 1000Base-T 全二重
(2) 1000Base-T 半二重
(3) 100Base-T2 全二重
(4) 100Base-TX 全二重
(5) 100Base-T2 半二重
(6) 100Base-T4 半二重
(7) 100Base-TX 半二重
(8) 10Base-T 全二重
(9) 10Base-T 半二重

 パソコンやハブが自動的に通信方法を決めているため
どういう方法で通信方法を決めているのか、普段は気にに留めないが
調べてみて、改めて、LANは簡単ではないと思った。

片方が固定の場合

 片方がオートネゴーシエイションで、片方が固定の場合がある。  その場合、どうなっているのか調べてみた。  1週間で学ぶネットワークの要点 - 初めてのギガビット・イーサネット 第5回:ITpro  ASCII.jp:Ethernetで通信をスムーズに行なう工夫とは? (3/3)|入門Ethernet
ハブが10Base-T固定の場合
ブが10Base-T固定の場合
ハブが固定の場合、マシンからNLPやFLPを送られても
ハブはNLPしか応答を返さない。
そのためマシンはNLPを受信して10Base-Tと判断する。
この時、全二重か半二重なのかは不明なため、半二重にするのだ。

 今度は、ハブが100Base-TXで固定の場合を見てみる。

ハブが100Base-TXで固定の場合
ハブが100Base-TXで固定の場合
マシンはFLPを送信しても、ハブはIDLE信号しか返さない。
そのためマシンはIDLE信号を見て、100Base-TXと認識する。
この時、全二重か半二重なのかは不明なため、半二重にするのだ。

 1000Base-Tの場合はどうなるのか。
 調べてみたが、見つからない。
 おかしいと思いつつ、たどり着いた答えが・・・

 1000Base-Tはオートネゴーシエーションを義務

 なのだ。
 固定というのは、ありえないのだ。


 ところで固定にする設定は可能なのだろうか。
 そこでWindows7のデバイスマネージャーを見てみる事にした。

Windows7のデバイスマネージャー
Windows7のデバイスマネージャー
ネットワークアダプタを選択する。

 ネットワークアダプタのプロパティーで「Speed & Duplex」を選んでみる。

通信方法の選択部分
Windows7のデバイスマネージャーでオートネゴシエイションか、通信速度と全二重か半二重などの固定を選べる
選択肢が出てきた。
1000Base-Tは固定にはできないが、100Base-TXと
10Base-Tは固定にできる上、全二重か半二重の選択もできる。

 ところで、ハブはどうなのだろうか。
 会社の倉庫でハブを探すと、古いハブを発見した。捨てずに置いておいて良かったのだ。
 15年前ぐらいのハブだが、なんとオートネゴシエイションの切り替えがあった。

オートネゴシエイションにするかどうかの切り替え部分
古いハブにはオートネゴシエイションにするかどうかの切り替えができる
だいぶ昔、会社にあったハブなのだが、この部分は意味不明で
触っていなかった。触らなくて正解だった。

当時、LANはケーブルをつなげれば良いと思っていたので
下手に、この辺りを触っていると、障害が起こったと思うし
原因がわからず、解決できない状態に陥っていたと思う。

FLP:PAUSEビット

 全二重の通信の場合で、100Base-TXマシンから 10Base-Tのマシンへデータ送信した場合、バッファにため込まれたデータが 溢れる前に、PAUSE信号で送信元に伝える事は説明した。  このPAUSE信号は、FLPのBase Page(LWC)の一種だったのだ。
PAUSE信号は、FLPのBase Page(LWC)の一種
PAUSE信号は、FLPのBase Page(LWC)の一種
A5の部分を「1」にして送信元にFLP(PAUSE信号)送る事で、
データ送信を保留にしてもらえるのだ。

 そんな仕組みだったのは知らなかった。


LAN入門:目次
ストレートケーブルとクロスケーブル LANケーブルのストレートタイプとクロスタイプの違いを書きました。
リピーターハブとスイッチングハブ リピーターハブとスイッチングハブの違いと、全二重通信と半二重通信の話です。
10Base-T以降では、パケット衝突は、実は擬似衝突などを書いています。
社内LANの調査 2005年に、ブラックボックス化した社内LANを解明した話です。
オートネゴーシエーション 10Base-T、100Base-TX、1000Base-Tなどが混在する環境で
どうやって通信制御を行っているのか
その仕組みを書きました。
LANケーブルの規格 CAT(カテゴリー) LANケーブルの規格のCAT(カテゴリー)の違いを書きました。
データ送信とデジタル信号の符号化 LANケーブルを信号が伝わる際、どうやってデータ送信をしているのか。
デジタル信号の周波数を抑えながら、高速で信号送信する技術を書きました。
10Base-T、100Base-TX、1000Base-Tについて書きました。
データリンク層 LAN内のパソコンや通信機器同士の通信はMACアドレスが使われています。
それを司るデータリンク層について書きました。
表皮効果と近接作用 LANケーブル内で起こっている信号減衰の原因が
表皮効果と近接作用である事と
LANケーブルの撚り線が、ノイズ対策なのを書きました。
ツイストペアとノイズ対策 LANケーブルがツイストペア(撚り線)なのはノイズ対策のためです。
その話を書きました。
差動回路とノイズ対策 LANケーブルは8本あり、データ通信は複線で行っています。
差動回路を使ったノイズ対策の話を書きました。
同軸ケーブルの仕組み 昔のLANに使われていた同軸ケーブル。
現在でもテレビのアンテナに接続する線として使われたりしています。
同軸ケーブルの仕組みや特性インピーダンスの話を軽く触れました。
発振回路 クロック信号を作る発振回路の説明です。
簡単なLC型コルピッツ発振回路を使って説明しました。


目次:「LAN入門 LANの基礎」に戻る
前章:「電磁気学入門」を読む
目次:システム奮闘記に戻る