昨今,イーサーネットという名前で知られているネットワークシステムは,産業界から家庭,学校まで幅広く多くの人に愛用されている。だが,これだけ広まると,当然のことながら関連知識も少なからず必要となってくるであろう。
しかしこの分野は,少しでも専門的に中身をかじろうものならば堅い壁にぶち当たり,とどのつまり“たとえ話”で終わってしまう。これではユーザにとって,決して満足できる状態ではない。それどころか,利用すればするほど全体を支える屋台骨に対して不信感がつのり,自信喪失に陥ってしまう。そうかといって,中身を分解しても何も出てこない。
実は,当校の卒研生からも同様な疑問が噴出し,どうしたらよいか解決の糸口を模索した経緯があった。結果としては,便利性の追求がもたらす不透明なブラックボックスをどこまでガラス張りにできるか,というのが答えだった。今回勉強するネットワークシステムにおいては,主として物理層,データリンク層レベルという低い階層での話とし,あくまでもハードウェア周辺を意識することで,モヤモヤからの脱却ができないかと考えたものである。
今回は,“手で触れるネットワーク実験”をテーマとして,ハードに密着することを前提に,教育教材の選定をした。はじめに,教材開発に負担をかけないという観点から,マイコンには8ビットマシン(Z80)を念頭においた。つまり目的はLAN技術を学ぶことであり,CPUを学ぶことではないからである。
ところが肝心のLANを制御するLSI(LANコントローラ:以下「LANC」という)であるが,8ビットバス対応という制限から,該当する素子を探すのに一苦労した。LANCは,16ビット,32ビット対応が一般的で,8ビットは実用機として今一つ通用せず,市販品として出回っていないからである。当然のことながら,ここでもLSIの取り扱い自体に気を取られては意味がないので,なんとか8ビットバスの手頃なLANCがないかと探したところ,三菱電機製作所にあった。
型名はM64100TFPで自動車の車載用LANCであり,新製品で受注生産にて対応していることを知り,詳細を問い合わせてみた。すると,データバスその他の形態からして,Z80マイコンに適合することがわかり,早速メーカにマニュアルを請求し,しばらくして入手した。マニュアルは,ハード&ソフトの両面から,基本的な使い方と仕様について書かれており製作には十分な資料だった。
とはいえ,これをZ80用にタイミング,アクティブ条件など,きめ細かくカスタマイズする必要が残っており,卒業研究の材料として適当なものと思われた。以下,ハードと,それに絡むソフトの2つに分けて,具体的に述べる。
LANシステムのハードウェアは,一般的にインタフェース部と受送信制御部の2つから成り立つ。
前者は,リアルタイムデータをタイミングよくCPUに渡す機能であり,後者はトランシーバの名前で広く親しまれている直/並列変換機能で,LANボード内蔵型と,外付けタイプの2種類がある。
今回使うLANコントローラ素子には両者とも内蔵されており(図1),見た目にはいたってシンプルなものになって,若干不満の残る結果となった。
さらにLANCの中を,わかりやすいブロック図で示すと図2のようになる。
次にハードウェアの機能であるが,以下に述べる4つから成り立つ。
システムクロックは,このICの最速である6MHzを採用し,伝送の高速化を図った。これにより伝送クロックは128Kボーを確保できた。しかし伝送の高速化に伴いCPUの対応が間に合うかどうか心配したが,幸い何とか処理できた。
LANCのCS(チップセレクト)は0-3FH番地(送信バッファ,コントロールRg用)にてアクセス可能とし,設定用ポート(REQ,RESET)は40H番地にI/Oアドレスを確保した。
Z80とLANCとのハンドシェークは,REQ端子,INT(割り込み)端子により行っている。これらは,以下に示す2通りの動作により,互いに認識し合う。
CPUからLANCにアクセスするには,図3のようになり,LANC内部ステータス等に変化が発生した場合は図4に示す動作となる。
伝送ラインヘの入出力は,トランスミッタ,レシーバによって,図5に示すような信号パケットが送出される。
(1) 送信制御
このようなフレームを組み立てるためには,伝送パケットのデータを編成し,LANCの送信バッファに待機させる。そして,並/直変換によりトコロテン式に押し出し,一斉にデータを出力させる。ただし,自己アドレスは初期状態にて1回書けば以後は不要である。
(2) 受信制御(図6)
受信データは,いったんLANC受信バッファに蓄えられる。そして,伝送路からリアルタイムに送られてくるデータを,いつでも受信処理可能な状態にするために,割り込みを使って起動をかける。
このLANC受信バッファは,システムの中でも肝心要のポストであり,リアルタイムデータを過酷な条件で確実に受け取らねばならない。このため,常用と予備との2つのLANC受信バッファが用意されており,データの喪失を許さないように設計されている。しかし,それでも万が一取りこぼした場合は,データは捨てられるが,その代わりに送信元アドレスを控えておき,直ちに再送信を要求する。このように最悪の場合でも,データ喪失を避けたいという設計者の意図が,この受信部に盛り込まれている。
図7に示すように,①A端末から送信されたフレームは,相手端末であるC端末において,②アドレスがフィルタリングされ,データが受信される。③次いで受け取った旨をRSP(リスポンス)符号にてA端末に返信する。④A端末ではRSP符号により相手(C端末)がデータを受け取ったことを知る(ここでの受信バッファ,クラスタデータは,メモリを使っている)。
ネットワークでやりとりするデータは,基本的にはブロック単位とし,1ブロック=400バイトで区切り,名前をクラスタと定義した。したがって,メモリもクラスタ単位に仕切り,それぞれ通し番号をつけた(図8)。
今回の製作の目的から,ソフトにどのような機能を持たせるかが重要であった。つまり,レイヤの上位層を意識してつくる教材だけに,内容も必要最小限にとどめ,あくまでもプロトコルの必要性を理解できる教材をつくることに徹した。全体としては,MS-DOSに真似て,Shell,OS,BIOSといった階層構造を取り入れた(図9)。
Shellといえるほどの大規模なものではないが,大きく分けてキー入力コマンド等を判断するコマンドプロセッサと,CRTコンソールとしての役割の2つから構成される(図10)。
その他付属として,マイコンシステム内でのクラスタ間でのデータ転送,およびクラスタバッファの表示機能を組み込んだ。
ここでは,Shellで指示された仕事を,BIOSを使い,送信動作(図11),引き出し動作(図12)等,具体的な実行手順として組み立て,それを実行する。注目すべきプロトコルがこの部分であり,基礎的な通信手段を意識できる重要な機能である。今回はFTPに相当するものを考えてみた。
BIOSはハードウェアを直接制御するプログラムであり,これによって,上位層ではハードウェアを意識する必要がなくなる。ここでは,送信動作(図13)と,受信動作(図14)の2種類から構成されるものとする。
ここで忘れてならないのが,イーサーネット特有の制御方法である“CSMA/CD(Carrier Sense Multiple Access)”である。もともとイーサーネットは1本の線で各端末を接続するバス式ネットであるがゆえに,データ衝突という致命的な欠陥をかかえている。これを防ぐためにデータ送出の交通整理を行うのがCSMA/CDという機能である。
今回のシステムにて早速実験してみたところ,見事に実現ができた。まずCSMAだが,伝送ラインに無限時間信号をのせておき,他の端末から,データを送出しようとすると,出力が阻止されることに気づく(図15)。
次にCDであるが,同時に2端末からデータを送信すると,図16に示すように優先順位が表面化してくる。しかもその受信されたデータは実に無秩序な状態で散乱している。当然,散乱したデータを整理して,各々に区分けしなければならないが,この役目を果たすのが“TCP”であり,これがプロトコルの必要性を説く材料になるかもしれない。
このように,1層2層レベルは,8ビットマシンのレベルであるからこそ実現できる分野であり,あの高価なLANアナライザをもってしても満足には見ることができないだろう。
実験用LANシステム教材は,MAC層(データリンク層),物理層のレベルで実現したが,さらにデータ部にネットアドレスを設け,新たなるIPパケットとしてネットワーク層までの模擬ができないかという意見もあった。しかし今回は時間の関係で無理であったが,もし拡張した場合,可能性としては複数のネット間の接続,そしてそれに関連したルータの必要性についても実験できるはずである。
こうして“TCP/IP”の考え方とその存在価値を強調すれば,実用機(当施設の10BASE実験システム)において,LANアナライザを使う意味も十分みえてくると思う。
今回使った三菱電機製LANコントローラは電気的にこそ8ビットマシンの規格ピッタリであったが,物理的には実に扱いづらい点があった。外形寸法がきわめて小さいため,拡大鏡で見ながら扱い,またハンダやコテも特殊なものを使い,さらにICのピン間に注意しながら,ハンダ付けをせざるを得なかった。これらの作業は,表面実装デバイスの教材への使いにくさを露呈したものだった。
そこで今回は思い切った方法をとった。それはICを基板にセットし,べったりハンダをつける,そして,ハンダ吸い取りスポイトで一気に吸い取る。これは想像以上に速く処理が終わり,その分半導体へのダメージも少ないと思われる。しかも見た目にもきれいで,電気的にも現在のところ問題は起こっていない。
今回の卒業研究を通して私たちは何を学んだのだろうか。ふと感じることは,ネットに手を触れて信号データをこの目で見たということである。日頃ブラックボックス化されている漠然としたネットワークを,ロジックアナライザを使い,実際にパケット符号を論理的に確認することができた。この満足感が,何層にも重なる複雑な制御プロトコルの謎を解くカギになってくれるだろうと確信する。
TCP/IPとイーサーネット,CQ出版.