09.ネットワーク

SNA(Systems Network Architecture )ネットワーク

初期のネットワークシステムにおいては、コンピュータ同様にハードウェアもソフトウェアも個々のシステム毎に設計・開発されていました。IBM社は複雑化する通信処理システムを容易に構築し、効率的に運用するために、この分野にもシステムとしての構成や機能に統一した基準を当てはめました。これがSNAです。富士通ではFNA、日立ではHNAと呼ばれ、細かな実装点には違いがありますが、基本的にはSNAと互換があります。

SNAでは、通信手順としてのプロトコルだけでなく、ネットワークシステムがどのような要素で構成され、それぞれがどのような役割を果たすか、と言ったことまでも含めて体系化されています。SNAでは、ネットワーク内の通信(データリンク層)のプロトコルには主にSDLCが使われます。SDLCはIBM社が開発したもので、後にISO(国際標準化機構)によってHDLCとして標準化されました。FNAやVOS3で使う場合は、HDLCになります。

    LU(Logical Unit)- 論理ユニット

    エンド・ユーザーにネットワーク・サービスを提供する拠点で、ネットワーク構成の中で末端に位置するエンド・ノード。これの実装品が、端末装置です(現在では端末エミュレーター)。いくつかのタイプに分かれ、SNAの元に自由なデータ通信ができるLU0、ディスプレイ端末であるLU2、プリンターであるLU1またはLU3があります。LU1、2、3は3270データストリーム(MSPではF6680、VOS3ではT560/20データストリーム)と呼ばれる規定のプロトコルで制御されます。

    PU(Physical Unit)- 物理ユニット

    ノード内の物理的な装置。いくつかのタイプに分かれ、ホストに従属するLU(0~3)を管理するPU2、ピアツーピア・ネットワークに接続するPU2.1、通信制御装置(CCU,CCP)であるPU4、ホスト・コンピュータであるPU5があります。

    SSCP(System Services Control Point)

    ネットワーク資源の制御と管理、サービスの提供を行います。メインフレーム自身と考えてよいでしょう。1つのSSCP配下に存在するPUおよびLUの全体構成を、ドメインと呼びます。

    VTAM(Virtual Telecommunications Access Method)

    VTAMは、SNAにおけるネットワーク制御と管理およびサービスを提供するSSCPの機能を実装したものです。

    VTAMはSNAにおけるSSCPとして動作し、アプリケーション・プログラムにはネットワークにアクセスするためのAPI(Application Programming Interface)を提供します。また、VTAMは自らのドメインに繋がっているノードだけでなく、他のドメインともネットワークで接続することができます。複数のドメインで構成されたシステムを、クロス・ドメインまたはマルチ・ドメインと呼びます。

    過去のVTAMでは、MVS、MSPおよびVOS3間で相互にクロスドメインを構築することも可能でしたが、現在ではVTAM同士の接続には互換がありません。また、VOS3においてはVTAMもサポートこそされていますが、現在では拡張HNAに対応したXNFと言う独自のネットワーク制御プログラムが主に使われます。XNFとVTAMには互換性はありません。

    VTAMは、主にオンライン・リアルタイム・システムを構築するためのソフトウェアであるIMSやCICS、対話型サービスを提供するTSOなどが、ネットワーク上に接続されている数多くの端末とのトランザクション・データの送受信を行うために使用されます。APIは、アクセス方式として公開されていますから、ユーザー・プログラムでも独自のオンライン・システムを構築することができます。しかしながら、オンラインプログラムは複雑な処理を必要とし、比較的高度なプログラミング技術が要求されることも多く、今日ではユーザー・プログラムから直接利用されることは少なくなりました。

    VTAMは、MVS上で動作するプログラムですが、通信回線そのものや、そこに接続されている数多くの端末(実際には端末制御装置)を、ハード的に監視し制御するわけではありません。MVSにチャネルで接続された、CCUとかCCPと呼ばれる通信制御装置側で行われます。CCUは、それ自体がネットワーク制御専用のコンピュータで、そこで動くソフトウェアが、NCP(Network Control Program)です。

    NCPは、MVS側で定義された各種のネットワーク資源情報に基づきMVSで生成され、VTAMによってCCUへローディングされます。

    富士通では、CCPがさらに発展したSUREシステムと言う独立したネットワーク・コンピューター・システムも使われます。CCPでは、ネットワークがメインフレーム側に繋がると言うイメージですが、SUREの場合は、SUREで構築されたネットワークシステムにMSPが参加すると言うイメージになります。SUREでは、FNA以外のさまざまネットワークもサポートされ、VTAMによるFNAネットワークはその中の1部を構成する形態になります。

    IBMでは、ハードウェアとしてのCCU(通信制御装置、例えばIBM3745)を、z/Linux上でソフトウェアによりエミュレーションする、「Communication Controller for Linux on zSeries」と言う製品を提供しています。

    3270に代表される端末機が、とっくにソフトウェア・エミュレーションに変わったように、メインフレーム側でも今後はSNAネットワークの構築は、ハードウェア主体の方法からソフトウェア・エミュレーションへと変わっていくのでしょう。

    VTAM(SNA)によるネットワークの基本は、主ノードであるメインフレーム(MVS)に、従属ノードであるディスプレイ端末(LU)やプリンター装置を繋ぎ、主ノードの主導権の下で各端末が動作するというものです。メインフレームによる多くのオンライン・リアルタイム・システムは、そのように構築されていました。

    しかしながら、分散型コンピューティングと言う考え方が一般的になってきたとき、従来の主ノード対従属ノードでは対応できなくなってきました。そこで、LU6.2と呼ばれる対等な通信処理を行うためのエンド・ノードが追加されました。これを実装するプロトコルとプログラミング・インタフェースのセットがAPPC(Advanced Program to Program Communication)で、APPCを利用するノード間を対等に接続するための機能がAPPN(Advanced Peer-to-Peer Networking)です。APPCとAPPNで、MVS間のアプリケーション・プログラム同士だけでなく他のシステムでもプログラム間通信が可能です(と言っても同じIBM内だけに限られますが…)。

    なお、LU6.2相当の考え方はMSPとVOS3にはありません。両OSでは、直接通信処理を行うプログラムがユーザー自らによって作成されることは少なく、必要であればMSPにおけるInterstage製品群やISV製品も含めた多くのミドルウェア製品等を利用することで対応されています。

システム内でのVTAMの位置付け

TCP/IPネットワーク

SNA(FNA,HNA)による独自のネットワークを構築してきたメインフレームですが、現在ではTCP/IPも標準で実装され幅広く使われています。FTPによるファイル転送、TELNET(TN3270)によるオンライン端末の接続も一般的になりました。メインフレームにおけるTCP/IPのプロトコル・スタックは、リンク層以下はLAN用の通信制御装置(*1)によって行われ、ネットワーク層以上がMVS内のソフトウェアによって行われます。


*1 MVSではLCS(LAN Channel Station)、OSA(Open System Adapter)、MSPではLANC(LAN Controller)、SURE、VOS3ではLIC(LAN Interface Controller)、ILA(Inter LAN Adapter)が使用される。

メインフレームでのTCPネットワーク

TCP/IPネットワークは、MVSではCommunications ServerのIP機能によって制御され、IPおよびTCP/UDPプロトコル制御、FTPやTELNETなどのアプリケーションまでも含めて提供されます(VTAMは同じくCommunications ServerのSNA機能とされているが、プログラムはTCPIPおよびVTAMとしてそれぞれ別のアドレス空間で起動する)。MSPではVTAM-G TISP、VOS3ではXNF/TCPが提供されています。いずれもアプリケーション層であるFTPやTELNETまで含まれますが、TISPではFTPサーバーを利用するには、DTSと言う別製品を必要とします。

TCP/IPに関しては、VTAMと異なりAPIも含めてMVS、MSPおよびVOS3の3つには全く互換はありません。もちろん、プロトコルは同じですからSNAと異なり相互に接続することは可能です。ただし、ネットワーク・ソフトウェアとしての実装方法は全く異なっています。特に、APIの互換性は皆無です。

MVSのTCP/IPのAPIは非常にわかりやすく、UNIXのバークレー・ソケット(BSDソケット)に準拠しています。非ブロッキングI/Oに関しても同様ですが、MVS独自のWAIT/POSTや非同期割込み出口などもサポートされており柔軟で効率の良いプログラミングが可能です。IPv6やRAWソケットなどもサポートされます。そのため、他のプラットフォームでのTCP/IPプログラミングの経験があれば、その知識や技法をダイレクトに生かすことができます。

一方TISPは、C言語であればSOCKET準拠の関数が利用できますが、COBOLやアセンブラー用のAPIとVOS3のXNF/TCPは全く独自のAPIを持ちます。

また、日本特有のことですが、メインフレームでTCP/IPを使う場合の大きな問題の1つが文字コードの違いです。同じMVS同士、MSP同士、VOS3同士であれば問題はありませんが、メインフレームでも異なるメーカー同士や、WindowsやUNIXなど異なるプラットフォーム間との接続では、データ転送時の文字コードは異なります。したがって、このことをよく理解した上でデータの交換を行う必要があります(FTPのテキスト転送ではメインフレーム側でコード変換を行うのが一般的です)。

TCP/IPに関しては、IBM社のサイトからわかりやすい解説書が提供されています。特にMVSに特化したものではなく、一般的に利用できますから、改めてTCP/IPとはなんだ?と言ったレベルから知りたい方にもお薦めできます。下記のサイト内を「TCP/IP」で検索してみて下さい。
Redbooks 日本語版:TCP/IPチュートリアルおよび技術解説書(GG88-4005-00)