通信装置
【課題】通信ミドルウェアを含む通信装置のシステム移行の容易化及びコスト低減など。
【解決手段】本通信装置(101)は、例えば、新・旧の通信ミドルウェアを有する通信装置間で、データ送信の場合、通信アプリケーションのデータによる旧(第1)通信ミドルウェアを通じた第1パケットをもとに、新(第2)通信ミドルウェアを経由するように指定したヘッダ情報を付けてカプセル化した第2パケットを作成して送信する処理を行う(カプセル化処理部105等)。そして、本通信装置(101)は、データ受信の場合、受信したパケットにおける第1パケット部分のヘッダの宛先アドレス情報を自装置宛ての情報に書き換えるヘッダ書き替え部206を有する。
【解決手段】本通信装置(101)は、例えば、新・旧の通信ミドルウェアを有する通信装置間で、データ送信の場合、通信アプリケーションのデータによる旧(第1)通信ミドルウェアを通じた第1パケットをもとに、新(第2)通信ミドルウェアを経由するように指定したヘッダ情報を付けてカプセル化した第2パケットを作成して送信する処理を行う(カプセル化処理部105等)。そして、本通信装置(101)は、データ受信の場合、受信したパケットにおける第1パケット部分のヘッダの宛先アドレス情報を自装置宛ての情報に書き換えるヘッダ書き替え部206を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置に関し、特に、通信装置が備える通信ミドルウェアに関する。
【背景技術】
【0002】
例えば鉄道の運行管理システムや金融システムは、そのシステム(情報処理システム)の立ち上げ当初は小規模であっても、システム拡張や他システムとの統合等により、大規模化かつ複雑化していくことが多い。そして、システムを構成する装置の高性能化や技術の進歩に合わせてシステムを更新する(以下「新システムに移行する」「システム移行」等とも表現する)場合には、それらのシステム規模が大きくなるに従って修正箇所が多岐にわたるため、開発コストが膨大となる。
【0003】
システム移行(特に通信ミドルウェアの変更)における一般的な問題について、図17を用いて説明する。図17は、旧システムの通信装置1701から新システムの通信装置1706へシステム移行するケースを示している。旧システムの通信装置1701に示すような構成は一般的なものである。即ち、様々なサービスを提供する通信アプリケーション1702が、システム固有の通信基盤である旧通信ミドルウェア1703上で動作する。そして、通信アプリケーション1702が動作してデータを通信相手に送信する際には、その下位の階層に位置する旧通信ミドルウェア1703及びプロトコルスタック1704(TCP,IP等のプロトコル群)を用いて、通信I/F1705(I/F:インタフェース)を介してネットワークにデータのパケット(フレーム等)を送出する。
【0004】
ここで、旧システムから新システムへシステム移行し、通信装置の通信ミドルウェアを旧通信ミドルウェア1703から新通信ミドルウェア1707に切り替える場合について考えてみる。
【0005】
システム規模が小さい間は、通信ミドルウェアを変更すると共に通信アプリケーション1702を新しいものに切り替えることが一般的である。しかしシステム規模が大きい場合、上述のように通信アプリケーション1702の開発コストが膨大なものとなってしまう。そのため開発コストを抑えるためには、旧システムの通信アプリケーション1702を新システムの通信装置1706でも流用することが望まれる。
【0006】
上述のように、旧システムの通信アプリケーション1702は、旧通信ミドルウェア1703上で動作することを前提に開発されている。そこで、システム移行した場合には、図17の下側(1706)に示すように、通信アプリケーション1702を新システムの新通信ミドルウェア1708上で動作させるために、旧通信ミドルウェア1703と新通信ミドルウェア1708との差異を補う新旧ミドル変換部1707を設ける必要がある。
【0007】
大規模システムにおいては、通信アプリケーション1702をすべて作り替えるよりは、新旧ミドル変換部1707を新規に開発する方が開発コストは少なくて済む。しかしながら、それでも新旧ミドル変換部1707の開発コストは依然として大きい。例えば、新旧ミドル変換部1707は、少なくとも、(1)通信アプリケーション1702とのインタフェース部分、(2)新通信ミドルウェア1708とのインタフェース部分、及び、(3)旧通信ミドルウェア1703及び新通信ミドルウェア1708のそれぞれの内部の挙動(タイムアウト条件等)を模擬する部分、についての機能を必要とする。特に、上記(3)の部分の開発を行うためには、旧通信ミドルウェア1703及び新通信ミドルウェア1708の内部の動作を詳細まで熟知している必要があるため、多大な時間を費やすことになり、通信アプリケーション1702のプログラムの再利用性の観点から効率が悪い。
【0008】
上記問題に関して、先行技術例として、特開2008−078966号公報(特許文献1)、非特許文献1、等がある。
【0009】
特許文献1では、旧システムの通信装置とネットワークとの間に、旧システムの通信装置から送信されるパケットをカプセル化するカプセル化装置(トンネリング装置)を設ける。カプセル化装置は、カプセル化した各パケットを、新システムの新通信ミドルウェア経由でネットワークに送信する。また、カプセル化装置は、ネットワークから受信したカプセル化されたパケットを、デカプセル化(カプセル化解除)して、旧システムのパケットを抽出し、旧システムの通信装置に送信する。
【0010】
非特許文献1では、仮想Ethernet I/F(Ethernetは登録商標)を通信装置自身に備え、通信装置単体で旧システムのパケットをカプセル化する技術が公開されている。具体的には、通信装置は、仮想Ethernet I/Fに新たなIPアドレスを割り当てて、すべての通信が仮想Ethernet I/Fを経由するようにルーティングテーブル等の設定を行う。そして、通信装置は、旧システムのパケット(Ethernetフレーム)を仮想Ethernet I/Fを介してカプセル化して新通信ミドルウェアに渡すことで、新システムのパケットを送信することができるようになる。
【0011】
このように、特許文献1や非特許文献1に記載の技術では、新規に開発する対象が、新通信ミドルウェア経由で受信した旧システムのパケット(Ethernetフレーム)を旧システムに渡す部分(前記(1)の部分)、およびパケット(Ethernetフレーム)を新通信ミドルウェアに渡す部分(前記(2)の部分)のみとなる。そのため、旧通信ミドルウェアと新通信ミドルウェアを相互変換する新旧ミドル変換部1707を開発する場合に比べて、技術難易度も低く、開発コストも大幅に削減することが可能となる。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2008−078966号公報
【非特許文献】
【0013】
【非特許文献1】登大遊、“SoftEther の内部構造”、[online]、[平成22年9月7日検索]、インターネット<URL:http://www.softether.co.jp/jp/company/media/academic/data/softetherpaper002.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0014】
背景技術に記載したように、特許文献1に開示されている技術では、旧システムのシステム設定(IPアドレス等)は全く変更せずに、カプセル化装置を設置するだけで新システムへの移行が可能となる。しかしながら、カプセル化装置が通信装置の台数分だけ必要となり、ハードウェアコストが膨大になるという問題が生じる。
【0015】
また、非特許文献1に開示されている技術では、通信装置単体で新システムへの移行が可能であるため、追加のハードウェアコストは不要となる。しかし、仮想Ethernet I/Fは、OSからは物理Ethernet I/Fと同じように認識されるため、物理Ethernet I/Fと異なるIPアドレスを設定する必要がある。したがって、旧システムのシステム設定(IPアドレス等)変更や、新システム設計時にIPアドレスの制約を考慮しなければならない(旧システムのIPアドレスと重複してはいけない等)といった手間が生じる。
【0016】
また、システム移行リスクを小さくするために、一気に全通信装置を新装置に切り替えるのではなく、一定期間をかけて数台ずつ段階的に切り替える方法をとることもある。その場合、完全に移行が完了するまでは、同一ネットワーク上に、旧システムのIPアドレスのパケットと新システムのIPアドレスのパケットとが混在することになり、一般的なルータやスイッチでは対応できない可能性がある。このような単一ネットワーク上に複数のIPアドレスが混在する問題についても、非特許文献1や特許文献1では解決することができない。
【0017】
以上を鑑み、本発明の主な目的は、通信装置のシステム移行など(旧通信ミドルウェアから新通信ミドルウェアへの変更など)に係わり、上述のようなIPアドレス等(システム設定)の変更やハードウェアの追加無しに、旧通信ミドルウェアを介して情報を送受信する通信アプリケーションが、新通信ミドルウェアを介してでも情報を送受信できるようにする技術(言い換えるとシステム移行の容易化及びコスト低減などの実現)を提供することである。
【課題を解決するための手段】
【0018】
本発明のうち代表的な形態は、通信システムを構成する通信装置(通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置)、等であって、以下に示す構成を有することを特徴とする。
【0019】
(1A)本通信装置は、送信側の自装置である第1の通信装置から受信側の他装置である第2の通信装置へ対象の第1のデータをパケット(フレーム等)として送信する場合の送信機能として、対象の第1のデータに、第2の通信装置を宛先として指定するアドレス情報(使用するプロトコルに応じた情報)を含む第1ヘッダを付けて、第1パケット(カプセル化前の通常のパケット)を作成する処理を行う第1パケット作成部と、第1パケットを用いて、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第1の処理を実行する第1の処理部と、第1パケットに、第2の通信装置(その通信ミドルウェア)を宛先として指定するアドレス情報を含む第2ヘッダを付けて、カプセル化した第2パケット(カプセル化パケット)を作成する処理を行う第2パケット作成部と、第2パケットを用いて、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第2の処理を実行し、当該第2パケットをネットワーク(第2の通信装置)へ送信する第2の処理部と、を有する。
【0020】
本通信装置は、送信側の他装置である第2の通信装置から受信側の自装置である第1の通信装置へ対象の第2のデータをパケットとして受信する場合の受信機能として、ネットワーク(第2の通信装置)から受信した第2パケットに対し、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第3の処理を実行し、第2ヘッダを外してカプセル化解除により第1パケットを取り出し、第1パケットから第1ヘッダを外して対象の第1のデータを取り出す処理を行う第3の処理部と、第1の通信装置の通信ミドルウェアを通じて受け取った第2パケットにおける第1パケットの部分の第1ヘッダの宛先アドレス情報を、当該受信側の自装置である第1の通信装置のアドレス情報によって書き替えることにより、当該第1パケットを自装置で受領させる処理を行うヘッダ書き替え部と、を有する。
【0021】
(2A)本通信装置は、送信側の自装置である第1の通信装置から受信側の他装置である第2の通信装置へ対象の第1のデータをパケットとして送信する場合の送信機能として、対象の第1のデータに、第2の通信装置を宛先として指定するアドレス情報を含む第1ヘッダを付けて、第1パケットを作成する処理を行う第1パケット作成部と、第1パケットを用いて、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行する第1の処理部と、第1パケットに、第2の通信装置(その通信ミドルウェア)を宛先として指定するアドレス情報を含む第2ヘッダを付けて、カプセル化した第2パケットを作成する処理を行う第2パケット作成部と、第2パケットを用いて、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行し、当該第2パケットをネットワーク(第2の通信装置)へ送信する第2の処理部と、を有する。
【0022】
本通信装置は、送信側の他装置である第2の通信装置から受信側の自装置である第1の通信装置へ対象の第2のデータをパケットとして受信する場合の受信機能として、ネットワーク(第2の通信装置)から受信した第2パケットに対し、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第3の処理を実行し、前記第2ヘッダを外してカプセル化解除により前記第1パケットを取り出し、第1パケットから第1ヘッダを外して対象の第1のデータを取り出す処理を行う第3の処理部と、を有する。
【0023】
本通信装置は、送信機能として、送信対象のパケットが前記ネットワークのルータを経由して通信するか否かを通信情報の比較により判定するルータ跨ぎ判定部と、受信側の第2の通信装置の宛先アドレス情報を取得するために、ARPを用いて、送信対象のパケットのヘッダの宛先の第2の通信装置のIPアドレス情報を第2パケットの第2ヘッダの宛先のIPアドレス情報としてカプセル化した、ARP要求による第2パケットを作成して送信させ、当該ARP要求に対するARP応答を受信するまで、当該送信対象のパケットを一時的に保持しておくパケット保持部と、保持している送信対象のパケットのヘッダの宛先の第2の通信装置のアドレス情報を、第2の通信装置から受信したARP応答による第2パケットに含まれているアドレス情報によって書き替えて、当該書き替えたパケットを送信させる宛先変更部と、を有する。
【0024】
本通信装置は、受信機能として、ネットワークから受信したパケットがARP要求による第2パケットである場合に、当該ARP要求で要求されている自装置のアドレス情報を含む、第1の通信装置のIPアドレス情報を第2パケットの第2ヘッダの宛先のIPアドレス情報としてカプセル化した、ARP応答による第2パケットを作成して送信させる第4の処理部を有する。
【0025】
(1B)本通信装置は、前記(1A)で、前記送信機能の第1パケット作成部、第1の処理部、第2パケット作成部、第2の処理部、及び前記受信機能の第3の処理部を構成する要素として以下を有する。本通信装置は、旧通信ミドルウェアに相当する第1通信ミドルウェアを実行する第1通信ミドルウェア実行部と、新通信ミドルウェアに相当する第2通信ミドルウェアを実行する第2通信ミドルウェア実行部と、第1通信ミドルウェア上で動作する通信アプリケーションを実行し対象のデータを処理する通信アプリケーション実行部と、第1及び第2通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、ネットワークの代わりにプロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、前記通信インタフェース部、仮想通信インタフェース部、及び第2通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有する。そして、本通信装置は、IPアドレス及びプロトコルを含む通信情報と、第1通信ミドルウェアの通信情報と第2通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、仮想通信インタフェース部のみに対してIPアドレスを割り当てる。そして、前記カプセル化処理部は、前記ヘッダ書き替え部を有し、前記ヘッダ書き替え部は、前記受信時に、前記第2通信ミドルウェア実行部の第2通信ミドルウェアを通じて受け取った第2パケットにおける第1パケットの部分の第1ヘッダの宛先アドレス情報を、第1の通信装置のアドレス情報によって書き替えることにより、当該第1パケットの対象の第1のデータを自装置で受領させる処理を行う。
【0026】
(2B)本通信装置は、前記送信機能の第1パケット作成部、第1の処理部、第2パケット作成部、第2の処理部、前記受信機能の第3の処理部、及び第4の処理部を構成する要素として以下を有する。本通信装置は、旧通信ミドルウェアに相当する第1通信ミドルウェアを実行する第1通信ミドルウェア実行部と、新通信ミドルウェアに相当する第2通信ミドルウェアを実行する第2通信ミドルウェア実行部と、第1通信ミドルウェア上で動作する通信アプリケーションを実行し対象のデータを処理する通信アプリケーション実行部と、第1及び第2通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、ネットワークの代わりにプロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、前記通信インタフェース部、仮想通信インタフェース部、及び第2通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有する。そして、本通信装置は、IPアドレス及びプロトコルを含む通信情報と、第1通信ミドルウェアの通信情報と第2通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、仮想通信インタフェース部のみに対して前記IPアドレスを割り当てる。そして、前記カプセル化処理部は、前記送信機能として、前記ルータ跨ぎ判定部と、前記パケット保持部と、前記宛先変更部と、を有し、前記受信機能として、前記第4の処理部を有する。
【発明の効果】
【0027】
本発明のうち代表的な形態によれば、通信装置のシステム移行などに係わり、IPアドレス等の変更やハードウェアの追加無しに、旧通信ミドルウェアを介して情報を送受信する通信アプリケーションが、新通信ミドルウェアを介してでも情報を送受信できるようになる(システム移行の容易化及びコスト低減などの実現)。
【図面の簡単な説明】
【0028】
【図1】本発明の一実施の形態の通信装置の機能ブロック構成例を示す図である。
【図2】実施の形態1の通信装置の、カプセル化処理部の詳細構成を示す図である。
【図3】通信装置のハードウェア構成例を示す図である。
【図4】プロトコル管理テーブルの例を示す図である。
【図5】通信情報対応テーブルの例を示す図である。
【図6】新装置が新装置にデータを送信する場合の電文を示す図である。
【図7】新装置が新装置にデータを送信する場合の通信フローを示す図である。
【図8】新装置が旧装置にデータ送信する場合の電文を示す図である。
【図9】新装置が旧装置にデータ送信する場合の通信フローを示す図である。
【図10】旧装置が新装置にデータ送信する場合の電文を示す図である。
【図11】旧装置が新装置にデータ送信する場合の通信フローを示す図である。
【図12】実施の形態2の通信装置のカプセル化処理部の詳細構成を示す図である。
【図13】新装置から新装置へのデータ送信の電文(1)を示す図である。
【図14】新装置から新装置へのデータ送信の通信フロー(1)を示す図である。
【図15】新装置から新装置へのデータ送信の電文(2)を示す図である。
【図16】新装置から新装置へのデータ送信の通信フロー(2)を示す図である。
【図17】システム移行に関する従来技術例を示す図である。
【発明を実施するための形態】
【0029】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお説明上、「第1パケット」:カプセル化前の通常のパケット、「第2パケット」:カプセル化後のパケット、とする。また、「第1通信ミドルウェア(M1)」:システム移行における旧通信ミドルウェア、「第2通信ミドルウェア(M2)」:システム移行における新通信ミドルウェア、とする。以下の実施の形態では、カプセル化対象のパケット(データ)は、OSIモデルで言うところのレイヤ2におけるEthernetフレームを想定する。
【0030】
<実施の形態1>
図1〜図11を用いて、本発明の実施の形態1の通信装置及びシステムについて説明する。システム移行に伴い、システム内の複数の通信装置における少なくとも一部の通信装置に、旧通信ミドルウェアに加え新通信ミドルウェアが実装された場合である。このシステム構成において、実施の形態1では、特に、新通信ミドルウェアが実装された通信装置(「新装置」)は、送信側の通信装置からネットワークを介して受信したパケット(第2パケット)における第1パケット部分のヘッダ情報(宛先情報)を、第2パケット部分のヘッダ情報(宛先情報)によって書き換えて自分宛ての情報として受領するヘッダ書き替え部(図2の206、図7の105b等)を有する。
【0031】
[通信装置(機能)]
図1を用いて、実施の形態1の通信装置及びそのシステムの概要について説明する。通信装置101は、互いにネットワーク102を介して通信できるように接続される。通信装置101は、データ(パケット)の送信・受信の両方の機能を備える。システム全体は、少なくとも送信側及び受信側の2つの通信装置101を含んで構成される。システム内の複数の通信装置101における少なくとも一部の通信装置101は新装置(旧通信ミドルウェア(104)に加え新通信ミドルウェア(106)が実装された構成)であり、他の通信装置101は旧装置(旧通信ミドルウェア(104)のみ実装された構成)である。新装置の通信アプリケーション(103)は旧装置の通信アプリケーション(103)が流用される。例えば10台のうちの1台、5台、10台といったように段階的に新装置が導入され、新旧の通信装置101の混在の状態を経てシステム移行される。本実施の形態では、ネットワーク102は、ルータ113等で接続された複数のサブネットにより構成されている。ネットワーク102は、EthernetやTCP/IP等に対応したLANやWAN等である。
【0032】
通信装置101は、通信アプリケーション実行部103、第1通信ミドルウェア実行部104、カプセル化処理部105、第2通信ミドルウェア実行部106、プロトコルスタック107、仮想通信I/F108、通信I/F109、プロトコル管理テーブル110、及び通信情報対応テーブル112、等を備える構成である。通信装置101は、図示しないが、その他、OS等の一般的な要素を実装している。通信装置101は、通信機能を備える例えばPC等の各種の情報処理装置として捉えてもよい。
【0033】
通信アプリケーション実行部103は、所定のサービス(種々のサービス)を他の通信装置(101)に対して提供したり、他の通信装置(101)に対して所定のサービス(種々のサービス)を要求したりする通信アプリケーションプログラムを実行する。なお103は、1つだけでなく複数が存在し動作してもよい。103において実行される通信アプリケーションプログラム(以下略す場合は「アプリケーション」「APP」等)は、図17の構成では通信アプリケーション1702に相当し、第1通信ミドルウェア実行部104において実行される第1通信ミドルウェア(システム移行前の旧通信ミドルウェア)上で動作する。
【0034】
第1通信ミドルウェア実行部104(以下略す場合は「第1(旧)通信ミドルウェア」(M1)等)は、103のAPP(複数のAPP)が実行されるときに共通に使用される機能を提供するプログラムを実行する。例えば、当該プログラムは、ソケットI/Fを備えており、一般的に、認証や暗号化等のセキュリティ機能や、ソケットの初期化や終了処理等の複雑な通信処理機能等を有している。なお、第1通信ミドルウェア実行部104において実行されるプログラムは、旧通信プロトコルを用いるものであって、図17での旧通信ミドルウェア1703に相当する。
【0035】
第2通信ミドルウェア実行部106(以下略す場合は「第2(新)通信ミドルウェア」(M2)等)は、第1通信ミドルウェアと同様に、APPが実行されるときに共通に使用される機能を提供するプログラムを実行する。第2通信ミドルウェア実行部106において実行されるプログラムは、新通信プロトコルを用いるものであって、図17での新通信ミドルウェア1708に相当し、第1通信ミドルウェア実行部104とは異なる通信プロトコル処理を実行する。
【0036】
カプセル化処理部105は、送信の場合に、仮想通信I/F108から受け取った送信パケット(「Ethernetフレーム」等)をチェック(確認)し、カプセル化が必要かどうかを判定し、カプセル化が必要なパケット(カプセル化対象(要)の第1パケット)である場合は、第2通信ミドルウェア実行部106に渡し、カプセル化の必要が無いパケット(カプセル化対象外(不要)のパケット、カプセル化済みの第2パケット等)である場合は、そのまま通信I/F109経由で送信する処理を行う。また、カプセル化処理部105は、受信の場合に、通信I/F109や第2通信ミドルウェア実行部106を通じて受け取った受信パケットを、必要に応じてヘッダ書き換え処理した後、仮想通信I/F108に渡す処理などを行う。105の詳細構成については後述する(図2)。
【0037】
プロトコルスタック107は、例えばTCP,UDP,IP等の所定のプロトコル処理を行うプログラム群(プロトコル処理部)である。107は、第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106との間で、ソケットI/Fを介して送受信情報を受け渡すことができ、仮想通信I/F108と通信する。
【0038】
仮想通信I/F108は、通信I/F機能をソフトウェアで模擬した仮想的な通信インタフェース部であり、OSからは通常の通信インタフェース(通信I/F109等)と等価に扱われる。ただし、通常の通信インタフェース(109)が特定の通信用ハードウェアと関連付け(実装)されて、そのハードウェアと送受信パケットの受け渡しを行うのに対し、仮想通信I/F108は、特定のソフトウェアプログラムと関連付け(実装)されて、そのプログラムと送受信パケットの受け渡しを行う。本実施の形態では、108は、カプセル化処理部105等と共にソフトウェアで実装される。108は、カプセル化処理部105及びプロトコルスタック107と連携し、プロトコルスタック107から渡された送信パケット(Ethernetフレーム)をカプセル化処理105に渡し、またカプセル化処理部105から渡されたデータを受信パケット(Ethernetフレーム)とみなしてプロトコルスタック107に渡す。
【0039】
通信I/F109は、カプセル化処理部105から渡された送信パケット(Ethernetフレーム)に対し、チェックサム計算などの送信に必要な処理を行い、関連付け(実装)されているハードウェア経由でネットワーク102に送信する。また、109は、ネットワーク102から受信したパケット(Ethernetフレーム)を、カプセル化処理部105に渡す。
【0040】
上記の仮想通信I/F108及び通信I/F109はOSから見たら等価に扱われるが、本実施の形態では、IPアドレス等のシステム設定情報(通信情報)を、仮想通信I/F108のみに対して割り当て、通信I/F109には割り当てない。これにより、プロトコルスタック107からは唯一の通信インタフェースとして仮想通信I/F108だけが認識されるようになり、通信I/F109は、ネットワーク102とカプセル化処理部105との間でパケット(Ethernetフレーム)を転送する機能だけを提供するようになる。
【0041】
プロトコル管理テーブル110、及び通信情報対応テーブル112は、通信装置101(カプセル化処理部105等)で参照される情報(管理情報)である。詳細は後述するが、プロトコル管理テーブル110(図4)の情報は、カプセル化処理部105(特に仮想通信I/F108から送信パケットを受け取ったときのカプセル化判定部203)が、当該パケットをカプセル化すべきか否か判定する際などに用いられる。通信情報対応テーブル112(図5)の情報は、カプセル化処理部105(特にカプセル化判定部203から送信パケットを受け取ったときのミドル送信部205)が、送信パケット(第1パケット)に含まれる送信先通信装置の第1通信ミドルウェア(M1)の通信情報から、それに対応付けられる送信先通信装置の第2通信ミドルウェア(M2)の通信情報を取得する際(即ち第2パケットの作成の際)などに用いられる。
【0042】
[カプセル化処理部]
次に図2を用いてカプセル化処理部105の詳細構成について説明する。カプセル化処理部105は、RAW受信部201、ミドル受信部202、カプセル化判定部203、RAW送信部204、ミドル送信部205、及びヘッダ書き替え部206、を有する構成である。なお実線は送信時のデータフロー、破線は受信時のデータフローを示す。A1等は説明上のデータ・情報や処理ステップを示す。
【0043】
RAW受信部201は、ネットワーク102経由で通信I/F109に到着した受信パケット(Ethernetフレーム)を通信I/F109からRAW受信で受け取り(A1)、当該フレームをそのまま仮想I/F108に渡す(A2)といった処理を行う。
【0044】
ミドル受信部202は、ヘッダ書き替え部206から渡されたアプリケーションデータ(デカプセル化されたEthernetフレーム(第1パケット))(A3)を、そのまま仮想通信I/F108に渡す(A4)といった処理を行う。
【0045】
カプセル化判定部203は、送信時、仮想通信I/F108から受け取ったパケット(送信パケット)(A5)をチェック・判定し、カプセル化が必要な場合などには、ミドル送信部205に渡し(A6)、カプセル化が不要な場合などには、RAW送信部204に渡す(A7)といった処理を行う。
【0046】
ミドル送信部205は、カプセル化判定部203から受け取ったパケット(A6)に、後述のヘッダ情報(図6等)を付与して、第2通信ミドルウェア実行部106に渡す(A8)といった処理を行う(言い換えるとカプセル化のための指示情報を提供する)。
【0047】
RAW送信部204は、カプセル化判定部203から受け取ったパケット(A7)を、通信I/F109に渡す(A9)といった処理を行う。
【0048】
ヘッダ書き替え部206は、受信時、第2通信ミドルウェア実行部106からパケット(受信パケット)を受け取り(A10)、後述するヘッダ書き換え処理を実施してから、ミドル受信部202に当該パケットを渡す(A3)といった処理を行う。
【0049】
[通信装置(ハードウェア)]
次に図3を用いて通信装置101(図1)のハードウェア構成について説明する。通信装置101は、各種処理を行うホストCPU301、ホストメモリ302、周辺I/F303、記憶装置304、通信I/F109、及びバス307等から構成される。301〜304、109等の要素はバス307を介して通信可能に接続されている。
【0050】
ホストCPU301は、プログラムを実行するプロセッサである。ホストメモリ302は、ホストCPU301がプログラムを実行する際にワーキングメモリ及び入出力データの一時バッファとして用いられる。周辺I/F303は、マウス、キーボード、モニタ等の入出力装置や、USBメモリ等の外部ストレージ、等の各種周辺機器などと接続するためのインタフェースである。記憶装置304は、磁気ディスク装置、フラッシュROM等から構成され、OS、各種ドライバ、各種アプリケーションプログラムや、プログラムで使用される各種情報(例えば管理者または保守者によって設定される情報等)を格納している。
【0051】
通信I/F109は、通信装置101がネットワーク102を介して他の通信装置101と通信を行う際のインタフェースを提供する。特に通信I/F109は、例えばネットワークインタフェースカードないしボード等の特定の独立した通信用ハードウェア(例えばEthernetコントローラチップ等)により実装できる。なお図3では通信I/F109は1つしか記載していないが2つ以上であっても構わない。
【0052】
図1に示した機能要素(103〜108、109)の各々は、図3のハードウェア構成でのソフトウェアプログラム処理など(記憶装置304に格納されたプログラムがホストメモリ302に読み込まれてホストCPU301によって実行されること等)により構成できる。上記のように109は独立したハードウェアで実装されてもよい。また、図1のプロトコル管理テーブル110、及び通信情報対象テーブル112等のテーブル(管理情報)は、例えば記憶装置304に格納される。
【0053】
[テーブル(1)]
図4を用いてプロトコル管理テーブル110に格納される情報について説明する。図4のプロトコル管理テーブル110では、パケットを送信する際に参照する、パケット種別410、IPアドレス401、ポート番号402、プロトコル403、等の情報を格納している。本テーブル情報は、通信装置101の管理者または保守者等によって予め設定されてもよいし、各通信装置101と個別にプロトコル情報をやりとりするプログラム等によって設定されてもよいし、全通信装置101のプロトコル情報をまとめて管理しているサーバに問い合わせて設定してもよい。
【0054】
パケット種別410の列は、パケットの種別を示す情報が格納され、例として、IPパケットであることを示す“IP”、ARP(Address Resolution Prtocol)パケットであることを示す“ARP”等がある。IPアドレス401の列は、パケットの送信先(宛先)の通信装置101を識別するIPアドレス情報が格納される。
【0055】
ポート番号402の列は、パケットの送信先(宛先)のポート番号が格納される。ポート番号は、一般に、通信サービス(例えばFTP、HTTP等)の識別に用いられる。本実施の形態では、このポート番号は、パケットの宛先となる通信ミドルウェア(104,106)及び通信アプリケーション(103)等を特定するための1つの情報として用いられる(後述のサービスIDも関係する)。送信先が同じ通信装置101であっても、異なるポート番号(及びサービスID)を用いることによって、通信サービス(通信ミドルウェア及び通信アプリケーション)の種別を特定・変更することができる。
【0056】
プロトコル403の列は、当該パケットに施す処理の種類(使用するプロトコル等)を示す情報が格納される。プロトコル名が指定されている場合(例:“プロトコルA”,“プロトコルB”等)は、当該プロトコルを用いたパケットのカプセル化が必要であることを意味(設定)し、そうではない場合、例えば“RAW送信”が指定されている場合には、当該パケットをそのまま送信すること(カプセル化は不要)を意味(設定)している。なお図4では403には3種類(RAW送信,プロトコルA,プロトコルB)を記載しているがこれに限らなくてよい。
【0057】
図4の例において、421の行では、IPパケットを用いて、IPアドレスが“191.168.0.1”である送信先の通信装置(101)と、ポート番号“80”で指定される通信ミドルウェア(例えばある新通信ミドルウェア)で通信を行う場合、(カプセル化済みにより)カプセル化を行わずにそのまま送信(RAW送信)することを表している。他方、422の行では、IPパケットを用いて、IPアドレスが421と同じ“191.168.0.1”である通信装置と、ポート番号“23”で指定される通信ミドルウェア(例えばある旧通信ミドルウェア)で通信を行う場合、“プロトコルA”を用いたパケットのカプセル化が必要であることを表している。423の行では、IPパケットを用いて、IPアドレスが421と異なる“191.168.0.2”である通信装置と、422と同じポート番号“23”で指定される通信ミドルウェアで通信を行う場合、カプセル化を行わずにそのまま送信すること、を表している。また424の行では、ポート番号402の*印は、任意のポート番号で構わないことを表している。また425の行では、ARPのパケット(フレーム)についてはそのアドレスに関わらずカプセル化を行わずそのまま送信することを表している。
【0058】
上記図4のテーブル形式は一例であり、他の情報項目を管理して同様の機能を実現してもよい。例えば、通信ミドルウェアID,通信アプリケーションID,カプセル化要否フラグ情報などを関連付けて管理してもよい。
【0059】
[テーブル(2)]
次に図5を用いて通信情報対応テーブル112に格納される情報について説明する。図5の通信情報対応テーブル112は、第1通信ミドルウェア(M1)の通信情報501と、それに対応付けられる第2通信ミドルウェア(M2)の通信情報502とを格納している。それぞれの列(501,502)は、詳しくは、IPアドレス、ポート番号、サービスID、等の情報を含む。
【0060】
図5において、例えば521の行では、送信パケットに含まれる第1通信ミドルウェアの通信情報としてIPアドレスが“X”、ポート番号が“Y”、サービスIDが“Z”である場合に、第2通信ミドルウェアを用いて送信するために必要な第2通信ミドルウェアの通信情報としてIPアドレスが“X”(同じ)、ポート番号が“y”(異なる)、サービスIDが“z”(異なる)であることを表している。
【0061】
ここで、上記IPアドレスについては、送信先の通信装置101の仮想通信I/F108に割り当てられているアドレスであるから、第1(旧)通信ミドルウェア(501)でも第2(新)通信ミドルウェア(502)でも同じ値となる。一方、上記ポート番号については、本実施の形態では、新/旧の区別を含め通信ミドルウェアを一意に特定するのに用いられる。そのため、上記501,502のポート番号は異なる値となる。
【0062】
また上記サービスIDについては、本実施の形態では、送信先の通信ミドルウェアが送信パケットをどこに引き渡すかを示すIDとして用いる。特に、どのサービスを提供するどの通信アプリケーション(103)に引き渡すかを特定するために用いる。本実施の形態では、サービスIDは、例えば、ポート番号が第1通信ミドルウェア(M1)を示している場合には通信アプリケーション実行部103(特定のAPP)を指し示し、ポート番号が第2通信ミドルウェア(M2)を示している場合にはカプセル化処理部105を指し示す。なおサービスIDは、上記に限らず、例えば、M2が105を介さずにAPPと通信する場合には、ポート番号がM2を示している場合にサービスIDが当該APPを指し示すようにしてもよい。
【0063】
上記テーブル(112)で管理する通信情報の例(IPアドレス,ポート番号,サービスID)に限らず、第1通信ミドルウェア(M1)と第2通信ミドルウェア(M2)の対応関係が分かる情報であればよい。
【0064】
図4,図5の例のようなテーブル情報を用いることにより、本システムでは、通信装置(101)、新/旧の区別を含む通信ミドルウェア(104,106)、及び通信アプリケーション(103)等を識別し、対応関係を把握し、これに基づいて必要に応じてパケットのカプセル化などを行う。
【0065】
[処理シーケンス1(新→新)]
次に、図6,図7を用いて、新システムへの移行後における新装置から新装置へのデータ送信時のカプセル化通信の処理シーケンスについて説明する。図7の新装置である送信側の第1の通信装置A(101a)から、同じく新装置である受信側の第2の通信装置B(101b)へデータを送信する際のカプセル化通信を示す。通信装置A,Bは共に新装置、即ち第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106を有する構成(図1と同じ)である。なお通信装置AのIPアドレスを“A”,MACアドレスを“a”、通信装置BのIPアドレスを“B”,MACアドレスを“b”、ルータ113のIPアドレスを“R”,MACアドレスを“r”、で表すとする。S1等は通信(処理)のステップを示す。
【0066】
図6は、図7の通信フローに対応した、新装置(A)から新装置(B)へデータを送信する場合のパケット等の電文(その変化)を示す。601等の符号で示す行は、図7中の矢印に付けた符号と対応関係である。概略的な区分であるが、P1:第1パケット、P2:第2パケット、を示す。H1は、第1パケットP1のヘッダ、D1は第1パケットP1のデータ、H2は第2パケットP2のヘッダ、D2は第2パケットP2のデータ、を示す。第1パケットP1は、第2パケットP2でカプセル化されるデータ(D2)となる。D1の「データ」列は、第1パケットP1に格納する対象のデータ(アプリケーションデータ等)を示す。h1〜h8はレイヤ等に応じた各ヘッダを示す。「第1IP」(h3)等ではIPアドレスを指定する。「第1TCP」(h2)等ではポート番号を指定する。「第1MAC」(h4)等ではMACアドレスを指定する。「任意」は、所定の形式に応じた任意指定の情報を示す。「一意」は、テーブル(110,112)等に基づいて一意に決定される情報を示す。例えば「第1TCP」ヘッダ(h2)の「一意」は、特定の通信ミドルウェアを示すポート番号などが格納される。“B”,“r”等は、アドレス等の具体的な値の例を記号で簡略化して示す。
【0067】
(S1)図7において、まず、通信装置Aの通信アプリケーション実行部103a(APP)が、第1通信ミドルウェア実行部104a(M1)に対して、アプリケーションデータ(第1パケットに格納する対象となるデータ)(601)を渡す。この際、103aは、当該データ(601)の送信先の(通信装置Bの)第1通信ミドルウェア実行部104b(M1)を指定するための情報を、当該データ(601)と一緒に104aに渡す。上記送信先(M1)を指定するための情報は、ここでは、通信装置BのIPアドレス“B”と、104b(M1)を特定するポート番号(“Pm1”とする)とを含む、図5の通信情報対応テーブル112の第1通信ミドルウェアの通信情報501(その格納値)に相当する情報である。
【0068】
(S2)次に、第1通信ミドルウェア実行部104a(M1)は、任意の第1ミドルヘッダ(h1)の情報を上記アプリケーションデータ(601)に付与し、これをアプリケーションデータ(602)として、プロトコルスタック107aに渡す。この際、104aは、上記の通信装置BのIPアドレス“B”と104b(M1)を示すポート番号“Pm1”とを含む情報を、プロトコルスタック107aに対し指定する。
【0069】
(S3)次に、プロトコルスタック107aは、上記104aから指定された通信装置BのIPアドレス“B”をIPヘッダ(第1IPヘッダ:h3)の情報とし、同ポート番号“Pm1”をTCPヘッダ(第1TCPヘッダ:h2)の情報として、上記アプリケーションデータ(602)に付与し、更に当該パケットの送信先MACアドレス(第1MAC:h4)の情報も付与して、送信用のパケット(Ethernetフレーム)(第1パケット)(603)を生成する。ここでは(図7)、通信装置Aと通信装置Bがルータ113を介して接続されている場合なので、107aは、通信装置Bとの通信をルータ113経由で行うために、当該パケット(Ethernetフレーム)(603)の送信先MACアドレス(第1MAC:h4)に、ルータ113のMACアドレス“r”を設定する。そして最後に、107aは、この送信用パケット(第1パケット)(603)を、仮想通信I/F108aに渡す。
【0070】
(S4)次に、仮想通信I/F108aは、上記107aから受け取った送信用パケット(603)を、そのままカプセル化処理部105aに渡す。
【0071】
(S5)次に、カプセル化処理部105aは、上記108aから受け取った送信パケット(603)のIPヘッダ(第1IPヘッダ:h3)及びTCPヘッダ(第1TCPヘッダ:h2)に含まれる宛先情報(通信装置BのIPアドレス“B”及び104bを示すポート番号“Pm1”)を用いて、プロトコル管理テーブル110(図4)を参照し、当該送信パケット(603)に対してカプセル化を行うか否か(要/不要)を判定する(カプセル化判定部203による処理)。前述のように特にテーブル(110)のプロトコル403等の値をもとに判定できる。本例(図7)のように、通信相手の通信装置101(B)が第2通信ミドルウェア実行部106(即ち新通信ミドルウェア(M2))を有する新装置であって、当該送信パケットの宛先のポート番号が旧通信ミドルウェア(M1)を指し示している場合、プロトコル管理テーブル110のプロトコル403欄には、当該送信パケットを(新通信ミドルウェア経由で通信させるように)カプセル化するためのプロトコル(例えば“プロトコルA”)が指定されている。従ってこの場合、カプセル化処理部105aは、当該パケットにつきカプセル化を行う(要)と判定し、第2通信ミドルウェア実行部106aに対し、当該送信パケット(603)(P1)をアプリケーションデータ(603)(D2)として渡す。この際、105aは、送信先の通信装置Bの第2通信ミドルウェア実行部106b(M2)を指定するための情報(IPアドレス“B”,106b(M2)を示すポート番号(“Pm2”とする)を含む、図5(112)の502相当情報)を、当該データ(603)と一緒に106aに渡す。
【0072】
(S6)次に、第2通信ミドルウェア実行部106aは、任意の第2ミドルヘッダ(h5)の情報を上記アプリケーションデータ(603)に付与し、これをアプリケーションデータ(604)として、プロトコルスタック107aに渡す。この際、106aは、上記のIPアドレス“B”と106b(M2)を示すポート番号“Pm2”とを含む情報を107aに対して指定する。
【0073】
(S7)次に、プロトコルスタック107aは、上記の106bから指定されたIPアドレス“B”をIPヘッダ(第2IPヘッダ:h7)の情報とし、同ポート番号“Pm2”をTCPヘッダ(第2TCPヘッダ:h6)の情報として、上記アプリケーションデータ(604)に付与し、更に当該パケットの送信先MACアドレス(第2MAC:h8)の情報も付与して、送信用パケット(605)を生成し、当該生成したパケット(第2パケット)(605)を仮想通信I/F108aに渡す。尚ここで107aがアプリケーションデータ(604)に第2IPヘッダ(h7)として付与したIPアドレスは、送信先の通信装置Bの仮想通信I/F108bに割り当てられているIPアドレス“B”であり、先(S3)に107aがアプリケーションデータ(602)に第1IPヘッダ(h3)として付与したIPアドレスと同じである。また、107aがここでアプリケーションデータ(604)に第2MAC(h8)として付与したアドレスは、ルータ113のMACアドレス“r”であり、先(S3)に107aがアプリケーションデータ(602)に第1MAC(h4)として付与したアドレス“r”と同じである。
【0074】
(S8)次に、仮想通信I/F108aは、上記の送信用パケット(605)をそのままカプセル化処理部105aに渡す。
【0075】
(S9)次に、カプセル化処理部105aは、上記105aから受け取った送信用パケット(605)のIPヘッダ(第2IPヘッダ:h7)及びTCPヘッダ(第2TCPヘッダ:h6)に含まれる宛先情報(IPアドレス“B”及び106b(M2)を示すポート番号“Pm2”)を用いて、プロトコル管理テーブル110(図4)を参照し、当該送信パケット(605)に対してカプセル化を行うか否か(要/不要)を判定する(カプセル化判定部203による処理)。
【0076】
ここでは、通信相手の通信装置101(B)が第2通信ミドルウェア実行部106(M2)を有する新装置であって、TCPヘッダに格納された宛先ポート番号“Pm2”が第2通信ミドルウェア(M2)を指し示しており、プロトコル管理テーブル110のプロトコル403欄には当該送信パケットを(カプセル化済みにより)カプセル化せずにそのまま送信(RAW送信)するように指定されている。従って、カプセル化処理部105a(203)は、カプセル化不要と判定し、当該送信用パケット(605)をそのまま通信I/F109aに渡す。
【0077】
(S10)次に、通信I/F109aは、上記の送信用パケット(605)をネットワーク102に送出する。
【0078】
(S11)ルータ113は、上記ネットワーク102から送出されたパケット(605)の第2MACヘッダ(h8)の情報を参照する。ここで当該第2MAC(h8)では当該ルータ113のMACアドレス“r”が格納されているため、ルータ113は、自分宛ての当該パケット(605)を受信する。更に、ルータ113は、当該パケット(605)の第2IP(h7)のアドレス情報を参照する。ここで当該第2IP(h7)では通信装置BのIPアドレス“B”が格納されているため、ルータ113は、当該パケット(605)の第2MAC(h8)の情報を、“r”から通信装置BのMACアドレス“b”に書き換えたパケット(606)を作成し、当該パケット(606)を通信装置Bへ転送する(ネットワーク102に送出する)。
【0079】
(S12)通信装置B(101b)の通信I/F109bは、上記ネットワーク102のルータ113からパケット(606)を受信すると、受信パケット(606)をそのままカプセル化処理部105bに渡す。
【0080】
(S13)次に、カプセル化処理部105bは、上記の受信パケット(606)をそのまま仮想通信I/F108bに渡す。
【0081】
(S14)次に、仮想通信I/F108bは、上記の受信パケット(606)をプロトコルスタック107bに渡す。
【0082】
(S15)次に、プロトコルスタック107bは、上記の受信パケット(606)に対してプロトコル処理を行い、受信パケット(606)のアプリケーションデータ部分(607)を取り出す。そして、受信パケット(606)のTCPヘッダ(第2TCPヘッダ:h6)による指定(ポート番号)に従って、当該アプリケーションデータ部分(607)を第2通信ミドルウェア実行部106b(M2)に渡す。
【0083】
(S16)次に、第2通信ミドルウェア実行部106b(M2)は、上記107bから受け取ったアプリケーションデータ(607)から第2ヘッダ(第2ミドルヘッダ:h5)を外して(カプセル化解除)、残りの部分(第1パケット)(608)をカプセル化処理部105bに渡す。
【0084】
(S17)次に、カプセル化処理部105bは、上記106b(M2)から受け取ったパケット(608)を仮想通信I/F108bに渡す際に、ヘッダ書き換え部206による処理として、第1MAC(h4)の宛先を、(ルータ113のMACアドレス“r”から)自身(通信装置B)のMACアドレス“b”に無条件で書き替えたパケット(608’)を作成し、仮想通信I/F108bへ転送する。これは、ルータ113を介して接続された通信装置Aと通信装置Bとがカプセル化通信を行う場合において、第1MAC(h4)の書き替えを行わずにパケットをそのまま仮想通信I/F108へ転送した場合、パケットの第1MAC(h4)の宛先がルータ113のMACアドレス“r”が格納されたままとなり、仮想通信I/F108が当該パケットはルータ113宛てであって自装置(B)宛てでは無いと判断して当該パケットを破棄してしまうこと、を防止するためである。
【0085】
(S18)次に、仮想通信I/F108bは、上記105bから受け取ったパケット(608’)を、プロトコルスタック107bに渡す。
【0086】
(S19)次に、プロトコルスタック107bは、上記108bから受け取ったパケット(608’)に対しプロトコル処理を行い、当該パケット(608’)のアプリケーションデータ部分(609)を取り出して、これを当該パケット(608’)のTCPヘッダ(第1TCPヘッダ:h2)の情報(ポート番号)に従って第1通信ミドルウェア実行部104b(M1)に渡す。
【0087】
(S20)次に、第1通信ミドルウェア実行部104b(M1)は、上記107bから受け取ったアプリケーションデータ(609)から第1ミドルヘッダ(h1)を外して、そのアプリケーションデータ(610)を通信アプリケーション実行部103b(APP)に渡す(なお前述のように必要に応じてサービスIDも参照してAPPを識別する)。以上のようにして、新装置から新装置へ、M2経由のカプセル化通信(第2パケット)を用いて、送信元のAPP(103a)から送信先のAPP(103b)へデータが送信される。
【0088】
[処理シーケンス2(新→旧)]
次に、図8,図9を用いて、新システム移行後の新装置から旧装置へのデータ送信時の非カプセル化通信の処理シーケンスについて説明する。図9の新装置である送信側の第1の通信装置C(101c)から、旧装置である受信側の第2の通信装置D(101d)へデータを送信する際の非カプセル化通信(カプセル化を行わない通信)を示す。通信装置Cは、第1通信ミドルウェア実行部104(104c)及び第2通信ミドルウェア実行部106(106c)を有する。通信装置Dは、第1通信ミドルウェア実行部104(104d)を有するが第2通信ミドルウェア実行部106を有さない。なお通信装置CのIPアドレスを“C”,MACアドレスを“c”、通信装置DのIPアドレスを“D”,MACアドレスを“d”とする。図8は、図9に対応した、新装置(C)から旧装置(D)へデータを送信する場合の電文を示し、見方は図6と同様である。
【0089】
(S1)図9で、まず、通信装置C(101c)の通信アプリケーション実行部103c(APP)が、第1通信ミドルウェア実行部104c(M1)にアプリケーションデータ(801)を渡す。この際、103cは、送信先の(通信装置Dの)第1通信ミドルウェア実行部104d(M1)を指定するための情報(IPアドレス“D”、104d(M1)を示すポート番号“Pm1”を含む501相当情報)を当該データ(801)と一緒に104cに渡す。
【0090】
(S2)次に、第1通信ミドルウェア実行部104c(M1)は、任意の第1ミドルヘッダ(h1)の情報をアプリケーションデータ(801)に付与し、これをアプリケーションデータ(802)として、プロトコルスタック107cに渡す。この際、104c(M1)は、上記のIPアドレス“D”及びポート番号“Pm1”を含む情報を107cに対し指定する。
【0091】
(S3)次に、プロトコルスタック107cは、上記104c(M1)から指定されたIPアドレス“D”をIPヘッダ(第1IPヘッダ:h3)の情報とし、同ポート番号“Pm1”をTCPヘッダ(第1TCPヘッダ:h2)の情報として、アプリケーションデータ(802)に付与し、更に当該パケットの送信先MACアドレス(第1MAC:h4)の情報も付与して、送信用のパケット(Ethernetフレーム)(第1パケット)(803)を生成する。ここでは、通信装置Cと通信装置Dがルータ113を介して接続しているので、107cは、通信装置Dとの通信をルータ113経由で行うために、当該パケット(Ethernetフレーム)(803)の送信先MACアドレス(第1MAC:h4)に、ルータ113のMACアドレス“r”を設定する。そして最後に、107cは、当該パケット(803)を仮想通信I/F108cに渡す。
【0092】
(S4)次に、仮想通信I/F108cは、上記送信用パケット(803)をそのままカプセル化処理部105cに渡す。
【0093】
(S5)次に、カプセル化処理部105cは、上記送信用パケット(803)のIPヘッダ(第1IPヘッダ:h3)及びTCPヘッダ(第1TCPヘッダ:h2)に含まれる宛先情報(IPアドレス“D”及びポート番号“Pm1”)を用いて、プロトコル管理テーブル110(図4)を参照し、当該パケット(803)に対してカプセル化を行うかどうか判定する。通信相手の通信装置101(D)が第2通信ミドルウェア実行部106(M2)を有していない旧装置である場合、プロトコル管理テーブル110のプロトコル403欄には、当該パケットをカプセル化せずそのまま送信(RAW送信)するよう指定されている。従ってここでは、105cは、カプセル化を行わないと判定し、当該パケット(803)をそのまま通信I/F109cに渡す。
【0094】
(S6)次に、通信I/F109cは、上記送信用パケット(803)をネットワーク102へ送出する。
【0095】
(S7)ルータ113は、上記ネットワーク102に送出されたパケット(803)の第1MAC(h4)の情報を参照する。当該第1MAC(h4)には、当該ルータ113のMACアドレス“r”が格納されているので、ルータ113は自分宛てである当該パケット(803)を受信する。更に、ルータ113は、当該パケット803の第1IP(h3)のアドレスを参照する。ここで、当該第1IP(h3)のアドレスは、通信装置DのIPアドレス“D”が格納されているので、ルータ113は、当該パケット(803)の第1MAC(h4)の情報を通信装置DのMACアドレス“d”に書き換えたパケット(804)を作成し、通信装置Dへ転送する。
【0096】
(S8)通信装置D(101d)の通信I/F109dは、上記ネットワーク102のルータ113からパケット(804)を受信すると、受信パケット(804)をプロトコルスタック107dに渡す。
【0097】
(S9)次に、プロトコルスタック107dは、上記109dから受け取ったパケット(804)に対しプロトコル処理を行い、当該パケット(804)のアプリケーションデータ部分(805)を取り出して、当該アプリケーションデータ(805)を、当該パケット(804)のTCPヘッダ(第1TCPヘッダ:h2)の指定(ポート番号)に従って、第1通信ミドルウェア実行部104d(M1)に渡す。
【0098】
(S10)次に、第1通信ミドルウェア実行部104d(M1)は、上記107dから受け取ったアプリケーションデータ(805)から第1ヘッダ(第1ミドルヘッダ:h1)を外して、残りの部分(アプリケーションデータ)(806)を通信アプリケーション実行部103d(APP)に渡す(前述のように必要に応じてサービスIDも参照)。以上のようにして、新装置から旧装置へ、第1パケットを用いて、送信元のAPP(103c)から送信先のAPP(103d)へデータが送信される。
【0099】
[処理シーケンス3(旧→新)]
次に、図10,図11を用いて、旧装置から新装置へのデータ送信時の非カプセル化通信の処理シーケンスについて説明する。図11の旧装置である送信側の第1の通信装置E(101e)から、新装置である受信側の第2の通信装置F(101f)へデータを送信する際の非カプセル化通信を示す。通信装置Eは、第1通信ミドルウェア実行部104(104e)を有するが第2通信ミドルウェア実行部106を有さない。通信装置Fは、第1通信ミドルウェア実行部104(104f)及び第2通信ミドルウェア実行部106(106f)を有する。なお通信装置EのIPアドレスを“E”,MACアドレスを“e”、通信装置FのIPアドレスを“F”,MACアドレスを“f”とする。図10は、図11に対応した、旧装置(E)から新装置(F)へデータを送信する場合の電文を示す。
【0100】
(S1)図11で、まず、通信装置E(101e)の通信アプリケーション実行部103e(APP)が、第1通信ミドルウェア実行部104e(M1)にアプリケーションデータ(1001)を渡す。この際、103eは、送信先の(通信装置Fの)第1通信ミドルウェア実行部104f(M1)を指定するための情報(IPアドレス“F”、104f(M1)を示すポート番号(“Pm1”)を含む501相当情報)を、当該データ(1001)と一緒に104eに渡す。
【0101】
(S2)次に、第1通信ミドルウェア実行部104e(M1)は、任意の第1ミドルヘッダ(h1)の情報をアプリケーションデータ(1001)に付与し、これをアプリケーションデータ(1002)として、プロトコルスタック107eに渡す。この際、104e(M1)は、上記のIPアドレス“F”及びポート番号“Pm1”を含む情報を107eに対し指定する。
【0102】
(S3)次に、プロトコルスタック107eは、上記104e(M1)から指定されたIPアドレス“F”をIPヘッダ(第1IPヘッダ:h3)の情報とし、同ポート番号“Pm1”をTCPヘッダ(第1TCPヘッダ:h2)の情報として、アプリケーションデータ(1002)に付与し、更に当該パケットの送信先MACアドレス(第1MAC:h4)の情報も付与して、送信用のパケット(Ethernetフレーム)(第1パケット)(1003)を生成する。ここでは、通信装置Eと通信装置Fがルータ113を介して接続しているので、107eは、通信装置Fとの通信をルータ113経由で行うために、当該パケット(Ethernetフレーム)(1003)の送信先MACアドレス(第1MAC:h4)に、ルータ113のMACアドレス“r”を設定する。そして最後に、107eは、当該パケット(1003)を仮想通信I/F108eに渡す。
【0103】
(S4)次に、仮想通信I/F109eは、上記送信用パケット(1003)をネットワーク102へ送出する。
【0104】
(S5)ルータ113は、上記ネットワーク102に送出されたパケット(1003)の第1MAC(h4)の情報を参照する。ここで当該第1MAC(h4)は、当該ルータ113のMACアドレス“r”が格納されているため、ルータ113は、当該パケット(1003)を受信する。更に、ルータ113は、当該パケット(1003)の第1IP(h3)のアドレスを参照する。ここで当該第1IP(h3)のアドレスは通信装置FのIPアドレス“F”が格納されているため、ルータ113は、当該パケット(1003)の第1MAC(h4)を通信装置FのMACアドレス“f”に書き換えたパケット(1004)を作成し、当該パケット(1004)を通信装置Fへ転送する。
【0105】
(S6)通信装置F(101f)の通信I/F109fは、上記ネットワーク102のルータ113からパケット(1004)を受信すると、そのままカプセル化処理部105fに渡す。
【0106】
(S7)次に、カプセル化処理部105fは、上記109fから受け取ったパケット(1004)をそのまま仮想通信I/F108fに渡す。
【0107】
(S8)次に、仮想通信I/F108fは、上記105fから受け取ったパケット(1004)をプロトコルスタック107fに渡す。
【0108】
(S9)次に、プロトコルスタック107fは、上記108fから受け取ったパケット(1004)に対してプロトコル処理を行い、アプリケーションデータ部分(1005)を取り出し、当該アプリケーションデータ(1005)を、当該パケット(1004)の第1TCPヘッダ(h2)の指定(ポート番号)に従って、第1通信ミドルウェア実行部104f(M1)に渡す。
【0109】
(S10)次に、第1通信ミドルウェア実行部104f(M1)は、アプリケーションデータ(1005)から第1ヘッダ(第1ミドルヘッダ:h1)を外して、残りの部分(アプリケーションデータ)(1006)を通信アプリケーション実行部103f(APP)に渡す(前述のように必要に応じてサービスIDも参照)。以上のようにして、旧装置から新装置へ、第1パケットを用いて、送信元のAPP(103e)から送信先のAPP(103f)へデータが送信される。
【0110】
[効果等]
上述のように、本実施の形態の通信装置101では、仮想通信I/F108のみにIPアドレス等が割り当てられ、すべての通信が仮想通信I/F108及びカプセル化処理部105を経由するように設定・構成される。本通信装置101は、データ送信時、カプセル化処理部105(カプセル化判定部203等)の処理に基づき、旧通信ミドルウェア(M1)の第1パケット(P1)を新通信ミドルウェア(M2)経由の第2パケット(P2)にカプセル化して送信する。また本通信装置101は、データ受信時、カプセル化処理部105(ヘッダ書き換え部206等)の処理に基づき、受信した新通信ミドルウェア(M2)経由の第2パケット(P2)を(カプセル化解除して)旧通信ミドルウェア(M1)の第1パケット(P1)に戻す。その際、ヘッダ書き換え部206により自動的にヘッダ情報(宛先情報)を書き換えて自分宛ての情報として受領する(第1パケット部分のヘッダ情報(特にMACアドレス情報)を、第2パケット部分の宛先情報で書き換える(図7の105b,S16(608),S17(608’)等)。
【0111】
実施の形態1では、前記図9,図11に示す各パケット送受信処理(旧装置を含む場合の通信処理)においては、受信側及び送信側の通信装置101が新装置であるか否かに関わらず、パケットのIPヘッダ(第1IPヘッダ:h3)には、仮想通信I/F108に割り当てられたIPアドレスが用いられている。即ち、新システムへの移行に伴ってIPアドレスを変更する必要無く従前のIPアドレスを使い続けてパケットの送受信が可能であることが分かる。
【0112】
実施の形態1によれば、通信装置101を含むシステムで、IPアドレス等(システム設定情報)の変更や専用のハードウェア(カプセル化装置等)の追加無しに、旧システムの旧通信ミドルウェア(M1)を介してデータを送受信する通信アプリケーション(APP)がそのまま(流用して)新システムの新通信ミドルウェア(M2)を介してでもデータの送受信が可能になる。即ちシステム移行の容易化及びコスト低減などの効果がある。
【0113】
<実施の形態2>
図12〜図16等を用いて、本発明の実施の形態2について説明する。実施の形態2では、実施の形態1と同様に、システム移行に伴い、システム内の複数の通信装置101に、旧通信ミドルウェア(M1)に加え新通信ミドルウェア(M2)が実装された場合において、実施の形態1と同様の目的・効果等を達成するための異なる手段を有する構成である。実施の形態2の通信装置101の基本的な構成などは前述の実施の形態1(図1)と同様であり、カプセル化処理部105の処理が異なる。実施の形態1では受信側で第1パケット部分の宛先情報を変更(書き換え)する手段を有する構成であるに対し、実施の形態2では、新通信ミドルウェア(M2)が実装された新装置は、送信側で、パケットを送信する前にルータ(113)を経由する通信かどうかに応じて第1パケット部分の宛先情報を変更する手段(図12、207〜209等)を有する構成である。特に、ARPを用いて、送信元の通信装置では、宛先(受信側)の通信装置のMACアドレス情報を取得するために、宛先の通信装置のIPアドレスを第2パケットとしてカプセル化したARPリクエスト(ARP要求)を作成して送信する(図13の1323等)。それに対して、宛先(受信側)の通信装置では、送信元の通信装置のIPアドレスを第2パケットとしてカプセル化したARPリプライ(ARP応答)を返信する(図15の1333等)。これにより送信元の通信装置は、宛先の通信装置のMACアドレス情報を取得でき、一時的に保持していた送信パケットを当該MACアドレス情報を用いて宛先の通信装置へ送信し、宛先の通信装置が当該パケットを受領できる。
【0114】
[カプセル化処理部]
図12を用いて実施の形態2の通信装置101のカプセル化処理部105の詳細構成について説明する。実施の形態2でのカプセル化処理部105は、RAW受信部201、ミドル受信部202、カプセル化判定部203、RAW送信部204、ミドル送信部205、ルータ跨ぎ判定部207、パケット保持部208、及び宛先変更部209を有する構成である(図2のヘッダ書き換え部206は有さない)。
【0115】
RAW受信部201は、受信時、ネットワーク102経由で通信I/F109に到着した受信パケット(Ethernetフレーム)を通信I/F109からRAW受信で受け取り(A1)、当該フレームをそのまま仮想I/F108に渡す(A2)といった処理を行う。
【0116】
カプセル化判定部203は、送信時、プロトコル管理テーブル110(図4)を参照し、仮想通信I/F108から受信したパケット(A5)をチェック(確認)しカプセル化の要否などを判定する。203は、当該受信パケット(A5)が第2通信ミドルウェア(M2)により既にカプセル化されている場合(カプセル化済み)を含め、カプセル化不要と判定した場合(a3)には、当該パケットをRAW送信部204に渡し、当該受信パケットが、未だ第2通信ミドルウェア(M2)によりカプセル化されていない場合(カプセル化未済み)を含め、カプセル化要と判定した場合(a4)には、ルータ跨ぎ判定部207に渡す。
【0117】
ただし、カプセル化判定部203は、上記108から受信したパケット(A5)がARP要求やARP応答(以降、ARP要求、ARP応答、またはその両方について、特に指定しない場合、ARPフレームと呼ぶ)の場合は、プロトコル管理テーブル110(図4)を参照せずに、当該ARPフレームの内部の宛先IPアドレスと、仮想通信I/F108に設定されたIPアドレスとの比較により、カプセル化の要否を判定する。203は、上記ARPフレーム内部の宛先IPアドレスと108の設定IPアドレスとで、それぞれのネットワークアドレス(なお全体のうちの部分情報である)が同一である場合、当該ARPフレームは、自通信装置が接続しているネットワーク(102)に接続している他通信装置宛てのARPフレームであるため、カプセル化不要と判定する。また203は、上記ARPフレーム内部の宛先IPと108の設定IPアドレスとで、それぞれのネットワークアドレスが異なる場合、ルータ113を跨いだ他通信装置(ルータ113を経由した異なるサブネットに接続される他通信装置)宛てのARPフレームであるため、カプセル化要と判定する。203は、上記カプセル化不要と判定した場合(a3)、当該ARPフレームをRAW送信部204に渡し、上記カプセル化要と判定した場合(a4)、当該ARPフレームをルータ跨ぎ判定部207に渡す。
【0118】
RAW送信部204は、カプセル化判定部203やパケット保持部208から受け取ったパケット(a3,a5)をそのまま通信I/F109に渡す(A9)。
【0119】
ルータ跨ぎ判定部207は、カプセル化判定部203から受け取ったパケット(a4)について、上述のルータ113を跨ぐ通信をするか否かをチェック・判定する。207は、203から受け取ったパケット(a4)の第1IP(前記h3)に格納された宛先IPアドレスのネットワークアドレス部分と、仮想通信I/F108に設定されたIPアドレスのネットワークアドレス部分とを比較し、同じ値でない場合、当該パケット(a4)はルータ113を跨ぐ通信をする(ルータ跨ぎ有り)(a6)と判定する。同様に、207は、上記部分が同じ値である場合、当該パケット(a4)はルータ113を跨ぐ通信ではない(ルータ跨ぎ無し)(a7)と判定する。207は、ルータ跨ぎ有り(a6)の場合、当該パケットをパケット保持部208に渡し、ルータ跨ぎ無し(a7)の場合、当該パケットをミドル送信部205に渡す。ただし、207は、203から受け取ったパケット(a4)がARPフレームである場合、当該ARPフレームは203にて既にルータ113を跨いで通信をすると判定されているため、無条件でミドル送信部205に渡す。
【0120】
パケット保持部208は、上記ルータ跨ぎ判定部207からパケットを受け取った場合(a6)、通信相手の通信装置101のMACアドレス情報を取得するために、それに対応するARP要求(a8)をミドル送信部205に渡す。その後、208は、(通信相手からの)ARP応答(a2)を受信するまで、もしくはARP応答タイムアウトになるまで、上記207から受け取ったパケット(a6)を保持する。また、208は、ミドル受信部202から(通信相手からの)ARP応答(a2)を受け取った場合、当該ARP応答の送信元(つまり通信相手の)MACアドレスの情報と、上記保持していたパケットとを、宛先変更部209に渡す(a9)。また、208は、上記ARP要求に対するARP応答がタイムアウトとなった場合は、上記保持していたパケットだけをRAW送信部204へ渡す(a5)。
【0121】
宛先変更部209は、上記208から受け取ったパケット(a9)の第1MAC(前記h4)の情報を、上記208から同様に受け取ったARP応答の送信元MACアドレス情報によって書き換える(即ち宛先を変更する)。次に、209は、上記第1MAC(h4)を書き換えたパケット(a10)を、ミドル送信部205に渡す。
【0122】
ミドル受信部202は、受信時、第2通信ミドルウェア実行部106から渡された電文(A10)がARP応答である場合、当該ARP応答をパケット保持部202に渡し(a2)、106から渡された電文(A10)がARP応答以外である場合、つまりARP要求やアプリケーションデータ等である場合、その電文をそのまま仮想通信I/F108に渡す(a1)といった処理を行う。
【0123】
ミドル送信部205は、送信時、ルータ跨ぎ判定部207から受け取ったARP応答を含むパケット(a7)と、宛先変更部209から受け取ったパケット(a10)と、パケット保持部208から受け取ったARP要求(a8)とのそれぞれについて、第2通信ミドルウェア実行部106に渡す。その際、205は、実施の形態1と同様に、送信先の第2通信ミドルウェア実行部106(M2)を指定するための情報(IPアドレス及び106(M2)を示すポート番号を含む図5(112)の502相当情報)を付け加えて、106に渡す。
【0124】
ただし、上記でARPフレームを106に渡す場合(a7)、205は、送信先の第2通信ミドルウェア実行部106(M2)を指定するための情報として、当該ARPフレーム内部に格納されている宛先IPアドレス情報を106に渡す。これにより、宛先の通信装置のIPアドレスを第2パケットとしてカプセル化したARPフレームを作成することができる。
【0125】
[処理シーケンス(新→新)]
次に、図13〜図16を用いて、実施の形態2において、新システム移行後の新装置(通信装置A)から新装置(通信装置B)へデータを送信する際のカプセル化通信の処理シーケンスを説明する。図14,図16の通信装置A(101a)及び通信装置B(101b)は共に第1通信ミドルウェア実行部104(M1)及び第2通信ミドルウェア実行部106(M2)を有する(図7と同様)。
【0126】
(S1)図14で、まず、通信装置Aの通信アプリケーション実行部103a(APP)が、第1通信ミドルウェア実行部104a(M1)にアプリケーションデータ(1301)を渡す。この際、103aは、送信先の(通信装置Bの)第1通信ミドルウェア実行部104b(M1)を指定するための情報(IPアドレス“B”及び104b(M1)を示すポート番号(“Pm1”)を含む情報)を当該データ(1301)と一緒に104aに渡す。
【0127】
(S2)次に、第1通信ミドルウェア実行部104a(M1)は、任意の第1ミドルヘッダ(h1)の情報をアプリケーションデータ(1301)に付与し、これをアプリケーションデータ(1302)として、プロトコルスタック107aに渡す。この際、104aは、上記IPアドレス“B”及び示すポート番号“Pm1”を含む情報を107aに対し指定する。
【0128】
(S3)次に、プロトコルスタック107aは、上記104aから指定されたIPアドレス“B”をIPヘッダ(第1IPヘッダ:h3)の情報とし、同ポート番号“Pm1”をTCPヘッダ(第1TCPヘッダ:h2)の情報として、アプリケーションデータ(1302)に付与し、更に当該パケットの送信先MACアドレス(第1MAC:h4)の情報も付与して、送信用パケット(Ethernetフレーム)(第1パケット)(1303)を生成する。ここでは、通信装置Aと通信装置Bがルータ113を介して接続しているので、107aは、通信装置Bとの通信をルータ113経由で行うために、当該パケット(Ethernetフレーム)(1303)の送信先MACアドレス(第1MAC:h4)に、ルータ113のMACアドレス“r”を設定する。そして最後に、107aは、当該パケット(1303)を仮想通信I/F108aに渡す。
【0129】
(S4)次に、仮想通信I/F108aは、上記107aから受け取った送信用パケット(1303)をそのままカプセル化処理部105aに渡す。
【0130】
(S5)次に、カプセル化処理部105aは、上記送信用パケット(1303)のIPヘッダ(第1IPヘッダ:h3)及びTCPヘッダ(第1TCPヘッダ:h2)に含まれる宛先情報(IPアドレス“B”及びポート番号“Pm1”)を用いて、プロトコル管理テーブル110(図4)を参照し、当該パケット(1303)の要否を判定する。ここではカプセル化要と判定される。
【0131】
本例では、当該送信用パケット(1303)は、第1IP(h3)の宛先が通信装置B宛てであり、ルータ跨ぎ有りなので、カプセル化処理部105aは、当該送信用パケット(1303)をパケット保持部208にて一時的に保持し、図13に示すARP要求(1321)を第2通信ミドルウェア実行部106a(M2)に渡す(なお1321の第1MAC(h4)の値はブロードキャストアドレス)。その際、105aは、送信先の(通信装置Bの)第2通信ミドルウェア実行部106b(M2)を指定するための情報として、ARPフレーム内部に格納されている宛先IPアドレス“B”及びポート番号“Pm1”を、106aに渡す。
【0132】
(S6)次に、第2通信ミドルウェア実行部106a(M2)は、任意の第2ミドルヘッダ(h5)を上記ARP要求(1321)に付与し、これをアプリケーションデータ(1322)として、プロトコルスタック107aに渡す。この際、106a(M2)は、上記IPアドレス“B”及びポート番号“Pm1”を含む情報を107aに対し指定する。
【0133】
(S7)次に、プロトコルスタック107aは、上記106aから指定されたIPアドレス“B”をIPヘッダ(第2IPヘッダ:h7)の情報として、同ポート番号“Pm1”をTCPヘッダ(第2TCPヘッダ:h6)の情報として、上記アプリケーションデータ(1322)に付与し、更に当該パケットの送信先MACアドレス(第2MAC:h8)の情報も付与して、送信用パケット(カプセル化済み、第2パケット)(1323)を生成し、当該パケット(1323)を仮想通信I/F108aに渡す。なお通信装置Aと通信装置Bがルータ113を介して接続しており、通信装置Aと通信装置Bは相互の通信をルータ113経由させるため、107aは、実施の形態1と同様に、当該パケット(1323)の送信先MACアドレス(第2MAC:h8)に、ルータ113のMACアドレス“r”を設定する。
【0134】
(S8〜S10)以降、前述の実施の形態1の例と同様に、送信用パケット(1323)は、仮想通信I/F108aから、カプセル化処理部105a、通信I/F109aを経由して、ルータ113に到達する。
【0135】
(S11)ルータ113は、上記受信したパケット(1323)の第2IP(h7)のアドレスを参照する。ここで、当該第2IP(h7)のアドレスは、通信装置BのIPアドレス“B”が格納されているため、ルータ113は、当該パケット(1323)の第2MAC(h8)の情報(“r”)を通信装置BのMACアドレス“b”に書き換えたパケット(1324)を作成し、通信装置Bへ転送する。
【0136】
(S12〜S14)以降も前述同様に、当該パケット(1324)は、通信装置Bの通信I/F109b、カプセル化処理部105b、仮想通信I/F108bを経由し、プロトコルスタック107bに渡される。
【0137】
(S15)プロトコルスタック107bは、上記受信パケット(1324)に対してプロトコル処理を行い、当該パケット(1324)のアプリケーションデータ部分(1325)を取り出す。そして、当該パケット(1324)のTCPヘッダ(第2TCPヘッダ:h6)の指定(ポート番号)に従って、当該アプリケーションデータ部分(1325)を第2通信ミドルウェア実行部106b(M2)に渡す。
【0138】
(S16)次に、第2通信ミドルウェア実行部106b(M2)は、上記107bから受け取ったアプリケーションデータ(1325)から第2ヘッダ(第2ミドルヘッダ:h5)を外して、残りの部分、つまりARP要求(1326)を、カプセル化処理部105bに渡す。
【0139】
(S17)次に、カプセル化処理部105bは、上記106bから受け取ったARP要求(1326)を、そのまま仮想通信I/F108bへ転送する。
【0140】
(S18)次に、仮想通信I/F108bは、上記105bから受け取ったARP要求(1326)をプロトコルスタック107bに渡す。
【0141】
(S19)続いて、図16で、プロトコルスタック107bは、上記ARP要求(1326)を受け取り、通信装置Aにその応答を返信するために、図15に示すARP応答(1331)を、仮想通信I/F108bに渡す。当該ARP応答(1331)は、自装置(B)のMACアドレス情報“b”を含む。
【0142】
(S20,S21)次に、仮想通信I/F108bは、上記ARP応答(1331)を、カプセル化処理部105bに渡し、カプセル化処理部105bから第2通信ミドルウェア実行部106b(M2)に渡す。
【0143】
(S22)第2通信ミドルウェア実行部106b(M2)は、任意の第2ヘッダ(第2ミドルヘッダ:h5)の情報を上記ARP応答(1331)に付与し、これをアプリケーションデータ(1332)として、プロトコルスタック107bに渡す。この際、106bは、通信装置AのIPアドレス“A”及び106a(M2)を示すポート番号“Pm2”を含む情報を107bに対し指定する。
【0144】
(S23)次に、プロトコルスタック107bは、上記106bから指定されたIPアドレス“A”をIPヘッダ(第2IPヘッダ:h7)の情報として、同ポート番号“Pm2”をTCPヘッダ(第2TCPヘッダ:h6)の情報として、アプリケーションデータ(1332)に付与し、更に当該パケットの送信先MACアドレス(第2MAC:h8)の情報も付与して、送信用パケット(1333)を生成し、当該パケット(1333)を仮想通信I/F108bに渡す。なお通信装置Aと通信装置Bがルータ113を介して接続しており、通信装置Aと通信装置Bは相互の通信をルータ113経由させるため、107bは、実施の形態1と同様に、当該パケット(1333)の送信先MACアドレス(第1MAC:h8)に、ルータ113のMACアドレス“r”を設定する。
【0145】
(S24〜S26)以降、前述同様に、送信用パケット(1333)は、仮想通信I/F108bから、カプセル化処理部105b、通信I/F109bを経由して、ルータ113に到達する。
【0146】
(S27)ルータ113においても、前述同様に、パケット(1333)の第2MAC(h8)の情報を通信装置AのMACアドレス“a”に書き換えたパケット(1334)を作成し、通信装置Aへ転送する。
【0147】
(S28〜S30)通信装置Aの通信I/F109aは、ルータ113からパケット(1334)を受信すると、当該受信パケット(1334)を、カプセル化処理部105a、仮想通信I/F108aを経由して、プロトコルスタック107aに渡す。
【0148】
(S31)次に、プロトコルスタック107aは、受信パケット(1334)に対してプロトコル処理を行い、当該パケット(1334)のアプリケーションデータ部分(1335)を取り出す。そして、当該パケット(1334)のTCPヘッダ(第2TCPヘッダ:h6)の指定(ポート番号)に従って、当該アプリケーションデータ部分(1335)を第2通信ミドルウェア実行部106a(M2)に渡す。
【0149】
(S32)次に、第2通信ミドルウェア実行部106a(M2)は、上記107aから受け取ったアプリケーションデータ(1335)から第2ヘッダ(第2ミドルヘッダ:h5)を外して、残りの部分、つまりARP応答(1336)を、カプセル化処理部105aに渡す。
【0150】
(S33)カプセル化処理部105aは、上記106aからARP応答(1336)を受け取ると、前述のパケット保持部208にて保持していたパケット(図13、1303)の宛先MAC(h4)の情報を、宛先変更部209により、当該ARP応答(1336)の送信元MACアドレス(つまり通信相手の通信装置BのMACアドレス“b”)で書き換えたパケット(図15、1304)を作成する。そして、カプセル化処理部105a(209,205等)は、当該パケット(1304)を、第2通信ミドルウェア実行部106a(M2)に渡す。この際、105aは、送信先の(通信装置Bの)第2通信ミドルウェア実行部106b(M2)を指定するための情報(IPアドレス“B”及び106b(M2)を示すポート番号“Pm2”を含む情報)を当該データ(1304)と一緒に106aに渡す。
【0151】
(S34)第2通信ミドルウェア実行部106a(M2)は、任意の第2ミドルヘッダ(h5)の情報を上記データ(1304)に付与し、これをアプリケーションデータ(1305)として、プロトコルスタック107aに渡す。この際、106aは、上記IPアドレス“B”及びポート番号“Pm2”を含む情報を107aに対し指定する。
【0152】
(S35)次に、プロトコルスタック107aは、上記106bから指定されたIPアドレス“B”をIPヘッダ(第2IPヘッダ:h7)の情報とし、同ポート番号“Pm2”をTCPヘッダ(第2TCPヘッダ:h6)の情報として、上記アプリケーションデータ(1305)に付与し、更に当該パケットの送信先MACアドレス(第2MAC:h8)の情報も付与して、送信用パケット(1306)を生成し、仮想通信I/F108aに渡す。尚、ここで107aがアプリケーションデータ(1305)に第2IPヘッダ(h7)として付与したIPアドレスは、送信先の通信装置Bの仮想通信I/F108bに割り当てられたIPアドレス“B”であり、先(S4)に107aがアプリケーションデータ(1303)に第1IPヘッダ(h3)として付与したIPアドレスと同じである。また、107aがアプリケーションデータ(1305)に第2MAC(h8)として付与したアドレスは、ルータ113のMACアドレス“r”であり、先(S4)に107aがアプリケーションデータ(1303)に第1MAC(h4)として付与したアドレス“r”と同じである。
【0153】
(S36〜S38)仮想通信I/F108aは、上記107aから渡されたパケット(1306)をカプセル化処理部105aに渡し、同様に105aから通信I/F109aを経由してルータ113に渡される。
【0154】
(S39)ルータ113においても、前述同様に、パケット(1306)の第2MAC(h8)を通信装置BのMACアドレス“b”に書き換えたパケット(1307)を作成し、通信装置Bへ転送する。
【0155】
(S40〜S42)通信装置Bの通信I/F109bは、ルータ113からパケット(1307)を受信すると、カプセル化処理部105bに渡し、同様に105bから、仮想通信I/F108bを経由してプロトコルスタック107bに渡される。
【0156】
(S43)次に、プロトコルスタック107bは、上記受信パケット(1307)に対してプロトコル処理を行い、当該パケット(1307)のアプリケーションデータ部分(1308)を取り出す。そして、当該パケット(1307)のTCPヘッダ(第2TCPヘッダ:h6)の指定(ポート番号)に従って、当該アプリケーションデータ部分(1308)を第2通信ミドルウェア実行部106b(M2)に渡す。
【0157】
(S44)次に、第2通信ミドルウェア実行部106b(M2)は、上記107bから受け取ったアプリケーションデータ(1308)から第2ヘッダ(第2ミドルヘッダ:h5)を外して、残りの部分(第1パケット)(1309)をカプセル化処理部105bに渡す。
【0158】
(S45)次に、カプセル化処理部105bは、上記106bから受け取ったパケット(1309)を仮想通信I/F108bに渡す。
【0159】
(S46)次に、仮想通信I/F108bは、上記105bから受け取ったパケット(1309)の第1MAC(h4)のアドレスが、(通信装置Bの)仮想通信I/F108bで割り当てられているMACアドレス“b”と一致するため、当該パケット(1309)を受領する。そして、108bは、当該パケット(1309)をプロトコルスタック107bへ渡す。
【0160】
(S47)次に、プロトコルスタック107bは、上記108bから受け取ったパケット(1309)に対しプロトコル処理を行い、当該パケット(1309)のアプリケーションデータ部分(1310)を取り出して、当該アプリケーションデータ(1310)を、当該パケット(1309)のTCPヘッダ(第1TCPヘッダ:h2)の指定(ポート番号)に従って、第1通信ミドルウェア実行部104b(M1)に渡す。
【0161】
(S48)次に、第1通信ミドルウェア実行部104b(M1)は、上記107bから受け取ったアプリケーションデータ(1310)から第1ミドルヘッダ(h1)を外して、当該データ(1311)を通信アプリケーション実行部103b(APP)に渡す(前述のように必要に応じてサービスIDも参照)。以上のようにして、新装置から新装置へのデータ送信において、M2経由のカプセル化通信(第2パケット)を用いて、ARPの処理を介在しつつ、送信元のAPP(103a)から送信先のAPP(103b)へデータが送信される。
【0162】
[効果等]
上述のように、実施の形態2の通信装置101では、送信時、新装置は、パケットを送信する前に、カプセル化処理部105(207〜209等)により、ルータ113を経由する通信かどうかに応じて第1パケット部分の宛先情報(MACアドレス)を変更する処理を行う。特に、ルータ113を経由する送信パケット(保持パケット)について、送信元の通信装置(A)は、宛先の通信装置(B)のIPアドレスを第2パケット(P2)の宛先IPとしてカプセル化したARP要求を送信し(1323等)、それに対して、宛先の通信装置(B)は、送信元の通信装置(A)のIPアドレスを第2パケット(P2)の宛先IPとしてカプセル化したARP応答を返信する(1333等)。これにより送信元の通信装置(A)は、送信パケット(保持パケット)の宛先(MACアドレス)を上記ARP応答で取得した宛先の通信装置(B)のMACアドレスによって変更して送信し、宛先の通信装置(B)は当該パケットを受領することができる。
【0163】
なお、実施の形態2における、新装置から旧装置への送信の場合、及び旧装置から新装置への送信の場合については、カプセル化処理部105で、カプセル化不要のパケットと判定されることになるので、それぞれ実施の形態1(図9,図11)と同様の動作になる。
【0164】
以上説明したように実施の形態2においても実施の形態1と同様の効果(システム移行の容易化及びコスト低減など)が得られる。
【0165】
実施の形態2の変形例として以下のような処理(ARP情報の記録によるARP通信の繰り返し省略)を行う構成としてもよい。送信側の通信装置101で、図15のARP応答(1336)をメモリ(図3のホストメモリ302等)上にテーブル(例えばARP情報テーブル)等の形で記録しておき、パケット保持部208で、図13のARP要求(1321)を送信する前に、上記テーブル情報を参照し、当該(宛先の)通信装置からのARP応答(1336)を既に(過去に)受信している場合は、前述のARP要求(1321)の送信や送信パケット保持を行わずに、当該送信パケットの宛先MACアドレス情報を上記テーブルに記録されているARP応答(1336)の送信元(宛先)の通信装置のMACアドレス情報によって書き替えるようにする。これにより、前述のARP要求及びARP応答のやりとりについては通信の初回時のみ行えばよくなるため、無駄な通信を抑えて通信の応答性を確保することができる。
【0166】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【0167】
本発明は、通信ミドルウェアを用いる通信装置を含んで構成される各種の情報処理システム(通信システム)やVPN(仮想プライベートネットワーク)などに利用可能である。
【符号の説明】
【0168】
101…通信装置、102…ネットワーク、103…通信アプリケーション実行部、104…第1通信ミドルウェア実行部、105…カプセル化処理部、106…第2通信ミドルウェア実行部、107…プロトコルスタック、108…仮想通信I/F、109…通信I/F、110…プロトコル管理テーブル、112…通信情報対応テーブル、113…ルータ、201…RAW受信部、202…ミドル受信部、203…カプセル化判定部、204…RAW送信部、205…ミドル送信部、206…ヘッダ書き替え部、207…ルータ跨ぎ判定部、208…パケット保持部、209…宛先変更部。
【技術分野】
【0001】
本発明は、通信装置に関し、特に、通信装置が備える通信ミドルウェアに関する。
【背景技術】
【0002】
例えば鉄道の運行管理システムや金融システムは、そのシステム(情報処理システム)の立ち上げ当初は小規模であっても、システム拡張や他システムとの統合等により、大規模化かつ複雑化していくことが多い。そして、システムを構成する装置の高性能化や技術の進歩に合わせてシステムを更新する(以下「新システムに移行する」「システム移行」等とも表現する)場合には、それらのシステム規模が大きくなるに従って修正箇所が多岐にわたるため、開発コストが膨大となる。
【0003】
システム移行(特に通信ミドルウェアの変更)における一般的な問題について、図17を用いて説明する。図17は、旧システムの通信装置1701から新システムの通信装置1706へシステム移行するケースを示している。旧システムの通信装置1701に示すような構成は一般的なものである。即ち、様々なサービスを提供する通信アプリケーション1702が、システム固有の通信基盤である旧通信ミドルウェア1703上で動作する。そして、通信アプリケーション1702が動作してデータを通信相手に送信する際には、その下位の階層に位置する旧通信ミドルウェア1703及びプロトコルスタック1704(TCP,IP等のプロトコル群)を用いて、通信I/F1705(I/F:インタフェース)を介してネットワークにデータのパケット(フレーム等)を送出する。
【0004】
ここで、旧システムから新システムへシステム移行し、通信装置の通信ミドルウェアを旧通信ミドルウェア1703から新通信ミドルウェア1707に切り替える場合について考えてみる。
【0005】
システム規模が小さい間は、通信ミドルウェアを変更すると共に通信アプリケーション1702を新しいものに切り替えることが一般的である。しかしシステム規模が大きい場合、上述のように通信アプリケーション1702の開発コストが膨大なものとなってしまう。そのため開発コストを抑えるためには、旧システムの通信アプリケーション1702を新システムの通信装置1706でも流用することが望まれる。
【0006】
上述のように、旧システムの通信アプリケーション1702は、旧通信ミドルウェア1703上で動作することを前提に開発されている。そこで、システム移行した場合には、図17の下側(1706)に示すように、通信アプリケーション1702を新システムの新通信ミドルウェア1708上で動作させるために、旧通信ミドルウェア1703と新通信ミドルウェア1708との差異を補う新旧ミドル変換部1707を設ける必要がある。
【0007】
大規模システムにおいては、通信アプリケーション1702をすべて作り替えるよりは、新旧ミドル変換部1707を新規に開発する方が開発コストは少なくて済む。しかしながら、それでも新旧ミドル変換部1707の開発コストは依然として大きい。例えば、新旧ミドル変換部1707は、少なくとも、(1)通信アプリケーション1702とのインタフェース部分、(2)新通信ミドルウェア1708とのインタフェース部分、及び、(3)旧通信ミドルウェア1703及び新通信ミドルウェア1708のそれぞれの内部の挙動(タイムアウト条件等)を模擬する部分、についての機能を必要とする。特に、上記(3)の部分の開発を行うためには、旧通信ミドルウェア1703及び新通信ミドルウェア1708の内部の動作を詳細まで熟知している必要があるため、多大な時間を費やすことになり、通信アプリケーション1702のプログラムの再利用性の観点から効率が悪い。
【0008】
上記問題に関して、先行技術例として、特開2008−078966号公報(特許文献1)、非特許文献1、等がある。
【0009】
特許文献1では、旧システムの通信装置とネットワークとの間に、旧システムの通信装置から送信されるパケットをカプセル化するカプセル化装置(トンネリング装置)を設ける。カプセル化装置は、カプセル化した各パケットを、新システムの新通信ミドルウェア経由でネットワークに送信する。また、カプセル化装置は、ネットワークから受信したカプセル化されたパケットを、デカプセル化(カプセル化解除)して、旧システムのパケットを抽出し、旧システムの通信装置に送信する。
【0010】
非特許文献1では、仮想Ethernet I/F(Ethernetは登録商標)を通信装置自身に備え、通信装置単体で旧システムのパケットをカプセル化する技術が公開されている。具体的には、通信装置は、仮想Ethernet I/Fに新たなIPアドレスを割り当てて、すべての通信が仮想Ethernet I/Fを経由するようにルーティングテーブル等の設定を行う。そして、通信装置は、旧システムのパケット(Ethernetフレーム)を仮想Ethernet I/Fを介してカプセル化して新通信ミドルウェアに渡すことで、新システムのパケットを送信することができるようになる。
【0011】
このように、特許文献1や非特許文献1に記載の技術では、新規に開発する対象が、新通信ミドルウェア経由で受信した旧システムのパケット(Ethernetフレーム)を旧システムに渡す部分(前記(1)の部分)、およびパケット(Ethernetフレーム)を新通信ミドルウェアに渡す部分(前記(2)の部分)のみとなる。そのため、旧通信ミドルウェアと新通信ミドルウェアを相互変換する新旧ミドル変換部1707を開発する場合に比べて、技術難易度も低く、開発コストも大幅に削減することが可能となる。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2008−078966号公報
【非特許文献】
【0013】
【非特許文献1】登大遊、“SoftEther の内部構造”、[online]、[平成22年9月7日検索]、インターネット<URL:http://www.softether.co.jp/jp/company/media/academic/data/softetherpaper002.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0014】
背景技術に記載したように、特許文献1に開示されている技術では、旧システムのシステム設定(IPアドレス等)は全く変更せずに、カプセル化装置を設置するだけで新システムへの移行が可能となる。しかしながら、カプセル化装置が通信装置の台数分だけ必要となり、ハードウェアコストが膨大になるという問題が生じる。
【0015】
また、非特許文献1に開示されている技術では、通信装置単体で新システムへの移行が可能であるため、追加のハードウェアコストは不要となる。しかし、仮想Ethernet I/Fは、OSからは物理Ethernet I/Fと同じように認識されるため、物理Ethernet I/Fと異なるIPアドレスを設定する必要がある。したがって、旧システムのシステム設定(IPアドレス等)変更や、新システム設計時にIPアドレスの制約を考慮しなければならない(旧システムのIPアドレスと重複してはいけない等)といった手間が生じる。
【0016】
また、システム移行リスクを小さくするために、一気に全通信装置を新装置に切り替えるのではなく、一定期間をかけて数台ずつ段階的に切り替える方法をとることもある。その場合、完全に移行が完了するまでは、同一ネットワーク上に、旧システムのIPアドレスのパケットと新システムのIPアドレスのパケットとが混在することになり、一般的なルータやスイッチでは対応できない可能性がある。このような単一ネットワーク上に複数のIPアドレスが混在する問題についても、非特許文献1や特許文献1では解決することができない。
【0017】
以上を鑑み、本発明の主な目的は、通信装置のシステム移行など(旧通信ミドルウェアから新通信ミドルウェアへの変更など)に係わり、上述のようなIPアドレス等(システム設定)の変更やハードウェアの追加無しに、旧通信ミドルウェアを介して情報を送受信する通信アプリケーションが、新通信ミドルウェアを介してでも情報を送受信できるようにする技術(言い換えるとシステム移行の容易化及びコスト低減などの実現)を提供することである。
【課題を解決するための手段】
【0018】
本発明のうち代表的な形態は、通信システムを構成する通信装置(通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置)、等であって、以下に示す構成を有することを特徴とする。
【0019】
(1A)本通信装置は、送信側の自装置である第1の通信装置から受信側の他装置である第2の通信装置へ対象の第1のデータをパケット(フレーム等)として送信する場合の送信機能として、対象の第1のデータに、第2の通信装置を宛先として指定するアドレス情報(使用するプロトコルに応じた情報)を含む第1ヘッダを付けて、第1パケット(カプセル化前の通常のパケット)を作成する処理を行う第1パケット作成部と、第1パケットを用いて、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第1の処理を実行する第1の処理部と、第1パケットに、第2の通信装置(その通信ミドルウェア)を宛先として指定するアドレス情報を含む第2ヘッダを付けて、カプセル化した第2パケット(カプセル化パケット)を作成する処理を行う第2パケット作成部と、第2パケットを用いて、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第2の処理を実行し、当該第2パケットをネットワーク(第2の通信装置)へ送信する第2の処理部と、を有する。
【0020】
本通信装置は、送信側の他装置である第2の通信装置から受信側の自装置である第1の通信装置へ対象の第2のデータをパケットとして受信する場合の受信機能として、ネットワーク(第2の通信装置)から受信した第2パケットに対し、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第3の処理を実行し、第2ヘッダを外してカプセル化解除により第1パケットを取り出し、第1パケットから第1ヘッダを外して対象の第1のデータを取り出す処理を行う第3の処理部と、第1の通信装置の通信ミドルウェアを通じて受け取った第2パケットにおける第1パケットの部分の第1ヘッダの宛先アドレス情報を、当該受信側の自装置である第1の通信装置のアドレス情報によって書き替えることにより、当該第1パケットを自装置で受領させる処理を行うヘッダ書き替え部と、を有する。
【0021】
(2A)本通信装置は、送信側の自装置である第1の通信装置から受信側の他装置である第2の通信装置へ対象の第1のデータをパケットとして送信する場合の送信機能として、対象の第1のデータに、第2の通信装置を宛先として指定するアドレス情報を含む第1ヘッダを付けて、第1パケットを作成する処理を行う第1パケット作成部と、第1パケットを用いて、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行する第1の処理部と、第1パケットに、第2の通信装置(その通信ミドルウェア)を宛先として指定するアドレス情報を含む第2ヘッダを付けて、カプセル化した第2パケットを作成する処理を行う第2パケット作成部と、第2パケットを用いて、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行し、当該第2パケットをネットワーク(第2の通信装置)へ送信する第2の処理部と、を有する。
【0022】
本通信装置は、送信側の他装置である第2の通信装置から受信側の自装置である第1の通信装置へ対象の第2のデータをパケットとして受信する場合の受信機能として、ネットワーク(第2の通信装置)から受信した第2パケットに対し、第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第3の処理を実行し、前記第2ヘッダを外してカプセル化解除により前記第1パケットを取り出し、第1パケットから第1ヘッダを外して対象の第1のデータを取り出す処理を行う第3の処理部と、を有する。
【0023】
本通信装置は、送信機能として、送信対象のパケットが前記ネットワークのルータを経由して通信するか否かを通信情報の比較により判定するルータ跨ぎ判定部と、受信側の第2の通信装置の宛先アドレス情報を取得するために、ARPを用いて、送信対象のパケットのヘッダの宛先の第2の通信装置のIPアドレス情報を第2パケットの第2ヘッダの宛先のIPアドレス情報としてカプセル化した、ARP要求による第2パケットを作成して送信させ、当該ARP要求に対するARP応答を受信するまで、当該送信対象のパケットを一時的に保持しておくパケット保持部と、保持している送信対象のパケットのヘッダの宛先の第2の通信装置のアドレス情報を、第2の通信装置から受信したARP応答による第2パケットに含まれているアドレス情報によって書き替えて、当該書き替えたパケットを送信させる宛先変更部と、を有する。
【0024】
本通信装置は、受信機能として、ネットワークから受信したパケットがARP要求による第2パケットである場合に、当該ARP要求で要求されている自装置のアドレス情報を含む、第1の通信装置のIPアドレス情報を第2パケットの第2ヘッダの宛先のIPアドレス情報としてカプセル化した、ARP応答による第2パケットを作成して送信させる第4の処理部を有する。
【0025】
(1B)本通信装置は、前記(1A)で、前記送信機能の第1パケット作成部、第1の処理部、第2パケット作成部、第2の処理部、及び前記受信機能の第3の処理部を構成する要素として以下を有する。本通信装置は、旧通信ミドルウェアに相当する第1通信ミドルウェアを実行する第1通信ミドルウェア実行部と、新通信ミドルウェアに相当する第2通信ミドルウェアを実行する第2通信ミドルウェア実行部と、第1通信ミドルウェア上で動作する通信アプリケーションを実行し対象のデータを処理する通信アプリケーション実行部と、第1及び第2通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、ネットワークの代わりにプロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、前記通信インタフェース部、仮想通信インタフェース部、及び第2通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有する。そして、本通信装置は、IPアドレス及びプロトコルを含む通信情報と、第1通信ミドルウェアの通信情報と第2通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、仮想通信インタフェース部のみに対してIPアドレスを割り当てる。そして、前記カプセル化処理部は、前記ヘッダ書き替え部を有し、前記ヘッダ書き替え部は、前記受信時に、前記第2通信ミドルウェア実行部の第2通信ミドルウェアを通じて受け取った第2パケットにおける第1パケットの部分の第1ヘッダの宛先アドレス情報を、第1の通信装置のアドレス情報によって書き替えることにより、当該第1パケットの対象の第1のデータを自装置で受領させる処理を行う。
【0026】
(2B)本通信装置は、前記送信機能の第1パケット作成部、第1の処理部、第2パケット作成部、第2の処理部、前記受信機能の第3の処理部、及び第4の処理部を構成する要素として以下を有する。本通信装置は、旧通信ミドルウェアに相当する第1通信ミドルウェアを実行する第1通信ミドルウェア実行部と、新通信ミドルウェアに相当する第2通信ミドルウェアを実行する第2通信ミドルウェア実行部と、第1通信ミドルウェア上で動作する通信アプリケーションを実行し対象のデータを処理する通信アプリケーション実行部と、第1及び第2通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、ネットワークの代わりにプロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、前記通信インタフェース部、仮想通信インタフェース部、及び第2通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有する。そして、本通信装置は、IPアドレス及びプロトコルを含む通信情報と、第1通信ミドルウェアの通信情報と第2通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、仮想通信インタフェース部のみに対して前記IPアドレスを割り当てる。そして、前記カプセル化処理部は、前記送信機能として、前記ルータ跨ぎ判定部と、前記パケット保持部と、前記宛先変更部と、を有し、前記受信機能として、前記第4の処理部を有する。
【発明の効果】
【0027】
本発明のうち代表的な形態によれば、通信装置のシステム移行などに係わり、IPアドレス等の変更やハードウェアの追加無しに、旧通信ミドルウェアを介して情報を送受信する通信アプリケーションが、新通信ミドルウェアを介してでも情報を送受信できるようになる(システム移行の容易化及びコスト低減などの実現)。
【図面の簡単な説明】
【0028】
【図1】本発明の一実施の形態の通信装置の機能ブロック構成例を示す図である。
【図2】実施の形態1の通信装置の、カプセル化処理部の詳細構成を示す図である。
【図3】通信装置のハードウェア構成例を示す図である。
【図4】プロトコル管理テーブルの例を示す図である。
【図5】通信情報対応テーブルの例を示す図である。
【図6】新装置が新装置にデータを送信する場合の電文を示す図である。
【図7】新装置が新装置にデータを送信する場合の通信フローを示す図である。
【図8】新装置が旧装置にデータ送信する場合の電文を示す図である。
【図9】新装置が旧装置にデータ送信する場合の通信フローを示す図である。
【図10】旧装置が新装置にデータ送信する場合の電文を示す図である。
【図11】旧装置が新装置にデータ送信する場合の通信フローを示す図である。
【図12】実施の形態2の通信装置のカプセル化処理部の詳細構成を示す図である。
【図13】新装置から新装置へのデータ送信の電文(1)を示す図である。
【図14】新装置から新装置へのデータ送信の通信フロー(1)を示す図である。
【図15】新装置から新装置へのデータ送信の電文(2)を示す図である。
【図16】新装置から新装置へのデータ送信の通信フロー(2)を示す図である。
【図17】システム移行に関する従来技術例を示す図である。
【発明を実施するための形態】
【0029】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお説明上、「第1パケット」:カプセル化前の通常のパケット、「第2パケット」:カプセル化後のパケット、とする。また、「第1通信ミドルウェア(M1)」:システム移行における旧通信ミドルウェア、「第2通信ミドルウェア(M2)」:システム移行における新通信ミドルウェア、とする。以下の実施の形態では、カプセル化対象のパケット(データ)は、OSIモデルで言うところのレイヤ2におけるEthernetフレームを想定する。
【0030】
<実施の形態1>
図1〜図11を用いて、本発明の実施の形態1の通信装置及びシステムについて説明する。システム移行に伴い、システム内の複数の通信装置における少なくとも一部の通信装置に、旧通信ミドルウェアに加え新通信ミドルウェアが実装された場合である。このシステム構成において、実施の形態1では、特に、新通信ミドルウェアが実装された通信装置(「新装置」)は、送信側の通信装置からネットワークを介して受信したパケット(第2パケット)における第1パケット部分のヘッダ情報(宛先情報)を、第2パケット部分のヘッダ情報(宛先情報)によって書き換えて自分宛ての情報として受領するヘッダ書き替え部(図2の206、図7の105b等)を有する。
【0031】
[通信装置(機能)]
図1を用いて、実施の形態1の通信装置及びそのシステムの概要について説明する。通信装置101は、互いにネットワーク102を介して通信できるように接続される。通信装置101は、データ(パケット)の送信・受信の両方の機能を備える。システム全体は、少なくとも送信側及び受信側の2つの通信装置101を含んで構成される。システム内の複数の通信装置101における少なくとも一部の通信装置101は新装置(旧通信ミドルウェア(104)に加え新通信ミドルウェア(106)が実装された構成)であり、他の通信装置101は旧装置(旧通信ミドルウェア(104)のみ実装された構成)である。新装置の通信アプリケーション(103)は旧装置の通信アプリケーション(103)が流用される。例えば10台のうちの1台、5台、10台といったように段階的に新装置が導入され、新旧の通信装置101の混在の状態を経てシステム移行される。本実施の形態では、ネットワーク102は、ルータ113等で接続された複数のサブネットにより構成されている。ネットワーク102は、EthernetやTCP/IP等に対応したLANやWAN等である。
【0032】
通信装置101は、通信アプリケーション実行部103、第1通信ミドルウェア実行部104、カプセル化処理部105、第2通信ミドルウェア実行部106、プロトコルスタック107、仮想通信I/F108、通信I/F109、プロトコル管理テーブル110、及び通信情報対応テーブル112、等を備える構成である。通信装置101は、図示しないが、その他、OS等の一般的な要素を実装している。通信装置101は、通信機能を備える例えばPC等の各種の情報処理装置として捉えてもよい。
【0033】
通信アプリケーション実行部103は、所定のサービス(種々のサービス)を他の通信装置(101)に対して提供したり、他の通信装置(101)に対して所定のサービス(種々のサービス)を要求したりする通信アプリケーションプログラムを実行する。なお103は、1つだけでなく複数が存在し動作してもよい。103において実行される通信アプリケーションプログラム(以下略す場合は「アプリケーション」「APP」等)は、図17の構成では通信アプリケーション1702に相当し、第1通信ミドルウェア実行部104において実行される第1通信ミドルウェア(システム移行前の旧通信ミドルウェア)上で動作する。
【0034】
第1通信ミドルウェア実行部104(以下略す場合は「第1(旧)通信ミドルウェア」(M1)等)は、103のAPP(複数のAPP)が実行されるときに共通に使用される機能を提供するプログラムを実行する。例えば、当該プログラムは、ソケットI/Fを備えており、一般的に、認証や暗号化等のセキュリティ機能や、ソケットの初期化や終了処理等の複雑な通信処理機能等を有している。なお、第1通信ミドルウェア実行部104において実行されるプログラムは、旧通信プロトコルを用いるものであって、図17での旧通信ミドルウェア1703に相当する。
【0035】
第2通信ミドルウェア実行部106(以下略す場合は「第2(新)通信ミドルウェア」(M2)等)は、第1通信ミドルウェアと同様に、APPが実行されるときに共通に使用される機能を提供するプログラムを実行する。第2通信ミドルウェア実行部106において実行されるプログラムは、新通信プロトコルを用いるものであって、図17での新通信ミドルウェア1708に相当し、第1通信ミドルウェア実行部104とは異なる通信プロトコル処理を実行する。
【0036】
カプセル化処理部105は、送信の場合に、仮想通信I/F108から受け取った送信パケット(「Ethernetフレーム」等)をチェック(確認)し、カプセル化が必要かどうかを判定し、カプセル化が必要なパケット(カプセル化対象(要)の第1パケット)である場合は、第2通信ミドルウェア実行部106に渡し、カプセル化の必要が無いパケット(カプセル化対象外(不要)のパケット、カプセル化済みの第2パケット等)である場合は、そのまま通信I/F109経由で送信する処理を行う。また、カプセル化処理部105は、受信の場合に、通信I/F109や第2通信ミドルウェア実行部106を通じて受け取った受信パケットを、必要に応じてヘッダ書き換え処理した後、仮想通信I/F108に渡す処理などを行う。105の詳細構成については後述する(図2)。
【0037】
プロトコルスタック107は、例えばTCP,UDP,IP等の所定のプロトコル処理を行うプログラム群(プロトコル処理部)である。107は、第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106との間で、ソケットI/Fを介して送受信情報を受け渡すことができ、仮想通信I/F108と通信する。
【0038】
仮想通信I/F108は、通信I/F機能をソフトウェアで模擬した仮想的な通信インタフェース部であり、OSからは通常の通信インタフェース(通信I/F109等)と等価に扱われる。ただし、通常の通信インタフェース(109)が特定の通信用ハードウェアと関連付け(実装)されて、そのハードウェアと送受信パケットの受け渡しを行うのに対し、仮想通信I/F108は、特定のソフトウェアプログラムと関連付け(実装)されて、そのプログラムと送受信パケットの受け渡しを行う。本実施の形態では、108は、カプセル化処理部105等と共にソフトウェアで実装される。108は、カプセル化処理部105及びプロトコルスタック107と連携し、プロトコルスタック107から渡された送信パケット(Ethernetフレーム)をカプセル化処理105に渡し、またカプセル化処理部105から渡されたデータを受信パケット(Ethernetフレーム)とみなしてプロトコルスタック107に渡す。
【0039】
通信I/F109は、カプセル化処理部105から渡された送信パケット(Ethernetフレーム)に対し、チェックサム計算などの送信に必要な処理を行い、関連付け(実装)されているハードウェア経由でネットワーク102に送信する。また、109は、ネットワーク102から受信したパケット(Ethernetフレーム)を、カプセル化処理部105に渡す。
【0040】
上記の仮想通信I/F108及び通信I/F109はOSから見たら等価に扱われるが、本実施の形態では、IPアドレス等のシステム設定情報(通信情報)を、仮想通信I/F108のみに対して割り当て、通信I/F109には割り当てない。これにより、プロトコルスタック107からは唯一の通信インタフェースとして仮想通信I/F108だけが認識されるようになり、通信I/F109は、ネットワーク102とカプセル化処理部105との間でパケット(Ethernetフレーム)を転送する機能だけを提供するようになる。
【0041】
プロトコル管理テーブル110、及び通信情報対応テーブル112は、通信装置101(カプセル化処理部105等)で参照される情報(管理情報)である。詳細は後述するが、プロトコル管理テーブル110(図4)の情報は、カプセル化処理部105(特に仮想通信I/F108から送信パケットを受け取ったときのカプセル化判定部203)が、当該パケットをカプセル化すべきか否か判定する際などに用いられる。通信情報対応テーブル112(図5)の情報は、カプセル化処理部105(特にカプセル化判定部203から送信パケットを受け取ったときのミドル送信部205)が、送信パケット(第1パケット)に含まれる送信先通信装置の第1通信ミドルウェア(M1)の通信情報から、それに対応付けられる送信先通信装置の第2通信ミドルウェア(M2)の通信情報を取得する際(即ち第2パケットの作成の際)などに用いられる。
【0042】
[カプセル化処理部]
次に図2を用いてカプセル化処理部105の詳細構成について説明する。カプセル化処理部105は、RAW受信部201、ミドル受信部202、カプセル化判定部203、RAW送信部204、ミドル送信部205、及びヘッダ書き替え部206、を有する構成である。なお実線は送信時のデータフロー、破線は受信時のデータフローを示す。A1等は説明上のデータ・情報や処理ステップを示す。
【0043】
RAW受信部201は、ネットワーク102経由で通信I/F109に到着した受信パケット(Ethernetフレーム)を通信I/F109からRAW受信で受け取り(A1)、当該フレームをそのまま仮想I/F108に渡す(A2)といった処理を行う。
【0044】
ミドル受信部202は、ヘッダ書き替え部206から渡されたアプリケーションデータ(デカプセル化されたEthernetフレーム(第1パケット))(A3)を、そのまま仮想通信I/F108に渡す(A4)といった処理を行う。
【0045】
カプセル化判定部203は、送信時、仮想通信I/F108から受け取ったパケット(送信パケット)(A5)をチェック・判定し、カプセル化が必要な場合などには、ミドル送信部205に渡し(A6)、カプセル化が不要な場合などには、RAW送信部204に渡す(A7)といった処理を行う。
【0046】
ミドル送信部205は、カプセル化判定部203から受け取ったパケット(A6)に、後述のヘッダ情報(図6等)を付与して、第2通信ミドルウェア実行部106に渡す(A8)といった処理を行う(言い換えるとカプセル化のための指示情報を提供する)。
【0047】
RAW送信部204は、カプセル化判定部203から受け取ったパケット(A7)を、通信I/F109に渡す(A9)といった処理を行う。
【0048】
ヘッダ書き替え部206は、受信時、第2通信ミドルウェア実行部106からパケット(受信パケット)を受け取り(A10)、後述するヘッダ書き換え処理を実施してから、ミドル受信部202に当該パケットを渡す(A3)といった処理を行う。
【0049】
[通信装置(ハードウェア)]
次に図3を用いて通信装置101(図1)のハードウェア構成について説明する。通信装置101は、各種処理を行うホストCPU301、ホストメモリ302、周辺I/F303、記憶装置304、通信I/F109、及びバス307等から構成される。301〜304、109等の要素はバス307を介して通信可能に接続されている。
【0050】
ホストCPU301は、プログラムを実行するプロセッサである。ホストメモリ302は、ホストCPU301がプログラムを実行する際にワーキングメモリ及び入出力データの一時バッファとして用いられる。周辺I/F303は、マウス、キーボード、モニタ等の入出力装置や、USBメモリ等の外部ストレージ、等の各種周辺機器などと接続するためのインタフェースである。記憶装置304は、磁気ディスク装置、フラッシュROM等から構成され、OS、各種ドライバ、各種アプリケーションプログラムや、プログラムで使用される各種情報(例えば管理者または保守者によって設定される情報等)を格納している。
【0051】
通信I/F109は、通信装置101がネットワーク102を介して他の通信装置101と通信を行う際のインタフェースを提供する。特に通信I/F109は、例えばネットワークインタフェースカードないしボード等の特定の独立した通信用ハードウェア(例えばEthernetコントローラチップ等)により実装できる。なお図3では通信I/F109は1つしか記載していないが2つ以上であっても構わない。
【0052】
図1に示した機能要素(103〜108、109)の各々は、図3のハードウェア構成でのソフトウェアプログラム処理など(記憶装置304に格納されたプログラムがホストメモリ302に読み込まれてホストCPU301によって実行されること等)により構成できる。上記のように109は独立したハードウェアで実装されてもよい。また、図1のプロトコル管理テーブル110、及び通信情報対象テーブル112等のテーブル(管理情報)は、例えば記憶装置304に格納される。
【0053】
[テーブル(1)]
図4を用いてプロトコル管理テーブル110に格納される情報について説明する。図4のプロトコル管理テーブル110では、パケットを送信する際に参照する、パケット種別410、IPアドレス401、ポート番号402、プロトコル403、等の情報を格納している。本テーブル情報は、通信装置101の管理者または保守者等によって予め設定されてもよいし、各通信装置101と個別にプロトコル情報をやりとりするプログラム等によって設定されてもよいし、全通信装置101のプロトコル情報をまとめて管理しているサーバに問い合わせて設定してもよい。
【0054】
パケット種別410の列は、パケットの種別を示す情報が格納され、例として、IPパケットであることを示す“IP”、ARP(Address Resolution Prtocol)パケットであることを示す“ARP”等がある。IPアドレス401の列は、パケットの送信先(宛先)の通信装置101を識別するIPアドレス情報が格納される。
【0055】
ポート番号402の列は、パケットの送信先(宛先)のポート番号が格納される。ポート番号は、一般に、通信サービス(例えばFTP、HTTP等)の識別に用いられる。本実施の形態では、このポート番号は、パケットの宛先となる通信ミドルウェア(104,106)及び通信アプリケーション(103)等を特定するための1つの情報として用いられる(後述のサービスIDも関係する)。送信先が同じ通信装置101であっても、異なるポート番号(及びサービスID)を用いることによって、通信サービス(通信ミドルウェア及び通信アプリケーション)の種別を特定・変更することができる。
【0056】
プロトコル403の列は、当該パケットに施す処理の種類(使用するプロトコル等)を示す情報が格納される。プロトコル名が指定されている場合(例:“プロトコルA”,“プロトコルB”等)は、当該プロトコルを用いたパケットのカプセル化が必要であることを意味(設定)し、そうではない場合、例えば“RAW送信”が指定されている場合には、当該パケットをそのまま送信すること(カプセル化は不要)を意味(設定)している。なお図4では403には3種類(RAW送信,プロトコルA,プロトコルB)を記載しているがこれに限らなくてよい。
【0057】
図4の例において、421の行では、IPパケットを用いて、IPアドレスが“191.168.0.1”である送信先の通信装置(101)と、ポート番号“80”で指定される通信ミドルウェア(例えばある新通信ミドルウェア)で通信を行う場合、(カプセル化済みにより)カプセル化を行わずにそのまま送信(RAW送信)することを表している。他方、422の行では、IPパケットを用いて、IPアドレスが421と同じ“191.168.0.1”である通信装置と、ポート番号“23”で指定される通信ミドルウェア(例えばある旧通信ミドルウェア)で通信を行う場合、“プロトコルA”を用いたパケットのカプセル化が必要であることを表している。423の行では、IPパケットを用いて、IPアドレスが421と異なる“191.168.0.2”である通信装置と、422と同じポート番号“23”で指定される通信ミドルウェアで通信を行う場合、カプセル化を行わずにそのまま送信すること、を表している。また424の行では、ポート番号402の*印は、任意のポート番号で構わないことを表している。また425の行では、ARPのパケット(フレーム)についてはそのアドレスに関わらずカプセル化を行わずそのまま送信することを表している。
【0058】
上記図4のテーブル形式は一例であり、他の情報項目を管理して同様の機能を実現してもよい。例えば、通信ミドルウェアID,通信アプリケーションID,カプセル化要否フラグ情報などを関連付けて管理してもよい。
【0059】
[テーブル(2)]
次に図5を用いて通信情報対応テーブル112に格納される情報について説明する。図5の通信情報対応テーブル112は、第1通信ミドルウェア(M1)の通信情報501と、それに対応付けられる第2通信ミドルウェア(M2)の通信情報502とを格納している。それぞれの列(501,502)は、詳しくは、IPアドレス、ポート番号、サービスID、等の情報を含む。
【0060】
図5において、例えば521の行では、送信パケットに含まれる第1通信ミドルウェアの通信情報としてIPアドレスが“X”、ポート番号が“Y”、サービスIDが“Z”である場合に、第2通信ミドルウェアを用いて送信するために必要な第2通信ミドルウェアの通信情報としてIPアドレスが“X”(同じ)、ポート番号が“y”(異なる)、サービスIDが“z”(異なる)であることを表している。
【0061】
ここで、上記IPアドレスについては、送信先の通信装置101の仮想通信I/F108に割り当てられているアドレスであるから、第1(旧)通信ミドルウェア(501)でも第2(新)通信ミドルウェア(502)でも同じ値となる。一方、上記ポート番号については、本実施の形態では、新/旧の区別を含め通信ミドルウェアを一意に特定するのに用いられる。そのため、上記501,502のポート番号は異なる値となる。
【0062】
また上記サービスIDについては、本実施の形態では、送信先の通信ミドルウェアが送信パケットをどこに引き渡すかを示すIDとして用いる。特に、どのサービスを提供するどの通信アプリケーション(103)に引き渡すかを特定するために用いる。本実施の形態では、サービスIDは、例えば、ポート番号が第1通信ミドルウェア(M1)を示している場合には通信アプリケーション実行部103(特定のAPP)を指し示し、ポート番号が第2通信ミドルウェア(M2)を示している場合にはカプセル化処理部105を指し示す。なおサービスIDは、上記に限らず、例えば、M2が105を介さずにAPPと通信する場合には、ポート番号がM2を示している場合にサービスIDが当該APPを指し示すようにしてもよい。
【0063】
上記テーブル(112)で管理する通信情報の例(IPアドレス,ポート番号,サービスID)に限らず、第1通信ミドルウェア(M1)と第2通信ミドルウェア(M2)の対応関係が分かる情報であればよい。
【0064】
図4,図5の例のようなテーブル情報を用いることにより、本システムでは、通信装置(101)、新/旧の区別を含む通信ミドルウェア(104,106)、及び通信アプリケーション(103)等を識別し、対応関係を把握し、これに基づいて必要に応じてパケットのカプセル化などを行う。
【0065】
[処理シーケンス1(新→新)]
次に、図6,図7を用いて、新システムへの移行後における新装置から新装置へのデータ送信時のカプセル化通信の処理シーケンスについて説明する。図7の新装置である送信側の第1の通信装置A(101a)から、同じく新装置である受信側の第2の通信装置B(101b)へデータを送信する際のカプセル化通信を示す。通信装置A,Bは共に新装置、即ち第1通信ミドルウェア実行部104及び第2通信ミドルウェア実行部106を有する構成(図1と同じ)である。なお通信装置AのIPアドレスを“A”,MACアドレスを“a”、通信装置BのIPアドレスを“B”,MACアドレスを“b”、ルータ113のIPアドレスを“R”,MACアドレスを“r”、で表すとする。S1等は通信(処理)のステップを示す。
【0066】
図6は、図7の通信フローに対応した、新装置(A)から新装置(B)へデータを送信する場合のパケット等の電文(その変化)を示す。601等の符号で示す行は、図7中の矢印に付けた符号と対応関係である。概略的な区分であるが、P1:第1パケット、P2:第2パケット、を示す。H1は、第1パケットP1のヘッダ、D1は第1パケットP1のデータ、H2は第2パケットP2のヘッダ、D2は第2パケットP2のデータ、を示す。第1パケットP1は、第2パケットP2でカプセル化されるデータ(D2)となる。D1の「データ」列は、第1パケットP1に格納する対象のデータ(アプリケーションデータ等)を示す。h1〜h8はレイヤ等に応じた各ヘッダを示す。「第1IP」(h3)等ではIPアドレスを指定する。「第1TCP」(h2)等ではポート番号を指定する。「第1MAC」(h4)等ではMACアドレスを指定する。「任意」は、所定の形式に応じた任意指定の情報を示す。「一意」は、テーブル(110,112)等に基づいて一意に決定される情報を示す。例えば「第1TCP」ヘッダ(h2)の「一意」は、特定の通信ミドルウェアを示すポート番号などが格納される。“B”,“r”等は、アドレス等の具体的な値の例を記号で簡略化して示す。
【0067】
(S1)図7において、まず、通信装置Aの通信アプリケーション実行部103a(APP)が、第1通信ミドルウェア実行部104a(M1)に対して、アプリケーションデータ(第1パケットに格納する対象となるデータ)(601)を渡す。この際、103aは、当該データ(601)の送信先の(通信装置Bの)第1通信ミドルウェア実行部104b(M1)を指定するための情報を、当該データ(601)と一緒に104aに渡す。上記送信先(M1)を指定するための情報は、ここでは、通信装置BのIPアドレス“B”と、104b(M1)を特定するポート番号(“Pm1”とする)とを含む、図5の通信情報対応テーブル112の第1通信ミドルウェアの通信情報501(その格納値)に相当する情報である。
【0068】
(S2)次に、第1通信ミドルウェア実行部104a(M1)は、任意の第1ミドルヘッダ(h1)の情報を上記アプリケーションデータ(601)に付与し、これをアプリケーションデータ(602)として、プロトコルスタック107aに渡す。この際、104aは、上記の通信装置BのIPアドレス“B”と104b(M1)を示すポート番号“Pm1”とを含む情報を、プロトコルスタック107aに対し指定する。
【0069】
(S3)次に、プロトコルスタック107aは、上記104aから指定された通信装置BのIPアドレス“B”をIPヘッダ(第1IPヘッダ:h3)の情報とし、同ポート番号“Pm1”をTCPヘッダ(第1TCPヘッダ:h2)の情報として、上記アプリケーションデータ(602)に付与し、更に当該パケットの送信先MACアドレス(第1MAC:h4)の情報も付与して、送信用のパケット(Ethernetフレーム)(第1パケット)(603)を生成する。ここでは(図7)、通信装置Aと通信装置Bがルータ113を介して接続されている場合なので、107aは、通信装置Bとの通信をルータ113経由で行うために、当該パケット(Ethernetフレーム)(603)の送信先MACアドレス(第1MAC:h4)に、ルータ113のMACアドレス“r”を設定する。そして最後に、107aは、この送信用パケット(第1パケット)(603)を、仮想通信I/F108aに渡す。
【0070】
(S4)次に、仮想通信I/F108aは、上記107aから受け取った送信用パケット(603)を、そのままカプセル化処理部105aに渡す。
【0071】
(S5)次に、カプセル化処理部105aは、上記108aから受け取った送信パケット(603)のIPヘッダ(第1IPヘッダ:h3)及びTCPヘッダ(第1TCPヘッダ:h2)に含まれる宛先情報(通信装置BのIPアドレス“B”及び104bを示すポート番号“Pm1”)を用いて、プロトコル管理テーブル110(図4)を参照し、当該送信パケット(603)に対してカプセル化を行うか否か(要/不要)を判定する(カプセル化判定部203による処理)。前述のように特にテーブル(110)のプロトコル403等の値をもとに判定できる。本例(図7)のように、通信相手の通信装置101(B)が第2通信ミドルウェア実行部106(即ち新通信ミドルウェア(M2))を有する新装置であって、当該送信パケットの宛先のポート番号が旧通信ミドルウェア(M1)を指し示している場合、プロトコル管理テーブル110のプロトコル403欄には、当該送信パケットを(新通信ミドルウェア経由で通信させるように)カプセル化するためのプロトコル(例えば“プロトコルA”)が指定されている。従ってこの場合、カプセル化処理部105aは、当該パケットにつきカプセル化を行う(要)と判定し、第2通信ミドルウェア実行部106aに対し、当該送信パケット(603)(P1)をアプリケーションデータ(603)(D2)として渡す。この際、105aは、送信先の通信装置Bの第2通信ミドルウェア実行部106b(M2)を指定するための情報(IPアドレス“B”,106b(M2)を示すポート番号(“Pm2”とする)を含む、図5(112)の502相当情報)を、当該データ(603)と一緒に106aに渡す。
【0072】
(S6)次に、第2通信ミドルウェア実行部106aは、任意の第2ミドルヘッダ(h5)の情報を上記アプリケーションデータ(603)に付与し、これをアプリケーションデータ(604)として、プロトコルスタック107aに渡す。この際、106aは、上記のIPアドレス“B”と106b(M2)を示すポート番号“Pm2”とを含む情報を107aに対して指定する。
【0073】
(S7)次に、プロトコルスタック107aは、上記の106bから指定されたIPアドレス“B”をIPヘッダ(第2IPヘッダ:h7)の情報とし、同ポート番号“Pm2”をTCPヘッダ(第2TCPヘッダ:h6)の情報として、上記アプリケーションデータ(604)に付与し、更に当該パケットの送信先MACアドレス(第2MAC:h8)の情報も付与して、送信用パケット(605)を生成し、当該生成したパケット(第2パケット)(605)を仮想通信I/F108aに渡す。尚ここで107aがアプリケーションデータ(604)に第2IPヘッダ(h7)として付与したIPアドレスは、送信先の通信装置Bの仮想通信I/F108bに割り当てられているIPアドレス“B”であり、先(S3)に107aがアプリケーションデータ(602)に第1IPヘッダ(h3)として付与したIPアドレスと同じである。また、107aがここでアプリケーションデータ(604)に第2MAC(h8)として付与したアドレスは、ルータ113のMACアドレス“r”であり、先(S3)に107aがアプリケーションデータ(602)に第1MAC(h4)として付与したアドレス“r”と同じである。
【0074】
(S8)次に、仮想通信I/F108aは、上記の送信用パケット(605)をそのままカプセル化処理部105aに渡す。
【0075】
(S9)次に、カプセル化処理部105aは、上記105aから受け取った送信用パケット(605)のIPヘッダ(第2IPヘッダ:h7)及びTCPヘッダ(第2TCPヘッダ:h6)に含まれる宛先情報(IPアドレス“B”及び106b(M2)を示すポート番号“Pm2”)を用いて、プロトコル管理テーブル110(図4)を参照し、当該送信パケット(605)に対してカプセル化を行うか否か(要/不要)を判定する(カプセル化判定部203による処理)。
【0076】
ここでは、通信相手の通信装置101(B)が第2通信ミドルウェア実行部106(M2)を有する新装置であって、TCPヘッダに格納された宛先ポート番号“Pm2”が第2通信ミドルウェア(M2)を指し示しており、プロトコル管理テーブル110のプロトコル403欄には当該送信パケットを(カプセル化済みにより)カプセル化せずにそのまま送信(RAW送信)するように指定されている。従って、カプセル化処理部105a(203)は、カプセル化不要と判定し、当該送信用パケット(605)をそのまま通信I/F109aに渡す。
【0077】
(S10)次に、通信I/F109aは、上記の送信用パケット(605)をネットワーク102に送出する。
【0078】
(S11)ルータ113は、上記ネットワーク102から送出されたパケット(605)の第2MACヘッダ(h8)の情報を参照する。ここで当該第2MAC(h8)では当該ルータ113のMACアドレス“r”が格納されているため、ルータ113は、自分宛ての当該パケット(605)を受信する。更に、ルータ113は、当該パケット(605)の第2IP(h7)のアドレス情報を参照する。ここで当該第2IP(h7)では通信装置BのIPアドレス“B”が格納されているため、ルータ113は、当該パケット(605)の第2MAC(h8)の情報を、“r”から通信装置BのMACアドレス“b”に書き換えたパケット(606)を作成し、当該パケット(606)を通信装置Bへ転送する(ネットワーク102に送出する)。
【0079】
(S12)通信装置B(101b)の通信I/F109bは、上記ネットワーク102のルータ113からパケット(606)を受信すると、受信パケット(606)をそのままカプセル化処理部105bに渡す。
【0080】
(S13)次に、カプセル化処理部105bは、上記の受信パケット(606)をそのまま仮想通信I/F108bに渡す。
【0081】
(S14)次に、仮想通信I/F108bは、上記の受信パケット(606)をプロトコルスタック107bに渡す。
【0082】
(S15)次に、プロトコルスタック107bは、上記の受信パケット(606)に対してプロトコル処理を行い、受信パケット(606)のアプリケーションデータ部分(607)を取り出す。そして、受信パケット(606)のTCPヘッダ(第2TCPヘッダ:h6)による指定(ポート番号)に従って、当該アプリケーションデータ部分(607)を第2通信ミドルウェア実行部106b(M2)に渡す。
【0083】
(S16)次に、第2通信ミドルウェア実行部106b(M2)は、上記107bから受け取ったアプリケーションデータ(607)から第2ヘッダ(第2ミドルヘッダ:h5)を外して(カプセル化解除)、残りの部分(第1パケット)(608)をカプセル化処理部105bに渡す。
【0084】
(S17)次に、カプセル化処理部105bは、上記106b(M2)から受け取ったパケット(608)を仮想通信I/F108bに渡す際に、ヘッダ書き換え部206による処理として、第1MAC(h4)の宛先を、(ルータ113のMACアドレス“r”から)自身(通信装置B)のMACアドレス“b”に無条件で書き替えたパケット(608’)を作成し、仮想通信I/F108bへ転送する。これは、ルータ113を介して接続された通信装置Aと通信装置Bとがカプセル化通信を行う場合において、第1MAC(h4)の書き替えを行わずにパケットをそのまま仮想通信I/F108へ転送した場合、パケットの第1MAC(h4)の宛先がルータ113のMACアドレス“r”が格納されたままとなり、仮想通信I/F108が当該パケットはルータ113宛てであって自装置(B)宛てでは無いと判断して当該パケットを破棄してしまうこと、を防止するためである。
【0085】
(S18)次に、仮想通信I/F108bは、上記105bから受け取ったパケット(608’)を、プロトコルスタック107bに渡す。
【0086】
(S19)次に、プロトコルスタック107bは、上記108bから受け取ったパケット(608’)に対しプロトコル処理を行い、当該パケット(608’)のアプリケーションデータ部分(609)を取り出して、これを当該パケット(608’)のTCPヘッダ(第1TCPヘッダ:h2)の情報(ポート番号)に従って第1通信ミドルウェア実行部104b(M1)に渡す。
【0087】
(S20)次に、第1通信ミドルウェア実行部104b(M1)は、上記107bから受け取ったアプリケーションデータ(609)から第1ミドルヘッダ(h1)を外して、そのアプリケーションデータ(610)を通信アプリケーション実行部103b(APP)に渡す(なお前述のように必要に応じてサービスIDも参照してAPPを識別する)。以上のようにして、新装置から新装置へ、M2経由のカプセル化通信(第2パケット)を用いて、送信元のAPP(103a)から送信先のAPP(103b)へデータが送信される。
【0088】
[処理シーケンス2(新→旧)]
次に、図8,図9を用いて、新システム移行後の新装置から旧装置へのデータ送信時の非カプセル化通信の処理シーケンスについて説明する。図9の新装置である送信側の第1の通信装置C(101c)から、旧装置である受信側の第2の通信装置D(101d)へデータを送信する際の非カプセル化通信(カプセル化を行わない通信)を示す。通信装置Cは、第1通信ミドルウェア実行部104(104c)及び第2通信ミドルウェア実行部106(106c)を有する。通信装置Dは、第1通信ミドルウェア実行部104(104d)を有するが第2通信ミドルウェア実行部106を有さない。なお通信装置CのIPアドレスを“C”,MACアドレスを“c”、通信装置DのIPアドレスを“D”,MACアドレスを“d”とする。図8は、図9に対応した、新装置(C)から旧装置(D)へデータを送信する場合の電文を示し、見方は図6と同様である。
【0089】
(S1)図9で、まず、通信装置C(101c)の通信アプリケーション実行部103c(APP)が、第1通信ミドルウェア実行部104c(M1)にアプリケーションデータ(801)を渡す。この際、103cは、送信先の(通信装置Dの)第1通信ミドルウェア実行部104d(M1)を指定するための情報(IPアドレス“D”、104d(M1)を示すポート番号“Pm1”を含む501相当情報)を当該データ(801)と一緒に104cに渡す。
【0090】
(S2)次に、第1通信ミドルウェア実行部104c(M1)は、任意の第1ミドルヘッダ(h1)の情報をアプリケーションデータ(801)に付与し、これをアプリケーションデータ(802)として、プロトコルスタック107cに渡す。この際、104c(M1)は、上記のIPアドレス“D”及びポート番号“Pm1”を含む情報を107cに対し指定する。
【0091】
(S3)次に、プロトコルスタック107cは、上記104c(M1)から指定されたIPアドレス“D”をIPヘッダ(第1IPヘッダ:h3)の情報とし、同ポート番号“Pm1”をTCPヘッダ(第1TCPヘッダ:h2)の情報として、アプリケーションデータ(802)に付与し、更に当該パケットの送信先MACアドレス(第1MAC:h4)の情報も付与して、送信用のパケット(Ethernetフレーム)(第1パケット)(803)を生成する。ここでは、通信装置Cと通信装置Dがルータ113を介して接続しているので、107cは、通信装置Dとの通信をルータ113経由で行うために、当該パケット(Ethernetフレーム)(803)の送信先MACアドレス(第1MAC:h4)に、ルータ113のMACアドレス“r”を設定する。そして最後に、107cは、当該パケット(803)を仮想通信I/F108cに渡す。
【0092】
(S4)次に、仮想通信I/F108cは、上記送信用パケット(803)をそのままカプセル化処理部105cに渡す。
【0093】
(S5)次に、カプセル化処理部105cは、上記送信用パケット(803)のIPヘッダ(第1IPヘッダ:h3)及びTCPヘッダ(第1TCPヘッダ:h2)に含まれる宛先情報(IPアドレス“D”及びポート番号“Pm1”)を用いて、プロトコル管理テーブル110(図4)を参照し、当該パケット(803)に対してカプセル化を行うかどうか判定する。通信相手の通信装置101(D)が第2通信ミドルウェア実行部106(M2)を有していない旧装置である場合、プロトコル管理テーブル110のプロトコル403欄には、当該パケットをカプセル化せずそのまま送信(RAW送信)するよう指定されている。従ってここでは、105cは、カプセル化を行わないと判定し、当該パケット(803)をそのまま通信I/F109cに渡す。
【0094】
(S6)次に、通信I/F109cは、上記送信用パケット(803)をネットワーク102へ送出する。
【0095】
(S7)ルータ113は、上記ネットワーク102に送出されたパケット(803)の第1MAC(h4)の情報を参照する。当該第1MAC(h4)には、当該ルータ113のMACアドレス“r”が格納されているので、ルータ113は自分宛てである当該パケット(803)を受信する。更に、ルータ113は、当該パケット803の第1IP(h3)のアドレスを参照する。ここで、当該第1IP(h3)のアドレスは、通信装置DのIPアドレス“D”が格納されているので、ルータ113は、当該パケット(803)の第1MAC(h4)の情報を通信装置DのMACアドレス“d”に書き換えたパケット(804)を作成し、通信装置Dへ転送する。
【0096】
(S8)通信装置D(101d)の通信I/F109dは、上記ネットワーク102のルータ113からパケット(804)を受信すると、受信パケット(804)をプロトコルスタック107dに渡す。
【0097】
(S9)次に、プロトコルスタック107dは、上記109dから受け取ったパケット(804)に対しプロトコル処理を行い、当該パケット(804)のアプリケーションデータ部分(805)を取り出して、当該アプリケーションデータ(805)を、当該パケット(804)のTCPヘッダ(第1TCPヘッダ:h2)の指定(ポート番号)に従って、第1通信ミドルウェア実行部104d(M1)に渡す。
【0098】
(S10)次に、第1通信ミドルウェア実行部104d(M1)は、上記107dから受け取ったアプリケーションデータ(805)から第1ヘッダ(第1ミドルヘッダ:h1)を外して、残りの部分(アプリケーションデータ)(806)を通信アプリケーション実行部103d(APP)に渡す(前述のように必要に応じてサービスIDも参照)。以上のようにして、新装置から旧装置へ、第1パケットを用いて、送信元のAPP(103c)から送信先のAPP(103d)へデータが送信される。
【0099】
[処理シーケンス3(旧→新)]
次に、図10,図11を用いて、旧装置から新装置へのデータ送信時の非カプセル化通信の処理シーケンスについて説明する。図11の旧装置である送信側の第1の通信装置E(101e)から、新装置である受信側の第2の通信装置F(101f)へデータを送信する際の非カプセル化通信を示す。通信装置Eは、第1通信ミドルウェア実行部104(104e)を有するが第2通信ミドルウェア実行部106を有さない。通信装置Fは、第1通信ミドルウェア実行部104(104f)及び第2通信ミドルウェア実行部106(106f)を有する。なお通信装置EのIPアドレスを“E”,MACアドレスを“e”、通信装置FのIPアドレスを“F”,MACアドレスを“f”とする。図10は、図11に対応した、旧装置(E)から新装置(F)へデータを送信する場合の電文を示す。
【0100】
(S1)図11で、まず、通信装置E(101e)の通信アプリケーション実行部103e(APP)が、第1通信ミドルウェア実行部104e(M1)にアプリケーションデータ(1001)を渡す。この際、103eは、送信先の(通信装置Fの)第1通信ミドルウェア実行部104f(M1)を指定するための情報(IPアドレス“F”、104f(M1)を示すポート番号(“Pm1”)を含む501相当情報)を、当該データ(1001)と一緒に104eに渡す。
【0101】
(S2)次に、第1通信ミドルウェア実行部104e(M1)は、任意の第1ミドルヘッダ(h1)の情報をアプリケーションデータ(1001)に付与し、これをアプリケーションデータ(1002)として、プロトコルスタック107eに渡す。この際、104e(M1)は、上記のIPアドレス“F”及びポート番号“Pm1”を含む情報を107eに対し指定する。
【0102】
(S3)次に、プロトコルスタック107eは、上記104e(M1)から指定されたIPアドレス“F”をIPヘッダ(第1IPヘッダ:h3)の情報とし、同ポート番号“Pm1”をTCPヘッダ(第1TCPヘッダ:h2)の情報として、アプリケーションデータ(1002)に付与し、更に当該パケットの送信先MACアドレス(第1MAC:h4)の情報も付与して、送信用のパケット(Ethernetフレーム)(第1パケット)(1003)を生成する。ここでは、通信装置Eと通信装置Fがルータ113を介して接続しているので、107eは、通信装置Fとの通信をルータ113経由で行うために、当該パケット(Ethernetフレーム)(1003)の送信先MACアドレス(第1MAC:h4)に、ルータ113のMACアドレス“r”を設定する。そして最後に、107eは、当該パケット(1003)を仮想通信I/F108eに渡す。
【0103】
(S4)次に、仮想通信I/F109eは、上記送信用パケット(1003)をネットワーク102へ送出する。
【0104】
(S5)ルータ113は、上記ネットワーク102に送出されたパケット(1003)の第1MAC(h4)の情報を参照する。ここで当該第1MAC(h4)は、当該ルータ113のMACアドレス“r”が格納されているため、ルータ113は、当該パケット(1003)を受信する。更に、ルータ113は、当該パケット(1003)の第1IP(h3)のアドレスを参照する。ここで当該第1IP(h3)のアドレスは通信装置FのIPアドレス“F”が格納されているため、ルータ113は、当該パケット(1003)の第1MAC(h4)を通信装置FのMACアドレス“f”に書き換えたパケット(1004)を作成し、当該パケット(1004)を通信装置Fへ転送する。
【0105】
(S6)通信装置F(101f)の通信I/F109fは、上記ネットワーク102のルータ113からパケット(1004)を受信すると、そのままカプセル化処理部105fに渡す。
【0106】
(S7)次に、カプセル化処理部105fは、上記109fから受け取ったパケット(1004)をそのまま仮想通信I/F108fに渡す。
【0107】
(S8)次に、仮想通信I/F108fは、上記105fから受け取ったパケット(1004)をプロトコルスタック107fに渡す。
【0108】
(S9)次に、プロトコルスタック107fは、上記108fから受け取ったパケット(1004)に対してプロトコル処理を行い、アプリケーションデータ部分(1005)を取り出し、当該アプリケーションデータ(1005)を、当該パケット(1004)の第1TCPヘッダ(h2)の指定(ポート番号)に従って、第1通信ミドルウェア実行部104f(M1)に渡す。
【0109】
(S10)次に、第1通信ミドルウェア実行部104f(M1)は、アプリケーションデータ(1005)から第1ヘッダ(第1ミドルヘッダ:h1)を外して、残りの部分(アプリケーションデータ)(1006)を通信アプリケーション実行部103f(APP)に渡す(前述のように必要に応じてサービスIDも参照)。以上のようにして、旧装置から新装置へ、第1パケットを用いて、送信元のAPP(103e)から送信先のAPP(103f)へデータが送信される。
【0110】
[効果等]
上述のように、本実施の形態の通信装置101では、仮想通信I/F108のみにIPアドレス等が割り当てられ、すべての通信が仮想通信I/F108及びカプセル化処理部105を経由するように設定・構成される。本通信装置101は、データ送信時、カプセル化処理部105(カプセル化判定部203等)の処理に基づき、旧通信ミドルウェア(M1)の第1パケット(P1)を新通信ミドルウェア(M2)経由の第2パケット(P2)にカプセル化して送信する。また本通信装置101は、データ受信時、カプセル化処理部105(ヘッダ書き換え部206等)の処理に基づき、受信した新通信ミドルウェア(M2)経由の第2パケット(P2)を(カプセル化解除して)旧通信ミドルウェア(M1)の第1パケット(P1)に戻す。その際、ヘッダ書き換え部206により自動的にヘッダ情報(宛先情報)を書き換えて自分宛ての情報として受領する(第1パケット部分のヘッダ情報(特にMACアドレス情報)を、第2パケット部分の宛先情報で書き換える(図7の105b,S16(608),S17(608’)等)。
【0111】
実施の形態1では、前記図9,図11に示す各パケット送受信処理(旧装置を含む場合の通信処理)においては、受信側及び送信側の通信装置101が新装置であるか否かに関わらず、パケットのIPヘッダ(第1IPヘッダ:h3)には、仮想通信I/F108に割り当てられたIPアドレスが用いられている。即ち、新システムへの移行に伴ってIPアドレスを変更する必要無く従前のIPアドレスを使い続けてパケットの送受信が可能であることが分かる。
【0112】
実施の形態1によれば、通信装置101を含むシステムで、IPアドレス等(システム設定情報)の変更や専用のハードウェア(カプセル化装置等)の追加無しに、旧システムの旧通信ミドルウェア(M1)を介してデータを送受信する通信アプリケーション(APP)がそのまま(流用して)新システムの新通信ミドルウェア(M2)を介してでもデータの送受信が可能になる。即ちシステム移行の容易化及びコスト低減などの効果がある。
【0113】
<実施の形態2>
図12〜図16等を用いて、本発明の実施の形態2について説明する。実施の形態2では、実施の形態1と同様に、システム移行に伴い、システム内の複数の通信装置101に、旧通信ミドルウェア(M1)に加え新通信ミドルウェア(M2)が実装された場合において、実施の形態1と同様の目的・効果等を達成するための異なる手段を有する構成である。実施の形態2の通信装置101の基本的な構成などは前述の実施の形態1(図1)と同様であり、カプセル化処理部105の処理が異なる。実施の形態1では受信側で第1パケット部分の宛先情報を変更(書き換え)する手段を有する構成であるに対し、実施の形態2では、新通信ミドルウェア(M2)が実装された新装置は、送信側で、パケットを送信する前にルータ(113)を経由する通信かどうかに応じて第1パケット部分の宛先情報を変更する手段(図12、207〜209等)を有する構成である。特に、ARPを用いて、送信元の通信装置では、宛先(受信側)の通信装置のMACアドレス情報を取得するために、宛先の通信装置のIPアドレスを第2パケットとしてカプセル化したARPリクエスト(ARP要求)を作成して送信する(図13の1323等)。それに対して、宛先(受信側)の通信装置では、送信元の通信装置のIPアドレスを第2パケットとしてカプセル化したARPリプライ(ARP応答)を返信する(図15の1333等)。これにより送信元の通信装置は、宛先の通信装置のMACアドレス情報を取得でき、一時的に保持していた送信パケットを当該MACアドレス情報を用いて宛先の通信装置へ送信し、宛先の通信装置が当該パケットを受領できる。
【0114】
[カプセル化処理部]
図12を用いて実施の形態2の通信装置101のカプセル化処理部105の詳細構成について説明する。実施の形態2でのカプセル化処理部105は、RAW受信部201、ミドル受信部202、カプセル化判定部203、RAW送信部204、ミドル送信部205、ルータ跨ぎ判定部207、パケット保持部208、及び宛先変更部209を有する構成である(図2のヘッダ書き換え部206は有さない)。
【0115】
RAW受信部201は、受信時、ネットワーク102経由で通信I/F109に到着した受信パケット(Ethernetフレーム)を通信I/F109からRAW受信で受け取り(A1)、当該フレームをそのまま仮想I/F108に渡す(A2)といった処理を行う。
【0116】
カプセル化判定部203は、送信時、プロトコル管理テーブル110(図4)を参照し、仮想通信I/F108から受信したパケット(A5)をチェック(確認)しカプセル化の要否などを判定する。203は、当該受信パケット(A5)が第2通信ミドルウェア(M2)により既にカプセル化されている場合(カプセル化済み)を含め、カプセル化不要と判定した場合(a3)には、当該パケットをRAW送信部204に渡し、当該受信パケットが、未だ第2通信ミドルウェア(M2)によりカプセル化されていない場合(カプセル化未済み)を含め、カプセル化要と判定した場合(a4)には、ルータ跨ぎ判定部207に渡す。
【0117】
ただし、カプセル化判定部203は、上記108から受信したパケット(A5)がARP要求やARP応答(以降、ARP要求、ARP応答、またはその両方について、特に指定しない場合、ARPフレームと呼ぶ)の場合は、プロトコル管理テーブル110(図4)を参照せずに、当該ARPフレームの内部の宛先IPアドレスと、仮想通信I/F108に設定されたIPアドレスとの比較により、カプセル化の要否を判定する。203は、上記ARPフレーム内部の宛先IPアドレスと108の設定IPアドレスとで、それぞれのネットワークアドレス(なお全体のうちの部分情報である)が同一である場合、当該ARPフレームは、自通信装置が接続しているネットワーク(102)に接続している他通信装置宛てのARPフレームであるため、カプセル化不要と判定する。また203は、上記ARPフレーム内部の宛先IPと108の設定IPアドレスとで、それぞれのネットワークアドレスが異なる場合、ルータ113を跨いだ他通信装置(ルータ113を経由した異なるサブネットに接続される他通信装置)宛てのARPフレームであるため、カプセル化要と判定する。203は、上記カプセル化不要と判定した場合(a3)、当該ARPフレームをRAW送信部204に渡し、上記カプセル化要と判定した場合(a4)、当該ARPフレームをルータ跨ぎ判定部207に渡す。
【0118】
RAW送信部204は、カプセル化判定部203やパケット保持部208から受け取ったパケット(a3,a5)をそのまま通信I/F109に渡す(A9)。
【0119】
ルータ跨ぎ判定部207は、カプセル化判定部203から受け取ったパケット(a4)について、上述のルータ113を跨ぐ通信をするか否かをチェック・判定する。207は、203から受け取ったパケット(a4)の第1IP(前記h3)に格納された宛先IPアドレスのネットワークアドレス部分と、仮想通信I/F108に設定されたIPアドレスのネットワークアドレス部分とを比較し、同じ値でない場合、当該パケット(a4)はルータ113を跨ぐ通信をする(ルータ跨ぎ有り)(a6)と判定する。同様に、207は、上記部分が同じ値である場合、当該パケット(a4)はルータ113を跨ぐ通信ではない(ルータ跨ぎ無し)(a7)と判定する。207は、ルータ跨ぎ有り(a6)の場合、当該パケットをパケット保持部208に渡し、ルータ跨ぎ無し(a7)の場合、当該パケットをミドル送信部205に渡す。ただし、207は、203から受け取ったパケット(a4)がARPフレームである場合、当該ARPフレームは203にて既にルータ113を跨いで通信をすると判定されているため、無条件でミドル送信部205に渡す。
【0120】
パケット保持部208は、上記ルータ跨ぎ判定部207からパケットを受け取った場合(a6)、通信相手の通信装置101のMACアドレス情報を取得するために、それに対応するARP要求(a8)をミドル送信部205に渡す。その後、208は、(通信相手からの)ARP応答(a2)を受信するまで、もしくはARP応答タイムアウトになるまで、上記207から受け取ったパケット(a6)を保持する。また、208は、ミドル受信部202から(通信相手からの)ARP応答(a2)を受け取った場合、当該ARP応答の送信元(つまり通信相手の)MACアドレスの情報と、上記保持していたパケットとを、宛先変更部209に渡す(a9)。また、208は、上記ARP要求に対するARP応答がタイムアウトとなった場合は、上記保持していたパケットだけをRAW送信部204へ渡す(a5)。
【0121】
宛先変更部209は、上記208から受け取ったパケット(a9)の第1MAC(前記h4)の情報を、上記208から同様に受け取ったARP応答の送信元MACアドレス情報によって書き換える(即ち宛先を変更する)。次に、209は、上記第1MAC(h4)を書き換えたパケット(a10)を、ミドル送信部205に渡す。
【0122】
ミドル受信部202は、受信時、第2通信ミドルウェア実行部106から渡された電文(A10)がARP応答である場合、当該ARP応答をパケット保持部202に渡し(a2)、106から渡された電文(A10)がARP応答以外である場合、つまりARP要求やアプリケーションデータ等である場合、その電文をそのまま仮想通信I/F108に渡す(a1)といった処理を行う。
【0123】
ミドル送信部205は、送信時、ルータ跨ぎ判定部207から受け取ったARP応答を含むパケット(a7)と、宛先変更部209から受け取ったパケット(a10)と、パケット保持部208から受け取ったARP要求(a8)とのそれぞれについて、第2通信ミドルウェア実行部106に渡す。その際、205は、実施の形態1と同様に、送信先の第2通信ミドルウェア実行部106(M2)を指定するための情報(IPアドレス及び106(M2)を示すポート番号を含む図5(112)の502相当情報)を付け加えて、106に渡す。
【0124】
ただし、上記でARPフレームを106に渡す場合(a7)、205は、送信先の第2通信ミドルウェア実行部106(M2)を指定するための情報として、当該ARPフレーム内部に格納されている宛先IPアドレス情報を106に渡す。これにより、宛先の通信装置のIPアドレスを第2パケットとしてカプセル化したARPフレームを作成することができる。
【0125】
[処理シーケンス(新→新)]
次に、図13〜図16を用いて、実施の形態2において、新システム移行後の新装置(通信装置A)から新装置(通信装置B)へデータを送信する際のカプセル化通信の処理シーケンスを説明する。図14,図16の通信装置A(101a)及び通信装置B(101b)は共に第1通信ミドルウェア実行部104(M1)及び第2通信ミドルウェア実行部106(M2)を有する(図7と同様)。
【0126】
(S1)図14で、まず、通信装置Aの通信アプリケーション実行部103a(APP)が、第1通信ミドルウェア実行部104a(M1)にアプリケーションデータ(1301)を渡す。この際、103aは、送信先の(通信装置Bの)第1通信ミドルウェア実行部104b(M1)を指定するための情報(IPアドレス“B”及び104b(M1)を示すポート番号(“Pm1”)を含む情報)を当該データ(1301)と一緒に104aに渡す。
【0127】
(S2)次に、第1通信ミドルウェア実行部104a(M1)は、任意の第1ミドルヘッダ(h1)の情報をアプリケーションデータ(1301)に付与し、これをアプリケーションデータ(1302)として、プロトコルスタック107aに渡す。この際、104aは、上記IPアドレス“B”及び示すポート番号“Pm1”を含む情報を107aに対し指定する。
【0128】
(S3)次に、プロトコルスタック107aは、上記104aから指定されたIPアドレス“B”をIPヘッダ(第1IPヘッダ:h3)の情報とし、同ポート番号“Pm1”をTCPヘッダ(第1TCPヘッダ:h2)の情報として、アプリケーションデータ(1302)に付与し、更に当該パケットの送信先MACアドレス(第1MAC:h4)の情報も付与して、送信用パケット(Ethernetフレーム)(第1パケット)(1303)を生成する。ここでは、通信装置Aと通信装置Bがルータ113を介して接続しているので、107aは、通信装置Bとの通信をルータ113経由で行うために、当該パケット(Ethernetフレーム)(1303)の送信先MACアドレス(第1MAC:h4)に、ルータ113のMACアドレス“r”を設定する。そして最後に、107aは、当該パケット(1303)を仮想通信I/F108aに渡す。
【0129】
(S4)次に、仮想通信I/F108aは、上記107aから受け取った送信用パケット(1303)をそのままカプセル化処理部105aに渡す。
【0130】
(S5)次に、カプセル化処理部105aは、上記送信用パケット(1303)のIPヘッダ(第1IPヘッダ:h3)及びTCPヘッダ(第1TCPヘッダ:h2)に含まれる宛先情報(IPアドレス“B”及びポート番号“Pm1”)を用いて、プロトコル管理テーブル110(図4)を参照し、当該パケット(1303)の要否を判定する。ここではカプセル化要と判定される。
【0131】
本例では、当該送信用パケット(1303)は、第1IP(h3)の宛先が通信装置B宛てであり、ルータ跨ぎ有りなので、カプセル化処理部105aは、当該送信用パケット(1303)をパケット保持部208にて一時的に保持し、図13に示すARP要求(1321)を第2通信ミドルウェア実行部106a(M2)に渡す(なお1321の第1MAC(h4)の値はブロードキャストアドレス)。その際、105aは、送信先の(通信装置Bの)第2通信ミドルウェア実行部106b(M2)を指定するための情報として、ARPフレーム内部に格納されている宛先IPアドレス“B”及びポート番号“Pm1”を、106aに渡す。
【0132】
(S6)次に、第2通信ミドルウェア実行部106a(M2)は、任意の第2ミドルヘッダ(h5)を上記ARP要求(1321)に付与し、これをアプリケーションデータ(1322)として、プロトコルスタック107aに渡す。この際、106a(M2)は、上記IPアドレス“B”及びポート番号“Pm1”を含む情報を107aに対し指定する。
【0133】
(S7)次に、プロトコルスタック107aは、上記106aから指定されたIPアドレス“B”をIPヘッダ(第2IPヘッダ:h7)の情報として、同ポート番号“Pm1”をTCPヘッダ(第2TCPヘッダ:h6)の情報として、上記アプリケーションデータ(1322)に付与し、更に当該パケットの送信先MACアドレス(第2MAC:h8)の情報も付与して、送信用パケット(カプセル化済み、第2パケット)(1323)を生成し、当該パケット(1323)を仮想通信I/F108aに渡す。なお通信装置Aと通信装置Bがルータ113を介して接続しており、通信装置Aと通信装置Bは相互の通信をルータ113経由させるため、107aは、実施の形態1と同様に、当該パケット(1323)の送信先MACアドレス(第2MAC:h8)に、ルータ113のMACアドレス“r”を設定する。
【0134】
(S8〜S10)以降、前述の実施の形態1の例と同様に、送信用パケット(1323)は、仮想通信I/F108aから、カプセル化処理部105a、通信I/F109aを経由して、ルータ113に到達する。
【0135】
(S11)ルータ113は、上記受信したパケット(1323)の第2IP(h7)のアドレスを参照する。ここで、当該第2IP(h7)のアドレスは、通信装置BのIPアドレス“B”が格納されているため、ルータ113は、当該パケット(1323)の第2MAC(h8)の情報(“r”)を通信装置BのMACアドレス“b”に書き換えたパケット(1324)を作成し、通信装置Bへ転送する。
【0136】
(S12〜S14)以降も前述同様に、当該パケット(1324)は、通信装置Bの通信I/F109b、カプセル化処理部105b、仮想通信I/F108bを経由し、プロトコルスタック107bに渡される。
【0137】
(S15)プロトコルスタック107bは、上記受信パケット(1324)に対してプロトコル処理を行い、当該パケット(1324)のアプリケーションデータ部分(1325)を取り出す。そして、当該パケット(1324)のTCPヘッダ(第2TCPヘッダ:h6)の指定(ポート番号)に従って、当該アプリケーションデータ部分(1325)を第2通信ミドルウェア実行部106b(M2)に渡す。
【0138】
(S16)次に、第2通信ミドルウェア実行部106b(M2)は、上記107bから受け取ったアプリケーションデータ(1325)から第2ヘッダ(第2ミドルヘッダ:h5)を外して、残りの部分、つまりARP要求(1326)を、カプセル化処理部105bに渡す。
【0139】
(S17)次に、カプセル化処理部105bは、上記106bから受け取ったARP要求(1326)を、そのまま仮想通信I/F108bへ転送する。
【0140】
(S18)次に、仮想通信I/F108bは、上記105bから受け取ったARP要求(1326)をプロトコルスタック107bに渡す。
【0141】
(S19)続いて、図16で、プロトコルスタック107bは、上記ARP要求(1326)を受け取り、通信装置Aにその応答を返信するために、図15に示すARP応答(1331)を、仮想通信I/F108bに渡す。当該ARP応答(1331)は、自装置(B)のMACアドレス情報“b”を含む。
【0142】
(S20,S21)次に、仮想通信I/F108bは、上記ARP応答(1331)を、カプセル化処理部105bに渡し、カプセル化処理部105bから第2通信ミドルウェア実行部106b(M2)に渡す。
【0143】
(S22)第2通信ミドルウェア実行部106b(M2)は、任意の第2ヘッダ(第2ミドルヘッダ:h5)の情報を上記ARP応答(1331)に付与し、これをアプリケーションデータ(1332)として、プロトコルスタック107bに渡す。この際、106bは、通信装置AのIPアドレス“A”及び106a(M2)を示すポート番号“Pm2”を含む情報を107bに対し指定する。
【0144】
(S23)次に、プロトコルスタック107bは、上記106bから指定されたIPアドレス“A”をIPヘッダ(第2IPヘッダ:h7)の情報として、同ポート番号“Pm2”をTCPヘッダ(第2TCPヘッダ:h6)の情報として、アプリケーションデータ(1332)に付与し、更に当該パケットの送信先MACアドレス(第2MAC:h8)の情報も付与して、送信用パケット(1333)を生成し、当該パケット(1333)を仮想通信I/F108bに渡す。なお通信装置Aと通信装置Bがルータ113を介して接続しており、通信装置Aと通信装置Bは相互の通信をルータ113経由させるため、107bは、実施の形態1と同様に、当該パケット(1333)の送信先MACアドレス(第1MAC:h8)に、ルータ113のMACアドレス“r”を設定する。
【0145】
(S24〜S26)以降、前述同様に、送信用パケット(1333)は、仮想通信I/F108bから、カプセル化処理部105b、通信I/F109bを経由して、ルータ113に到達する。
【0146】
(S27)ルータ113においても、前述同様に、パケット(1333)の第2MAC(h8)の情報を通信装置AのMACアドレス“a”に書き換えたパケット(1334)を作成し、通信装置Aへ転送する。
【0147】
(S28〜S30)通信装置Aの通信I/F109aは、ルータ113からパケット(1334)を受信すると、当該受信パケット(1334)を、カプセル化処理部105a、仮想通信I/F108aを経由して、プロトコルスタック107aに渡す。
【0148】
(S31)次に、プロトコルスタック107aは、受信パケット(1334)に対してプロトコル処理を行い、当該パケット(1334)のアプリケーションデータ部分(1335)を取り出す。そして、当該パケット(1334)のTCPヘッダ(第2TCPヘッダ:h6)の指定(ポート番号)に従って、当該アプリケーションデータ部分(1335)を第2通信ミドルウェア実行部106a(M2)に渡す。
【0149】
(S32)次に、第2通信ミドルウェア実行部106a(M2)は、上記107aから受け取ったアプリケーションデータ(1335)から第2ヘッダ(第2ミドルヘッダ:h5)を外して、残りの部分、つまりARP応答(1336)を、カプセル化処理部105aに渡す。
【0150】
(S33)カプセル化処理部105aは、上記106aからARP応答(1336)を受け取ると、前述のパケット保持部208にて保持していたパケット(図13、1303)の宛先MAC(h4)の情報を、宛先変更部209により、当該ARP応答(1336)の送信元MACアドレス(つまり通信相手の通信装置BのMACアドレス“b”)で書き換えたパケット(図15、1304)を作成する。そして、カプセル化処理部105a(209,205等)は、当該パケット(1304)を、第2通信ミドルウェア実行部106a(M2)に渡す。この際、105aは、送信先の(通信装置Bの)第2通信ミドルウェア実行部106b(M2)を指定するための情報(IPアドレス“B”及び106b(M2)を示すポート番号“Pm2”を含む情報)を当該データ(1304)と一緒に106aに渡す。
【0151】
(S34)第2通信ミドルウェア実行部106a(M2)は、任意の第2ミドルヘッダ(h5)の情報を上記データ(1304)に付与し、これをアプリケーションデータ(1305)として、プロトコルスタック107aに渡す。この際、106aは、上記IPアドレス“B”及びポート番号“Pm2”を含む情報を107aに対し指定する。
【0152】
(S35)次に、プロトコルスタック107aは、上記106bから指定されたIPアドレス“B”をIPヘッダ(第2IPヘッダ:h7)の情報とし、同ポート番号“Pm2”をTCPヘッダ(第2TCPヘッダ:h6)の情報として、上記アプリケーションデータ(1305)に付与し、更に当該パケットの送信先MACアドレス(第2MAC:h8)の情報も付与して、送信用パケット(1306)を生成し、仮想通信I/F108aに渡す。尚、ここで107aがアプリケーションデータ(1305)に第2IPヘッダ(h7)として付与したIPアドレスは、送信先の通信装置Bの仮想通信I/F108bに割り当てられたIPアドレス“B”であり、先(S4)に107aがアプリケーションデータ(1303)に第1IPヘッダ(h3)として付与したIPアドレスと同じである。また、107aがアプリケーションデータ(1305)に第2MAC(h8)として付与したアドレスは、ルータ113のMACアドレス“r”であり、先(S4)に107aがアプリケーションデータ(1303)に第1MAC(h4)として付与したアドレス“r”と同じである。
【0153】
(S36〜S38)仮想通信I/F108aは、上記107aから渡されたパケット(1306)をカプセル化処理部105aに渡し、同様に105aから通信I/F109aを経由してルータ113に渡される。
【0154】
(S39)ルータ113においても、前述同様に、パケット(1306)の第2MAC(h8)を通信装置BのMACアドレス“b”に書き換えたパケット(1307)を作成し、通信装置Bへ転送する。
【0155】
(S40〜S42)通信装置Bの通信I/F109bは、ルータ113からパケット(1307)を受信すると、カプセル化処理部105bに渡し、同様に105bから、仮想通信I/F108bを経由してプロトコルスタック107bに渡される。
【0156】
(S43)次に、プロトコルスタック107bは、上記受信パケット(1307)に対してプロトコル処理を行い、当該パケット(1307)のアプリケーションデータ部分(1308)を取り出す。そして、当該パケット(1307)のTCPヘッダ(第2TCPヘッダ:h6)の指定(ポート番号)に従って、当該アプリケーションデータ部分(1308)を第2通信ミドルウェア実行部106b(M2)に渡す。
【0157】
(S44)次に、第2通信ミドルウェア実行部106b(M2)は、上記107bから受け取ったアプリケーションデータ(1308)から第2ヘッダ(第2ミドルヘッダ:h5)を外して、残りの部分(第1パケット)(1309)をカプセル化処理部105bに渡す。
【0158】
(S45)次に、カプセル化処理部105bは、上記106bから受け取ったパケット(1309)を仮想通信I/F108bに渡す。
【0159】
(S46)次に、仮想通信I/F108bは、上記105bから受け取ったパケット(1309)の第1MAC(h4)のアドレスが、(通信装置Bの)仮想通信I/F108bで割り当てられているMACアドレス“b”と一致するため、当該パケット(1309)を受領する。そして、108bは、当該パケット(1309)をプロトコルスタック107bへ渡す。
【0160】
(S47)次に、プロトコルスタック107bは、上記108bから受け取ったパケット(1309)に対しプロトコル処理を行い、当該パケット(1309)のアプリケーションデータ部分(1310)を取り出して、当該アプリケーションデータ(1310)を、当該パケット(1309)のTCPヘッダ(第1TCPヘッダ:h2)の指定(ポート番号)に従って、第1通信ミドルウェア実行部104b(M1)に渡す。
【0161】
(S48)次に、第1通信ミドルウェア実行部104b(M1)は、上記107bから受け取ったアプリケーションデータ(1310)から第1ミドルヘッダ(h1)を外して、当該データ(1311)を通信アプリケーション実行部103b(APP)に渡す(前述のように必要に応じてサービスIDも参照)。以上のようにして、新装置から新装置へのデータ送信において、M2経由のカプセル化通信(第2パケット)を用いて、ARPの処理を介在しつつ、送信元のAPP(103a)から送信先のAPP(103b)へデータが送信される。
【0162】
[効果等]
上述のように、実施の形態2の通信装置101では、送信時、新装置は、パケットを送信する前に、カプセル化処理部105(207〜209等)により、ルータ113を経由する通信かどうかに応じて第1パケット部分の宛先情報(MACアドレス)を変更する処理を行う。特に、ルータ113を経由する送信パケット(保持パケット)について、送信元の通信装置(A)は、宛先の通信装置(B)のIPアドレスを第2パケット(P2)の宛先IPとしてカプセル化したARP要求を送信し(1323等)、それに対して、宛先の通信装置(B)は、送信元の通信装置(A)のIPアドレスを第2パケット(P2)の宛先IPとしてカプセル化したARP応答を返信する(1333等)。これにより送信元の通信装置(A)は、送信パケット(保持パケット)の宛先(MACアドレス)を上記ARP応答で取得した宛先の通信装置(B)のMACアドレスによって変更して送信し、宛先の通信装置(B)は当該パケットを受領することができる。
【0163】
なお、実施の形態2における、新装置から旧装置への送信の場合、及び旧装置から新装置への送信の場合については、カプセル化処理部105で、カプセル化不要のパケットと判定されることになるので、それぞれ実施の形態1(図9,図11)と同様の動作になる。
【0164】
以上説明したように実施の形態2においても実施の形態1と同様の効果(システム移行の容易化及びコスト低減など)が得られる。
【0165】
実施の形態2の変形例として以下のような処理(ARP情報の記録によるARP通信の繰り返し省略)を行う構成としてもよい。送信側の通信装置101で、図15のARP応答(1336)をメモリ(図3のホストメモリ302等)上にテーブル(例えばARP情報テーブル)等の形で記録しておき、パケット保持部208で、図13のARP要求(1321)を送信する前に、上記テーブル情報を参照し、当該(宛先の)通信装置からのARP応答(1336)を既に(過去に)受信している場合は、前述のARP要求(1321)の送信や送信パケット保持を行わずに、当該送信パケットの宛先MACアドレス情報を上記テーブルに記録されているARP応答(1336)の送信元(宛先)の通信装置のMACアドレス情報によって書き替えるようにする。これにより、前述のARP要求及びARP応答のやりとりについては通信の初回時のみ行えばよくなるため、無駄な通信を抑えて通信の応答性を確保することができる。
【0166】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【0167】
本発明は、通信ミドルウェアを用いる通信装置を含んで構成される各種の情報処理システム(通信システム)やVPN(仮想プライベートネットワーク)などに利用可能である。
【符号の説明】
【0168】
101…通信装置、102…ネットワーク、103…通信アプリケーション実行部、104…第1通信ミドルウェア実行部、105…カプセル化処理部、106…第2通信ミドルウェア実行部、107…プロトコルスタック、108…仮想通信I/F、109…通信I/F、110…プロトコル管理テーブル、112…通信情報対応テーブル、113…ルータ、201…RAW受信部、202…ミドル受信部、203…カプセル化判定部、204…RAW送信部、205…ミドル送信部、206…ヘッダ書き替え部、207…ルータ跨ぎ判定部、208…パケット保持部、209…宛先変更部。
【特許請求の範囲】
【請求項1】
通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置であって、
前記通信装置は、
送信側の自装置である第1の通信装置から受信側の他装置である第2の通信装置へ対象の第1のデータをパケットとして送信する場合の送信機能として、
前記対象の第1のデータに、前記第2の通信装置を宛先として指定するアドレス情報を含む第1ヘッダを付けて、第1パケットを作成する処理を行う第1パケット作成部と、
前記第1パケットを用いて、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第1の処理を実行する第1の処理部と、
前記第1パケットに、前記第2の通信装置を宛先として指定するアドレス情報を含む第2ヘッダを付けて、カプセル化した第2パケットを作成する処理を行う第2パケット作成部と、
前記第2パケットを用いて、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第2の処理を実行し、当該第2パケットをネットワークへ送信する第2の処理部と、を有し、
送信側の他装置である第2の通信装置から受信側の自装置である第1の通信装置へ対象の第2のデータをパケットとして受信する場合の受信機能として、
前記ネットワークから受信した前記第2パケットに対し、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第3の処理を実行し、前記第2ヘッダを外してカプセル化解除により前記第1パケットを取り出し、前記第1パケットから前記第1ヘッダを外して前記対象の第1のデータを取り出す処理を行う第3の処理部と、
前記第1の通信装置の通信ミドルウェアを通じて受け取った前記第2パケットにおける前記第1パケットの部分の第1ヘッダの宛先アドレス情報を、当該受信側の自装置である第1の通信装置のアドレス情報によって書き替えることにより、当該第1パケットを自装置で受領させる処理を行うヘッダ書き替え部と、を有すること、を特徴とする通信装置。
【請求項2】
通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置であって、
前記通信装置は、
送信側の自装置である第1の通信装置から受信側の他装置である第2の通信装置へ対象の第1のデータをパケットとして送信する場合の送信機能として、
前記対象の第1のデータに、前記第2の通信装置を宛先として指定するアドレス情報を含む第1ヘッダを付けて、第1パケットを作成する処理を行う第1パケット作成部と、
前記第1パケットを用いて、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行する第1の処理部と、
前記第1パケットに、前記第2の通信装置を宛先として指定するアドレス情報を含む第2ヘッダを付けて、カプセル化した第2パケットを作成する処理を行う第2パケット作成部と、
前記第2パケットを用いて、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行し、当該第2パケットをネットワークへ送信する第2の処理部と、を有し、
送信側の他装置である第2の通信装置から受信側の自装置である第1の通信装置へ対象の第2のデータをパケットとして受信する場合の受信機能として、
前記ネットワークから受信した前記第2パケットに対し、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第3の処理を実行し、前記第2ヘッダを外してカプセル化解除により前記第1パケットを取り出し、前記第1パケットから前記第1ヘッダを外して前記対象の第1のデータを取り出す処理を行う第3の処理部と、を有し、
前記送信機能として、
送信対象のパケットが前記ネットワークのルータを経由して通信するか否かを通信情報の比較により判定するルータ跨ぎ判定部と、
前記受信側の第2の通信装置の宛先アドレス情報を取得するために、ARPを用いて、前記送信対象のパケットのヘッダの宛先の第2の通信装置のIPアドレス情報を前記第2パケットの第2ヘッダの宛先のIPアドレス情報としてカプセル化した、ARP要求による第2パケットを作成して送信させ、当該ARP要求に対するARP応答を受信するまで、当該送信対象のパケットを一時的に保持しておくパケット保持部と、
前記保持している送信対象のパケットのヘッダの宛先の第2の通信装置のアドレス情報を、前記第2の通信装置から受信した前記ARP応答による第2パケットに含まれているアドレス情報によって書き替えて、当該書き替えたパケットを送信させる宛先変更部と、を有し、
前記受信機能として、前記ネットワークから受信したパケットが前記ARP要求による第2パケットである場合に、当該ARP要求で要求されている自装置のアドレス情報を含む、前記第1の通信装置のIPアドレス情報を前記第2パケットの第2ヘッダの宛先のIPアドレス情報としてカプセル化した、ARP応答による第2パケットを作成して送信させる第4の処理部を有すること、を特徴とする通信装置。
【請求項3】
請求項1記載の通信装置において、
前記送信機能の第1パケット作成部、第1の処理部、第2パケット作成部、第2の処理部、及び前記受信機能の第3の処理部を構成する要素として、
旧通信ミドルウェアに相当する第1通信ミドルウェアを実行する第1通信ミドルウェア実行部と、
新通信ミドルウェアに相当する第2通信ミドルウェアを実行する第2通信ミドルウェア実行部と、
前記第1通信ミドルウェア上で動作する通信アプリケーションを実行し前記対象のデータを処理する通信アプリケーション実行部と、
前記第1及び第2通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、
前記ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、
前記ネットワークの代わりに前記プロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、
前記通信インタフェース部、仮想通信インタフェース部、及び第2通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有し、
IPアドレス及びプロトコルを含む通信情報と、前記第1通信ミドルウェアの通信情報と第2通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、
前記仮想通信インタフェース部のみに対して前記IPアドレスを割り当て、
前記カプセル化処理部は、前記ヘッダ書き替え部を有し、前記ヘッダ書き替え部は、前記受信時に、前記第2通信ミドルウェア実行部の第2通信ミドルウェアを通じて受け取った前記第2パケットにおける前記第1パケットの部分の第1ヘッダの宛先アドレス情報を、第1の通信装置のアドレス情報によって書き替えることにより、当該第1パケットの対象の第1のデータを自装置で受領させる処理を行うこと、を特徴とする通信装置。
【請求項4】
請求項2記載の通信装置において、
前記送信機能の第1パケット作成部、第1の処理部、第2パケット作成部、第2の処理部、前記受信機能の第3の処理部、及び第4の処理部を構成する要素として、
旧通信ミドルウェアに相当する第1通信ミドルウェアを実行する第1通信ミドルウェア実行部と、
新通信ミドルウェアに相当する第2通信ミドルウェアを実行する第2通信ミドルウェア実行部と、
前記第1通信ミドルウェア上で動作する通信アプリケーションを実行し前記対象のデータを処理する通信アプリケーション実行部と、
前記第1及び第2通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、
前記ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、
前記ネットワークの代わりに前記プロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、
前記通信インタフェース部、仮想通信インタフェース部、及び第2通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有し、
IPアドレス及びプロトコルを含む通信情報と、前記第1通信ミドルウェアの通信情報と第2通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、
前記仮想通信インタフェース部のみに対して前記IPアドレスを割り当て、
前記カプセル化処理部は、前記送信機能として、前記ルータ跨ぎ判定部と、前記パケット保持部と、前記宛先変更部と、を有し、前記受信機能として、前記第4の処理部を有すること、を特徴とする通信装置。
【請求項5】
請求項3記載の通信装置において、
前記送信の際、前記通信アプリケーションからの前記対象の第1のデータをもとに、前記第1通信ミドルウェア実行部、及び前記プロトコル処理部の処理を通じて、前記第1パケットとして作成し、前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットについて、前記テーブル情報に基づき、使用するプロトコル及び経由する通信ミドルウェアに応じた、カプセル化の要否を判定し、上記判定で要の場合は、前記カプセル化処理部の指示に従い、前記第2通信ミドルウェア実行部、及びプロトコル処理部の処理を通じて、前記第1パケットから第2パケットを作成し、当該第2パケットを前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、上記判定で不要の場合は、当該パケットを、前記通信インタフェース部を通じてRAW送信させ、
前記受信の際、前記通信インタフェース部を通じて受信した前記第2パケットを、前記カプセル化処理部、前記仮想通信インタフェース部、プロトコル処理部、及び第2通信ミドルウェア実行部の処理を通じて、当該第2パケットから第1パケットを取り出して前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取った第1パケットをもとに、前記仮想通信インタフェース部、プロトコル処理部、及び第1通信ミドルウェア実行部の処理を通じて、前記対象の第1のデータを前記通信アプリケーションへ渡すこと、を特徴とする通信装置。
【請求項6】
請求項5記載の通信装置において、
前記送信の際、前記通信アプリケーションからの前記対象の第1のデータをもとに、前記第1通信ミドルウェア実行部、及び前記プロトコル処理部の処理を通じて、前記第1パケットとして作成し、前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットについて、前記テーブル情報に基づき、使用するプロトコル及び経由する通信ミドルウェアに応じた、カプセル化の要否を判定し、上記判定で要の場合は、前記カプセル化処理部の指示に従い、前記第2通信ミドルウェア実行部、及びプロトコル処理部の処理を通じて、前記第1パケットから第2パケットを作成し、当該第2パケットを前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、上記判定で不要の場合は、当該パケットを、前記通信インタフェース部を通じてRAW送信させ、
前記受信の際、前記通信インタフェース部を通じて受信した前記第2パケットを、前記カプセル化処理部、前記仮想通信インタフェース部、プロトコル処理部、及び第2通信ミドルウェア実行部の処理を通じて、当該第2パケットから前記第1パケットを取り出して前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットをもとに、前記仮想通信インタフェース部、プロトコル処理部、及び第1通信ミドルウェア実行部の処理を通じて、前記対象の第1のデータを前記通信アプリケーションへ渡すこと、を特徴とする通信装置。
【請求項7】
請求項3記載の通信装置において、
前記受信の際に前記ヘッダ書き替え部により書き替える宛先アドレス情報はMACアドレス情報であること、を特徴とする通信装置。
【請求項8】
請求項4記載の通信装置において、
前記ARPでやりとりする宛先アドレス情報はMACアドレス情報であること、を特徴とする通信装置。
【請求項9】
請求項3または4に記載の通信装置において、
前記テーブル情報として、
パケットの種別、送信先の通信装置のIPアドレス、宛先の通信ミドルウェアを示すポート番号、及び、使用するプロトコルまたはRAW送信を示す情報、を格納する第1のテーブルと、
前記通信装置における旧通信ミドルウェアである第1通信ミドルウェアの通信情報とそれに対応付けられる新通信ミドルウェアである第2通信ミドルウェアの通信情報との対応関係を示す情報として、IPアドレス及びポート番号を含む情報を格納する第2のテーブルと、を有すること、を特徴とする通信装置。
【請求項10】
請求項3または4に記載の通信装置において、
前記カプセル化処理部は、前記テーブル情報に基づき、前記第1パケット及び第2パケットの作成の際、送信先の通信装置のIPアドレスと、宛先の通信ミドルウェアを示すポート番号とを含む情報を指示すること、を特徴とする通信装置。
【請求項11】
請求項3または4に記載の通信装置において、
前記送信の場合で、送信側の自装置である第1の通信装置は前記第1通信ミドルウェア及び第2通信ミドルウェアを有する新装置であり、受信側の他装置である第2の通信装置は第1通信ミドルウェアを有し第2通信ミドルウェアを有さない旧装置である場合において、
前記第1の通信装置は、前記通信アプリケーションからの前記対象の第1のデータを、前記第1通信ミドルウェア実行部、前記プロトコル処理部、前記仮想通信インタフェース部、前記カプセル化処理部、及び前記通信インタフェース部の処理を通じて、前記第1パケットとしてネットワークへ送信し、
前記第2の通信装置は、前記ネットワークから受信した前記第1パケットを、通信インタフェース部、プロトコル処理部、第1通信ミドルウェア実行部の処理を通じて、通信アプリケーション実行部へ前記対象の第1のデータとして取得させ、
前記受信の場合で、送信側の他装置である第2の通信装置は第1通信ミドルウェアを有し第2通信ミドルウェアを有さない旧装置であり、受信側の自装置である第1の通信装置は前記第1通信ミドルウェア及び第2通信ミドルウェアを有する新装置である場合において、
前記第2の通信装置は、前記通信アプリケーションからの前記対象の第2のデータを、第1通信ミドルウェア実行部、プロトコル処理部、及び通信インタフェース部の処理を通じて、前記第1パケットとしてネットワークへ送信し、
前記第1の通信装置は、前記ネットワークから受信した前記第1パケットを、前記通信インタフェース部、前記カプセル化処理部、前記仮想通信インタフェース部、前記プロトコル処理部、前記第1通信ミドルウェア実行部の処理を通じて、前記通信アプリケーション実行部へ前記対象の第2のデータとして取得させること、を特徴とする通信装置。
【請求項12】
請求項4記載の通信装置において、
前記ARPを用いて通信装置間でやりとりした前記ARP応答の情報を記録しておく手段と、前記ARP要求による第2パケットを送信する前に、上記ARP応答の情報を参照して、前記送信対象パケットの宛先の通信装置からの過去のARP応答の情報が存在する場合は、当該送信対象のパケットの宛先のアドレス情報を当該過去のARP応答のアドレス情報を用いて書き換える手段とを有し、上記構成によりARPを用いた通信の繰り返しを省略すること、を特徴とする通信装置。
【請求項1】
通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置であって、
前記通信装置は、
送信側の自装置である第1の通信装置から受信側の他装置である第2の通信装置へ対象の第1のデータをパケットとして送信する場合の送信機能として、
前記対象の第1のデータに、前記第2の通信装置を宛先として指定するアドレス情報を含む第1ヘッダを付けて、第1パケットを作成する処理を行う第1パケット作成部と、
前記第1パケットを用いて、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第1の処理を実行する第1の処理部と、
前記第1パケットに、前記第2の通信装置を宛先として指定するアドレス情報を含む第2ヘッダを付けて、カプセル化した第2パケットを作成する処理を行う第2パケット作成部と、
前記第2パケットを用いて、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第2の処理を実行し、当該第2パケットをネットワークへ送信する第2の処理部と、を有し、
送信側の他装置である第2の通信装置から受信側の自装置である第1の通信装置へ対象の第2のデータをパケットとして受信する場合の受信機能として、
前記ネットワークから受信した前記第2パケットに対し、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第3の処理を実行し、前記第2ヘッダを外してカプセル化解除により前記第1パケットを取り出し、前記第1パケットから前記第1ヘッダを外して前記対象の第1のデータを取り出す処理を行う第3の処理部と、
前記第1の通信装置の通信ミドルウェアを通じて受け取った前記第2パケットにおける前記第1パケットの部分の第1ヘッダの宛先アドレス情報を、当該受信側の自装置である第1の通信装置のアドレス情報によって書き替えることにより、当該第1パケットを自装置で受領させる処理を行うヘッダ書き替え部と、を有すること、を特徴とする通信装置。
【請求項2】
通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置であって、
前記通信装置は、
送信側の自装置である第1の通信装置から受信側の他装置である第2の通信装置へ対象の第1のデータをパケットとして送信する場合の送信機能として、
前記対象の第1のデータに、前記第2の通信装置を宛先として指定するアドレス情報を含む第1ヘッダを付けて、第1パケットを作成する処理を行う第1パケット作成部と、
前記第1パケットを用いて、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行する第1の処理部と、
前記第1パケットに、前記第2の通信装置を宛先として指定するアドレス情報を含む第2ヘッダを付けて、カプセル化した第2パケットを作成する処理を行う第2パケット作成部と、
前記第2パケットを用いて、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行し、当該第2パケットをネットワークへ送信する第2の処理部と、を有し、
送信側の他装置である第2の通信装置から受信側の自装置である第1の通信装置へ対象の第2のデータをパケットとして受信する場合の受信機能として、
前記ネットワークから受信した前記第2パケットに対し、前記第1の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第3の処理を実行し、前記第2ヘッダを外してカプセル化解除により前記第1パケットを取り出し、前記第1パケットから前記第1ヘッダを外して前記対象の第1のデータを取り出す処理を行う第3の処理部と、を有し、
前記送信機能として、
送信対象のパケットが前記ネットワークのルータを経由して通信するか否かを通信情報の比較により判定するルータ跨ぎ判定部と、
前記受信側の第2の通信装置の宛先アドレス情報を取得するために、ARPを用いて、前記送信対象のパケットのヘッダの宛先の第2の通信装置のIPアドレス情報を前記第2パケットの第2ヘッダの宛先のIPアドレス情報としてカプセル化した、ARP要求による第2パケットを作成して送信させ、当該ARP要求に対するARP応答を受信するまで、当該送信対象のパケットを一時的に保持しておくパケット保持部と、
前記保持している送信対象のパケットのヘッダの宛先の第2の通信装置のアドレス情報を、前記第2の通信装置から受信した前記ARP応答による第2パケットに含まれているアドレス情報によって書き替えて、当該書き替えたパケットを送信させる宛先変更部と、を有し、
前記受信機能として、前記ネットワークから受信したパケットが前記ARP要求による第2パケットである場合に、当該ARP要求で要求されている自装置のアドレス情報を含む、前記第1の通信装置のIPアドレス情報を前記第2パケットの第2ヘッダの宛先のIPアドレス情報としてカプセル化した、ARP応答による第2パケットを作成して送信させる第4の処理部を有すること、を特徴とする通信装置。
【請求項3】
請求項1記載の通信装置において、
前記送信機能の第1パケット作成部、第1の処理部、第2パケット作成部、第2の処理部、及び前記受信機能の第3の処理部を構成する要素として、
旧通信ミドルウェアに相当する第1通信ミドルウェアを実行する第1通信ミドルウェア実行部と、
新通信ミドルウェアに相当する第2通信ミドルウェアを実行する第2通信ミドルウェア実行部と、
前記第1通信ミドルウェア上で動作する通信アプリケーションを実行し前記対象のデータを処理する通信アプリケーション実行部と、
前記第1及び第2通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、
前記ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、
前記ネットワークの代わりに前記プロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、
前記通信インタフェース部、仮想通信インタフェース部、及び第2通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有し、
IPアドレス及びプロトコルを含む通信情報と、前記第1通信ミドルウェアの通信情報と第2通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、
前記仮想通信インタフェース部のみに対して前記IPアドレスを割り当て、
前記カプセル化処理部は、前記ヘッダ書き替え部を有し、前記ヘッダ書き替え部は、前記受信時に、前記第2通信ミドルウェア実行部の第2通信ミドルウェアを通じて受け取った前記第2パケットにおける前記第1パケットの部分の第1ヘッダの宛先アドレス情報を、第1の通信装置のアドレス情報によって書き替えることにより、当該第1パケットの対象の第1のデータを自装置で受領させる処理を行うこと、を特徴とする通信装置。
【請求項4】
請求項2記載の通信装置において、
前記送信機能の第1パケット作成部、第1の処理部、第2パケット作成部、第2の処理部、前記受信機能の第3の処理部、及び第4の処理部を構成する要素として、
旧通信ミドルウェアに相当する第1通信ミドルウェアを実行する第1通信ミドルウェア実行部と、
新通信ミドルウェアに相当する第2通信ミドルウェアを実行する第2通信ミドルウェア実行部と、
前記第1通信ミドルウェア上で動作する通信アプリケーションを実行し前記対象のデータを処理する通信アプリケーション実行部と、
前記第1及び第2通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、
前記ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、
前記ネットワークの代わりに前記プロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、
前記通信インタフェース部、仮想通信インタフェース部、及び第2通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有し、
IPアドレス及びプロトコルを含む通信情報と、前記第1通信ミドルウェアの通信情報と第2通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、
前記仮想通信インタフェース部のみに対して前記IPアドレスを割り当て、
前記カプセル化処理部は、前記送信機能として、前記ルータ跨ぎ判定部と、前記パケット保持部と、前記宛先変更部と、を有し、前記受信機能として、前記第4の処理部を有すること、を特徴とする通信装置。
【請求項5】
請求項3記載の通信装置において、
前記送信の際、前記通信アプリケーションからの前記対象の第1のデータをもとに、前記第1通信ミドルウェア実行部、及び前記プロトコル処理部の処理を通じて、前記第1パケットとして作成し、前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットについて、前記テーブル情報に基づき、使用するプロトコル及び経由する通信ミドルウェアに応じた、カプセル化の要否を判定し、上記判定で要の場合は、前記カプセル化処理部の指示に従い、前記第2通信ミドルウェア実行部、及びプロトコル処理部の処理を通じて、前記第1パケットから第2パケットを作成し、当該第2パケットを前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、上記判定で不要の場合は、当該パケットを、前記通信インタフェース部を通じてRAW送信させ、
前記受信の際、前記通信インタフェース部を通じて受信した前記第2パケットを、前記カプセル化処理部、前記仮想通信インタフェース部、プロトコル処理部、及び第2通信ミドルウェア実行部の処理を通じて、当該第2パケットから第1パケットを取り出して前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取った第1パケットをもとに、前記仮想通信インタフェース部、プロトコル処理部、及び第1通信ミドルウェア実行部の処理を通じて、前記対象の第1のデータを前記通信アプリケーションへ渡すこと、を特徴とする通信装置。
【請求項6】
請求項5記載の通信装置において、
前記送信の際、前記通信アプリケーションからの前記対象の第1のデータをもとに、前記第1通信ミドルウェア実行部、及び前記プロトコル処理部の処理を通じて、前記第1パケットとして作成し、前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットについて、前記テーブル情報に基づき、使用するプロトコル及び経由する通信ミドルウェアに応じた、カプセル化の要否を判定し、上記判定で要の場合は、前記カプセル化処理部の指示に従い、前記第2通信ミドルウェア実行部、及びプロトコル処理部の処理を通じて、前記第1パケットから第2パケットを作成し、当該第2パケットを前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、上記判定で不要の場合は、当該パケットを、前記通信インタフェース部を通じてRAW送信させ、
前記受信の際、前記通信インタフェース部を通じて受信した前記第2パケットを、前記カプセル化処理部、前記仮想通信インタフェース部、プロトコル処理部、及び第2通信ミドルウェア実行部の処理を通じて、当該第2パケットから前記第1パケットを取り出して前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットをもとに、前記仮想通信インタフェース部、プロトコル処理部、及び第1通信ミドルウェア実行部の処理を通じて、前記対象の第1のデータを前記通信アプリケーションへ渡すこと、を特徴とする通信装置。
【請求項7】
請求項3記載の通信装置において、
前記受信の際に前記ヘッダ書き替え部により書き替える宛先アドレス情報はMACアドレス情報であること、を特徴とする通信装置。
【請求項8】
請求項4記載の通信装置において、
前記ARPでやりとりする宛先アドレス情報はMACアドレス情報であること、を特徴とする通信装置。
【請求項9】
請求項3または4に記載の通信装置において、
前記テーブル情報として、
パケットの種別、送信先の通信装置のIPアドレス、宛先の通信ミドルウェアを示すポート番号、及び、使用するプロトコルまたはRAW送信を示す情報、を格納する第1のテーブルと、
前記通信装置における旧通信ミドルウェアである第1通信ミドルウェアの通信情報とそれに対応付けられる新通信ミドルウェアである第2通信ミドルウェアの通信情報との対応関係を示す情報として、IPアドレス及びポート番号を含む情報を格納する第2のテーブルと、を有すること、を特徴とする通信装置。
【請求項10】
請求項3または4に記載の通信装置において、
前記カプセル化処理部は、前記テーブル情報に基づき、前記第1パケット及び第2パケットの作成の際、送信先の通信装置のIPアドレスと、宛先の通信ミドルウェアを示すポート番号とを含む情報を指示すること、を特徴とする通信装置。
【請求項11】
請求項3または4に記載の通信装置において、
前記送信の場合で、送信側の自装置である第1の通信装置は前記第1通信ミドルウェア及び第2通信ミドルウェアを有する新装置であり、受信側の他装置である第2の通信装置は第1通信ミドルウェアを有し第2通信ミドルウェアを有さない旧装置である場合において、
前記第1の通信装置は、前記通信アプリケーションからの前記対象の第1のデータを、前記第1通信ミドルウェア実行部、前記プロトコル処理部、前記仮想通信インタフェース部、前記カプセル化処理部、及び前記通信インタフェース部の処理を通じて、前記第1パケットとしてネットワークへ送信し、
前記第2の通信装置は、前記ネットワークから受信した前記第1パケットを、通信インタフェース部、プロトコル処理部、第1通信ミドルウェア実行部の処理を通じて、通信アプリケーション実行部へ前記対象の第1のデータとして取得させ、
前記受信の場合で、送信側の他装置である第2の通信装置は第1通信ミドルウェアを有し第2通信ミドルウェアを有さない旧装置であり、受信側の自装置である第1の通信装置は前記第1通信ミドルウェア及び第2通信ミドルウェアを有する新装置である場合において、
前記第2の通信装置は、前記通信アプリケーションからの前記対象の第2のデータを、第1通信ミドルウェア実行部、プロトコル処理部、及び通信インタフェース部の処理を通じて、前記第1パケットとしてネットワークへ送信し、
前記第1の通信装置は、前記ネットワークから受信した前記第1パケットを、前記通信インタフェース部、前記カプセル化処理部、前記仮想通信インタフェース部、前記プロトコル処理部、前記第1通信ミドルウェア実行部の処理を通じて、前記通信アプリケーション実行部へ前記対象の第2のデータとして取得させること、を特徴とする通信装置。
【請求項12】
請求項4記載の通信装置において、
前記ARPを用いて通信装置間でやりとりした前記ARP応答の情報を記録しておく手段と、前記ARP要求による第2パケットを送信する前に、上記ARP応答の情報を参照して、前記送信対象パケットの宛先の通信装置からの過去のARP応答の情報が存在する場合は、当該送信対象のパケットの宛先のアドレス情報を当該過去のARP応答のアドレス情報を用いて書き換える手段とを有し、上記構成によりARPを用いた通信の繰り返しを省略すること、を特徴とする通信装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2013−42370(P2013−42370A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−178028(P2011−178028)
【出願日】平成23年8月16日(2011.8.16)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願日】平成23年8月16日(2011.8.16)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]