通信装置
【課題】旧通信ミドルウェアから新通信ミドルウェアへの移行を簡易に低コストで実現する。
【解決手段】通信装置は、データを他の通信装置を指定した宛先アドレスを用いてカプセル化して、第1パケットを作成する第1パケット作成部と、第1パケットを用いて所定の処理を実行する処理部と、第1パケットを当該宛先アドレスを用いて再びカプセル化して、第2パケットを作成する第2パケット作成部と、第2パケットを当該他の通信装置へ送信する送信部を有する。
【解決手段】通信装置は、データを他の通信装置を指定した宛先アドレスを用いてカプセル化して、第1パケットを作成する第1パケット作成部と、第1パケットを用いて所定の処理を実行する処理部と、第1パケットを当該宛先アドレスを用いて再びカプセル化して、第2パケットを作成する第2パケット作成部と、第2パケットを当該他の通信装置へ送信する送信部を有する。
【発明の詳細な説明】
【技術分野】
【0001】
通信装置が備える通信ミドルウェアに関する。
【背景技術】
【0002】
鉄道の運行管理システムや金融システムは、そのシステムの立ち上げ当初は小規模であっても、システム拡張や他システムとの統合等により、大規模化かつ複雑化していくことが多い。そして、システムを構成する装置の高性能化や技術の進歩に合わせてシステムを更新する(以降、「新システムに移行する」または「システム移行する」とも表現する)場合には、それらのシステム規模が大きくなるに従って修正箇所が多岐にわたるため、開発コストが膨大となる。
【0003】
ここで、システム移行(特に、通信ミドルウェアの変更)における一般的な問題について、図19を用いて説明する。
【0004】
図19は、旧システムの通信装置1901から、新システムの通信装置1906にシステム移行を行うケースを示している。旧システムの通信装置1901に示すような構成は、一般的なものである。すなわち、様々なサービスを提供する通信アプリケーション1902が、システム固有の通信基盤である旧通信ミドルウェア1903上で動作する。そして、通信アプリケーション1902が動作してデータを通信相手に送信する際には、その下位の階層に位置する旧通信ミドルウェア1903およびプロトコルスタック1904(TCP(Transmission Control Protocol)、IP(Internet Protocol)等のプロトコル群)を用いて、通信I/F(Interface)1905を介して、ネットワークにパケットを送出する。
ここで、旧システムから新システムへシステム移行し、通信ミドルウェアを旧通信ミドルウェア1903から新通信ミドルウェア1907に切り替える場合を考えてみる。
【0005】
システム規模が小さい間は、通信ミドルウェアを変更するとともに通信アプリケーション1902を新しいものに切り替えることが一般的である。しかし、システム規模が大きい場合、通信アプリケーション1902の開発コストが膨大なものとなってしまう。そのため、開発コストを抑えるために、旧システムの通信アプリケーション1902を新システムの通信装置1906でも流用することが望まれる。
【0006】
前記したように、旧システムの通信アプリケーション1902は、旧通信ミドルウェア1903上で動作することを前提に開発されている。そこで、システム移行した場合には、図19の下段に示すように、通信アプリケーション1902を新システムの新通信ミドルウェア1908上で動作させるために、旧通信ミドルウェア1903と新通信ミドルウェア1908との差異を補う新旧ミドル変換部1908を設ける必要がある。
【0007】
大規模システムにおいては、通信アプリケーション1902をすべて作り替えるよりは、新旧ミドル変換部1908を新規に開発する方が開発コストは少なくてすむ。しかしながら、それでも、新旧ミドル変換部1908の開発コストは、依然として大きい。例えば、新旧ミドル変換部1908は、少なくとも、(1)通信アプリケーション1902とのI/F(Interface)部分、(2)新通信ミドルウェア1908とのI/F部分、(3)旧通信ミドルウェア1903および新通信ミドルウェア1908それぞれの内部の挙動(タイムアウトの条件等)を模擬する部分、についての機能を必要とする。特に、前記(3)の開発を行うためには、旧通信ミドルウェア1903および新通信ミドルウェア1908の内部の動作を詳細まで熟知している必要があるため、多大な時間を費やすことになるので、通信アプリケーション1902のプログラムの再利用性の観点から効率が悪い。
【0008】
前記問題を解決するために、例えば、特許文献1では、旧システムの通信装置とネットワークとの間に、旧システムの通信装置から送信されるパケットをカプセル化するカプセル化装置(トンネリング装置)を設ける。そして、カプセル化装置は、カプセル化した各パケットを、新システムの新通信ミドルウェア経由でネットワークに送信する。また、カプセル化装置は、ネットワークから受信したカプセル化されたパケットをデカプセル化して、旧システムのパケットを抽出し、旧システムの通信装置に送信する。
【0009】
また、例えば、非特許文献1では、仮想Ethernet I/F(Ethernetは登録商標)を通信装置自身に備え、通信装置単体で旧システムのパケットをカプセル化する技術が公開されている。具体的には、その通信装置は、仮想Ethernet I/Fに新たなIPアドレスを割り当てて、すべての通信が仮想Ethernet I/Fを経由するようにルーティングテーブル等の設定を行う。そして、通信装置は、旧システムのパケット(Ethernetフレーム)を仮想Ethernet I/Fを介してカプセル化して新通信ミドルウェアに渡すことで、新システムのパケットを送信することができるようになる。
【0010】
このように、特許文献1や非特許文献1に記載の技術では、新規に開発する対象が、新通信ミドルウェア経由で受信した旧システムのパケット(Ethernetフレーム)を旧システムに渡す部分(前記(1)の部分)、およびパケット(Ethernetフレーム)を新通信ミドルウェアに渡す部分(前記(2)の部分)のみとなる。そのため、旧通信ミドルウェアと新通信ミドルウェアを相互変換する新旧ミドル変換部2107を開発する場合に比べて、技術難易度も低く、開発コストも大幅に削減することが可能となる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2008−078966号公報
【非特許文献】
【0012】
【非特許文献1】登大遊、“SoftEther の内部構造”、[online]、[平成22年9月7日検索]、インターネット<URL:http://www.softether.co.jp/jp/company/media/ academic/data/softetherpaper002.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0013】
背景技術に記載したように、特許文献1に開示されている技術では、旧システムのシステム設定(IPアドレス等)は全く変更せずに、カプセル化装置を設置するだけで新システムへの移行が可能となる。しかしながら、カプセル化装置が通信装置の台数分だけ必要となり、ハードウェアコストが膨大になるという問題が生じる。
【0014】
また、非特許文献1に開示されている技術では、通信装置単体で新システムへの移行が可能であるため、追加のハードウェアコストは不要となる。しかし、仮想Ethernet I/Fは、OSからは物理Ethernet I/Fと同じように認識されるため、物理Ethernet I/Fと異なるIPアドレスを設定する必要がある。したがって、旧システムのシステム設定変更や、新システム設計時にIPアドレスの制約を考慮しなければならない(旧システムのIPアドレスと重複してはいけない等)といった手間が生じる。
【0015】
また、システム移行リスクを小さくするために、一気に全通信装置を新装置に切替えるのではなく、一定期間をかけて数台ずつ段階的に切替える方法を取ることもある。その場合、完全に移行が完了するまでは、同一ネットワーク上に、旧システムのIPアドレスのパケットと新システムのIPアドレスのパケットが混在することになり、一般的なルータやスイッチでは対応できない可能性がある。このような単一ネットワーク上に複数のIPアドレスが混在する問題は、特許文献1や非特許文献1では解決することができない。
【0016】
従ってIPアドレスの変更やハードウェアの追加なしに、旧通信ミドルウェアを介して情報を送受信する通信アプリケーションが、新通信ミドルウェアを介してでも情報を送受信できるようにする技術が求められている。
【課題を解決するための手段】
【0017】
通信装置は、データを他の通信装置を指定した宛先アドレスを用いてカプセル化して、第1パケットを作成する第1パケット作成部と、第1パケットを用いて所定の処理を実行する処理部と、第1パケットを当該宛先アドレスを用いて再びカプセル化して、第2パケットを作成する第2パケット作成部と、第2パケットを当該他の通信装置へ送信する送信部を有する。
【発明の効果】
【0018】
IPアドレスの変更やハードウェアの追加無く、旧通信ミドルウェアを介してデータを送受信する通信アプリケーションが、新通信ミドルウェアを介してでもデータを送受信できるようになる。
【図面の簡単な説明】
【0019】
【図1】通信装置の機能ブロック構成の一例を示す図である。
【図2】カプセル化処理部105の機能ブロック構成の一例を示す図である。
【図3】通信装置のハードウェア構成の一例を示す図である。
【図4】接続先アドレス、ポートに対応する通信プロトコルを管理するテーブルの一例を示す図である。
【図5】Ethernetフレームの一例を示す図である。
【図6】通信情報対応テーブルの一例を示す図である。
【図7】新装置が新装置にデータを送信する場合の通信フローの一例を示す図である。
【図8】新装置が旧装置にデータ送信する場合の通信フローの一例を示す図である。
【図9】旧装置が新装置にデータ送信する場合の通信フローの一例を示す図である。
【図10】RAW受信部が実行する処理の一例を示すフローチャートである。
【図11】ミドル受信部が実行する処理の一例を示すフローチャートである。
【図12】カプセル化判定部が実行する処理の一例を示すフローチャートである。
【図13】RAW送信部が実行する処理の一例を示すフローチャートである。
【図14】ミドル送信部が実行する処理の一例を示すフローチャートである。
【図15】RAW受信部が実行する処理の一例を示すフローチャートである。
【図16】ミドル受信部が実行する処理の一例を示すフローチャートである。
【図17】RAW送信部が実行する処理の一例を示すフローチャートである。
【図18】通信装置の機能ブロック構成の一例を示す図である。
【図19】システム移行の一例を示す図である。
【発明を実施するための形態】
【実施例1】
【0020】
実施形態の一例(以降、「本実施形態」と称す。)について、適宜図面を参照しながら詳細に説明する。
<第1実施形態>
第1実施形態では、システム移行にともなって、システム内の複数の通信装置の一部に、旧通信ミドルウェアに加え新通信ミドルウエアが実装された場合について説明する。なお、ここではカプセル化対象のパケットは、OSIモデルで言うところのレイヤ2であるEthernetフレームを想定する。
(通信装置の機能)
本実施形態における通信装置の機能について、図1を用いて説明する。
【0021】
図1に示すように、本実施形態における通信装置101は、互いに、ネットワーク102を介して通信できるように接続されている。なお、ネットワーク102は、IP網として説明するが、これに限られることはない。また、通信に用いる信号は、例えば、電気、光、電波、音等のいずれかまたはそれらの組み合わせであっても構わない。
【0022】
通信装置101は、通信アプリケーション実行部103、第1通信ミドルウェア実行部104、カプセル化処理部105、第2通信ミドルウェア実行部106、プロトコルスタック107、仮想通信I/F(Interface)108、通信I/F109、プロトコル管理テーブル110、および通信情報対応テーブル112を備えている。通信アプリケーション実行部103は、種々のサービスを他の通信装置に提供したり、他の通信装置に対して種々のサービスを要求したりする通信アプリケーションプログラムを実行する。
【0023】
なお、通信アプリケーション実行部103において実行される通信アプリケーションプログラム(以降の説明では、APPとも称する。)は、図19に示した通信アプリケーション1902に相当し、第1通信ミドルウェア実行部104において実行される第1通信ミドルウェア(システム移行前の旧通信ミドルウェア)上で動作する。
【0024】
第1通信ミドルウェア実行部104は、複数のAPPが実行されるときに、共通に使用される機能を提供するプログラムを実行する。例えば、当該プログラムは、ソケットI/Fを備えており、一般的に、認証や暗号化等のセキュリティ機能や、ソケットの初期化や終了処理等の複雑な通信処理機能等を有している。なお、第1通信ミドルウェア実行部104において実行されるプログラムは、旧通信プロトコルを用いるものであって、図19に示した旧通信ミドルウェア1903に相当する。
【0025】
カプセル化処理部105は、仮想通信I/F108から受け取った送信パケット(以降、フレーム、Ethernetフレームとも呼ぶ)をチェックし、カプセル化が必要なカプセル化対象のパケットである場合は第2通信ミドルウェア実行部106に渡し、カプセル化の必要がないカプセル化対象外のパケットである場合はそのまま通信I/F109経由で送信する。また、通信I/F109や第2通信ミドルウェア実行部106から受け取った受信パケットを、仮想通信I/F108に渡す。カプセル化処理部105の詳細構成については図2で説明する。
【0026】
第2通信ミドルウェア実行部106は、複数のAPPが実行されるときに、共通に使用される機能を提供するプログラムを実行する。例えば、当該プログラムは、ソケットI/Fを備えており、一般的に、認証や暗号化等のセキュリティ機能や、ソケットの初期化や終了処理等の複雑な通信処理機能等を有している。なお、第2通信ミドルウェア実行部106において実行されるプログラムは、新通信プロトコルを用いるものであって、図19に示した新通信ミドルウェア1908に相当し、第2通信ミドルウェア実行部106は第1通信ミドルウェア実行部104とは異なる通信プロトコル処理を実行する。
【0027】
プロトコルスタック107は、プロトコル処理を行うプログラム群(例えば、TCP、UDP(User Datagram Protocol)、IP等)である。プロトコルスタック107は、第1通信ミドルウェア実行部104および第2通信ミドルウェア実行部106との間で、ソケットI/Fを介して送受信情報を受け渡すことができる。
【0028】
仮想通信I/F108は、通信I/F機能をソフトウェアで模擬した仮想的な通信I/Fであり、OS(Operating System)からは通常の通信I/F(通信I/F109等)と等価に扱われる。ただし、通常の通信I/Fが特定の通信用ハードウェア(例えば、Ethernetコントローラチップなど)と関連づけられて、そのハードウェアと送受信パケットの受け渡しを行うのに対し、仮想通信I/F108は特定のプログラムと関連づけられ、そのプログラムと送受信パケットの受け渡しを行う。本実施例では、仮想通信I/F108は、カプセル化処理部105と関連づけられ、プロトコルスタック107から渡された送信パケット(Ethernetフレーム)をカプセル化処理105に渡す。また、カプセル化処理部105から渡されたデータを受信パケット(Ethernetフレーム)とみなしてプロトコルスタック107に渡す。
【0029】
通信I/F109は、カプセル化処理部105から渡された送信パケット(Ethernetフレーム)に対し、チェックサム計算など送信に必要な処理を行い、関連づけられているハードウェア経由でネットワーク102に送信する。また、ネットワーク102から受信したパケット(Ethernetフレーム)をカプセル化処理部105に渡す。
【0030】
なお、前述したように、仮想通信I/F108および通信I/F109はOSから見たら等価に扱われるが、本実施例ではIPアドレスを仮想通信I/F108のみに割り当て、通信I/F109にはIPアドレスを割り当てない。これにより、プロトコルスタック107からは唯一の通信I/Fとして仮想通信I/F108だけが認識されるようになり、通信I/F109は、ネットワーク102とカプセル化処理部105との間でEthernetフレームを転送する機能だけを提供するようになる。
【0031】
プロトコル管理テーブル110、通信情報対応テーブル112は、カプセル化処理部105で参照される情報である。詳細については後段にて説明する。
(カプセル化処理部の詳細)
次に、カプセル化処理部105の詳細構成について図2を用いて説明する。
【0032】
カプセル化処理部105は、RAW受信部201、ミドル受信部202、カプセル化判定部203、RAW送信部204、ミドル送信部205から構成されている。
【0033】
RAW受信部201は、ネットワーク102経由で通信I/F109に到着した受信パケット(Ethernetフレーム)を通信I/F109からRAW受信で受け取り、そのEthernetフレームをそのまま仮想通信I/F108に渡す処理を行う。RAW受信部201の処理の詳細は図10に示す。
【0034】
ミドル受信部202は、第2通信ミドルウェア実行部から渡されたアプリケーションデータ(デカプセル化されたEthernetフレーム)を、そのまま仮想通信I/F108に渡す処理を行う。ミドル受信部202の処理の詳細は図11に示す。
【0035】
カプセル化判定部203は、仮想通信I/F108から受信したパケットをチェックして、カプセル化すべきパケットである場合には、ミドル送信部205に渡し、カプセル化不要なパケットである場合にはRAW送信部204に渡す。カプセル化判定部203の処理の詳細は、図12に示す。
【0036】
ミドル送信部205はカプセル化判定部203から受け取ったパケットに後述のヘッダを付与して第2通信ミドルウエア実行部106に渡す。ミドル送信部205の処理の詳細は図14に示す。
【0037】
RAW送信部204はカプセル化判定部203から受け取ったパケットを通信I/F109に渡す。RAW送信部204の処理の詳細は図13に示す。
(通信装置のハードウェア構成)
次に、通信装置101のハードウェア構成について、図3を用いて説明する(適宜、図1参照)。
【0038】
通信装置101は、各種処理を行うホストCPU(Central Processing Unit)301、ホストメモリ302、周辺I/F303、記憶装置304、通信I/F305、およびバス307から構成される。そして、ホストCPU301、ホストメモリ302、周辺I/F310、記憶装置304、および通信I/F305は、バス307を介して通信可能に接続されている。
【0039】
ホストCPU301は、プログラムを実行するプロセッサである。
【0040】
ホストメモリ302は、ホストCPU301がプログラムを実行する際に、ワーキングメモリおよび入出力データの一時バッファとして用いられる。
【0041】
周辺I/F303は、マウス、キーボード、モニタ等の入出力装置や、USB(Universal Serial Bus)メモリ等の外部ストレージ等の各種周辺機器、と接続するためのインタフェースである。
【0042】
記憶装置304は、磁気ディスク装置、フラッシュROM(Read Only Memory)等から構成され、OS、各種ドライバ、各種アプリケーションプログラムや、プログラムで使用される各種情報(例えば、管理者または保守者によって設定される情報等)を格納している。
【0043】
通信I/F305は、通信装置101がネットワーク102を介して他の通信装置101と通信を行う際のインタフェースを提供する。通信I/F305は、例えば、NIC(Network Interface Card)であっても良い。
【0044】
なお、図3では、通信I/F305は、1つしか記載していないが、2つ以上であっても構わない。
【0045】
図1に示した通信アプリケーション実行部103、第1通信ミドルウェア実行部104、カプセル化処理部105、第2通信ミドルウェア実行部106、プロトコルスタック107、仮想通信I/F108、通信I/F109は各々、記憶装置304に格納されたプログラムがホストメモリ302に読み込まれてホストCPU301によって実行されることにより、構成される機能要素である。尚、図1に示した通信I/F109の機能は図3に示す通信I/F305上に実装される。また、図1に示したプロトコル管理テーブル110、通信情報対象テーブル112は記憶装置304に格納されている。
(プロトコル管理テーブル)
プロトコル管理テーブル110に格納される情報について、図4を用いて説明する(適宜、図1参照)。
【0046】
プロトコル管理テーブル110は、パケットを送信する際の、パケット種別410、IPアドレス401、ポート番号402、プロトコル403を格納している。プロトコル管理テーブル110は、カプセル化判定部203が仮想通信I/F108から送信パケットを受け取ったときに、その送信パケットをカプセル化すべきか否か判断する際に用いられる。なお、本テーブルの情報は、通信装置101の管理者または保守者等によって予め設定されてもよいし、各装置と個別にプロトコル情報をやりとりするプログラムによって設定されてもよいし、全装置のプロトコル情報をまとめて管理しているサーバに問い合わせて設定してもよい。
【0047】
パケット種別410の列はパケットの種別を格納している領域であり、パケット種別の例としては、IPパケットであることを示すIP、ARP(Address Resolution Protocol)パケットであることを示すARP等がある。
【0048】
IPアドレス401の列は、パケットの送信先の通信装置101を識別するIPアドレスを格納している領域である。
【0049】
ポート番号402の列は、パケットの宛先ポート番号を格納している領域である。ポート番号は一般に、通信サービス(FTP(File Transfer Protocol)、HTTP(HyperText Transfer Protocol)等)を識別するのに用いられ、送信先が同じ通信装置101であっても、異なるポート番号を用いることによって、通信サービスの種別を変更することができる。本実施形態では、ポート番号はパケットの宛先通信ミドルウェアを特定するのに用いられる。
【0050】
プロトコル403の列は、当該パケットに施す処理の種類を示す情報を格納している領域である。プロトコル名が指定されている場合(プロトコルA、プロトコルB等)は当該プロトコルを用いたパケットのカプセル化が必要であることを意味し、「RAW送信」が指定されている場合にはパケットをそのまま送信することを意味している。
【0051】
図4において、例えば、行404は、IPパケットを用いて、IPアドレスが192.168.0.1の通信装置と、ポート番号80番で指定される当該通信装置の通信ミドルウェアで通信を行う場合、カプセル化を行わずにそのままパケットを送信(RAW送信)することを表している。他方行405は、IPパケットを用いて、IPアドレスが192.168.0.1の通信装置(即ち同じ通信装置)と、ポート番号23番で指定される当該通信装置の通信ミドルウェアで通信を行う場合、プロトコルAを用いたパケットのカプセル化が必要であることを表している。また行408は、ARPパケットはそのアドレスに関わらずカプセル化を行わずそのまま送信することを表している。
【0052】
なお、図4では、プロトコル403には、3種類のプロトコル(RAW送信、プロトコルA、プロトコルB)を記載しているが、1種類であっても、3種類以上であっても構わない。また、ポート番号402に記載されている*印は、任意のポート番号で構わないことを表している。
(通信情報対応テーブル)
次に、通信情報対応テーブル112に格納される情報について、図6を用いて説明する。
【0053】
通信情報対応テーブル112は、第1通信ミドルウェアの通信情報601と、第2通信ミドルウェアの通信情報602を格納している。そして、通信情報対応テーブル112は、ミドル送信部205がカプセル化判定部203から送信パケットを受け取ったときに、送信パケットに含まれる送信先通信装置の第1通信ミドルウェアの通信情報から、それに対応する送信先通信装置の第2通信ミドルウェアの通信情報を取得するために用いられる。
【0054】
図6において、例えば行603では、送信パケットに含まれる第1通信ミドルウェアの通信情報が、IPアドレスがIP_A、ポート番号がB、サービスIDがCの場合、第2通信ミドルウェアを用いて送信するために必要な第2通信ミドルウェアの通信情報が、IPアドレスがIP_A、ポート番号がb、サービスIDがcであることを表している。ここで、IPアドレスは送信先通信装置の仮想通信I/Fに割り当てられているアドレスであるから、第1通信ミドルウェアでも第2通信ミドルウェアでも同じ値となるが、ポート番号は通信ミドルウェアを一意に特定するのに用いられるため、異なる値となる。またサービスIDは、送信先の通信ミドルウェアが送信パケットをどこに引き渡すかを示すIDであり、本実施形態の場合にはポート番号が第1通信ミドルウェアを示している場合にはサービスIDは通信アプリケーション実行部を、ポート番号が第2通信ミドルウェアを示している場合にはサービスIDはカプセル化処理部を示す。しかしながら必ずしもこれに限られるものではい。例えば第2通信ミドルウェアがカプセル化処理部を介さずに通信アプリケーション実行部と通信する場合には、ポート番号が第2通信ミドルウェアを示している場合にサービスIDは当該通信アプリケーション実行部を示す。
【0055】
なお、ここでは通信情報の例としてIPアドレスやポート番号を挙げているが、これに限るものではなく、第1通信ミドルウェアと第2通信ミドルウェアの対応が分かる情報であれば良い。
(新装置から新装置へのデータ送信時のカプセル化通信処理シーケンス)
次に、新システムに移行後の通信装置A101aから新システムに移行後の通信装置B101bにデータを送信する際のカプセル化通信処理シーケンスを、図5と図7を用いて説明する。ここで、通信装置A101aおよび通信装置B101bは共に第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106を有している。
【0056】
まず、通信装置A101aの通信アプリケーション実行部103aが、第1通信ミドルウェア実行部104aにアプリケーションデータ501を渡す。この際、通信アプリケーション実行部103aは、送信先の第1通信ミドルウェア実行部104bを指定するための情報(通信装置B101bのIPアドレス、第1通信ミドルウェア実行部104bのポート番号を含む、図6の第一ミドルの通信情報601に相当する情報)を一緒に第1通信ミドルウェア実行部104aに渡す。
【0057】
次に、第1通信ミドルウェア実行部104aは、受け取った送信先の第1通信ミドルウェア実行部104bを指定するための情報を第1ヘッダとして受け取ったアプリケーションデータ501に付与し、これをアプリケーションデータ502としてプロトコルスタック107aに渡す。この際、第1通信ミドルウェア実行部104aは通信装置B101bのIPアドレスと第1通信ミドルウェア実行部104bのポート番号をプロトコルスタックに指定する。
【0058】
次に、プロトコルスタック107aは、受け取った通信装置B101bのIPアドレスをIPヘッダ(第1IPヘッダ)として、ポート番号をTCPヘッダ(第1TCPヘッダ)として受け取ったアプリケーションデータ502に付与し、さらにパケットの送信先MACアドレス(第1MAC)も付与して送信用のパケット(Ethernetフレーム)503を生成する。この送信用パケット503をプロトコルスタック107aは仮想通信I/F108aに渡す。
【0059】
次に、仮想通信I/F108aは、受け取った送信用のパケット503をそのままカプセル化処理部105aに渡す。
【0060】
次に、カプセル化処理部105aは、送信パケット503のIPヘッダ(第1IPヘッダ)及びTCPヘッダ(第1TCPヘッダ)に含まれる宛先情報(通信装置B101bのIPアドレスおよび第1通信ミドルウェア実行部104bを指定するポート番号)を用いてプロトコル管理テーブル110を参照し、当該送信パケットに対してカプセル化を行うか否かを判断する。
【0061】
通信相手が第2通信ミドルウェア実行部106を有する(即ち新通信ミドルウェアを有する)通信装置であって、送信パケットの宛先ポート番号が第1通信ミドルウェアを示す場合、プロトコル管理テーブル110のプロトコル欄403には当該送信パケットをカプセル化するためのプロトコルが指定されている。従って、カプセル化処理部105aはカプセル化を行うと判断し、第2通信ミドルウェア実行部106aに仮想通信I/F108aから受信した送信用パケット503をアプリケーションデータ503として渡す。この際カプセル化処理部105aは、通信情報対応テーブル112を参照して送信先の第2通信ミドルウェア実行部106bを指定するための情報(通信装置B101bのIPアドレス、第2通信ミドルウェア実行部106bのポート番号を含む、図6の第2ミドルの通信情報602に相当する情報)を取得し、これを一緒に第2通信ミドルウェア実行部106aに渡す。
【0062】
次に、第2通信ミドルウェア実行部106aは、受け取った送信先の第2通信ミドルウェア実行部106bを指定するための情報を第2ヘッダとして受け取ったアプリケーションデータ503に付与し、これをアプリケーションデータ504としてプロトコルスタック107aに渡す。この際、第2通信ミドルウェア実行部106aは通信装置B101bのIPアドレスと第2通信ミドルウェア実行部106bのポート番号をプロトコルスタックに指定する。
【0063】
次に、プロトコルスタック107aは、受け取った通信装置B101bのIPアドレスをIPヘッダ(第2IPヘッダ)として、ポート番号をTCPヘッダ(第2TCPヘッダ)として受け取ったアプリケーションデータ504に付与し、さらにパケットの送信先MACアドレス(第2MAC)も付与して送信用のパケット(カプセル化済み)505を生成し、仮想通信I/F108aに生成したパケットを渡す。尚、ここでプロトコルスタック107aがアプリケーションデータ504にIPヘッダ(第2IPヘッダ)として付与したIPアドレスは、送信先通信装置B101bの仮想通信I/Fに割り当てられたIPアドレスであり、先にプロトコルスタック107aがアプリケーションデータ502にIPヘッダ(第1IPヘッダ)として付与したIPアドレスと同じものである。
【0064】
次に、仮想通信I/F108aは、送信用のパケット505をそのままカプセル化処理部105aに渡す。
【0065】
次に、カプセル化処理部105aは、受け取った送信用パケット505のIPヘッダ(第2IPヘッダ)及びTCPヘッダ(第2TCPヘッダ)に含まれる宛先情報(通信装置B101bのIPアドレスおよび第2通信ミドルウェア実行部106bを指定するポート番号)を用いてプロトコル管理テーブル110を参照し、当該送信パケット505に対してカプセル化を行うか否かを判断する。
【0066】
通信相手が第2通信ミドルウェア実行部106を有する(即ち新通信ミドルウェアを有する)通信装置であって、TCPヘッダに格納された宛先ポート番号が第2通信ミドルウェアを示す場合、プロトコル管理テーブル110のプロトコル欄403には当該送信パケットをカプセルせずにそのまま送信するよう指定されている。従って、カプセル化処理部105aはカプセル化不要と判断し、送信用パケット505をそのまま通信I/F109aに渡す。
【0067】
次に、通信I/F109aは、送信用パケット505をネットワーク経由で通信装置B101bの通信I/F109bに送信する。
【0068】
次に、通信装置B101bの通信I/F109bは、ネットワークからパケット505を受信し、その受信パケットをそのままカプセル化処理部105bに渡す。
【0069】
次に、カプセル化処理部105bは、受信パケット505をそのまま仮想通信I/F108bに渡す。
【0070】
次に、仮想通信I/F108bは、受信パケット505をプロトコルスタック107bに渡す。
【0071】
次に、プロトコルスタック107bは、受信パケット505に対してプロトコル処理を行い、受信パケット505のアプリケーションデータ部分504を取り出す。そして、受信パケット505のTCPヘッダ(第2TCPヘッダ)による指定に従って、取り出したアプリケーションデータ部分504を第2通信ミドルウェア実行部106bに渡す。
【0072】
次に、第2通信ミドルウェア実行部106bは、受け取ったアプリケーションデータ504から第2ヘッダを外して、残りの部分503をカプセル化処理部105bに渡す。
【0073】
次に、カプセル化処理部105bは、受け取ったパケット503を仮想通信I/F108bに渡す。
【0074】
次に、仮想通信I/F108bは、受け取ったパケット503をプロトコルスタック107bに渡す。
【0075】
次に、プロトコルスタック107bは、受け取ったパケット503に対しプロトコル処理を行い、パケット503のアプリケーションデータ部分502を取り出して、これをパケット503のTCPヘッダ(第1TCPヘッダ)に従って第1通信ミドルウェア実行部104bに渡す。
【0076】
次に、第1通信ミドルウェア実行部104bは、受け取ったアプリケーションデータ502から第1ヘッダを外して、通信アプリケーション実行部103bに渡す。
(新装置から旧装置へのデータ送信時の非カプセル化通信処理シーケンス)
次に、新システムに移行後の通信装置C101cから、旧システムの通信装置D801dにデータを送信する際の非カプセル化通信処理シーケンスを、図5と図8を用いて説明する。ここで、通信装置C101cは第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106を有しており、通信装置D101dは第1通信ミドルウェア実行部104は有するが第2通信ミドルウェア実行部106は有していない。
【0077】
まず、通信装置C101cの通信アプリケーション実行部103cが、第1通信ミドルウェア実行部104cにアプリケーションデータ501を渡す。この際、通信アプリケーション実行部103cは、送信先の第1通信ミドルウェア実行部104dを指定するための情報(通信装置D101dのIPアドレス、第1通信ミドルウェア実行部104dのポート番号を含む、図6の第一ミドルの通信情報601に相当する情報)を一緒に第1通信ミドルウェア実行部104cに渡す。
【0078】
次に、第1通信ミドルウェア実行部104cは、受け取った送信先の第1通信ミドルウェア実行部104dを指定するための情報を第1ヘッダとして受け取ったアプリケーションデータ501に付与し、これをアプリケーションデータ502としてプロトコルスタック107cに渡す。この際、第1通信ミドルウェア実行部104cは通信装置D101dのIPアドレスと第1通信ミドルウェア実行部104dのポート番号をプロトコルスタックに指定する。
【0079】
次に、プロトコルスタック107cは、受け取った通信装置D101dのIPアドレスをIPヘッダ(第1IPヘッダ)として、ポート番号をTCPヘッダ(第1TCPヘッダ)として受け取ったアプリケーションデータ502に付与し、さらにパケットの送信先MACアドレス(第1MAC)も付与して送信用のパケット(Ethernetフレーム)503を生成し、仮想通信I/F108cに生成したパケットを渡す。
【0080】
次に、仮想通信I/F108cは、送信用のパケット503をそのままカプセル化処理部105cに渡す。 次に、カプセル化処理部105cは、送信パケット503のIPヘッダ(第1IPヘッダ)及びTCPヘッダ(第1TCPヘッダ)に含まれる宛先情報(通信装置D101dのIPアドレスおよび第1通信ミドルウェア実行部104dを指定するポート番号)を用いてプロトコル管理テーブル110を参照し、当該送信パケットに対してカプセル化を行うか否かを判断する。通信相手が第2通信ミドルウェア実行部106を有していない通信装置である場合、プロトコル管理テーブル110のプロトコル欄403には、当該送信パケットをカプセル化せずそのまま送信(RAW送信)するよう指定されている。従って、カプセル化処理部105cはカプセル化処理を行わないと判断し、送信用パケット503をそのまま通信I/F109cに渡す。 次に、通信I/F109cは、送信用パケット503をネットワーク経由で通信装置D801dの通信I/F109dに送信する。
【0081】
次に、通信装置D801dの通信I/F109dは、ネットワークからパケット503を受信し、その受信パケットをプロトコルスタック107dに渡す。
【0082】
次に、プロトコルスタック107dは、受け取ったパケットに対しプロトコル処理を行い、パケットのアプリケーションデータ502部分を取り出して、このアプリケーションデータ502をパケット503のTCPヘッダ(第1TCPヘッダ)の指定に従って第1通信ミドルウェア実行部104dに渡す。
【0083】
次に、第1通信ミドルウェア実行部104dは、受け取ったアプリケーションデータ502から第1ヘッダを外して、残りの部分501を通信アプリケーション実行部103dに渡す。
(旧装置から新装置へのデータ送信時の非カプセル化通信処理シーケンス)
次に、旧システムの通信装置E801eから、新システムに移行後の通信装置F101fにデータを送信する際の非カプセル化通信処理シーケンスを、図5と図9を用いて説明する。ここで、通信装置E101eは第1通信ミドルウェア実行部104は有するが第2通信ミドルウェア実行部106は有しておらず、通信装置F101fは第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106を有する通信装置である。
【0084】
まず、通信装置E801eの通信アプリケーション実行部103eが、第1通信ミドルウェア実行部104eにアプリケーションデータ501を渡す。この際、通信アプリケーション実行部103eは、送信先の第1通信ミドルウェア実行部104fを指定するための情報(通信装置F101fのIPアドレス、第1通信ミドルウェア実行部104fのポート番号を含む、図6の第一ミドルの通信情報601に相当する情報)を一緒に第1通信ミドルウェア実行部104fに渡す。
【0085】
次に、第1通信ミドルウェア実行部104eは、受け取った送信先の第1通信ミドルウェア実行部104fを指定するための情報を第1ヘッダとして受け取ったアプリケーションデータ501に付与し、これをアプリケーションデータ502としてプロトコルスタック107eに渡す。この際、第1通信ミドルウェア実行部104eは通信装置F101fのIPアドレスと第1通信ミドルウェア実行部104fのポート番号をプロトコルスタックに指定する。
【0086】
次に、プロトコルスタック107eは、受け取った通信装置F101fのIPアドレスをIPヘッダ(第1IPヘッダ)として、ポート番号をTCPヘッダ(第1TCPヘッダ)として受け取ったアプリケーションデータ502に付与し、さらにパケットの送信先MACアドレス(第1MAC)も付与して送信用のパケット(Ethernetフレーム)503を生成し、通信I/F109eに生成したパケット503を渡す。
【0087】
次に、通信I/F109eは、送信用パケット503をネットワーク経由で通信装置F101fの通信I/F109fに送信する。
【0088】
次に、通信装置F801fの通信I/F109fは、ネットワークからパケット503を受信し、その受信パケットをそのままカプセル化処理部105fに渡す。 次に、カプセル化処理部105fは、受信パケット503をそのまま仮想通信I/F108fに渡す。
【0089】
次に、仮想通信I/F108fは、受信パケット503をプロトコルスタック107fに渡す。
【0090】
次に、プロトコルスタック107fは、受信パケット503に対してプロトコル処理を行い、受信パケットのアプリケーションデータ部分502を取り出して、受信パケット503の第1TCPヘッダの指定に従ってこのアプリケーションデータ部分502を第1通信ミドルウェア実行部104fに渡す。
【0091】
次に、第1通信ミドルウェア実行部104fは、受け取ったアプリケーションデータ502から第1ヘッダを外して、残りの部分501を通信アプリケーション実行部103fに渡す。
【0092】
図7から図9に示すパケットの送受信処理においては、受信側通信装置及び送信側通信装置が第2通信ミドルウェア実行部106を有する新システムへの移行後の通信装置であるか否かに関わらず、IPヘッダには仮想通信I/Fに割り当てられたIPアドレスが用いられている。即ち、本実施形態においては、新システムへの移行に伴いIPアドレスを変更する必要はなく、従前のIPアドレスを使い続けてもパケットの送受信が可能であることが分かる。
(第1の実施形態におけるRAW受信部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のRAW受信部201が実行する、パケット受信時の処理フローを、図10を用いて説明する。
【0093】
ステップ1001でRAW受信部201は、通信I/F109から受信パケット(Ethernetフレーム)をRAW受信(そのまま受信)する。
【0094】
ステップ1002でRAW受信部201は、受信したパケット(Ethernetフレーム)を仮想通信I/F108に渡す。本処理終了後、ステップ1001に戻る。
(第1の実施形態におけるミドル受信部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のミドル受信部202が実行する、パケット受信時の処理フローを、図11を用いて説明する。
【0095】
ステップ1101でミドル受信部202は、第2通信ミドルウェア実行部106からアプリケーションデータ(即ちデカプセル化後のEthernetフレーム)を受信する。
【0096】
ステップ1102でミドル受信部202は、受信したEthernetフレームの宛先MACアドレスをチェックする。もし宛先がユニキャストアドレスであれば、ステップ1104へ進む。ユニキャストアドレスでなければ、ステップ1105へ進む。
【0097】
ステップ1104でミドル受信部202は、Ethernetフレームの宛先MACアドレスを自身の仮想通信I/F108のMACアドレスに書換える。
【0098】
ステップ1105でミドル受信部202は、Ethernetフレームを仮想通信I/F108に渡す。本処理終了後、ステップ1101に戻る。
(第1の実施形態におけるカプセル化判定部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のカプセル化判定部203が実行する、パケット送信時の処理フローを、図12を用いて説明する。
【0099】
ステップ1201でカプセル化判定部203は、仮想通信I/F108から送信パケット(Ethernetフレーム)を取得する。
【0100】
ステップ1202でカプセル化判定部203は、取得したEthernetフレームをカプセルすべきか否か判断する。この判定は、受信したEthernetフレームのIPヘッダ及びTCPヘッダに指定された宛先情報を用いてプロトコル管理テーブル110を参照することにより、行われる。
【0101】
もしカプセル化不要のEthernetフレームであれば、ステップ1204へ進む。カプセル化が必要なEthernetフレームであれば、ステップ1207へ進む。
【0102】
ステップ1204でカプセル化判定部203は、RAW送信部204にEthernetフレームを渡す。本処理終了後、ステップ1201に戻る。
【0103】
ステップ1207でカプセル化判定部203は、ミドル送信部205にEthernetフレームを渡す。この際でカプセル化判定部203は、送信先の第2通信ミドルウェア実行部を指定するための情報(送信先通信装置のIPアドレス、第2通信ミドルウェア実行部106のポート番号を含む、図6の第2ミドルの通信情報602に相当する情報)を一緒にミドル送信部205に渡す。本処理終了後、ステップ1201に戻る。
(第1の実施形態におけるRAW送信部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のRAW送信部204が実行する、パケット送信時の処理フローを、図13を用いて説明する。
【0104】
ステップ1301でRAW送信部204は、カプセル化判定部105からEthernetフレームを取得する。
【0105】
ステップ1302でRAW送信部204は、通信I/F109を用いて、取得したEthernetフレームをRAW送信(そのまま送信)する。本処理終了後、ステップ1301に戻る。
(第1の実施形態におけるミドル送信部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のミドル送信部205が実行する、パケット送信時の処理フローを、図14を用いて説明する。
【0106】
ステップ1401でミドル送信部は、カプセル化判定部からEthernetフレームを取得する。
【0107】
ステップ1402でミドル送信部は、EthernetフレームのIPヘッダおよびTCIPヘッダに含まれるアドレス情報(送信先通信装置のIPアドレスおよび当該通信装置の第1通信ミドルウェアを識別するポート番号)を取得する。
【0108】
ステップ1403でミドル送信部は、取得した送信先通信装置のIPアドレスおよび第1通信ミドルウェアを識別するポート番号から、通信情報対応テーブル112を参照し、送信先通信装置の第2通信ミドルウェアに向けてEthernetフレームを送信するために必要な、送信先通信装置のIPアドレスおよび当該通信装置の第2通信ミドルウェアを識別するポート番号を取得する。
【0109】
ステップ1404でミドル送信部は、第2通信ミドルウェア実行部に対し、ステップ1403で取得した送信先通信装置のIPアドレスおよび当該通信装置の第2通信ミドルウェアのポート番号を引き渡し、ステップ1401で受信したEthernetフレームをひとまとまりのアプリケーションデータと見なして送信するよう指示を出す。本ステップ終了後、ステップ1401に戻る。
【実施例2】
【0110】
<第2実施形態>
第2実施形態では、カプセル化対象のパケットとして、OSIモデルで言うところのレイヤ3であるIPデータグラム(以下、IPパケット)を想定した例について説明する。なお、第2実施形態の通信装置101のシステム構成は、第1実施形態のシステム構成(図1および図2)と同じであるため、説明は省略する。
【0111】
以下、第1実施形態と機能が異なる、仮想通信I/F108、RAW受信部201、ミドル受信部202、カプセル化判定部203、RAW送信部204、ミドル送信部205について、説明する。
【0112】
第2実施形態の仮想通信I/F108は、カプセル化対象がIPパケットであるため、カプセル化処理部105と、Ethernetフレームではなく、IPパケットのやりとりを行う。
(第2の実施形態におけるRAW受信部のフローチャート)
次に、第2の実施形態において、カプセル化処理部105内のRAW受信部201の、パケット受信時の処理フローを、図15を用いて説明する。
【0113】
ステップ1501でRAW受信部201は、通信I/F109からEthernetフレームをRAW受信する。
【0114】
ステップ1502でRAW受信部201は、受信したEthernetフレームの宛先MACアドレスをチェックし、正しいEthernetフレームかをチェックする。
【0115】
ステップ1503でRAW受信部201は、受信したEthernetフレームからIPパケットを抽出する。
【0116】
ステップ1504でRAW受信部201は、抽出したIPパケットを仮想通信I/F108に渡す。
(第2の実施形態におけるミドル受信部のフローチャート)
次に、第2の実施形態において、カプセル化処理部105内のミドル受信部202の、パケット受信時の処理フローを、図16を用いて説明する。
【0117】
ステップ1601でミドル受信部202は、第2通信ミドルウェア実行部からアプリケーションデータ(=カプセル化前のIPパケット)を受信する。
【0118】
ステップ1602でミドル受信部202は、受信したIPパケットを仮想通信I/F109に渡す。
(第2の実施形態におけるカプセル化判定部のフローチャート)
第2の実施形態における、カプセル化処理部105内のカプセル化判定部203の、パケット送信時の処理フローについては、図12のEthernetフレームをIPパケットに読み替えれば同様の処理フローとなるため、説明を省略する。
(第2の実施形態におけるRAW送信部のフローチャート)
次に、第2の実施形態における、カプセル化処理部105内のRAW送信部204の、パケット送信時の処理フローを、図17を用いて説明する。
【0119】
ステップ1701でRAW送信部204は、カプセル化判定部からIPパケットを取得する。
【0120】
ステップ1702でRAW送信部204は、Ethernetフレームを作成する。このとき送信元MACアドレスには自身の仮想通信I/F108のMACアドレスを使用する。また、宛先MACアドレスは、宛先IPアドレスから、プロトコルスタックと同様にARP処理によって取得しても良いし、ARPテーブル相当のテーブルを独自に管理しておき、それを参照してもよい。
【0121】
ステップ1703でRAW送信部204は、通信I/Fを用いて、ステップ1702で作成したEthernetフレームをRAW送信する。本処理が終了すると、ステップ1701に戻る。
(第2の実施形態におけるミドル送信部のフローチャート)
第2の実施形態における、カプセル化処理部105内のミドル送信部205の、パケット送信時の処理フローについては、図14のEthernetフレームをIPパケットに読み替えれば同様の処理フローとなるため、説明を省略する。
【実施例3】
【0122】
<第3実施形態>
図18を用いて、二重化通信を行う例を説明する。
【0123】
図18に示す通信装置101は、第2通信ミドルウェア実行部106が2重化通信機能を提供するケースを示している。なお、図18に示す各機能ブロックは、それぞれ図1に示す各機能ブロックと同様の構成を有しているため、同じ符号を付している。
【0124】
図18において、通信装置101は、異なるネットワークアドレス体系のネットワークA(例えば、192.168.1.*)およびネットワークB(例えば、10.232.10.*)に接続されている。そして、仮想通信I/F108AにはネットワークAに所属するIPアドレス(例えば、192.168.0.1)が割り当てられており、仮想通信I/F108BにはネットワークBに属するIPアドレス(例えば、10.232.10.1)が割り当てられている。
【0125】
2重か通信機能を有する通信装置同士がパケットを送受信する際に実行する処理の中で、第1実施形態とは異なる処理を以下に説明する。その他の処理については第1実施形態と同様である。
【0126】
第1通信ミドルウェア実行部104はアプリケーション実行部103から受信したアプリケーションデータ501に第1ヘッダを付与する。第1ヘッダには、通信相手の通信装置の2つの仮想通信I/Fに割当られた2つのIPアドレスのうち、任意の一方のIPアドレスと、通信相手の通信装置の第1通信ミドルウェアを識別するポート番号が含まれる。
【0127】
こうして作成されたアプリケーションデータ502を第1通信ミドルウェア実行部104はプロトコルスタック107へ引き渡す。このとき、第1ヘッダに付与したIPアドレスとポート番号を第1通信ミドルウェア実行部104は指定する。
【0128】
プロトコルスタックは、指定されたIPアドレスを第1IPヘッダに、指定されたポート番号を第1TCPヘッダに有し、更に第1MACアドレスが付与された送信パケット503を作成しこれをいずれか一方の仮想通信I/Fを介してカプセル化処理部105に渡す。
【0129】
カプセル化処理部105では実施例1と同様プロトコル管理テーブルを用いてカプセル化の要否が判断される。この場合、カプセル化要と判断されるので、カプセル化処理部105は送信パケット503を第2通信ミドルウェア実行部106に引き渡す。この際、カプセル化処理部105は、通信相手の通信装置に割り当てられた2つのIPアドレスと当該通信装置の第2通信ミドルウェアの識別情報(ポート番号)も一緒に第2通信ミドルウェア実行部106に通知する。
【0130】
第2通信ミドルウェア実行部106は、カプセル化処理部105から送信用のアプリケーションデータ(=カプセル化前の送信パケット)503を受信すると、これを複製する。そして、通信相手の通信装置のIPアドレスと当該通信装置の第2通信ミドルウェア実行部106のポート番号とを有する第2ヘッダを、オリジナルのアプリケーションデータ503とその複製各々に付与することによって、カプセル化する。この際、オリジナルのアプリケーションデータ503に付与される第2ヘッダと複製に付与される第2ヘッダに含まれているIPアドレスは、同じ通信装置に割り当てられている異なるIPアドレス(すなわち、通信相手の通信装置の2つの仮想通信I/Fに割り当てられている異なるIPアドレス)である。
【0131】
そして、第2通信ミドルウェア実行部106は、各々異なるIPアドレスを第2ヘッダに有する2つのパケット504を、プロトコルスタック107に渡す。この際、第2通信ミドルウェア実行部106は、各通信パケット504の第2ヘッダに格納されたIPアドレス及びポート番号を、当該通信パケット504の宛先としてプロトコルスタックに通知する。
【0132】
パケット504にはプロトコルスタック107によって第2MAC、第2IPヘッダ、第2TCPヘッダが付与される。ここで第2IPヘッダ及び第2TCPヘッダに格納されるのは第2通信ミドルウェア実行部106から指定されたIPアドレス及びポート番号である。こうして作成された2つの通信パケット505は、各々異なる仮想通信I/F108Aまたは仮想通信I/F108Bに渡され、更にカプセル化処理部105によって、各々異なる通信I/F109Aまたは通信I/F109Bに渡されて、RAW送信される。そして、2重化送信されたカプセル化パケットは、異なるネットワーク経由で送信先の通信装置101に到着する。
【0133】
異なるネットワークから当該2重化されたカプセル化パケットを受信した通信装置101では、カプセル化処理部105を介して2つの仮想化通信I/F各々が自身のIPアドレスを宛先に持つパケット505を受信する。このIPパケットはプロトコルスタック107によってMACアドレス、第2IPヘッダ、第2TCPヘッダが外され、第2通信ミドルウェア実行部106がプロトコルスタック107から、2重化されたアプリケーションデータ(=デカプセル化後の受信パケット)504を受け取る。
【0134】
第2通信ミドルウェア106は、2つの受信パケット504各々から第2ヘッダが外し、エラー等の異常の有無を判定する。そして、異常のないアプリケーションデータ(=デカプセル化後の受信パケット)503をカプセル化処理部105に渡す。なお、第2通信ミドルウェア実行部106は、受信した2つのアプリケーションデータ503の内異常のないアプリケーションデータのみをカプセル化処理部105に引き渡す。2つのアプリケーションデータの双方ともに異常がない場合は、いずれか一方(例えば、後着パケット)を破棄し他方のみをカプセル化処理部105に渡す。その後の処理は第1の実施形態と同様である。
【0135】
尚、第3実施形態ではデータが2重化されて送受信される例を説明したが、発明はこれに限られるものではなく、3重化以上の多重化がなされる構成であっても構わない。
【0136】
また、本実施例では、ネットワークAおよびネットワークBが異なるアドレス体系の場合を例に説明したが、同一アドレス体系のネットワークであってもよく、その場合は仮想通信I/F108Aおよび仮想通信I/F108Bは同一ネットワークに属するIPアドレスが割り当てられる。また、本実施例では、通信I/Fが2つの場合を例に説明したが、3つ以上であってもよい。
【0137】
また、第1実施形態、第2実施形態、および第3実施形態において説明した、各通信装置101は、一般的なコンピュータに、前記した各部のプログラムを実行させることで実現することができる。このプログラムは、通信回線を介して提供することが可能であるし、CD−ROM(Compact Disc-Read Only Memory)等の記録媒体に書き込んで配布することも可能である。
【符号の説明】
【0138】
101…通信装置
102…ネットワーク
103…通信アプリケーション実行部
104…第1通信ミドルウェア実行部
105…カプセル化処理部
106…第2通信ミドルウェア実行部
107…プロトコルスタック
108…仮想通信I/F
109…通信I/F
110…プロトコル管理テーブル
112…通信情報対応テーブル
201…RAW受信部
202…ミドル受信部
203…カプセル化判定部
204…RAW送信部
205…ミドル送信部
301…ホストCPU
302…ホストメモリ
303…周辺I/F
304…記憶装置
305…通信I/F
306…バス
1901…旧システムの通信装置
1902…通信アプリケーション
1903…旧通信ミドルウェア
1904…プロトコルスタック
1905…通信I/F
1906…新システムの通信装置
1907…新旧ミドル変換部
1908…新通信ミドルウェア
【技術分野】
【0001】
通信装置が備える通信ミドルウェアに関する。
【背景技術】
【0002】
鉄道の運行管理システムや金融システムは、そのシステムの立ち上げ当初は小規模であっても、システム拡張や他システムとの統合等により、大規模化かつ複雑化していくことが多い。そして、システムを構成する装置の高性能化や技術の進歩に合わせてシステムを更新する(以降、「新システムに移行する」または「システム移行する」とも表現する)場合には、それらのシステム規模が大きくなるに従って修正箇所が多岐にわたるため、開発コストが膨大となる。
【0003】
ここで、システム移行(特に、通信ミドルウェアの変更)における一般的な問題について、図19を用いて説明する。
【0004】
図19は、旧システムの通信装置1901から、新システムの通信装置1906にシステム移行を行うケースを示している。旧システムの通信装置1901に示すような構成は、一般的なものである。すなわち、様々なサービスを提供する通信アプリケーション1902が、システム固有の通信基盤である旧通信ミドルウェア1903上で動作する。そして、通信アプリケーション1902が動作してデータを通信相手に送信する際には、その下位の階層に位置する旧通信ミドルウェア1903およびプロトコルスタック1904(TCP(Transmission Control Protocol)、IP(Internet Protocol)等のプロトコル群)を用いて、通信I/F(Interface)1905を介して、ネットワークにパケットを送出する。
ここで、旧システムから新システムへシステム移行し、通信ミドルウェアを旧通信ミドルウェア1903から新通信ミドルウェア1907に切り替える場合を考えてみる。
【0005】
システム規模が小さい間は、通信ミドルウェアを変更するとともに通信アプリケーション1902を新しいものに切り替えることが一般的である。しかし、システム規模が大きい場合、通信アプリケーション1902の開発コストが膨大なものとなってしまう。そのため、開発コストを抑えるために、旧システムの通信アプリケーション1902を新システムの通信装置1906でも流用することが望まれる。
【0006】
前記したように、旧システムの通信アプリケーション1902は、旧通信ミドルウェア1903上で動作することを前提に開発されている。そこで、システム移行した場合には、図19の下段に示すように、通信アプリケーション1902を新システムの新通信ミドルウェア1908上で動作させるために、旧通信ミドルウェア1903と新通信ミドルウェア1908との差異を補う新旧ミドル変換部1908を設ける必要がある。
【0007】
大規模システムにおいては、通信アプリケーション1902をすべて作り替えるよりは、新旧ミドル変換部1908を新規に開発する方が開発コストは少なくてすむ。しかしながら、それでも、新旧ミドル変換部1908の開発コストは、依然として大きい。例えば、新旧ミドル変換部1908は、少なくとも、(1)通信アプリケーション1902とのI/F(Interface)部分、(2)新通信ミドルウェア1908とのI/F部分、(3)旧通信ミドルウェア1903および新通信ミドルウェア1908それぞれの内部の挙動(タイムアウトの条件等)を模擬する部分、についての機能を必要とする。特に、前記(3)の開発を行うためには、旧通信ミドルウェア1903および新通信ミドルウェア1908の内部の動作を詳細まで熟知している必要があるため、多大な時間を費やすことになるので、通信アプリケーション1902のプログラムの再利用性の観点から効率が悪い。
【0008】
前記問題を解決するために、例えば、特許文献1では、旧システムの通信装置とネットワークとの間に、旧システムの通信装置から送信されるパケットをカプセル化するカプセル化装置(トンネリング装置)を設ける。そして、カプセル化装置は、カプセル化した各パケットを、新システムの新通信ミドルウェア経由でネットワークに送信する。また、カプセル化装置は、ネットワークから受信したカプセル化されたパケットをデカプセル化して、旧システムのパケットを抽出し、旧システムの通信装置に送信する。
【0009】
また、例えば、非特許文献1では、仮想Ethernet I/F(Ethernetは登録商標)を通信装置自身に備え、通信装置単体で旧システムのパケットをカプセル化する技術が公開されている。具体的には、その通信装置は、仮想Ethernet I/Fに新たなIPアドレスを割り当てて、すべての通信が仮想Ethernet I/Fを経由するようにルーティングテーブル等の設定を行う。そして、通信装置は、旧システムのパケット(Ethernetフレーム)を仮想Ethernet I/Fを介してカプセル化して新通信ミドルウェアに渡すことで、新システムのパケットを送信することができるようになる。
【0010】
このように、特許文献1や非特許文献1に記載の技術では、新規に開発する対象が、新通信ミドルウェア経由で受信した旧システムのパケット(Ethernetフレーム)を旧システムに渡す部分(前記(1)の部分)、およびパケット(Ethernetフレーム)を新通信ミドルウェアに渡す部分(前記(2)の部分)のみとなる。そのため、旧通信ミドルウェアと新通信ミドルウェアを相互変換する新旧ミドル変換部2107を開発する場合に比べて、技術難易度も低く、開発コストも大幅に削減することが可能となる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2008−078966号公報
【非特許文献】
【0012】
【非特許文献1】登大遊、“SoftEther の内部構造”、[online]、[平成22年9月7日検索]、インターネット<URL:http://www.softether.co.jp/jp/company/media/ academic/data/softetherpaper002.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0013】
背景技術に記載したように、特許文献1に開示されている技術では、旧システムのシステム設定(IPアドレス等)は全く変更せずに、カプセル化装置を設置するだけで新システムへの移行が可能となる。しかしながら、カプセル化装置が通信装置の台数分だけ必要となり、ハードウェアコストが膨大になるという問題が生じる。
【0014】
また、非特許文献1に開示されている技術では、通信装置単体で新システムへの移行が可能であるため、追加のハードウェアコストは不要となる。しかし、仮想Ethernet I/Fは、OSからは物理Ethernet I/Fと同じように認識されるため、物理Ethernet I/Fと異なるIPアドレスを設定する必要がある。したがって、旧システムのシステム設定変更や、新システム設計時にIPアドレスの制約を考慮しなければならない(旧システムのIPアドレスと重複してはいけない等)といった手間が生じる。
【0015】
また、システム移行リスクを小さくするために、一気に全通信装置を新装置に切替えるのではなく、一定期間をかけて数台ずつ段階的に切替える方法を取ることもある。その場合、完全に移行が完了するまでは、同一ネットワーク上に、旧システムのIPアドレスのパケットと新システムのIPアドレスのパケットが混在することになり、一般的なルータやスイッチでは対応できない可能性がある。このような単一ネットワーク上に複数のIPアドレスが混在する問題は、特許文献1や非特許文献1では解決することができない。
【0016】
従ってIPアドレスの変更やハードウェアの追加なしに、旧通信ミドルウェアを介して情報を送受信する通信アプリケーションが、新通信ミドルウェアを介してでも情報を送受信できるようにする技術が求められている。
【課題を解決するための手段】
【0017】
通信装置は、データを他の通信装置を指定した宛先アドレスを用いてカプセル化して、第1パケットを作成する第1パケット作成部と、第1パケットを用いて所定の処理を実行する処理部と、第1パケットを当該宛先アドレスを用いて再びカプセル化して、第2パケットを作成する第2パケット作成部と、第2パケットを当該他の通信装置へ送信する送信部を有する。
【発明の効果】
【0018】
IPアドレスの変更やハードウェアの追加無く、旧通信ミドルウェアを介してデータを送受信する通信アプリケーションが、新通信ミドルウェアを介してでもデータを送受信できるようになる。
【図面の簡単な説明】
【0019】
【図1】通信装置の機能ブロック構成の一例を示す図である。
【図2】カプセル化処理部105の機能ブロック構成の一例を示す図である。
【図3】通信装置のハードウェア構成の一例を示す図である。
【図4】接続先アドレス、ポートに対応する通信プロトコルを管理するテーブルの一例を示す図である。
【図5】Ethernetフレームの一例を示す図である。
【図6】通信情報対応テーブルの一例を示す図である。
【図7】新装置が新装置にデータを送信する場合の通信フローの一例を示す図である。
【図8】新装置が旧装置にデータ送信する場合の通信フローの一例を示す図である。
【図9】旧装置が新装置にデータ送信する場合の通信フローの一例を示す図である。
【図10】RAW受信部が実行する処理の一例を示すフローチャートである。
【図11】ミドル受信部が実行する処理の一例を示すフローチャートである。
【図12】カプセル化判定部が実行する処理の一例を示すフローチャートである。
【図13】RAW送信部が実行する処理の一例を示すフローチャートである。
【図14】ミドル送信部が実行する処理の一例を示すフローチャートである。
【図15】RAW受信部が実行する処理の一例を示すフローチャートである。
【図16】ミドル受信部が実行する処理の一例を示すフローチャートである。
【図17】RAW送信部が実行する処理の一例を示すフローチャートである。
【図18】通信装置の機能ブロック構成の一例を示す図である。
【図19】システム移行の一例を示す図である。
【発明を実施するための形態】
【実施例1】
【0020】
実施形態の一例(以降、「本実施形態」と称す。)について、適宜図面を参照しながら詳細に説明する。
<第1実施形態>
第1実施形態では、システム移行にともなって、システム内の複数の通信装置の一部に、旧通信ミドルウェアに加え新通信ミドルウエアが実装された場合について説明する。なお、ここではカプセル化対象のパケットは、OSIモデルで言うところのレイヤ2であるEthernetフレームを想定する。
(通信装置の機能)
本実施形態における通信装置の機能について、図1を用いて説明する。
【0021】
図1に示すように、本実施形態における通信装置101は、互いに、ネットワーク102を介して通信できるように接続されている。なお、ネットワーク102は、IP網として説明するが、これに限られることはない。また、通信に用いる信号は、例えば、電気、光、電波、音等のいずれかまたはそれらの組み合わせであっても構わない。
【0022】
通信装置101は、通信アプリケーション実行部103、第1通信ミドルウェア実行部104、カプセル化処理部105、第2通信ミドルウェア実行部106、プロトコルスタック107、仮想通信I/F(Interface)108、通信I/F109、プロトコル管理テーブル110、および通信情報対応テーブル112を備えている。通信アプリケーション実行部103は、種々のサービスを他の通信装置に提供したり、他の通信装置に対して種々のサービスを要求したりする通信アプリケーションプログラムを実行する。
【0023】
なお、通信アプリケーション実行部103において実行される通信アプリケーションプログラム(以降の説明では、APPとも称する。)は、図19に示した通信アプリケーション1902に相当し、第1通信ミドルウェア実行部104において実行される第1通信ミドルウェア(システム移行前の旧通信ミドルウェア)上で動作する。
【0024】
第1通信ミドルウェア実行部104は、複数のAPPが実行されるときに、共通に使用される機能を提供するプログラムを実行する。例えば、当該プログラムは、ソケットI/Fを備えており、一般的に、認証や暗号化等のセキュリティ機能や、ソケットの初期化や終了処理等の複雑な通信処理機能等を有している。なお、第1通信ミドルウェア実行部104において実行されるプログラムは、旧通信プロトコルを用いるものであって、図19に示した旧通信ミドルウェア1903に相当する。
【0025】
カプセル化処理部105は、仮想通信I/F108から受け取った送信パケット(以降、フレーム、Ethernetフレームとも呼ぶ)をチェックし、カプセル化が必要なカプセル化対象のパケットである場合は第2通信ミドルウェア実行部106に渡し、カプセル化の必要がないカプセル化対象外のパケットである場合はそのまま通信I/F109経由で送信する。また、通信I/F109や第2通信ミドルウェア実行部106から受け取った受信パケットを、仮想通信I/F108に渡す。カプセル化処理部105の詳細構成については図2で説明する。
【0026】
第2通信ミドルウェア実行部106は、複数のAPPが実行されるときに、共通に使用される機能を提供するプログラムを実行する。例えば、当該プログラムは、ソケットI/Fを備えており、一般的に、認証や暗号化等のセキュリティ機能や、ソケットの初期化や終了処理等の複雑な通信処理機能等を有している。なお、第2通信ミドルウェア実行部106において実行されるプログラムは、新通信プロトコルを用いるものであって、図19に示した新通信ミドルウェア1908に相当し、第2通信ミドルウェア実行部106は第1通信ミドルウェア実行部104とは異なる通信プロトコル処理を実行する。
【0027】
プロトコルスタック107は、プロトコル処理を行うプログラム群(例えば、TCP、UDP(User Datagram Protocol)、IP等)である。プロトコルスタック107は、第1通信ミドルウェア実行部104および第2通信ミドルウェア実行部106との間で、ソケットI/Fを介して送受信情報を受け渡すことができる。
【0028】
仮想通信I/F108は、通信I/F機能をソフトウェアで模擬した仮想的な通信I/Fであり、OS(Operating System)からは通常の通信I/F(通信I/F109等)と等価に扱われる。ただし、通常の通信I/Fが特定の通信用ハードウェア(例えば、Ethernetコントローラチップなど)と関連づけられて、そのハードウェアと送受信パケットの受け渡しを行うのに対し、仮想通信I/F108は特定のプログラムと関連づけられ、そのプログラムと送受信パケットの受け渡しを行う。本実施例では、仮想通信I/F108は、カプセル化処理部105と関連づけられ、プロトコルスタック107から渡された送信パケット(Ethernetフレーム)をカプセル化処理105に渡す。また、カプセル化処理部105から渡されたデータを受信パケット(Ethernetフレーム)とみなしてプロトコルスタック107に渡す。
【0029】
通信I/F109は、カプセル化処理部105から渡された送信パケット(Ethernetフレーム)に対し、チェックサム計算など送信に必要な処理を行い、関連づけられているハードウェア経由でネットワーク102に送信する。また、ネットワーク102から受信したパケット(Ethernetフレーム)をカプセル化処理部105に渡す。
【0030】
なお、前述したように、仮想通信I/F108および通信I/F109はOSから見たら等価に扱われるが、本実施例ではIPアドレスを仮想通信I/F108のみに割り当て、通信I/F109にはIPアドレスを割り当てない。これにより、プロトコルスタック107からは唯一の通信I/Fとして仮想通信I/F108だけが認識されるようになり、通信I/F109は、ネットワーク102とカプセル化処理部105との間でEthernetフレームを転送する機能だけを提供するようになる。
【0031】
プロトコル管理テーブル110、通信情報対応テーブル112は、カプセル化処理部105で参照される情報である。詳細については後段にて説明する。
(カプセル化処理部の詳細)
次に、カプセル化処理部105の詳細構成について図2を用いて説明する。
【0032】
カプセル化処理部105は、RAW受信部201、ミドル受信部202、カプセル化判定部203、RAW送信部204、ミドル送信部205から構成されている。
【0033】
RAW受信部201は、ネットワーク102経由で通信I/F109に到着した受信パケット(Ethernetフレーム)を通信I/F109からRAW受信で受け取り、そのEthernetフレームをそのまま仮想通信I/F108に渡す処理を行う。RAW受信部201の処理の詳細は図10に示す。
【0034】
ミドル受信部202は、第2通信ミドルウェア実行部から渡されたアプリケーションデータ(デカプセル化されたEthernetフレーム)を、そのまま仮想通信I/F108に渡す処理を行う。ミドル受信部202の処理の詳細は図11に示す。
【0035】
カプセル化判定部203は、仮想通信I/F108から受信したパケットをチェックして、カプセル化すべきパケットである場合には、ミドル送信部205に渡し、カプセル化不要なパケットである場合にはRAW送信部204に渡す。カプセル化判定部203の処理の詳細は、図12に示す。
【0036】
ミドル送信部205はカプセル化判定部203から受け取ったパケットに後述のヘッダを付与して第2通信ミドルウエア実行部106に渡す。ミドル送信部205の処理の詳細は図14に示す。
【0037】
RAW送信部204はカプセル化判定部203から受け取ったパケットを通信I/F109に渡す。RAW送信部204の処理の詳細は図13に示す。
(通信装置のハードウェア構成)
次に、通信装置101のハードウェア構成について、図3を用いて説明する(適宜、図1参照)。
【0038】
通信装置101は、各種処理を行うホストCPU(Central Processing Unit)301、ホストメモリ302、周辺I/F303、記憶装置304、通信I/F305、およびバス307から構成される。そして、ホストCPU301、ホストメモリ302、周辺I/F310、記憶装置304、および通信I/F305は、バス307を介して通信可能に接続されている。
【0039】
ホストCPU301は、プログラムを実行するプロセッサである。
【0040】
ホストメモリ302は、ホストCPU301がプログラムを実行する際に、ワーキングメモリおよび入出力データの一時バッファとして用いられる。
【0041】
周辺I/F303は、マウス、キーボード、モニタ等の入出力装置や、USB(Universal Serial Bus)メモリ等の外部ストレージ等の各種周辺機器、と接続するためのインタフェースである。
【0042】
記憶装置304は、磁気ディスク装置、フラッシュROM(Read Only Memory)等から構成され、OS、各種ドライバ、各種アプリケーションプログラムや、プログラムで使用される各種情報(例えば、管理者または保守者によって設定される情報等)を格納している。
【0043】
通信I/F305は、通信装置101がネットワーク102を介して他の通信装置101と通信を行う際のインタフェースを提供する。通信I/F305は、例えば、NIC(Network Interface Card)であっても良い。
【0044】
なお、図3では、通信I/F305は、1つしか記載していないが、2つ以上であっても構わない。
【0045】
図1に示した通信アプリケーション実行部103、第1通信ミドルウェア実行部104、カプセル化処理部105、第2通信ミドルウェア実行部106、プロトコルスタック107、仮想通信I/F108、通信I/F109は各々、記憶装置304に格納されたプログラムがホストメモリ302に読み込まれてホストCPU301によって実行されることにより、構成される機能要素である。尚、図1に示した通信I/F109の機能は図3に示す通信I/F305上に実装される。また、図1に示したプロトコル管理テーブル110、通信情報対象テーブル112は記憶装置304に格納されている。
(プロトコル管理テーブル)
プロトコル管理テーブル110に格納される情報について、図4を用いて説明する(適宜、図1参照)。
【0046】
プロトコル管理テーブル110は、パケットを送信する際の、パケット種別410、IPアドレス401、ポート番号402、プロトコル403を格納している。プロトコル管理テーブル110は、カプセル化判定部203が仮想通信I/F108から送信パケットを受け取ったときに、その送信パケットをカプセル化すべきか否か判断する際に用いられる。なお、本テーブルの情報は、通信装置101の管理者または保守者等によって予め設定されてもよいし、各装置と個別にプロトコル情報をやりとりするプログラムによって設定されてもよいし、全装置のプロトコル情報をまとめて管理しているサーバに問い合わせて設定してもよい。
【0047】
パケット種別410の列はパケットの種別を格納している領域であり、パケット種別の例としては、IPパケットであることを示すIP、ARP(Address Resolution Protocol)パケットであることを示すARP等がある。
【0048】
IPアドレス401の列は、パケットの送信先の通信装置101を識別するIPアドレスを格納している領域である。
【0049】
ポート番号402の列は、パケットの宛先ポート番号を格納している領域である。ポート番号は一般に、通信サービス(FTP(File Transfer Protocol)、HTTP(HyperText Transfer Protocol)等)を識別するのに用いられ、送信先が同じ通信装置101であっても、異なるポート番号を用いることによって、通信サービスの種別を変更することができる。本実施形態では、ポート番号はパケットの宛先通信ミドルウェアを特定するのに用いられる。
【0050】
プロトコル403の列は、当該パケットに施す処理の種類を示す情報を格納している領域である。プロトコル名が指定されている場合(プロトコルA、プロトコルB等)は当該プロトコルを用いたパケットのカプセル化が必要であることを意味し、「RAW送信」が指定されている場合にはパケットをそのまま送信することを意味している。
【0051】
図4において、例えば、行404は、IPパケットを用いて、IPアドレスが192.168.0.1の通信装置と、ポート番号80番で指定される当該通信装置の通信ミドルウェアで通信を行う場合、カプセル化を行わずにそのままパケットを送信(RAW送信)することを表している。他方行405は、IPパケットを用いて、IPアドレスが192.168.0.1の通信装置(即ち同じ通信装置)と、ポート番号23番で指定される当該通信装置の通信ミドルウェアで通信を行う場合、プロトコルAを用いたパケットのカプセル化が必要であることを表している。また行408は、ARPパケットはそのアドレスに関わらずカプセル化を行わずそのまま送信することを表している。
【0052】
なお、図4では、プロトコル403には、3種類のプロトコル(RAW送信、プロトコルA、プロトコルB)を記載しているが、1種類であっても、3種類以上であっても構わない。また、ポート番号402に記載されている*印は、任意のポート番号で構わないことを表している。
(通信情報対応テーブル)
次に、通信情報対応テーブル112に格納される情報について、図6を用いて説明する。
【0053】
通信情報対応テーブル112は、第1通信ミドルウェアの通信情報601と、第2通信ミドルウェアの通信情報602を格納している。そして、通信情報対応テーブル112は、ミドル送信部205がカプセル化判定部203から送信パケットを受け取ったときに、送信パケットに含まれる送信先通信装置の第1通信ミドルウェアの通信情報から、それに対応する送信先通信装置の第2通信ミドルウェアの通信情報を取得するために用いられる。
【0054】
図6において、例えば行603では、送信パケットに含まれる第1通信ミドルウェアの通信情報が、IPアドレスがIP_A、ポート番号がB、サービスIDがCの場合、第2通信ミドルウェアを用いて送信するために必要な第2通信ミドルウェアの通信情報が、IPアドレスがIP_A、ポート番号がb、サービスIDがcであることを表している。ここで、IPアドレスは送信先通信装置の仮想通信I/Fに割り当てられているアドレスであるから、第1通信ミドルウェアでも第2通信ミドルウェアでも同じ値となるが、ポート番号は通信ミドルウェアを一意に特定するのに用いられるため、異なる値となる。またサービスIDは、送信先の通信ミドルウェアが送信パケットをどこに引き渡すかを示すIDであり、本実施形態の場合にはポート番号が第1通信ミドルウェアを示している場合にはサービスIDは通信アプリケーション実行部を、ポート番号が第2通信ミドルウェアを示している場合にはサービスIDはカプセル化処理部を示す。しかしながら必ずしもこれに限られるものではい。例えば第2通信ミドルウェアがカプセル化処理部を介さずに通信アプリケーション実行部と通信する場合には、ポート番号が第2通信ミドルウェアを示している場合にサービスIDは当該通信アプリケーション実行部を示す。
【0055】
なお、ここでは通信情報の例としてIPアドレスやポート番号を挙げているが、これに限るものではなく、第1通信ミドルウェアと第2通信ミドルウェアの対応が分かる情報であれば良い。
(新装置から新装置へのデータ送信時のカプセル化通信処理シーケンス)
次に、新システムに移行後の通信装置A101aから新システムに移行後の通信装置B101bにデータを送信する際のカプセル化通信処理シーケンスを、図5と図7を用いて説明する。ここで、通信装置A101aおよび通信装置B101bは共に第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106を有している。
【0056】
まず、通信装置A101aの通信アプリケーション実行部103aが、第1通信ミドルウェア実行部104aにアプリケーションデータ501を渡す。この際、通信アプリケーション実行部103aは、送信先の第1通信ミドルウェア実行部104bを指定するための情報(通信装置B101bのIPアドレス、第1通信ミドルウェア実行部104bのポート番号を含む、図6の第一ミドルの通信情報601に相当する情報)を一緒に第1通信ミドルウェア実行部104aに渡す。
【0057】
次に、第1通信ミドルウェア実行部104aは、受け取った送信先の第1通信ミドルウェア実行部104bを指定するための情報を第1ヘッダとして受け取ったアプリケーションデータ501に付与し、これをアプリケーションデータ502としてプロトコルスタック107aに渡す。この際、第1通信ミドルウェア実行部104aは通信装置B101bのIPアドレスと第1通信ミドルウェア実行部104bのポート番号をプロトコルスタックに指定する。
【0058】
次に、プロトコルスタック107aは、受け取った通信装置B101bのIPアドレスをIPヘッダ(第1IPヘッダ)として、ポート番号をTCPヘッダ(第1TCPヘッダ)として受け取ったアプリケーションデータ502に付与し、さらにパケットの送信先MACアドレス(第1MAC)も付与して送信用のパケット(Ethernetフレーム)503を生成する。この送信用パケット503をプロトコルスタック107aは仮想通信I/F108aに渡す。
【0059】
次に、仮想通信I/F108aは、受け取った送信用のパケット503をそのままカプセル化処理部105aに渡す。
【0060】
次に、カプセル化処理部105aは、送信パケット503のIPヘッダ(第1IPヘッダ)及びTCPヘッダ(第1TCPヘッダ)に含まれる宛先情報(通信装置B101bのIPアドレスおよび第1通信ミドルウェア実行部104bを指定するポート番号)を用いてプロトコル管理テーブル110を参照し、当該送信パケットに対してカプセル化を行うか否かを判断する。
【0061】
通信相手が第2通信ミドルウェア実行部106を有する(即ち新通信ミドルウェアを有する)通信装置であって、送信パケットの宛先ポート番号が第1通信ミドルウェアを示す場合、プロトコル管理テーブル110のプロトコル欄403には当該送信パケットをカプセル化するためのプロトコルが指定されている。従って、カプセル化処理部105aはカプセル化を行うと判断し、第2通信ミドルウェア実行部106aに仮想通信I/F108aから受信した送信用パケット503をアプリケーションデータ503として渡す。この際カプセル化処理部105aは、通信情報対応テーブル112を参照して送信先の第2通信ミドルウェア実行部106bを指定するための情報(通信装置B101bのIPアドレス、第2通信ミドルウェア実行部106bのポート番号を含む、図6の第2ミドルの通信情報602に相当する情報)を取得し、これを一緒に第2通信ミドルウェア実行部106aに渡す。
【0062】
次に、第2通信ミドルウェア実行部106aは、受け取った送信先の第2通信ミドルウェア実行部106bを指定するための情報を第2ヘッダとして受け取ったアプリケーションデータ503に付与し、これをアプリケーションデータ504としてプロトコルスタック107aに渡す。この際、第2通信ミドルウェア実行部106aは通信装置B101bのIPアドレスと第2通信ミドルウェア実行部106bのポート番号をプロトコルスタックに指定する。
【0063】
次に、プロトコルスタック107aは、受け取った通信装置B101bのIPアドレスをIPヘッダ(第2IPヘッダ)として、ポート番号をTCPヘッダ(第2TCPヘッダ)として受け取ったアプリケーションデータ504に付与し、さらにパケットの送信先MACアドレス(第2MAC)も付与して送信用のパケット(カプセル化済み)505を生成し、仮想通信I/F108aに生成したパケットを渡す。尚、ここでプロトコルスタック107aがアプリケーションデータ504にIPヘッダ(第2IPヘッダ)として付与したIPアドレスは、送信先通信装置B101bの仮想通信I/Fに割り当てられたIPアドレスであり、先にプロトコルスタック107aがアプリケーションデータ502にIPヘッダ(第1IPヘッダ)として付与したIPアドレスと同じものである。
【0064】
次に、仮想通信I/F108aは、送信用のパケット505をそのままカプセル化処理部105aに渡す。
【0065】
次に、カプセル化処理部105aは、受け取った送信用パケット505のIPヘッダ(第2IPヘッダ)及びTCPヘッダ(第2TCPヘッダ)に含まれる宛先情報(通信装置B101bのIPアドレスおよび第2通信ミドルウェア実行部106bを指定するポート番号)を用いてプロトコル管理テーブル110を参照し、当該送信パケット505に対してカプセル化を行うか否かを判断する。
【0066】
通信相手が第2通信ミドルウェア実行部106を有する(即ち新通信ミドルウェアを有する)通信装置であって、TCPヘッダに格納された宛先ポート番号が第2通信ミドルウェアを示す場合、プロトコル管理テーブル110のプロトコル欄403には当該送信パケットをカプセルせずにそのまま送信するよう指定されている。従って、カプセル化処理部105aはカプセル化不要と判断し、送信用パケット505をそのまま通信I/F109aに渡す。
【0067】
次に、通信I/F109aは、送信用パケット505をネットワーク経由で通信装置B101bの通信I/F109bに送信する。
【0068】
次に、通信装置B101bの通信I/F109bは、ネットワークからパケット505を受信し、その受信パケットをそのままカプセル化処理部105bに渡す。
【0069】
次に、カプセル化処理部105bは、受信パケット505をそのまま仮想通信I/F108bに渡す。
【0070】
次に、仮想通信I/F108bは、受信パケット505をプロトコルスタック107bに渡す。
【0071】
次に、プロトコルスタック107bは、受信パケット505に対してプロトコル処理を行い、受信パケット505のアプリケーションデータ部分504を取り出す。そして、受信パケット505のTCPヘッダ(第2TCPヘッダ)による指定に従って、取り出したアプリケーションデータ部分504を第2通信ミドルウェア実行部106bに渡す。
【0072】
次に、第2通信ミドルウェア実行部106bは、受け取ったアプリケーションデータ504から第2ヘッダを外して、残りの部分503をカプセル化処理部105bに渡す。
【0073】
次に、カプセル化処理部105bは、受け取ったパケット503を仮想通信I/F108bに渡す。
【0074】
次に、仮想通信I/F108bは、受け取ったパケット503をプロトコルスタック107bに渡す。
【0075】
次に、プロトコルスタック107bは、受け取ったパケット503に対しプロトコル処理を行い、パケット503のアプリケーションデータ部分502を取り出して、これをパケット503のTCPヘッダ(第1TCPヘッダ)に従って第1通信ミドルウェア実行部104bに渡す。
【0076】
次に、第1通信ミドルウェア実行部104bは、受け取ったアプリケーションデータ502から第1ヘッダを外して、通信アプリケーション実行部103bに渡す。
(新装置から旧装置へのデータ送信時の非カプセル化通信処理シーケンス)
次に、新システムに移行後の通信装置C101cから、旧システムの通信装置D801dにデータを送信する際の非カプセル化通信処理シーケンスを、図5と図8を用いて説明する。ここで、通信装置C101cは第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106を有しており、通信装置D101dは第1通信ミドルウェア実行部104は有するが第2通信ミドルウェア実行部106は有していない。
【0077】
まず、通信装置C101cの通信アプリケーション実行部103cが、第1通信ミドルウェア実行部104cにアプリケーションデータ501を渡す。この際、通信アプリケーション実行部103cは、送信先の第1通信ミドルウェア実行部104dを指定するための情報(通信装置D101dのIPアドレス、第1通信ミドルウェア実行部104dのポート番号を含む、図6の第一ミドルの通信情報601に相当する情報)を一緒に第1通信ミドルウェア実行部104cに渡す。
【0078】
次に、第1通信ミドルウェア実行部104cは、受け取った送信先の第1通信ミドルウェア実行部104dを指定するための情報を第1ヘッダとして受け取ったアプリケーションデータ501に付与し、これをアプリケーションデータ502としてプロトコルスタック107cに渡す。この際、第1通信ミドルウェア実行部104cは通信装置D101dのIPアドレスと第1通信ミドルウェア実行部104dのポート番号をプロトコルスタックに指定する。
【0079】
次に、プロトコルスタック107cは、受け取った通信装置D101dのIPアドレスをIPヘッダ(第1IPヘッダ)として、ポート番号をTCPヘッダ(第1TCPヘッダ)として受け取ったアプリケーションデータ502に付与し、さらにパケットの送信先MACアドレス(第1MAC)も付与して送信用のパケット(Ethernetフレーム)503を生成し、仮想通信I/F108cに生成したパケットを渡す。
【0080】
次に、仮想通信I/F108cは、送信用のパケット503をそのままカプセル化処理部105cに渡す。 次に、カプセル化処理部105cは、送信パケット503のIPヘッダ(第1IPヘッダ)及びTCPヘッダ(第1TCPヘッダ)に含まれる宛先情報(通信装置D101dのIPアドレスおよび第1通信ミドルウェア実行部104dを指定するポート番号)を用いてプロトコル管理テーブル110を参照し、当該送信パケットに対してカプセル化を行うか否かを判断する。通信相手が第2通信ミドルウェア実行部106を有していない通信装置である場合、プロトコル管理テーブル110のプロトコル欄403には、当該送信パケットをカプセル化せずそのまま送信(RAW送信)するよう指定されている。従って、カプセル化処理部105cはカプセル化処理を行わないと判断し、送信用パケット503をそのまま通信I/F109cに渡す。 次に、通信I/F109cは、送信用パケット503をネットワーク経由で通信装置D801dの通信I/F109dに送信する。
【0081】
次に、通信装置D801dの通信I/F109dは、ネットワークからパケット503を受信し、その受信パケットをプロトコルスタック107dに渡す。
【0082】
次に、プロトコルスタック107dは、受け取ったパケットに対しプロトコル処理を行い、パケットのアプリケーションデータ502部分を取り出して、このアプリケーションデータ502をパケット503のTCPヘッダ(第1TCPヘッダ)の指定に従って第1通信ミドルウェア実行部104dに渡す。
【0083】
次に、第1通信ミドルウェア実行部104dは、受け取ったアプリケーションデータ502から第1ヘッダを外して、残りの部分501を通信アプリケーション実行部103dに渡す。
(旧装置から新装置へのデータ送信時の非カプセル化通信処理シーケンス)
次に、旧システムの通信装置E801eから、新システムに移行後の通信装置F101fにデータを送信する際の非カプセル化通信処理シーケンスを、図5と図9を用いて説明する。ここで、通信装置E101eは第1通信ミドルウェア実行部104は有するが第2通信ミドルウェア実行部106は有しておらず、通信装置F101fは第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106を有する通信装置である。
【0084】
まず、通信装置E801eの通信アプリケーション実行部103eが、第1通信ミドルウェア実行部104eにアプリケーションデータ501を渡す。この際、通信アプリケーション実行部103eは、送信先の第1通信ミドルウェア実行部104fを指定するための情報(通信装置F101fのIPアドレス、第1通信ミドルウェア実行部104fのポート番号を含む、図6の第一ミドルの通信情報601に相当する情報)を一緒に第1通信ミドルウェア実行部104fに渡す。
【0085】
次に、第1通信ミドルウェア実行部104eは、受け取った送信先の第1通信ミドルウェア実行部104fを指定するための情報を第1ヘッダとして受け取ったアプリケーションデータ501に付与し、これをアプリケーションデータ502としてプロトコルスタック107eに渡す。この際、第1通信ミドルウェア実行部104eは通信装置F101fのIPアドレスと第1通信ミドルウェア実行部104fのポート番号をプロトコルスタックに指定する。
【0086】
次に、プロトコルスタック107eは、受け取った通信装置F101fのIPアドレスをIPヘッダ(第1IPヘッダ)として、ポート番号をTCPヘッダ(第1TCPヘッダ)として受け取ったアプリケーションデータ502に付与し、さらにパケットの送信先MACアドレス(第1MAC)も付与して送信用のパケット(Ethernetフレーム)503を生成し、通信I/F109eに生成したパケット503を渡す。
【0087】
次に、通信I/F109eは、送信用パケット503をネットワーク経由で通信装置F101fの通信I/F109fに送信する。
【0088】
次に、通信装置F801fの通信I/F109fは、ネットワークからパケット503を受信し、その受信パケットをそのままカプセル化処理部105fに渡す。 次に、カプセル化処理部105fは、受信パケット503をそのまま仮想通信I/F108fに渡す。
【0089】
次に、仮想通信I/F108fは、受信パケット503をプロトコルスタック107fに渡す。
【0090】
次に、プロトコルスタック107fは、受信パケット503に対してプロトコル処理を行い、受信パケットのアプリケーションデータ部分502を取り出して、受信パケット503の第1TCPヘッダの指定に従ってこのアプリケーションデータ部分502を第1通信ミドルウェア実行部104fに渡す。
【0091】
次に、第1通信ミドルウェア実行部104fは、受け取ったアプリケーションデータ502から第1ヘッダを外して、残りの部分501を通信アプリケーション実行部103fに渡す。
【0092】
図7から図9に示すパケットの送受信処理においては、受信側通信装置及び送信側通信装置が第2通信ミドルウェア実行部106を有する新システムへの移行後の通信装置であるか否かに関わらず、IPヘッダには仮想通信I/Fに割り当てられたIPアドレスが用いられている。即ち、本実施形態においては、新システムへの移行に伴いIPアドレスを変更する必要はなく、従前のIPアドレスを使い続けてもパケットの送受信が可能であることが分かる。
(第1の実施形態におけるRAW受信部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のRAW受信部201が実行する、パケット受信時の処理フローを、図10を用いて説明する。
【0093】
ステップ1001でRAW受信部201は、通信I/F109から受信パケット(Ethernetフレーム)をRAW受信(そのまま受信)する。
【0094】
ステップ1002でRAW受信部201は、受信したパケット(Ethernetフレーム)を仮想通信I/F108に渡す。本処理終了後、ステップ1001に戻る。
(第1の実施形態におけるミドル受信部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のミドル受信部202が実行する、パケット受信時の処理フローを、図11を用いて説明する。
【0095】
ステップ1101でミドル受信部202は、第2通信ミドルウェア実行部106からアプリケーションデータ(即ちデカプセル化後のEthernetフレーム)を受信する。
【0096】
ステップ1102でミドル受信部202は、受信したEthernetフレームの宛先MACアドレスをチェックする。もし宛先がユニキャストアドレスであれば、ステップ1104へ進む。ユニキャストアドレスでなければ、ステップ1105へ進む。
【0097】
ステップ1104でミドル受信部202は、Ethernetフレームの宛先MACアドレスを自身の仮想通信I/F108のMACアドレスに書換える。
【0098】
ステップ1105でミドル受信部202は、Ethernetフレームを仮想通信I/F108に渡す。本処理終了後、ステップ1101に戻る。
(第1の実施形態におけるカプセル化判定部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のカプセル化判定部203が実行する、パケット送信時の処理フローを、図12を用いて説明する。
【0099】
ステップ1201でカプセル化判定部203は、仮想通信I/F108から送信パケット(Ethernetフレーム)を取得する。
【0100】
ステップ1202でカプセル化判定部203は、取得したEthernetフレームをカプセルすべきか否か判断する。この判定は、受信したEthernetフレームのIPヘッダ及びTCPヘッダに指定された宛先情報を用いてプロトコル管理テーブル110を参照することにより、行われる。
【0101】
もしカプセル化不要のEthernetフレームであれば、ステップ1204へ進む。カプセル化が必要なEthernetフレームであれば、ステップ1207へ進む。
【0102】
ステップ1204でカプセル化判定部203は、RAW送信部204にEthernetフレームを渡す。本処理終了後、ステップ1201に戻る。
【0103】
ステップ1207でカプセル化判定部203は、ミドル送信部205にEthernetフレームを渡す。この際でカプセル化判定部203は、送信先の第2通信ミドルウェア実行部を指定するための情報(送信先通信装置のIPアドレス、第2通信ミドルウェア実行部106のポート番号を含む、図6の第2ミドルの通信情報602に相当する情報)を一緒にミドル送信部205に渡す。本処理終了後、ステップ1201に戻る。
(第1の実施形態におけるRAW送信部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のRAW送信部204が実行する、パケット送信時の処理フローを、図13を用いて説明する。
【0104】
ステップ1301でRAW送信部204は、カプセル化判定部105からEthernetフレームを取得する。
【0105】
ステップ1302でRAW送信部204は、通信I/F109を用いて、取得したEthernetフレームをRAW送信(そのまま送信)する。本処理終了後、ステップ1301に戻る。
(第1の実施形態におけるミドル送信部のフローチャート)
次に、第1の実施形態において、カプセル化処理部105内のミドル送信部205が実行する、パケット送信時の処理フローを、図14を用いて説明する。
【0106】
ステップ1401でミドル送信部は、カプセル化判定部からEthernetフレームを取得する。
【0107】
ステップ1402でミドル送信部は、EthernetフレームのIPヘッダおよびTCIPヘッダに含まれるアドレス情報(送信先通信装置のIPアドレスおよび当該通信装置の第1通信ミドルウェアを識別するポート番号)を取得する。
【0108】
ステップ1403でミドル送信部は、取得した送信先通信装置のIPアドレスおよび第1通信ミドルウェアを識別するポート番号から、通信情報対応テーブル112を参照し、送信先通信装置の第2通信ミドルウェアに向けてEthernetフレームを送信するために必要な、送信先通信装置のIPアドレスおよび当該通信装置の第2通信ミドルウェアを識別するポート番号を取得する。
【0109】
ステップ1404でミドル送信部は、第2通信ミドルウェア実行部に対し、ステップ1403で取得した送信先通信装置のIPアドレスおよび当該通信装置の第2通信ミドルウェアのポート番号を引き渡し、ステップ1401で受信したEthernetフレームをひとまとまりのアプリケーションデータと見なして送信するよう指示を出す。本ステップ終了後、ステップ1401に戻る。
【実施例2】
【0110】
<第2実施形態>
第2実施形態では、カプセル化対象のパケットとして、OSIモデルで言うところのレイヤ3であるIPデータグラム(以下、IPパケット)を想定した例について説明する。なお、第2実施形態の通信装置101のシステム構成は、第1実施形態のシステム構成(図1および図2)と同じであるため、説明は省略する。
【0111】
以下、第1実施形態と機能が異なる、仮想通信I/F108、RAW受信部201、ミドル受信部202、カプセル化判定部203、RAW送信部204、ミドル送信部205について、説明する。
【0112】
第2実施形態の仮想通信I/F108は、カプセル化対象がIPパケットであるため、カプセル化処理部105と、Ethernetフレームではなく、IPパケットのやりとりを行う。
(第2の実施形態におけるRAW受信部のフローチャート)
次に、第2の実施形態において、カプセル化処理部105内のRAW受信部201の、パケット受信時の処理フローを、図15を用いて説明する。
【0113】
ステップ1501でRAW受信部201は、通信I/F109からEthernetフレームをRAW受信する。
【0114】
ステップ1502でRAW受信部201は、受信したEthernetフレームの宛先MACアドレスをチェックし、正しいEthernetフレームかをチェックする。
【0115】
ステップ1503でRAW受信部201は、受信したEthernetフレームからIPパケットを抽出する。
【0116】
ステップ1504でRAW受信部201は、抽出したIPパケットを仮想通信I/F108に渡す。
(第2の実施形態におけるミドル受信部のフローチャート)
次に、第2の実施形態において、カプセル化処理部105内のミドル受信部202の、パケット受信時の処理フローを、図16を用いて説明する。
【0117】
ステップ1601でミドル受信部202は、第2通信ミドルウェア実行部からアプリケーションデータ(=カプセル化前のIPパケット)を受信する。
【0118】
ステップ1602でミドル受信部202は、受信したIPパケットを仮想通信I/F109に渡す。
(第2の実施形態におけるカプセル化判定部のフローチャート)
第2の実施形態における、カプセル化処理部105内のカプセル化判定部203の、パケット送信時の処理フローについては、図12のEthernetフレームをIPパケットに読み替えれば同様の処理フローとなるため、説明を省略する。
(第2の実施形態におけるRAW送信部のフローチャート)
次に、第2の実施形態における、カプセル化処理部105内のRAW送信部204の、パケット送信時の処理フローを、図17を用いて説明する。
【0119】
ステップ1701でRAW送信部204は、カプセル化判定部からIPパケットを取得する。
【0120】
ステップ1702でRAW送信部204は、Ethernetフレームを作成する。このとき送信元MACアドレスには自身の仮想通信I/F108のMACアドレスを使用する。また、宛先MACアドレスは、宛先IPアドレスから、プロトコルスタックと同様にARP処理によって取得しても良いし、ARPテーブル相当のテーブルを独自に管理しておき、それを参照してもよい。
【0121】
ステップ1703でRAW送信部204は、通信I/Fを用いて、ステップ1702で作成したEthernetフレームをRAW送信する。本処理が終了すると、ステップ1701に戻る。
(第2の実施形態におけるミドル送信部のフローチャート)
第2の実施形態における、カプセル化処理部105内のミドル送信部205の、パケット送信時の処理フローについては、図14のEthernetフレームをIPパケットに読み替えれば同様の処理フローとなるため、説明を省略する。
【実施例3】
【0122】
<第3実施形態>
図18を用いて、二重化通信を行う例を説明する。
【0123】
図18に示す通信装置101は、第2通信ミドルウェア実行部106が2重化通信機能を提供するケースを示している。なお、図18に示す各機能ブロックは、それぞれ図1に示す各機能ブロックと同様の構成を有しているため、同じ符号を付している。
【0124】
図18において、通信装置101は、異なるネットワークアドレス体系のネットワークA(例えば、192.168.1.*)およびネットワークB(例えば、10.232.10.*)に接続されている。そして、仮想通信I/F108AにはネットワークAに所属するIPアドレス(例えば、192.168.0.1)が割り当てられており、仮想通信I/F108BにはネットワークBに属するIPアドレス(例えば、10.232.10.1)が割り当てられている。
【0125】
2重か通信機能を有する通信装置同士がパケットを送受信する際に実行する処理の中で、第1実施形態とは異なる処理を以下に説明する。その他の処理については第1実施形態と同様である。
【0126】
第1通信ミドルウェア実行部104はアプリケーション実行部103から受信したアプリケーションデータ501に第1ヘッダを付与する。第1ヘッダには、通信相手の通信装置の2つの仮想通信I/Fに割当られた2つのIPアドレスのうち、任意の一方のIPアドレスと、通信相手の通信装置の第1通信ミドルウェアを識別するポート番号が含まれる。
【0127】
こうして作成されたアプリケーションデータ502を第1通信ミドルウェア実行部104はプロトコルスタック107へ引き渡す。このとき、第1ヘッダに付与したIPアドレスとポート番号を第1通信ミドルウェア実行部104は指定する。
【0128】
プロトコルスタックは、指定されたIPアドレスを第1IPヘッダに、指定されたポート番号を第1TCPヘッダに有し、更に第1MACアドレスが付与された送信パケット503を作成しこれをいずれか一方の仮想通信I/Fを介してカプセル化処理部105に渡す。
【0129】
カプセル化処理部105では実施例1と同様プロトコル管理テーブルを用いてカプセル化の要否が判断される。この場合、カプセル化要と判断されるので、カプセル化処理部105は送信パケット503を第2通信ミドルウェア実行部106に引き渡す。この際、カプセル化処理部105は、通信相手の通信装置に割り当てられた2つのIPアドレスと当該通信装置の第2通信ミドルウェアの識別情報(ポート番号)も一緒に第2通信ミドルウェア実行部106に通知する。
【0130】
第2通信ミドルウェア実行部106は、カプセル化処理部105から送信用のアプリケーションデータ(=カプセル化前の送信パケット)503を受信すると、これを複製する。そして、通信相手の通信装置のIPアドレスと当該通信装置の第2通信ミドルウェア実行部106のポート番号とを有する第2ヘッダを、オリジナルのアプリケーションデータ503とその複製各々に付与することによって、カプセル化する。この際、オリジナルのアプリケーションデータ503に付与される第2ヘッダと複製に付与される第2ヘッダに含まれているIPアドレスは、同じ通信装置に割り当てられている異なるIPアドレス(すなわち、通信相手の通信装置の2つの仮想通信I/Fに割り当てられている異なるIPアドレス)である。
【0131】
そして、第2通信ミドルウェア実行部106は、各々異なるIPアドレスを第2ヘッダに有する2つのパケット504を、プロトコルスタック107に渡す。この際、第2通信ミドルウェア実行部106は、各通信パケット504の第2ヘッダに格納されたIPアドレス及びポート番号を、当該通信パケット504の宛先としてプロトコルスタックに通知する。
【0132】
パケット504にはプロトコルスタック107によって第2MAC、第2IPヘッダ、第2TCPヘッダが付与される。ここで第2IPヘッダ及び第2TCPヘッダに格納されるのは第2通信ミドルウェア実行部106から指定されたIPアドレス及びポート番号である。こうして作成された2つの通信パケット505は、各々異なる仮想通信I/F108Aまたは仮想通信I/F108Bに渡され、更にカプセル化処理部105によって、各々異なる通信I/F109Aまたは通信I/F109Bに渡されて、RAW送信される。そして、2重化送信されたカプセル化パケットは、異なるネットワーク経由で送信先の通信装置101に到着する。
【0133】
異なるネットワークから当該2重化されたカプセル化パケットを受信した通信装置101では、カプセル化処理部105を介して2つの仮想化通信I/F各々が自身のIPアドレスを宛先に持つパケット505を受信する。このIPパケットはプロトコルスタック107によってMACアドレス、第2IPヘッダ、第2TCPヘッダが外され、第2通信ミドルウェア実行部106がプロトコルスタック107から、2重化されたアプリケーションデータ(=デカプセル化後の受信パケット)504を受け取る。
【0134】
第2通信ミドルウェア106は、2つの受信パケット504各々から第2ヘッダが外し、エラー等の異常の有無を判定する。そして、異常のないアプリケーションデータ(=デカプセル化後の受信パケット)503をカプセル化処理部105に渡す。なお、第2通信ミドルウェア実行部106は、受信した2つのアプリケーションデータ503の内異常のないアプリケーションデータのみをカプセル化処理部105に引き渡す。2つのアプリケーションデータの双方ともに異常がない場合は、いずれか一方(例えば、後着パケット)を破棄し他方のみをカプセル化処理部105に渡す。その後の処理は第1の実施形態と同様である。
【0135】
尚、第3実施形態ではデータが2重化されて送受信される例を説明したが、発明はこれに限られるものではなく、3重化以上の多重化がなされる構成であっても構わない。
【0136】
また、本実施例では、ネットワークAおよびネットワークBが異なるアドレス体系の場合を例に説明したが、同一アドレス体系のネットワークであってもよく、その場合は仮想通信I/F108Aおよび仮想通信I/F108Bは同一ネットワークに属するIPアドレスが割り当てられる。また、本実施例では、通信I/Fが2つの場合を例に説明したが、3つ以上であってもよい。
【0137】
また、第1実施形態、第2実施形態、および第3実施形態において説明した、各通信装置101は、一般的なコンピュータに、前記した各部のプログラムを実行させることで実現することができる。このプログラムは、通信回線を介して提供することが可能であるし、CD−ROM(Compact Disc-Read Only Memory)等の記録媒体に書き込んで配布することも可能である。
【符号の説明】
【0138】
101…通信装置
102…ネットワーク
103…通信アプリケーション実行部
104…第1通信ミドルウェア実行部
105…カプセル化処理部
106…第2通信ミドルウェア実行部
107…プロトコルスタック
108…仮想通信I/F
109…通信I/F
110…プロトコル管理テーブル
112…通信情報対応テーブル
201…RAW受信部
202…ミドル受信部
203…カプセル化判定部
204…RAW送信部
205…ミドル送信部
301…ホストCPU
302…ホストメモリ
303…周辺I/F
304…記憶装置
305…通信I/F
306…バス
1901…旧システムの通信装置
1902…通信アプリケーション
1903…旧通信ミドルウェア
1904…プロトコルスタック
1905…通信I/F
1906…新システムの通信装置
1907…新旧ミドル変換部
1908…新通信ミドルウェア
【特許請求の範囲】
【請求項1】
他の通信装置と通信する通信装置であって、
データを当該他の通信装置を指定した宛先アドレスを用いてカプセル化して、第1パケットを作成する第1パケット作成部と、
当該第1パケットを用いて所定の処理を実行する処理部と、
当該第1パケットを当該宛先アドレスを用いて再びカプセル化して、第2パケットを作成する、第2パケット作成部と、
当該第2パケットを当該他の通信装置へ送信する送信部を有する通信装置。
【請求項2】
請求項1記載の通信装置であって、宛先アドレス毎に第2パケット作成の要否を指定した管理テーブルを有しており、
前記処理部は、前記管理テーブルを参照して、前記第1パケット作成部が作成した第1パケットに含まれる宛先アドレスに基いて当該第1パケットを前記第2パケット作成部がカプセル化すべきか否か判断する通信装置。
【請求項3】
請求項2記載の通信装置であって、前記処理部が前記第1パケットに対するカプセル化は不要であると判断した場合に、前記送信部は当該第1パケットを前記他の通信装置へ送信する通信装置。
【請求項4】
請求項1記載の通信装置であって、更に、
第2パケットを他の通信装置から受信した場合に、当該第2パケットを当該通信装置自身のアドレスでデカプセル化して第1パケットを抽出する第1パケット抽出部と、
当該第1パケットを当該通信装置自身のアドレスで再びデカプセル化してデータを抽出するデータ抽出部とを有する通信装置。
【請求項5】
通信アプリケーションとの間でアプリケーションデータの受け渡しを行い、第1通信プロトコルを用いる第1通信ミドルウェア実行部と、
第2通信プロトコルを用いる第2通信ミドルウェア実行部と、
前記第1通信ミドルウェア実行部および前記第2通信ミドルウェア実行部からの指示に基いて通信パケットの処理を実行するプロトコルスタック部と、
前記プロトコルスタック部との間で通信パケットの受け渡しを行う仮想通信インタフェース部と、
前記仮想通信インタフェース部とネットワークに接続された通信インタフェース部との間で通信パケットの受け渡しを行う処理部とを有しており、
前記第1通信ミドルウェア実行部の指示に基いて、前記プロトコルスタック部は、アプリケーションデータの送信先通信装置の仮想通信インタフェースに割り当てられた第1IPアドレスと当該送信先通信装置の第1通信ミドルウェア実行部に割り当てられた第1ポート番号とを当該アプリケーションデータに付与して第1通信パケットを作成し、当該第1通信パケットを前記仮想通信インタフェース部に渡し、
前記仮想通信インタフェース部から前記第1通信パケットを受信した前記処理部は、当該第1通信パケットを前記第2通信ミドルウェア実行部に渡し、
前記第2通信ミドルウェア実行部は前記第1通信パケットを前記プロトコルスタック部に渡し、
前記プロトコルスタック部は、前記第2通信ミドルウェア実行部の指示に基いて、前記第1IPアドレスと前記送信先通信装置の第2通信ミドルウェア実行部に割り当てられた第2ポート番号とを前記第1通信パケットに付与して第2通信パケットを作成して前記仮想通信インタフェース部に渡し、
前記仮想通信インタフェース部と前記処理部とを経由して前記第2通信パケットを受信した前記通信インタフェース部は、当該第2通信パケットを前記ネットワークに送信する通信装置。
【請求項6】
請求項5記載の通信装置であって、
前記処理部は、前記第1通信パケットに付与されている前記第1IPアドレス及び前記第1ポート番号とに基いて、当該第1通信パケットを前記第2通信ミドルウェア実行部若しくは前記通信インタフェース部のいずれに引き渡すか判断する通信装置。
【請求項7】
請求項6記載の通信装置であって、
前記処理部が前記第1通信パケットを前記通信インタフェース部に引き渡すと判断した場合に、当該処理部から当該第1通信パケットを受信した当該通信インタフェース部は、当該第1通信パケットを前記ネットワークに送信する通信装置。
【請求項8】
請求項5記載の通信装置であって、
前記通信インタフェース部、前記処理部、及び前記仮想通信インタフェース部を介して前記プロトコルスタックが第2通信パケットを受信した場合に、当該プロトコルスタックは当該第2通信パケットから第1通信パケットを抽出して当該第1通信パケットを当該第2通信パケットに付与された第2ポート番号が示す前記第2通信ミドルウェア実行部に渡し、
前記第2通信ミドルウェア実行部と前記仮想通信インタフェース部とを介して前記第1通信パケットを受信した前記プロトコルスタックは、当該第1通信パケットからアプリケーションデータを抽出して、当該アプリケーションデータを当該第1通信パケットに付与された第1ポート番号が示す前記第1通信ミドルウェア実行部に渡す通信装置。
【請求項9】
請求項5記載の通信装置であって、
前記通信インタフェース部、前記処理部、及び前記仮想通信インタフェース部を介して前記プロトコルスタックが第1通信パケットを受信した場合に、当該プロトコルスタックは、当該第1通信パケットからアプリケーションデータを抽出して、当該アプリケーションデータを当該第1通信パケットに付与された第1ポート番号が示す前記第1通信ミドルウェア実行部に渡す通信装置。
【請求項10】
請求項5に記載の通信装置であって、
更に前記第1IPアドレスとは異なるIPアドレスが付与された他の仮想通信インタフェース部と、他の通信インタフェース部とを有しており、
前記第2通信ミドルウェア実行部は、前記第1通信パケットの複製である複製第1通信パケットを作成して前記プロトコルスタック部に渡し、
前記プロトコルスタック部は、前記第2通信ミドルウェア実行部の指示に従って、前記送信先通信装置が有する他の仮想通信インタフェース部に割り当てられた第2IPアドレスと前記第2ポート番号とを前記複製第1通信パケットに付与して他の第2通信パケットを生成して、前記他の仮想通信インタフェース部に渡し、
前記他の仮想通信インタフェース部と前記処理部とを介して前記他の第2通信パケットを受信した前記他の通信インタフェース部は、当該他の第2通信パケットを前記ネットワークへ送信する通信装置。
【請求項11】
請求項10記載の通信装置であって、
前記通信インタフェース部と前記処理部と前記仮想通信インタフェース部とを介して第2通信パケットを、前記他の通信インタフェース部と前記処理部と前記他の仮想通信インタフェース部とを介して他の第2通信パケットを受信した前記プロトコルスタック部は、前記第2通信パケットから第1通信パケットを抽出し、前記他の第2通信パケットから複製第1通信パケットを抽出し、当該第1通信パケットと当該複製第1通信パケットとを前記第2通信ミドルウェア実行部に渡し、
前記第2通信ミドルウェア実行部は、前記第1通信パケットと前記複製通信パケットとを用いて、エラーチェック処理を実行し、いずれか一方を前記処理部に渡す通信装置。
【請求項1】
他の通信装置と通信する通信装置であって、
データを当該他の通信装置を指定した宛先アドレスを用いてカプセル化して、第1パケットを作成する第1パケット作成部と、
当該第1パケットを用いて所定の処理を実行する処理部と、
当該第1パケットを当該宛先アドレスを用いて再びカプセル化して、第2パケットを作成する、第2パケット作成部と、
当該第2パケットを当該他の通信装置へ送信する送信部を有する通信装置。
【請求項2】
請求項1記載の通信装置であって、宛先アドレス毎に第2パケット作成の要否を指定した管理テーブルを有しており、
前記処理部は、前記管理テーブルを参照して、前記第1パケット作成部が作成した第1パケットに含まれる宛先アドレスに基いて当該第1パケットを前記第2パケット作成部がカプセル化すべきか否か判断する通信装置。
【請求項3】
請求項2記載の通信装置であって、前記処理部が前記第1パケットに対するカプセル化は不要であると判断した場合に、前記送信部は当該第1パケットを前記他の通信装置へ送信する通信装置。
【請求項4】
請求項1記載の通信装置であって、更に、
第2パケットを他の通信装置から受信した場合に、当該第2パケットを当該通信装置自身のアドレスでデカプセル化して第1パケットを抽出する第1パケット抽出部と、
当該第1パケットを当該通信装置自身のアドレスで再びデカプセル化してデータを抽出するデータ抽出部とを有する通信装置。
【請求項5】
通信アプリケーションとの間でアプリケーションデータの受け渡しを行い、第1通信プロトコルを用いる第1通信ミドルウェア実行部と、
第2通信プロトコルを用いる第2通信ミドルウェア実行部と、
前記第1通信ミドルウェア実行部および前記第2通信ミドルウェア実行部からの指示に基いて通信パケットの処理を実行するプロトコルスタック部と、
前記プロトコルスタック部との間で通信パケットの受け渡しを行う仮想通信インタフェース部と、
前記仮想通信インタフェース部とネットワークに接続された通信インタフェース部との間で通信パケットの受け渡しを行う処理部とを有しており、
前記第1通信ミドルウェア実行部の指示に基いて、前記プロトコルスタック部は、アプリケーションデータの送信先通信装置の仮想通信インタフェースに割り当てられた第1IPアドレスと当該送信先通信装置の第1通信ミドルウェア実行部に割り当てられた第1ポート番号とを当該アプリケーションデータに付与して第1通信パケットを作成し、当該第1通信パケットを前記仮想通信インタフェース部に渡し、
前記仮想通信インタフェース部から前記第1通信パケットを受信した前記処理部は、当該第1通信パケットを前記第2通信ミドルウェア実行部に渡し、
前記第2通信ミドルウェア実行部は前記第1通信パケットを前記プロトコルスタック部に渡し、
前記プロトコルスタック部は、前記第2通信ミドルウェア実行部の指示に基いて、前記第1IPアドレスと前記送信先通信装置の第2通信ミドルウェア実行部に割り当てられた第2ポート番号とを前記第1通信パケットに付与して第2通信パケットを作成して前記仮想通信インタフェース部に渡し、
前記仮想通信インタフェース部と前記処理部とを経由して前記第2通信パケットを受信した前記通信インタフェース部は、当該第2通信パケットを前記ネットワークに送信する通信装置。
【請求項6】
請求項5記載の通信装置であって、
前記処理部は、前記第1通信パケットに付与されている前記第1IPアドレス及び前記第1ポート番号とに基いて、当該第1通信パケットを前記第2通信ミドルウェア実行部若しくは前記通信インタフェース部のいずれに引き渡すか判断する通信装置。
【請求項7】
請求項6記載の通信装置であって、
前記処理部が前記第1通信パケットを前記通信インタフェース部に引き渡すと判断した場合に、当該処理部から当該第1通信パケットを受信した当該通信インタフェース部は、当該第1通信パケットを前記ネットワークに送信する通信装置。
【請求項8】
請求項5記載の通信装置であって、
前記通信インタフェース部、前記処理部、及び前記仮想通信インタフェース部を介して前記プロトコルスタックが第2通信パケットを受信した場合に、当該プロトコルスタックは当該第2通信パケットから第1通信パケットを抽出して当該第1通信パケットを当該第2通信パケットに付与された第2ポート番号が示す前記第2通信ミドルウェア実行部に渡し、
前記第2通信ミドルウェア実行部と前記仮想通信インタフェース部とを介して前記第1通信パケットを受信した前記プロトコルスタックは、当該第1通信パケットからアプリケーションデータを抽出して、当該アプリケーションデータを当該第1通信パケットに付与された第1ポート番号が示す前記第1通信ミドルウェア実行部に渡す通信装置。
【請求項9】
請求項5記載の通信装置であって、
前記通信インタフェース部、前記処理部、及び前記仮想通信インタフェース部を介して前記プロトコルスタックが第1通信パケットを受信した場合に、当該プロトコルスタックは、当該第1通信パケットからアプリケーションデータを抽出して、当該アプリケーションデータを当該第1通信パケットに付与された第1ポート番号が示す前記第1通信ミドルウェア実行部に渡す通信装置。
【請求項10】
請求項5に記載の通信装置であって、
更に前記第1IPアドレスとは異なるIPアドレスが付与された他の仮想通信インタフェース部と、他の通信インタフェース部とを有しており、
前記第2通信ミドルウェア実行部は、前記第1通信パケットの複製である複製第1通信パケットを作成して前記プロトコルスタック部に渡し、
前記プロトコルスタック部は、前記第2通信ミドルウェア実行部の指示に従って、前記送信先通信装置が有する他の仮想通信インタフェース部に割り当てられた第2IPアドレスと前記第2ポート番号とを前記複製第1通信パケットに付与して他の第2通信パケットを生成して、前記他の仮想通信インタフェース部に渡し、
前記他の仮想通信インタフェース部と前記処理部とを介して前記他の第2通信パケットを受信した前記他の通信インタフェース部は、当該他の第2通信パケットを前記ネットワークへ送信する通信装置。
【請求項11】
請求項10記載の通信装置であって、
前記通信インタフェース部と前記処理部と前記仮想通信インタフェース部とを介して第2通信パケットを、前記他の通信インタフェース部と前記処理部と前記他の仮想通信インタフェース部とを介して他の第2通信パケットを受信した前記プロトコルスタック部は、前記第2通信パケットから第1通信パケットを抽出し、前記他の第2通信パケットから複製第1通信パケットを抽出し、当該第1通信パケットと当該複製第1通信パケットとを前記第2通信ミドルウェア実行部に渡し、
前記第2通信ミドルウェア実行部は、前記第1通信パケットと前記複製通信パケットとを用いて、エラーチェック処理を実行し、いずれか一方を前記処理部に渡す通信装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2012−129897(P2012−129897A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2010−281143(P2010−281143)
【出願日】平成22年12月17日(2010.12.17)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願日】平成22年12月17日(2010.12.17)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]