(57)【要約】【課題】イーサネット（登録商標）の機能を改修することなく、ＮＤＮアーキテクチャを次世代インターネットの候補として本格的に普及させ得るプロトコル・モジュール及びデータ転送方法等を提供する。【解決手段】ＮＤＮ層２２とイーサネット（登録商標）１１等との間にサブ層２１を設け、サブ層２１にセグメンテーション／リアセンブリング処理を行わせる。ＮＤＮ層２２を構成するネットワークインタフェース（Faceモジュール）は隣接するＮＤＮノード間でのデータ転送を司りリンクにおけるＭＴＵも保持している。従って、Faceモジュールが最終的に（例えばイーサネット（登録商標）１１等への）データ送信命令を呼び出していると考えられる。このデータ送信命令の直前にセグメンテーション／リアセンブリング処理を行うのが適当であり、ＮＤＮのFaceモジュールを拡張することにより、本発明のデータ転送方法および中層のモジュールを実装する。【選択図】図１
2013038660.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰ／ＩＰモデルにおけるネットワークインタフェース層又はＯＳＩ参照モデルにおけるデータリンク層に相当する下層と、該下層の上に定義された中層と、該中層の上に定義されたネームド・データ・ネットワーキング（Ｎａｍｅｄ  Ｄａｔａ  Ｎｅｔｗｏｒｋｉｎｇ : ＮＤＮ）層であってネットワーク中に存在するノードが有するコンテンツに名前を付けて送受の制御を行うものとを備えた通信プロトコルを実装するプロトコル・スタックにおける該中層のモジュール（プログラム）であって、コンピュータを、
前記ＮＤＮ層から渡された入力バイト列のサイズが前記下層の最大転送サイズより大きい場合は、該入力バイト列を最大転送サイズ以下の複数のバイト列に分割し各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付して順に該下層へ渡すセグメンテーション手段、
前記下層から渡されたバイト列に含まれる制御データ中の後続情報により後続バイト列が有ると判断された場合は、制御データ中の順番情報に示される順番に該下層から渡されたバイト列から制御データを除くデータバイト列を記録して次のバイト列を待ち、後続情報により後続バイト列が無いと判断された場合は、記録されたデータバイト列に該下層から渡されたバイト列から制御データを除くデータバイト列を加えて一纏めにしたバイト列を前記ＮＤＮ層へ渡すリアセンブリング手段として機能させるための中層のモジュール。
【請求項２】
請求項１記載の中層のモジュールにおいて、
前記セグメンテーション手段は前記ＮＤＮ層から渡された入力バイト列のサイズが前記下層の最大転送サイズ以下の場合は、該入力バイト列に最初のバイト列であることを示す順番情報と後続バイト列は無しであることを示す後続情報とを含む制御データを付して該下層へ渡す手段をさらに備え、
前記リアセンブリング手段は前記下層から渡されたバイト列に含まれる制御データ中の順番情報により最初のバイト列であり後続情報により後続バイト列は無しであると判断された場合は、該下層から渡されたバイト列から制御データを除くデータバイト列を前記ＮＤＮ層へ渡す手段をさらに備えたことを特徴とする中層のモジュール。
【請求項３】
請求項１又は２記載の中層のモジュールにおいて、バイト列に付された前記制御データは後続バイト列の有無を示すビットと、前記下層へ渡すバイト列の総サイズを所定の値に揃わせる際のパディングバイト長を示すビットと、該バイト列の順番を示すビットとを含むことを特徴とする中層のモジュール。
【請求項４】
請求項１乃至３のいずれかに記載の中層のモジュールを記録したコンピュータ読取り可能な記録媒体。
【請求項５】
ＴＣＰ／ＩＰモデルにおけるネットワークインタフェース層又はＯＳＩ参照モデルにおけるデータリンク層に相当する下層と、該下層の上に定義された中層と、該中層の上に定義されたネームド・データ・ネットワーキング（Ｎａｍｅｄ  Ｄａｔａ  Ｎｅｔｗｏｒｋｉｎｇ : ＮＤＮ）層であってネットワーク中に存在するノードが有するコンテンツに名前を付けて送受の制御を行うものとを備えた通信プロトコルを実装するプロトコル・スタックにおける該中層のモジュール（プログラム）が実行するデータ転送方法であって、
前記ＮＤＮ層から渡された入力バイト列のサイズが前記下層の最大転送サイズより大きい場合は、該入力バイト列を最大転送サイズ以下の複数のバイト列に分割し各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付して順に該下層へ渡すセグメンテーションステップと、
前記下層から渡されたバイト列に含まれる制御データ中の後続情報により後続バイト列が有ると判断された場合は、制御データ中の順番情報に示される順番に該下層から渡されたバイト列から制御データを除くデータバイト列を記録して次のバイト列を待ち、後続情報により後続バイト列が無いと判断された場合は、記録されたデータバイト列に該下層から渡されたバイト列から制御データを除くデータバイト列を加えて一纏めにしたバイト列を前記ＮＤＮ層へ渡すリアセンブリングステップとを備えたことを特徴とするデータ転送方法。
【請求項６】
請求項５記載のデータ転送方法において、
前記セグメンテーションステップは前記ＮＤＮ層から渡された入力バイト列のサイズが前記下層の最大転送サイズ以下の場合は、該入力バイト列に最初のバイト列であることを示す順番情報と後続バイト列は無しであることを示す後続情報とを含む制御データを付して該下層へ渡すステップをさらに備え、
前記リアセンブリングステップは前記下層から渡されたバイト列に含まれる制御データ中の順番情報により最初のバイト列であり後続情報により後続バイト列は無しであると判断された場合は、該下層から渡されたバイト列から制御データを除くデータバイト列を前記ＮＤＮ層へ渡すステップをさらに備えたことを特徴とするデータ転送方法。
【請求項７】
請求項５又は６記載のデータ転送方法において、バイト列に付された前記制御データは後続バイト列の有無を示すビットと、前記下層へ渡すバイト列の総サイズを所定の値に揃わせる際のパディングバイト長を示すビットと、該バイト列の順番を示すビットとを含むことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＣＰ／ＩＰモデルにおけるネットワークインタフェース層等の上に定義された中層と、当該中層の上に定義されたネームド・データ・ネットワーキング（Ｎａｍｅｄ  Ｄａｔａ  Ｎｅｔｗｏｒｋｉｎｇ : ＮＤＮ）層とを備えた通信プロトコルを実装するプロトコル・スタックにおける当該中層のモジュール（プログラム）等に関する。
【背景技術】
【０００２】
従来より、国際標準化機構（ＩＳＯ）により制定された開放型システム間相互接続（Open Systems Interconnection : ＯＳＩ）参照モデルが知られている。図８（Ａ）はＯＳＩ参照モデルに基づく７階層（レイヤ）を示す。図８（Ａ）において、符号１はネットワーク間の物理的な接続（コネクタのピン数、形状）を規定する第１層の物理層、２は直接的に接続されている通信機器間でのデータ伝送を担当する第２層のデータリンク層、３はネットワークの経路選択・中継作業を担当する第３層のネットワーク層、４は再送、輻輳等のようなネットワークの端から端（エンド・ツー・エンド）の通信監理を行う第４層のトランスポート層、５は通信プログラム間における通信の開始から終了までの手順を規定する第５層のセッション層、６はデータの表現方法等を規定する第６層のプレゼンテーション層、７はファイルの転送等の具体的な通信サービスを提供する第７層のアプリケーション層である。
【０００３】
上述したＯＳＩ参照モデルは実装等の理由によりあまり普及はしなかった。一方、アメリカ国防総省の下で開発されたＡＲＰＡｎｅｔ（Advanced Research Projects Agency Network）から発展したＴＣＰ／ＩＰ（Transmission Control Protocol/Internet  Protocol）はインターネットの普及に伴い急速に発展した。図８（Ｂ）はＴＣＰ／ＩＰの階層モデルを示す。図８（Ｂ）に示されるＴＣＰ／ＩＰの階層と図８（Ａ）に示されるＯＳＩ参照モデルの階層とは横方向に対応付けられているが、両者のどの階層をどの階層に対応付けるかは人により異なる点があり、図８（Ａ）、（Ｂ）の対応付けは一例である（例えば非特許文献１参照）。図８（Ｂ）で、符号１０は物理層１に対応する第０層のハードウェア層であり、実装例としてはＵＴＰ（Unshield Twisted Pair）ケーブル等がある。符号１１はデータリンク層２に対応する第１層のネットワークインタフェース層であり、実装例としてはイーサネット（登録商標）、ＰＰＰ（Point to Point Protocol）等がある（以下、「イーサネット（登録商標）１１」と言うことがある。）。符号１２はネットワーク層３に対応する第２層のインターネットであり、実装例としてはＩＰ等がある（以下、「ＩＰ１２」と言うことがある。）。符号１３はトランスポート層４に対応する第３層のトランスポートであり、実装例としてはＴＣＰ等がある（以下、「ＴＣＰ１３」と言うことがある。）。符号１４はセッション層５、プレゼンテーション層６およびアプリケーション層７に対応する第４層のアプリケーションであり、実装例としてはＨＴＴＰ（Hyper Text Transfer Protocol）等がある。ＴＣＰ／ＩＰではノードにＩＰアドレスが付けられており、ＩＰ１２においてＩＰアドレスを見てパケットを転送している。
【０００４】
図８（Ａ）に示されるＯＳＩ参照モデルに基づく７階層の場合および図８（Ｂ）に示されるＴＣＰ／ＩＰの階層の場合のいずれも、各階層で取り扱いやすいデータのサイズは異なっている。例えば、イーサネット（登録商標）１１で取り扱える最大転送サイズ（Maximum Transmission Unit : ＭＴＵ）は、１ＫＢまたは１．５ＫＢである。このため上層のＩＰ１２にはデータを１ＫＢまたは１．５ＫＢに区切って下層のイーサネット（登録商標）１１へ渡すセグメンテーションの機能がある。逆に、ＩＰ１２は下層のイーサネット（登録商標）１１から受け取った複数のパケットを組み上げて上層のＴＣＰ１３へ渡すリアセンブリング機能も有している。イーサネット（登録商標）１１はセグメンテーション／リアセンブリング機能を有していない。
【０００５】
次に、ネームド・データ・ネットワーキング（Ｎａｍｅｄ  Ｄａｔａ  Ｎｅｔｗｏｒｋｉｎｇ : ＮＤＮ）について説明する。ＮＤＮは次世代インターネットの候補と言われており、ネットワーク中に存在するノードが有するコンテンツ（content）に名前（name）を付けて送受の制御を行うというモデルである。図８（Ｂ）で言えばＴＣＰ１３およびＩＰ１２をＮＤＮ層で置き換えるというモデルである。ＴＣＰ／ＩＰではノードにＩＰアドレスを付けておきＩＰ１２においてＩＰアドレスを見てパケットを転送していくが、ＮＤＮではネットワーク中のノードに存在するコンテンツに名前を付けておき、ＮＤＮ層において名前を見てコンテンツを転送していく。
【０００６】
図９はＮＤＮアーキテクチャにおけＮＤＮパケットを示す（図９および後で説明する図１０の出典は非特許文献２参照。以下、非特許文献２を参照して説明する。）。ＮＤＮにおける通信は受取り端、即ちデータ消費者（data consumer）により駆動される。図９（Ａ）はインタレスト（Interest）パケット１００を示す。インタレストパケット１００はデータを受取るためにデータ消費者により送信されるパケットであり、所望のデータを識別する名前を運ぶ。図９（Ａ）に示されるように、インタレストパケット１００のパラメータはデータ消費者が受取りを望むデータを識別するコンテンツ名（Content Name）１０１および発行者を識別するセレクタ（Selector）１０２である。インタレストパケット１００が要求されたデータを有するノードに到着すると、データ（Data）パケットが送り返される。図９（Ｂ）はデータパケット１５０を示す。図９（Ｂ）に示されるように、データパケット１５０のパラメータはコンテンツ名１０１、データ作成者（producer）の鍵による署名１５１およびそれに関する情報１５２、データ１５３である。
【０００７】
図１０はＮＤＮノード２００における転送プロセスを示す。図１０で、符号２１０、２１１および２１２はＮＤＮノード２００の外部通信環境の例であり、２０４は外部通信環境２１０に対するインタフェース（Face 0）、２０５は外部通信環境２１１に対するインタフェース（Face 1）、２０６は外部通信環境２１２に対するインタフェース（Face 2）である。図１０に示されるように、インデックス（Index）２０７のｐｔｒ欄にはコンテンツ・ストア（Content Store）２０１へのポインタが記録され、対応するｔｙｐｅ欄には「Ｃ」が記録されている。同様に、インデックス２０７の他のｐｔｒ欄にはペンディング・インタレスト・テーブル（Pending Interest Table : ＰＩＴ）２０２へのポインタが記録され、対応するｔｙｐｅ欄には「Ｐ」が記録されている。同様に、インデックス２０７の別のｐｔｒ欄には転送情報ベース（Forwarding Information Base : ＦＩＢ）２０３へのポインタが記録され、対応するｔｙｐｅ欄には「Ｆ」が記録されている。例えば、データ消費者が/parc/videos/WidgetA.mpgを要求するインタレストパケット１００を送信したものとする。ＮＤＮノード２００のルータはインタレストパケット１００を受取ったインタフェース２０４等（Face 0なら「0」、Face 1なら「1」）をＦＩＢ２０３のFace List欄に記録しておき、転送はＦＩＢ２０３中の名前（Prefix）を参照することにより行う。データパケット１５０はインタレストパケット１００により作られたパスの逆をたどることによりデータ消費者へ戻される。インタレストパケット１００もデータパケット１５０もＩＰアドレスのようなアドレスは運ばない。インタレストパケット１００はインタレストパケット１００により運ばれる名前に基づきデータ作成者へ向かってルーティングされる。データパケット１５０はインタレストパケット１００により各ルータホップで設定された情報に基づき戻される。つまり、データパケット１５０はインタレストパケット１００が通ってきたパスと同じパスを逆方向にたどって戻される。一つのデータパケット１５０は（パス中の）各ホップを渡りながら一つのインタレストパケット１００を満たしていく（ホップバイホップ（hop-by-hop）の原理）。
【０００８】
ＮＤＮノード２００のルータは、インタレストパケット１００およびデータパケット１５０をある一定期間ＰＩＴ２０２に保持する。同一のデータに対する複数のインタレストパケット１００をダウンストリームから受け取った場合、最初のインタレストパケット１００のみをデータ源へ向かってアップストリームへ送る。ルータはこのインタレストパケット１００をＰＩＴ２０２に記録しておく。ＰＩＴ２０２はインタレスパケット１００が有するコンテンツ名をｐｒｅｆｉｘ欄に、上記複数のインタレストパケット１００を受取ったインタフェースの集合をRequesting Face(s)欄に記録しておく。データパケット１５０が到着した場合、ルータは対応するＰＩＴ２０２のエントリを見つけ、当該データパケット１５０を当該エントリに記録されたすべてのインタフェースへ転送する。その後、ルータは対応するＰＩＴ２０２のエントリを削除して、データパケット１５０をコンテンツ・ストア２０１にキャッシュしておく。コンテンツ・ストア２０１のName欄にはデータパケット１５０が有するコンテンツ名を記録し、Data欄にはデータ１５３の内容を記録しておく。コンテンツ・ストア２０１は基本的にルータのバッファ記憶を用いる。コンテンツ・ストア２０１を用いることにより、ＮＤＮは例えばYoutube（登録商標）のような多くのユーザが同じデータを同時に要求する場合におけるコンテンツ配信を自動的にサポートすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したように、ＮＤＮアーキテクチャは図８（Ｂ）のＴＣＰ１３およびＩＰ１２をＮＤＮ層で置き換えるというモデルである。しかし、いきなりＮＤＮをＴＣＰ１３およびＩＰ１２と置き換えることは困難であるため、現在のところＮＤＮはＴＣＰ１３およびＩＰ１２の上で動作している。図１１は現在のＮＤＮ実装を示す。図１１で図８と同じ符号を付した個所は同じ層を示すため説明は省略する。図１１に示されるように、現在のＮＤＮ層２２はＴＣＰ１３、ＩＰ１２を擬似的に第３層または第２層として利用し、ＴＣＰ１３またはＩＰ１２のセグメンテーション／リアセンブリング機能を利用してセグメンテーション／リアセンブリング処理を行っている。つまり、現在のＮＤＮ層はＩＰ１２等が有するセグメンテーション機能およびリアセンブリング機能を有していない。
【００１０】
上述したように、イーサネット（登録商標）１１にはＭＴＵという制限があるが、自身にはセグメンテーション／リアセンブリング機能が備わっていなかった。しかし、イーサネット（登録商標）１１は世界的に広く普及しているため、イーサネット（登録商標）１１の機能を改修することは得策ではないという問題があった。上述したように、ＮＤＮアーキテクチャは次世代インターネットの候補であり、本格的に普及させるためにはイーサネット（登録商標）１１上に直接ＮＤＮ層を実装する必要がある。しかし、現在のＮＤＮ層はＩＰ１２等が有するセグメンテーション機能およびリアセンブリング機能を有していないという問題があった。そこで、本発明の目的は上記問題を解決するためになされたものであり、イーサネット（登録商標）１１の機能を改修することなく、ＮＤＮアーキテクチャを次世代インターネットの候補として本格的に普及させることを可能とするプロトコル・モジュールおよびデータ転送方法等を提供することにある。
【課題を解決するための手段】
【００１１】
この発明の中層のモジュールは、ＴＣＰ／ＩＰモデルにおけるネットワークインタフェース層又はＯＳＩ参照モデルにおけるデータリンク層に相当する下層と、該下層の上に定義された中層と、該中層の上に定義されたネームド・データ・ネットワーキング（Ｎａｍｅｄ  Ｄａｔａ  Ｎｅｔｗｏｒｋｉｎｇ : ＮＤＮ）層であってネットワーク中に存在するノードが有するコンテンツに名前を付けて送受の制御を行うものとを備えた通信プロトコルを実装するプロトコル・スタックにおける該中層のモジュール（プログラム）であって、コンピュータを、前記ＮＤＮ層から渡された入力バイト列のサイズが前記下層の最大転送サイズより大きい場合は、該入力バイト列を最大転送サイズ以下の複数のバイト列に分割し各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付して順に該下層へ渡すセグメンテーション手段、前記下層から渡されたバイト列に含まれる制御データ中の後続情報により後続バイト列が有ると判断された場合は、制御データ中の順番情報に示される順番に該下層から渡されたバイト列から制御データを除くデータバイト列を記録して次のバイト列を待ち、後続情報により後続バイト列が無いと判断された場合は、記録されたデータバイト列に該下層から渡されたバイト列から制御データを除くデータバイト列を加えて一纏めにしたバイト列を前記ＮＤＮ層へ渡すリアセンブリング手段として機能させるための中層のモジュールである。
【００１２】
ここで、この発明の中層のモジュールにおいて、前記セグメンテーション手段は前記ＮＤＮ層から渡された入力バイト列のサイズが前記下層の最大転送サイズ以下の場合は、該入力バイト列に最初のバイト列であることを示す順番情報と後続バイト列は無しであることを示す後続情報とを含む制御データを付して該下層へ渡す手段をさらに備え、前記リアセンブリング手段は前記下層から渡されたバイト列に含まれる制御データ中の順番情報により最初のバイト列であり後続情報により後続バイト列は無しであると判断された場合は、該下層から渡されたバイト列から制御データを除くデータバイト列を前記ＮＤＮ層へ渡す手段をさらに備えることができる。
【００１３】
ここで、この発明の中層のモジュールにおいて、バイト列に付された前記制御データは後続バイト列の有無を示すビットと、前記下層へ渡すバイト列の総サイズを所定の値に揃わせる際のパディングバイト長を示すビットと、該バイト列の順番を示すビットとを含むことができる。
【００１４】
この発明の記録媒体は、本発明のいずれかの中層のモジュールを記録したコンピュータ読取り可能な記録媒体である。
【００１５】
この発明のデータ転送方法は、ＴＣＰ／ＩＰモデルにおけるネットワークインタフェース層又はＯＳＩ参照モデルにおけるデータリンク層に相当する下層と、該下層の上に定義された中層と、該中層の上に定義されたネームド・データ・ネットワーキング（Ｎａｍｅｄ  Ｄａｔａ  Ｎｅｔｗｏｒｋｉｎｇ : ＮＤＮ）層であってネットワーク中に存在するノードが有するコンテンツに名前を付けて送受の制御を行うものとを備えた通信プロトコルを実装するプロトコル・スタックにおける該中層のモジュール（プログラム）が実行するデータ転送方法であって、前記ＮＤＮ層から渡された入力バイト列のサイズが前記下層の最大転送サイズより大きい場合は、該入力バイト列を最大転送サイズ以下の複数のバイト列に分割し各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付して順に該下層へ渡すセグメンテーションステップと、前記下層から渡されたバイト列に含まれる制御データ中の後続情報により後続バイト列が有ると判断された場合は、制御データ中の順番情報に示される順番に該下層から渡されたバイト列から制御データを除くデータバイト列を記録して次のバイト列を待ち、後続情報により後続バイト列が無いと判断された場合は、記録されたデータバイト列に該下層から渡されたバイト列から制御データを除くデータバイト列を加えて一纏めにしたバイト列を前記ＮＤＮ層へ渡すリアセンブリングステップとを備えたことを特徴とする。
【００１６】
ここで、この発明のデータ転送方法において、前記セグメンテーションステップは前記ＮＤＮ層から渡された入力バイト列のサイズが前記下層の最大転送サイズ以下の場合は、該入力バイト列に最初のバイト列であることを示す順番情報と後続バイト列は無しであることを示す後続情報とを含む制御データを付して該下層へ渡すステップをさらに備え、前記リアセンブリングステップは前記下層から渡されたバイト列に含まれる制御データ中の順番情報により最初のバイト列であり後続情報により後続バイト列は無しであると判断された場合は、該下層から渡されたバイト列から制御データを除くデータバイト列を前記ＮＤＮ層へ渡すステップをさらに備えることができる。
【００１７】
ここで、この発明のデータ転送方法において、バイト列に付された前記制御データは後続バイト列の有無を示すビットと、前記下層へ渡すバイト列の総サイズを所定の値に揃わせる際のパディングバイト長を示すビットと、該バイト列の順番を示すビットとを含むことができる。
【発明の効果】
【００１８】
本発明の中層のモジュールおよびデータ転送方法等によれば、ＮＤＮ層とイーサネット（登録商標）との間にサブ層を設け、サブ層にセグメンテーション／リアセンブリング処理を行わせる。この結果、イーサネット（登録商標）の機能を改修することなく、ＮＤＮアーキテクチャを次世代インターネットの候補として本格的に普及させることを可能とするプロトコル・モジュールおよびデータ転送方法等を提供することができるという効果がある。加えて、上層のアプリケーションは下層のＭＴＵを意識することなく、最適な大きさのＮＤＮパケットを使用することができる。リンクの特質であるＭＴＵに合わせてデータ転送を行うことができるため、ＮＤＮにおけるホップバイホップの転送原理との親和性を高くすることができるという効果がある。
【図面の簡単な説明】
【００１９】
【図１】イーサネット（登録商標）１１上にＮＤＮ層を実装するための本発明のデータ転送方法の処理を説明するための図である。
【図２】制御データの構造を示す図である。
【図３】サブ層２１ｔがイーサネット（登録商標）１１ｔへ渡す一連のｎ個のバイト列３２−１〜３２−ｎを示す図である。
【図４】フレーム３４の構造を示す図である。
【図５】入力バイト列３０のサイズがイーサネット（登録商標）１１ｔのＭＴＵ以下の場合におけるバイ列３０を示す図である。
【図６】本発明のサブ層２１ｔおよび２１ｒのモジュール（プログラム）の動作環境および機能ブロックを示す図である。
【図７】本発明のデータ転送方法および中層のモジュールを実行するＮＤＮノード２０ｔ等のコンピュータ５０の内部回路８０を示すブロック図である。
【図８】ＯＳＩ参照モデルの階層およびＴＣＰ／ＩＰの階層を示す図である。
【図９】ＮＤＮアーキテクチャにおけるＮＤＮパケットを示す図である。
【図１０】ＮＤＮノード２００における転送プロセスを示す図である。
【図１１】現在のＮＤＮ実装を示す図である。
【発明を実施するための最良の形態】
【００２０】
以下、実施例について図面を参照して詳細に説明する。背景技術で説明した図７および１０に示されるＯＳＩ参照モデルおよびＴＣＰ／ＩＰモデル等の各層の符号を適宜用いる。
【実施例１】
【００２１】
本発明のデータ転送方法は、ＴＣＰ／ＩＰモデルにおけるネットワークインタフェース層１１またはＯＳＩ参照モデルにおけるデータリンク層２に相当するイーサネット（登録商標）１１（下層）と、イーサネット（登録商標）１１の上に定義されたサブ層（中層）と、サブ層の上に定義されたＮＤＮ層２２とを備えた通信プロトコルを実装するためのプロトコル・スタックにおいて、サブ層のモジュール（プログラム）が実行するデータ転送方法である。プロトコル・スタックとは上記のようなネットワーク・プロトコルを実装しているソフトウェアであり、ネットワーク・プロトコルが階層的に定義されているように、当該ソフトウェアも階層的構造をもって実装されているため、「スタック」という用語を用いている。最近のコンピュータはＯＳ自体がネットワーク機能を備えているため、プロトコル・スタックは通常カーネル内部に実装されている。本発明のデータ転送方法（中層のモジュール）もＮＤＮノード（ルータ、ＰＣ等のコンピュータ）のＯＳ内部に実装することができる。
【００２２】
図１は、イーサネット（登録商標）１１上にＮＤＮ層を実装するための本発明のデータ転送方法の処理を説明するための図である。図１ではＮＤＮアーキテクチャのパケットを送信する側のＮＤＮノードを２０ｔ、受信する側のＮＤＮノードを２０ｒのように符号（数字部分）に「ｔ」、「ｒ」を付すことにより区別している。各ＮＤＮノード２０ｔおよび２０ｒの層に付された符号も同様に「ｔ」と「ｒ」を付して区別している点を除いて、符号（数字部分）は図７および図１０と同じ意味であるため、説明は省略する。
【００２３】
図１を参照して、インタレストパケット１００およびデータパケット１５０等のＮＤＮパケット３０を送信する場合の処理について説明する。アプリケーション層１４ｔでは、例えばYoutube（登録商標）のようなサイトに対してデータ消費者であるユーザが動画の配信を要求したような状況を想定することができる。
【００２４】
１．ＮＤＮ層２２ｔがＮＤＮパケット３０を作成する。ＮＤＮ層２２ｔはＮＤＮパケット３０の構造（図９参照）を知っているため、各パラメータ１０１等をどの位置（先頭からのバイトオフセット）に配置すべきか分かっている。
【００２５】
２．ＮＤＮ層２２ｔがＮＤＮパケット３０をひとまとまりのバイト列としてサブ層（中層）に渡す（ステップＳ１０）。
【００２６】
３．サブ層２１ｔは、ＮＤＮ層から渡された入力バイト列３０のサイズがイーサネット（登録商標）１１ｔ（下層）のＭＴＵより大きい場合は、入力バイト列をＭＴＵ以下の大きさの複数のバイト列に分割し、各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付したバイト列３２として順にイーサネット（登録商標）１１へ渡す（ステップＳ２０。セグメンテーションステップ）。図２は、制御データの構造を示す。図２（Ａ）に示されるように、バイト列３２は上述したＭＴＵ以下の大きさに分割されたバイト列３２ｄ（転送データ）と制御データ３２ｃと後述するパディングバイト３２ｐとから構成されている。制御データ３２ｃは、図２（Ｂ）に示されるように後続バイト列の有無を示すｍｏｒｅビット（後続情報）と、イーサネット（登録商標）１１へ渡すバイト列３２の総サイズを所定の値（例えば３２ビットの倍数）に揃わせる際のパディングバイト３２ｐの長さを示すｐａｄビットと、上述したように分割されたバイト列３２の順番を示すｓｅｑビット（順番情報）とを含む。図２（Ｂ）に示されるように、各ビットのサイズはｍｏｒｅビットが１ビット（「１」の場合に後続バイト列が有り、「０」の場合後続バイト列が無しを示す。）、ｐａｄビットが２ビット、ｓｅｑビットが５ビットとし、制御データ３２ｃを１バイトとすることが好適である。昨今のデータ通信は、ハードウェア処理を容易にするため、データの大きさを３２ビット（４バイト）の倍数に揃えることが一般的である。本発明のデータ転送方法等では、１バイトの制御データ３２ｃを転送データ３２ｄの後ろに付加する際に、全体のバイト列３２の長さが４バイトの倍数になるように、意味のないデータ（パディングバイト３２ｐ）を間に埋め込む。これにより、転送データ３２ｄ＋パディングバイト３２ｐ＋制御データ３２ｃの全体の長さが４バイトの整数倍になるようにしている。元の転送データ３２ｄの大きさに応じて、パディングバイト３２ｐの長さは０バイトから３バイトになるため、ｐａｄビット長は２ビットでよい。より一般的にバイト列３２の長さをｎバイトの倍数に揃える場合、パディングバイト３２ｐの長さは０〜ｎ−１バイトになるため、ｐａｄビットの長さはｌｏｇ２ｎビットにすればよい。例えば、ｎ＝８バイトの場合、ｐａｄビットの長さは３ビットになる。この場合、制御データ３２ｃを１バイトに収めるためにはｓｅｑビット４ビットにするか、または制御データ３２ｃを２バイトにしてもよい。図３は、サブ層２１ｔがイーサネット（登録商標）１１ｔへ渡す分割された一連のｎ個のバイト列３２−１〜３２−ｎを示す。図３に示されるように、バイト列３２−１は最初のバイト列であるため、制御データ３２ｃ−１のｍｏｒｅビット＝１、ｓｅｑビット＝１となっており、バイト列３２−２は２番目のバイト列であるため、制御データ３２ｃ−２のｍｏｒｅビット＝１、ｓｅｑビット＝２となっている。バイト列３２−ｎは最後のバイト列であるため、制御データ３２ｃ−ｎのｍｏｒｅビット＝０、ｓｅｑビット＝ｎとなっている。
【００２７】
４．イーサネット（登録商標）１１ｔは、バイト列３２からフレーム３４を作成してハードウェア層１０ｔへ順に渡す（ステップＳ３０）。図４は、フレーム３４の構造を示す。図４に示されるようにフレーム３４自体は通常のＭＡＣフレームの構造であり、ＭＡＣフレームの受信時に同期をとるためのビットパターンであるプリアンブルと、送信相手を識別するための宛先アドレスと、送信元を識別するための送信元アドレスと、ユーザデータの長さを示すタイプと、ユーザデータであるバイト列３２（図示しないが、図２（Ａ）に示されるように制御データ３２ｃおよび必要なパディングバイト３２ｐを含む。）と、チェックサムの結果が記録されるフレーム・チェック・シーケンス（Frame Check Sequence : ＦＣＳ）とから構成されている。
【００２８】
５．ハードウェア層１０ｔがフレーム３４をＮＤＮノード２０ｒ側へ送信する（ステップＳ４０）。
【００２９】
６．ハードウェア層１０ｒがフレーム３４を受信して、イーサネット（登録商標）１１ｒへ渡す（ステップＳ５０）。
【００３０】
７．イーサネット（登録商標）１１ｒは受信したフレーム３４からユーザデータ３２を取出して、順次サブ層２１ｒへ渡す（ステップＳ６０）。
【００３１】
８．サブ層２１ｒは、イーサネット（登録商標）１１ｒから渡されたバイト列３２に含まれる制御データ３２ｃ中のｍｏｒｅビットにより後続バイト列が有ると判断された場合は、制御データ３２中のｓｅｑビットに示される順番にイーサネット（登録商標）１１ｒから渡されたバイト列３２から制御データ３２ｃを除くデータバイト列３２ｄ（ｐａｄビットが０でなければｐａｄビットにより示される長さのパディングバイト３２ｐも除いたデータバイト列３２ｄ。以下同様）をメモリに記録して次のバイト列を待つ。次のバイト列３２のｍｏｒｅビットにより後続バイト列が無いと判断された場合は、メモリに記録されたデータバイト列３２ｄに、最後にイーサネット（登録商標）１１ｒから渡されたバイト列３２から制御データ３２ｃ等を除くデータバイト列３２ｄを加えて一纏めにしたバイト列３０をＮＤＮ層２２ｒへ渡す（ステップＳ７０。リアセンブリングステップ）。このＮＤＮ層２２ｒへ渡すバイト列３０は一つのＮＤＮパケットになっている。サブ層２１ｒとしてはＮＤＮパケット３０を意識しているのではなく、単なるバイト列３０として取り扱っている。
【００３２】
９．ＮＤＮ層２２ｒは、ＮＤＮパケット３０の構造を解釈できるため、必要なパラメータ１０１等を取り出し、適宜処理する。
【００３３】
サブ層２１ｔは、上述した３の処理においてＮＤＮ層２２ｔから渡された入力バイト列３０のサイズがイーサネット（登録商標）１１ｔのＭＴＵ以下の場合、入力バイト列３０に最初のバイト列であることを示すｓｅｑビットと後続バイト列は無しであることを示すｍｏｒｅビット（＝「０」）とを含む制御データ３２ｃを付したバイト列３０としてイーサネット（登録商標）１１ｔへ渡す（パディングバイトについては上述した内容と同様であるため省略する。）。図５は、入力バイト列３０のサイズがイーサネット（登録商標）１１ｔのＭＴＵ以下の場合におけるバイト列３０を示す。図５に示されるように、制御データ３２ｃのｍｏｒｅビット＝０、ｓｅｑビット＝１となっており、転送データは入力バイト列３０となっている。その後の各層の処理は上述したものと同様である。サブ層２１ｒはイーサネット（登録商標）１１ｒから渡されたバイト列３２に含まれる制御データ３２ｃ中のｓｅｑビットにより最初のバイト列でありｍｏｒｅビットにより後続バイト列は無しであると判断した場合は、イーサネット（登録商標）１１ｒから渡されたバイト列３２から制御データ３２ｃ等を除くデータバイト列３０をＮＤＮ層２２ｒへ渡す。
【００３４】
ＮＤＮパケット３０がインタレストパケット１００の場合はサイズがイーサネット（登録商標）１１ｔのＭＴＵ以下であると考えられるため、サブ層１１ｔは図５に示されるようなバイト列３２として処理する。一方、ＮＤＮパケット３０がデータパケット１５０の場合はサイズが（例えば動画であれば１ＧＢ程度と）大きいため、サブ層１１ｔは図３に示されるようなバイト列３２−１〜３２−ｎとして処理する。
【００３５】
図６は、本発明のサブ層２１ｔおよび２１ｒのモジュール（プログラム）の動作環境および機能ブロックを示す。図６において、符号５０は発明のサブ層２１ｔおよび２１ｒのモジュールが実装されたコンピュータであり、７０は当該モジュールの機能ブロックを示す。図６に示されるセグメンテーション部７１（セグメンテーション手段）は、ＮＤＮ層２２ｔから渡された入力バイト列３０のサイズがイーサネット（登録商標）１１ｔのＭＴＵより大きい場合は、入力バイト列３０をＭＴＵ以下の複数のバイト列に分割し、各バイト列に順番を示すｓｅｑビットと後続バイト列の有無を示すｍｏｒｅビットとを含む制御データ３２ｃを付して順にイーサネット（登録商標）１１ｔへ渡す。セグメンテーション部７１はＮＤＮ層２２ｔから渡された入力バイト列３０のサイズイーサネット（登録商標）１１ｔのＭＴＵ以下の場合は、入力バイト列３０に最初のバイト列であることを示すｓｅｑビットと後続バイト列は無しであることを示すｍｏｒｅビットとを含む制御データ３２ｃを付してイーサネット（登録商標）１１ｔへ渡す。
【００３６】
図６に示されるリアセンブリング部７２（リアセンブリング手段）は、イーサネット（登録商標）１１ｒから渡されたバイト列３２に含まれる制御データ３２ｃ中のｍｏｒｅビットにより後続バイト列が有ると判断された場合は、制御データ３２ｃ中のｓｅｑビットに示される順番にイーサネット（登録商標）１１ｒから渡されたバイト列３２から制御データ３２ｃ等を除くデータバイト列３２ｄをコンピュータ５０のデータバイト列記録ＤＢ６０に記録して次のバイト列を待つ。リアセンブリング部７２は、ｍｏｒｅビットにより後続バイト列が無いと判断された場合は、データバイト列記録ＤＢ６０に記録されたデータバイト列に、イーサネット（登録商標）１１ｒから渡されたバイト列３２から制御データ３２ｃを除くデータバイト列３２ｄを加えて一纏めにしたバイト列３０をＮＤＮ層２２ｒへ渡す。リアセンブリング部７２は、イーサネット（登録商標）１１ｒから渡されたバイト列３２に含まれる制御データ３２ｃ中のｓｅｑビットにより最初のバイト列でありｍｏｒｅビットにより後続バイト列は無しであると判断された場合は、イーサネット（登録商標）１１ｒから渡されたバイト列３２から制御データ２等を除くデータバイト列３２ｄをＮＤＮ層２２ｒへ渡す。データバイト列記録ＤＢ６０は受信バッファであり、適切な大きさに設定することにより、連続的リアセンブリングをすることができる。
【００３７】
上述したＮＤＮ層２２ｔおよび２２ｒは背景技術で説明したネットワークインタフェース（Face 0等）、インデックス２０７、コンテンツ・ストア２０１、ＰＩＴ２０２およびＦＩＢ２０３から構成されている。非特許文献２によれば、ネットワークインタフェース（Faceモジュール）は隣接するＮＤＮノード間でのデータ転送を司り、リンク（例えばイーサネット（登録商標）１１ｔ等）におけるＭＴＵも保持している。従って、Faceモジュールが最終的に（例えばイーサネット（登録商標）１１等への）データ送信命令を呼び出しているものと考えられる。このデータ送信命令の直前にセグメンテーション／リアセンブリング処理を行うのが適当であるため、ＮＤＮのFaceモジュールを拡張することにより、本発明のデータ転送方法および中層のモジュールを容易に実装することができる。
【００３８】
以上のように、本発明の実施例１によれば、ＮＤＮ層２２とイーサネット（登録商標）１１等との間にサブ層２１を設け、サブ層２１にセグメンテーション／リアセンブリング処理を行わせる。この結果、イーサネット（登録商標）１１の機能を改修することなく、ＮＤＮアーキテクチャを次世代インターネットの候補として本格的に普及させることを可能とするプロトコル・モジュールおよびデータ転送方法等を提供することができる。加えて、上層のアプリケーションは下層のＭＴＵを意識することなく、最適な大きさのＮＤＮパケットを使用することができる。リンクの特質であるＭＴＵに合わせてデータ転送を行うことができるため、ＮＤＮにおけるホップバイホップの転送原理との親和性が高い。
【実施例２】
【００３９】
図７は、本発明のデータ転送方法および中層のモジュールを実行するＮＤＮノード２０ｔ等のコンピュータ５０の内部回路８０を示すブロック図である。図７に示されるように、ＣＰＵ８１、ＲＯＭ８２、ＲＡＭ８３、画像制御部８６、コントローラ８７、入力制御部９０および外部Ｉ／Ｆ部９２はバス９３に接続されている。図７において、上述した本発明の中層のモジュールは、ＲＯＭ８２、ディスク８８、ＤＶＤ若しくはＣＤ−ＲＯＭ８９等の記録媒体（脱着可能な記録媒体を含む）に記録されている。ディスク８８には、上述したデータバイト列記録ＤＢ６０を記録しておくことができる。本発明の中層のモジュールは、ＲＯＭ８２からバス９３を介し、あるいはディスク８８又はＤＶＤ若しくはＣＤ−ＲＯＭ８９等の記録媒体からコントローラ８７を経由してバス９３を介しＲＡＭ８３へロードされる。画像制御部８６は、種々の画面の画像データをＶＲＡＭ８５へ送出する。表示装置（ディスプレイ）８４はＶＲＡＭ８５から送出された上記データ等を表示する。ＶＲＡＭ８５は表示装置８４の一画面分のデータ容量に相当する容量を有している画像メモリである。入力操作部９１はコンピュータ５０に入力等を行うためのマウス、キーボード等の入力装置であり、入力制御部９０は入力操作部９１と接続され入力制御等を行う。外部Ｉ／Ｆ部９２はコンピュータ５０の外部にあるＮＤＮノード２０ｒ等と接続する際のインタフェース機能を有している。
【００４０】
上述したようにコンピュータ（ＣＰＵ）８１が本発明の中層のモジュール等を実行することにより、本発明の目的を達成することができる。中層のモジュールは上述のようにＤＶＤ若しくはＣＤ−ＲＯＭ８９等の記録媒体の形態でコンピュータ（ＣＰＵ）８１に供給することができ、中層のモジュールを記録したＤＶＤ若しくはＣＤ−ＲＯＭ８９等の記録媒体も同様に本発明を構成することになる。中層のモジュールを記録した記録媒体としては上述された記録媒体の他に、例えばメモリ・カード、メモリ・スティック、光ディスク等を用いることができる。
【産業上の利用可能性】
【００４１】
本発明の活用例として、イーサネット（登録商標）１１とＮＤＮ層２２との間のセグメンテーション／リアセンブリング処理に適用することができる。
【符号の説明】
【００４２】
１  物理層、  ２  データリンク層、  ３  ネットワーク層、  ４  トランスポート層、  ５  セッション層、  ６  プレゼンテーション層、  ７  アプリケーション層、  １０、１０ｔ、１０ｒ  ハードウェア、  １１、１１ｔ、１１ｒ  ネットワークインタフェース、  １２  インターネット、  １３  トランスポート、  １４  アプリケーション、  ２０ｔ、２０ｒ、２００  ＮＤＮノード、  ２１ｔ、２１ｒ  サブ層、  ２２、２２ｔ、２２ｒ  ＮＤＮ層、  ３０  ＮＤＮパケット、  ３２、３２−１、３２−２、３２−ｎ、３２ｄ、３２ｄ−１、３２ｄ−２、３２ｄ−ｎ  バイト列、  ３２ｃ、３２ｃ−１、３２ｃ−２、３２ｃ−ｎ  制御データ、  ３２ｐ  パディングバイト、  ３４  フレーム、  ５０  コンピュータ、  ６０  データバイト列記録ＤＢ、  ７０  機能ブロック、  ７１  セグメンテーション部、  ７２  リアセンブリング部、  ８１  ＣＰＵ、  ８２  ＲＯＭ、  ８３  ＲＡＭ、  ８４  表示装置、  ８５  ＶＲＡＭ、  ８６  画像制御部、  ８７  コントローラ、  ８８  ディスク、  ８９  ＣＤ−ＲＯＭ、  ８０  入力制御部、  ９１  入力操作部、  ９２  外部Ｉ／Ｆ部、  ９３  バス、  １００  インタレストパケット、  １０１、１０２、１５１、１５２  パラメータ、  １５０  データパケット、  １５３  データ、  ２０１  コンテンツ・ストア、  ２０２  ＰＩＴ、  ２０３  ＦＩＢ、  ２０４、２０５，  ２０６  Face、  ２０７  インデックス、  ２１０、２１１、２１２  外部通信環境。
【先行技術文献】
【非特許文献】
【００４３】
【非特許文献１】“ＴＣＰ／ＩＰとＯＳＩ参照モデル”、［online］、68user’s page、［平成２３年６月１７日検索］、インターネット、<URL:http://x68000.q-e-d.net/~68user/net/osi7.html>.
【非特許文献２】Lixia Zhang, Deborah Estrin, Jeffrey Burke, etal., ”Named Data Networking (NDN) Project”, NDN-0001, October 31, 2010, 、［online］、［平成２３年６月１７日検索］、インターネット、<URL:http://www.named-data.net/ndn-proj.pdf>．
【図１】
2013038660.tif 000003
【図２】
2013038660.tif 000004
【図３】
2013038660.tif 000005
【図４】
2013038660.tif 000006
【図５】
2013038660.tif 000007
【図６】
2013038660.tif 000008
【図７】
2013038660.tif 000009
【図８】
2013038660.tif 000010
【図９】
2013038660.tif 000011
【図１０】
2013038660.tif 000012
【図１１】
2013038660.tif 000013