説明

中層のモジュール、記録媒体およびデータ転送方法

【課題】イーサネット(登録商標)の機能を改修することなく、NDNアーキテクチャを次世代インターネットの候補として本格的に普及させ得るプロトコル・モジュール及びデータ転送方法等を提供する。
【解決手段】NDN層22とイーサネット(登録商標)11等との間にサブ層21を設け、サブ層21にセグメンテーション/リアセンブリング処理を行わせる。NDN層22を構成するネットワークインタフェース(Faceモジュール)は隣接するNDNノード間でのデータ転送を司りリンクにおけるMTUも保持している。従って、Faceモジュールが最終的に(例えばイーサネット(登録商標)11等への)データ送信命令を呼び出していると考えられる。このデータ送信命令の直前にセグメンテーション/リアセンブリング処理を行うのが適当であり、NDNのFaceモジュールを拡張することにより、本発明のデータ転送方法および中層のモジュールを実装する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、TCP/IPモデルにおけるネットワークインタフェース層等の上に定義された中層と、当該中層の上に定義されたネームド・データ・ネットワーキング(Named Data Networking : NDN)層とを備えた通信プロトコルを実装するプロトコル・スタックにおける当該中層のモジュール(プログラム)等に関する。
【背景技術】
【0002】
従来より、国際標準化機構(ISO)により制定された開放型システム間相互接続(Open Systems Interconnection : OSI)参照モデルが知られている。図8(A)はOSI参照モデルに基づく7階層(レイヤ)を示す。図8(A)において、符号1はネットワーク間の物理的な接続(コネクタのピン数、形状)を規定する第1層の物理層、2は直接的に接続されている通信機器間でのデータ伝送を担当する第2層のデータリンク層、3はネットワークの経路選択・中継作業を担当する第3層のネットワーク層、4は再送、輻輳等のようなネットワークの端から端(エンド・ツー・エンド)の通信監理を行う第4層のトランスポート層、5は通信プログラム間における通信の開始から終了までの手順を規定する第5層のセッション層、6はデータの表現方法等を規定する第6層のプレゼンテーション層、7はファイルの転送等の具体的な通信サービスを提供する第7層のアプリケーション層である。
【0003】
上述したOSI参照モデルは実装等の理由によりあまり普及はしなかった。一方、アメリカ国防総省の下で開発されたARPAnet(Advanced Research Projects Agency Network)から発展したTCP/IP(Transmission Control Protocol/Internet Protocol)はインターネットの普及に伴い急速に発展した。図8(B)はTCP/IPの階層モデルを示す。図8(B)に示されるTCP/IPの階層と図8(A)に示されるOSI参照モデルの階層とは横方向に対応付けられているが、両者のどの階層をどの階層に対応付けるかは人により異なる点があり、図8(A)、(B)の対応付けは一例である(例えば非特許文献1参照)。図8(B)で、符号10は物理層1に対応する第0層のハードウェア層であり、実装例としてはUTP(Unshield Twisted Pair)ケーブル等がある。符号11はデータリンク層2に対応する第1層のネットワークインタフェース層であり、実装例としてはイーサネット(登録商標)、PPP(Point to Point Protocol)等がある(以下、「イーサネット(登録商標)11」と言うことがある。)。符号12はネットワーク層3に対応する第2層のインターネットであり、実装例としてはIP等がある(以下、「IP12」と言うことがある。)。符号13はトランスポート層4に対応する第3層のトランスポートであり、実装例としてはTCP等がある(以下、「TCP13」と言うことがある。)。符号14はセッション層5、プレゼンテーション層6およびアプリケーション層7に対応する第4層のアプリケーションであり、実装例としてはHTTP(Hyper Text Transfer Protocol)等がある。TCP/IPではノードにIPアドレスが付けられており、IP12においてIPアドレスを見てパケットを転送している。
【0004】
図8(A)に示されるOSI参照モデルに基づく7階層の場合および図8(B)に示されるTCP/IPの階層の場合のいずれも、各階層で取り扱いやすいデータのサイズは異なっている。例えば、イーサネット(登録商標)11で取り扱える最大転送サイズ(Maximum Transmission Unit : MTU)は、1KBまたは1.5KBである。このため上層のIP12にはデータを1KBまたは1.5KBに区切って下層のイーサネット(登録商標)11へ渡すセグメンテーションの機能がある。逆に、IP12は下層のイーサネット(登録商標)11から受け取った複数のパケットを組み上げて上層のTCP13へ渡すリアセンブリング機能も有している。イーサネット(登録商標)11はセグメンテーション/リアセンブリング機能を有していない。
【0005】
次に、ネームド・データ・ネットワーキング(Named Data Networking : NDN)について説明する。NDNは次世代インターネットの候補と言われており、ネットワーク中に存在するノードが有するコンテンツ(content)に名前(name)を付けて送受の制御を行うというモデルである。図8(B)で言えばTCP13およびIP12をNDN層で置き換えるというモデルである。TCP/IPではノードにIPアドレスを付けておきIP12においてIPアドレスを見てパケットを転送していくが、NDNではネットワーク中のノードに存在するコンテンツに名前を付けておき、NDN層において名前を見てコンテンツを転送していく。
【0006】
図9はNDNアーキテクチャにおけNDNパケットを示す(図9および後で説明する図10の出典は非特許文献2参照。以下、非特許文献2を参照して説明する。)。NDNにおける通信は受取り端、即ちデータ消費者(data consumer)により駆動される。図9(A)はインタレスト(Interest)パケット100を示す。インタレストパケット100はデータを受取るためにデータ消費者により送信されるパケットであり、所望のデータを識別する名前を運ぶ。図9(A)に示されるように、インタレストパケット100のパラメータはデータ消費者が受取りを望むデータを識別するコンテンツ名(Content Name)101および発行者を識別するセレクタ(Selector)102である。インタレストパケット100が要求されたデータを有するノードに到着すると、データ(Data)パケットが送り返される。図9(B)はデータパケット150を示す。図9(B)に示されるように、データパケット150のパラメータはコンテンツ名101、データ作成者(producer)の鍵による署名151およびそれに関する情報152、データ153である。
【0007】
図10はNDNノード200における転送プロセスを示す。図10で、符号210、211および212はNDNノード200の外部通信環境の例であり、204は外部通信環境210に対するインタフェース(Face 0)、205は外部通信環境211に対するインタフェース(Face 1)、206は外部通信環境212に対するインタフェース(Face 2)である。図10に示されるように、インデックス(Index)207のptr欄にはコンテンツ・ストア(Content Store)201へのポインタが記録され、対応するtype欄には「C」が記録されている。同様に、インデックス207の他のptr欄にはペンディング・インタレスト・テーブル(Pending Interest Table : PIT)202へのポインタが記録され、対応するtype欄には「P」が記録されている。同様に、インデックス207の別のptr欄には転送情報ベース(Forwarding Information Base : FIB)203へのポインタが記録され、対応するtype欄には「F」が記録されている。例えば、データ消費者が/parc/videos/WidgetA.mpgを要求するインタレストパケット100を送信したものとする。NDNノード200のルータはインタレストパケット100を受取ったインタフェース204等(Face 0なら「0」、Face 1なら「1」)をFIB203のFace List欄に記録しておき、転送はFIB203中の名前(Prefix)を参照することにより行う。データパケット150はインタレストパケット100により作られたパスの逆をたどることによりデータ消費者へ戻される。インタレストパケット100もデータパケット150もIPアドレスのようなアドレスは運ばない。インタレストパケット100はインタレストパケット100により運ばれる名前に基づきデータ作成者へ向かってルーティングされる。データパケット150はインタレストパケット100により各ルータホップで設定された情報に基づき戻される。つまり、データパケット150はインタレストパケット100が通ってきたパスと同じパスを逆方向にたどって戻される。一つのデータパケット150は(パス中の)各ホップを渡りながら一つのインタレストパケット100を満たしていく(ホップバイホップ(hop-by-hop)の原理)。
【0008】
NDNノード200のルータは、インタレストパケット100およびデータパケット150をある一定期間PIT202に保持する。同一のデータに対する複数のインタレストパケット100をダウンストリームから受け取った場合、最初のインタレストパケット100のみをデータ源へ向かってアップストリームへ送る。ルータはこのインタレストパケット100をPIT202に記録しておく。PIT202はインタレスパケット100が有するコンテンツ名をprefix欄に、上記複数のインタレストパケット100を受取ったインタフェースの集合をRequesting Face(s)欄に記録しておく。データパケット150が到着した場合、ルータは対応するPIT202のエントリを見つけ、当該データパケット150を当該エントリに記録されたすべてのインタフェースへ転送する。その後、ルータは対応するPIT202のエントリを削除して、データパケット150をコンテンツ・ストア201にキャッシュしておく。コンテンツ・ストア201のName欄にはデータパケット150が有するコンテンツ名を記録し、Data欄にはデータ153の内容を記録しておく。コンテンツ・ストア201は基本的にルータのバッファ記憶を用いる。コンテンツ・ストア201を用いることにより、NDNは例えばYoutube(登録商標)のような多くのユーザが同じデータを同時に要求する場合におけるコンテンツ配信を自動的にサポートすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述したように、NDNアーキテクチャは図8(B)のTCP13およびIP12をNDN層で置き換えるというモデルである。しかし、いきなりNDNをTCP13およびIP12と置き換えることは困難であるため、現在のところNDNはTCP13およびIP12の上で動作している。図11は現在のNDN実装を示す。図11で図8と同じ符号を付した個所は同じ層を示すため説明は省略する。図11に示されるように、現在のNDN層22はTCP13、IP12を擬似的に第3層または第2層として利用し、TCP13またはIP12のセグメンテーション/リアセンブリング機能を利用してセグメンテーション/リアセンブリング処理を行っている。つまり、現在のNDN層はIP12等が有するセグメンテーション機能およびリアセンブリング機能を有していない。
【0010】
上述したように、イーサネット(登録商標)11にはMTUという制限があるが、自身にはセグメンテーション/リアセンブリング機能が備わっていなかった。しかし、イーサネット(登録商標)11は世界的に広く普及しているため、イーサネット(登録商標)11の機能を改修することは得策ではないという問題があった。上述したように、NDNアーキテクチャは次世代インターネットの候補であり、本格的に普及させるためにはイーサネット(登録商標)11上に直接NDN層を実装する必要がある。しかし、現在のNDN層はIP12等が有するセグメンテーション機能およびリアセンブリング機能を有していないという問題があった。そこで、本発明の目的は上記問題を解決するためになされたものであり、イーサネット(登録商標)11の機能を改修することなく、NDNアーキテクチャを次世代インターネットの候補として本格的に普及させることを可能とするプロトコル・モジュールおよびデータ転送方法等を提供することにある。
【課題を解決するための手段】
【0011】
この発明の中層のモジュールは、TCP/IPモデルにおけるネットワークインタフェース層又はOSI参照モデルにおけるデータリンク層に相当する下層と、該下層の上に定義された中層と、該中層の上に定義されたネームド・データ・ネットワーキング(Named Data Networking : NDN)層であってネットワーク中に存在するノードが有するコンテンツに名前を付けて送受の制御を行うものとを備えた通信プロトコルを実装するプロトコル・スタックにおける該中層のモジュール(プログラム)であって、コンピュータを、前記NDN層から渡された入力バイト列のサイズが前記下層の最大転送サイズより大きい場合は、該入力バイト列を最大転送サイズ以下の複数のバイト列に分割し各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付して順に該下層へ渡すセグメンテーション手段、前記下層から渡されたバイト列に含まれる制御データ中の後続情報により後続バイト列が有ると判断された場合は、制御データ中の順番情報に示される順番に該下層から渡されたバイト列から制御データを除くデータバイト列を記録して次のバイト列を待ち、後続情報により後続バイト列が無いと判断された場合は、記録されたデータバイト列に該下層から渡されたバイト列から制御データを除くデータバイト列を加えて一纏めにしたバイト列を前記NDN層へ渡すリアセンブリング手段として機能させるための中層のモジュールである。
【0012】
ここで、この発明の中層のモジュールにおいて、前記セグメンテーション手段は前記NDN層から渡された入力バイト列のサイズが前記下層の最大転送サイズ以下の場合は、該入力バイト列に最初のバイト列であることを示す順番情報と後続バイト列は無しであることを示す後続情報とを含む制御データを付して該下層へ渡す手段をさらに備え、前記リアセンブリング手段は前記下層から渡されたバイト列に含まれる制御データ中の順番情報により最初のバイト列であり後続情報により後続バイト列は無しであると判断された場合は、該下層から渡されたバイト列から制御データを除くデータバイト列を前記NDN層へ渡す手段をさらに備えることができる。
【0013】
ここで、この発明の中層のモジュールにおいて、バイト列に付された前記制御データは後続バイト列の有無を示すビットと、前記下層へ渡すバイト列の総サイズを所定の値に揃わせる際のパディングバイト長を示すビットと、該バイト列の順番を示すビットとを含むことができる。
【0014】
この発明の記録媒体は、本発明のいずれかの中層のモジュールを記録したコンピュータ読取り可能な記録媒体である。
【0015】
この発明のデータ転送方法は、TCP/IPモデルにおけるネットワークインタフェース層又はOSI参照モデルにおけるデータリンク層に相当する下層と、該下層の上に定義された中層と、該中層の上に定義されたネームド・データ・ネットワーキング(Named Data Networking : NDN)層であってネットワーク中に存在するノードが有するコンテンツに名前を付けて送受の制御を行うものとを備えた通信プロトコルを実装するプロトコル・スタックにおける該中層のモジュール(プログラム)が実行するデータ転送方法であって、前記NDN層から渡された入力バイト列のサイズが前記下層の最大転送サイズより大きい場合は、該入力バイト列を最大転送サイズ以下の複数のバイト列に分割し各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付して順に該下層へ渡すセグメンテーションステップと、前記下層から渡されたバイト列に含まれる制御データ中の後続情報により後続バイト列が有ると判断された場合は、制御データ中の順番情報に示される順番に該下層から渡されたバイト列から制御データを除くデータバイト列を記録して次のバイト列を待ち、後続情報により後続バイト列が無いと判断された場合は、記録されたデータバイト列に該下層から渡されたバイト列から制御データを除くデータバイト列を加えて一纏めにしたバイト列を前記NDN層へ渡すリアセンブリングステップとを備えたことを特徴とする。
【0016】
ここで、この発明のデータ転送方法において、前記セグメンテーションステップは前記NDN層から渡された入力バイト列のサイズが前記下層の最大転送サイズ以下の場合は、該入力バイト列に最初のバイト列であることを示す順番情報と後続バイト列は無しであることを示す後続情報とを含む制御データを付して該下層へ渡すステップをさらに備え、前記リアセンブリングステップは前記下層から渡されたバイト列に含まれる制御データ中の順番情報により最初のバイト列であり後続情報により後続バイト列は無しであると判断された場合は、該下層から渡されたバイト列から制御データを除くデータバイト列を前記NDN層へ渡すステップをさらに備えることができる。
【0017】
ここで、この発明のデータ転送方法において、バイト列に付された前記制御データは後続バイト列の有無を示すビットと、前記下層へ渡すバイト列の総サイズを所定の値に揃わせる際のパディングバイト長を示すビットと、該バイト列の順番を示すビットとを含むことができる。
【発明の効果】
【0018】
本発明の中層のモジュールおよびデータ転送方法等によれば、NDN層とイーサネット(登録商標)との間にサブ層を設け、サブ層にセグメンテーション/リアセンブリング処理を行わせる。この結果、イーサネット(登録商標)の機能を改修することなく、NDNアーキテクチャを次世代インターネットの候補として本格的に普及させることを可能とするプロトコル・モジュールおよびデータ転送方法等を提供することができるという効果がある。加えて、上層のアプリケーションは下層のMTUを意識することなく、最適な大きさのNDNパケットを使用することができる。リンクの特質であるMTUに合わせてデータ転送を行うことができるため、NDNにおけるホップバイホップの転送原理との親和性を高くすることができるという効果がある。
【図面の簡単な説明】
【0019】
【図1】イーサネット(登録商標)11上にNDN層を実装するための本発明のデータ転送方法の処理を説明するための図である。
【図2】制御データの構造を示す図である。
【図3】サブ層21tがイーサネット(登録商標)11tへ渡す一連のn個のバイト列32−1〜32−nを示す図である。
【図4】フレーム34の構造を示す図である。
【図5】入力バイト列30のサイズがイーサネット(登録商標)11tのMTU以下の場合におけるバイ列30を示す図である。
【図6】本発明のサブ層21tおよび21rのモジュール(プログラム)の動作環境および機能ブロックを示す図である。
【図7】本発明のデータ転送方法および中層のモジュールを実行するNDNノード20t等のコンピュータ50の内部回路80を示すブロック図である。
【図8】OSI参照モデルの階層およびTCP/IPの階層を示す図である。
【図9】NDNアーキテクチャにおけるNDNパケットを示す図である。
【図10】NDNノード200における転送プロセスを示す図である。
【図11】現在のNDN実装を示す図である。
【発明を実施するための最良の形態】
【0020】
以下、実施例について図面を参照して詳細に説明する。背景技術で説明した図7および10に示されるOSI参照モデルおよびTCP/IPモデル等の各層の符号を適宜用いる。
【実施例1】
【0021】
本発明のデータ転送方法は、TCP/IPモデルにおけるネットワークインタフェース層11またはOSI参照モデルにおけるデータリンク層2に相当するイーサネット(登録商標)11(下層)と、イーサネット(登録商標)11の上に定義されたサブ層(中層)と、サブ層の上に定義されたNDN層22とを備えた通信プロトコルを実装するためのプロトコル・スタックにおいて、サブ層のモジュール(プログラム)が実行するデータ転送方法である。プロトコル・スタックとは上記のようなネットワーク・プロトコルを実装しているソフトウェアであり、ネットワーク・プロトコルが階層的に定義されているように、当該ソフトウェアも階層的構造をもって実装されているため、「スタック」という用語を用いている。最近のコンピュータはOS自体がネットワーク機能を備えているため、プロトコル・スタックは通常カーネル内部に実装されている。本発明のデータ転送方法(中層のモジュール)もNDNノード(ルータ、PC等のコンピュータ)のOS内部に実装することができる。
【0022】
図1は、イーサネット(登録商標)11上にNDN層を実装するための本発明のデータ転送方法の処理を説明するための図である。図1ではNDNアーキテクチャのパケットを送信する側のNDNノードを20t、受信する側のNDNノードを20rのように符号(数字部分)に「t」、「r」を付すことにより区別している。各NDNノード20tおよび20rの層に付された符号も同様に「t」と「r」を付して区別している点を除いて、符号(数字部分)は図7および図10と同じ意味であるため、説明は省略する。
【0023】
図1を参照して、インタレストパケット100およびデータパケット150等のNDNパケット30を送信する場合の処理について説明する。アプリケーション層14tでは、例えばYoutube(登録商標)のようなサイトに対してデータ消費者であるユーザが動画の配信を要求したような状況を想定することができる。
【0024】
1.NDN層22tがNDNパケット30を作成する。NDN層22tはNDNパケット30の構造(図9参照)を知っているため、各パラメータ101等をどの位置(先頭からのバイトオフセット)に配置すべきか分かっている。
【0025】
2.NDN層22tがNDNパケット30をひとまとまりのバイト列としてサブ層(中層)に渡す(ステップS10)。
【0026】
3.サブ層21tは、NDN層から渡された入力バイト列30のサイズがイーサネット(登録商標)11t(下層)のMTUより大きい場合は、入力バイト列をMTU以下の大きさの複数のバイト列に分割し、各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付したバイト列32として順にイーサネット(登録商標)11へ渡す(ステップS20。セグメンテーションステップ)。図2は、制御データの構造を示す。図2(A)に示されるように、バイト列32は上述したMTU以下の大きさに分割されたバイト列32d(転送データ)と制御データ32cと後述するパディングバイト32pとから構成されている。制御データ32cは、図2(B)に示されるように後続バイト列の有無を示すmoreビット(後続情報)と、イーサネット(登録商標)11へ渡すバイト列32の総サイズを所定の値(例えば32ビットの倍数)に揃わせる際のパディングバイト32pの長さを示すpadビットと、上述したように分割されたバイト列32の順番を示すseqビット(順番情報)とを含む。図2(B)に示されるように、各ビットのサイズはmoreビットが1ビット(「1」の場合に後続バイト列が有り、「0」の場合後続バイト列が無しを示す。)、padビットが2ビット、seqビットが5ビットとし、制御データ32cを1バイトとすることが好適である。昨今のデータ通信は、ハードウェア処理を容易にするため、データの大きさを32ビット(4バイト)の倍数に揃えることが一般的である。本発明のデータ転送方法等では、1バイトの制御データ32cを転送データ32dの後ろに付加する際に、全体のバイト列32の長さが4バイトの倍数になるように、意味のないデータ(パディングバイト32p)を間に埋め込む。これにより、転送データ32d+パディングバイト32p+制御データ32cの全体の長さが4バイトの整数倍になるようにしている。元の転送データ32dの大きさに応じて、パディングバイト32pの長さは0バイトから3バイトになるため、padビット長は2ビットでよい。より一般的にバイト列32の長さをnバイトの倍数に揃える場合、パディングバイト32pの長さは0〜n−1バイトになるため、padビットの長さはlognビットにすればよい。例えば、n=8バイトの場合、padビットの長さは3ビットになる。この場合、制御データ32cを1バイトに収めるためにはseqビット4ビットにするか、または制御データ32cを2バイトにしてもよい。図3は、サブ層21tがイーサネット(登録商標)11tへ渡す分割された一連のn個のバイト列32−1〜32−nを示す。図3に示されるように、バイト列32−1は最初のバイト列であるため、制御データ32c−1のmoreビット=1、seqビット=1となっており、バイト列32−2は2番目のバイト列であるため、制御データ32c−2のmoreビット=1、seqビット=2となっている。バイト列32−nは最後のバイト列であるため、制御データ32c−nのmoreビット=0、seqビット=nとなっている。
【0027】
4.イーサネット(登録商標)11tは、バイト列32からフレーム34を作成してハードウェア層10tへ順に渡す(ステップS30)。図4は、フレーム34の構造を示す。図4に示されるようにフレーム34自体は通常のMACフレームの構造であり、MACフレームの受信時に同期をとるためのビットパターンであるプリアンブルと、送信相手を識別するための宛先アドレスと、送信元を識別するための送信元アドレスと、ユーザデータの長さを示すタイプと、ユーザデータであるバイト列32(図示しないが、図2(A)に示されるように制御データ32cおよび必要なパディングバイト32pを含む。)と、チェックサムの結果が記録されるフレーム・チェック・シーケンス(Frame Check Sequence : FCS)とから構成されている。
【0028】
5.ハードウェア層10tがフレーム34をNDNノード20r側へ送信する(ステップS40)。
【0029】
6.ハードウェア層10rがフレーム34を受信して、イーサネット(登録商標)11rへ渡す(ステップS50)。
【0030】
7.イーサネット(登録商標)11rは受信したフレーム34からユーザデータ32を取出して、順次サブ層21rへ渡す(ステップS60)。
【0031】
8.サブ層21rは、イーサネット(登録商標)11rから渡されたバイト列32に含まれる制御データ32c中のmoreビットにより後続バイト列が有ると判断された場合は、制御データ32中のseqビットに示される順番にイーサネット(登録商標)11rから渡されたバイト列32から制御データ32cを除くデータバイト列32d(padビットが0でなければpadビットにより示される長さのパディングバイト32pも除いたデータバイト列32d。以下同様)をメモリに記録して次のバイト列を待つ。次のバイト列32のmoreビットにより後続バイト列が無いと判断された場合は、メモリに記録されたデータバイト列32dに、最後にイーサネット(登録商標)11rから渡されたバイト列32から制御データ32c等を除くデータバイト列32dを加えて一纏めにしたバイト列30をNDN層22rへ渡す(ステップS70。リアセンブリングステップ)。このNDN層22rへ渡すバイト列30は一つのNDNパケットになっている。サブ層21rとしてはNDNパケット30を意識しているのではなく、単なるバイト列30として取り扱っている。
【0032】
9.NDN層22rは、NDNパケット30の構造を解釈できるため、必要なパラメータ101等を取り出し、適宜処理する。
【0033】
サブ層21tは、上述した3の処理においてNDN層22tから渡された入力バイト列30のサイズがイーサネット(登録商標)11tのMTU以下の場合、入力バイト列30に最初のバイト列であることを示すseqビットと後続バイト列は無しであることを示すmoreビット(=「0」)とを含む制御データ32cを付したバイト列30としてイーサネット(登録商標)11tへ渡す(パディングバイトについては上述した内容と同様であるため省略する。)。図5は、入力バイト列30のサイズがイーサネット(登録商標)11tのMTU以下の場合におけるバイト列30を示す。図5に示されるように、制御データ32cのmoreビット=0、seqビット=1となっており、転送データは入力バイト列30となっている。その後の各層の処理は上述したものと同様である。サブ層21rはイーサネット(登録商標)11rから渡されたバイト列32に含まれる制御データ32c中のseqビットにより最初のバイト列でありmoreビットにより後続バイト列は無しであると判断した場合は、イーサネット(登録商標)11rから渡されたバイト列32から制御データ32c等を除くデータバイト列30をNDN層22rへ渡す。
【0034】
NDNパケット30がインタレストパケット100の場合はサイズがイーサネット(登録商標)11tのMTU以下であると考えられるため、サブ層11tは図5に示されるようなバイト列32として処理する。一方、NDNパケット30がデータパケット150の場合はサイズが(例えば動画であれば1GB程度と)大きいため、サブ層11tは図3に示されるようなバイト列32−1〜32−nとして処理する。
【0035】
図6は、本発明のサブ層21tおよび21rのモジュール(プログラム)の動作環境および機能ブロックを示す。図6において、符号50は発明のサブ層21tおよび21rのモジュールが実装されたコンピュータであり、70は当該モジュールの機能ブロックを示す。図6に示されるセグメンテーション部71(セグメンテーション手段)は、NDN層22tから渡された入力バイト列30のサイズがイーサネット(登録商標)11tのMTUより大きい場合は、入力バイト列30をMTU以下の複数のバイト列に分割し、各バイト列に順番を示すseqビットと後続バイト列の有無を示すmoreビットとを含む制御データ32cを付して順にイーサネット(登録商標)11tへ渡す。セグメンテーション部71はNDN層22tから渡された入力バイト列30のサイズイーサネット(登録商標)11tのMTU以下の場合は、入力バイト列30に最初のバイト列であることを示すseqビットと後続バイト列は無しであることを示すmoreビットとを含む制御データ32cを付してイーサネット(登録商標)11tへ渡す。
【0036】
図6に示されるリアセンブリング部72(リアセンブリング手段)は、イーサネット(登録商標)11rから渡されたバイト列32に含まれる制御データ32c中のmoreビットにより後続バイト列が有ると判断された場合は、制御データ32c中のseqビットに示される順番にイーサネット(登録商標)11rから渡されたバイト列32から制御データ32c等を除くデータバイト列32dをコンピュータ50のデータバイト列記録DB60に記録して次のバイト列を待つ。リアセンブリング部72は、moreビットにより後続バイト列が無いと判断された場合は、データバイト列記録DB60に記録されたデータバイト列に、イーサネット(登録商標)11rから渡されたバイト列32から制御データ32cを除くデータバイト列32dを加えて一纏めにしたバイト列30をNDN層22rへ渡す。リアセンブリング部72は、イーサネット(登録商標)11rから渡されたバイト列32に含まれる制御データ32c中のseqビットにより最初のバイト列でありmoreビットにより後続バイト列は無しであると判断された場合は、イーサネット(登録商標)11rから渡されたバイト列32から制御データ2等を除くデータバイト列32dをNDN層22rへ渡す。データバイト列記録DB60は受信バッファであり、適切な大きさに設定することにより、連続的リアセンブリングをすることができる。
【0037】
上述したNDN層22tおよび22rは背景技術で説明したネットワークインタフェース(Face 0等)、インデックス207、コンテンツ・ストア201、PIT202およびFIB203から構成されている。非特許文献2によれば、ネットワークインタフェース(Faceモジュール)は隣接するNDNノード間でのデータ転送を司り、リンク(例えばイーサネット(登録商標)11t等)におけるMTUも保持している。従って、Faceモジュールが最終的に(例えばイーサネット(登録商標)11等への)データ送信命令を呼び出しているものと考えられる。このデータ送信命令の直前にセグメンテーション/リアセンブリング処理を行うのが適当であるため、NDNのFaceモジュールを拡張することにより、本発明のデータ転送方法および中層のモジュールを容易に実装することができる。
【0038】
以上のように、本発明の実施例1によれば、NDN層22とイーサネット(登録商標)11等との間にサブ層21を設け、サブ層21にセグメンテーション/リアセンブリング処理を行わせる。この結果、イーサネット(登録商標)11の機能を改修することなく、NDNアーキテクチャを次世代インターネットの候補として本格的に普及させることを可能とするプロトコル・モジュールおよびデータ転送方法等を提供することができる。加えて、上層のアプリケーションは下層のMTUを意識することなく、最適な大きさのNDNパケットを使用することができる。リンクの特質であるMTUに合わせてデータ転送を行うことができるため、NDNにおけるホップバイホップの転送原理との親和性が高い。
【実施例2】
【0039】
図7は、本発明のデータ転送方法および中層のモジュールを実行するNDNノード20t等のコンピュータ50の内部回路80を示すブロック図である。図7に示されるように、CPU81、ROM82、RAM83、画像制御部86、コントローラ87、入力制御部90および外部I/F部92はバス93に接続されている。図7において、上述した本発明の中層のモジュールは、ROM82、ディスク88、DVD若しくはCD−ROM89等の記録媒体(脱着可能な記録媒体を含む)に記録されている。ディスク88には、上述したデータバイト列記録DB60を記録しておくことができる。本発明の中層のモジュールは、ROM82からバス93を介し、あるいはディスク88又はDVD若しくはCD−ROM89等の記録媒体からコントローラ87を経由してバス93を介しRAM83へロードされる。画像制御部86は、種々の画面の画像データをVRAM85へ送出する。表示装置(ディスプレイ)84はVRAM85から送出された上記データ等を表示する。VRAM85は表示装置84の一画面分のデータ容量に相当する容量を有している画像メモリである。入力操作部91はコンピュータ50に入力等を行うためのマウス、キーボード等の入力装置であり、入力制御部90は入力操作部91と接続され入力制御等を行う。外部I/F部92はコンピュータ50の外部にあるNDNノード20r等と接続する際のインタフェース機能を有している。
【0040】
上述したようにコンピュータ(CPU)81が本発明の中層のモジュール等を実行することにより、本発明の目的を達成することができる。中層のモジュールは上述のようにDVD若しくはCD−ROM89等の記録媒体の形態でコンピュータ(CPU)81に供給することができ、中層のモジュールを記録したDVD若しくはCD−ROM89等の記録媒体も同様に本発明を構成することになる。中層のモジュールを記録した記録媒体としては上述された記録媒体の他に、例えばメモリ・カード、メモリ・スティック、光ディスク等を用いることができる。
【産業上の利用可能性】
【0041】
本発明の活用例として、イーサネット(登録商標)11とNDN層22との間のセグメンテーション/リアセンブリング処理に適用することができる。
【符号の説明】
【0042】
1 物理層、 2 データリンク層、 3 ネットワーク層、 4 トランスポート層、 5 セッション層、 6 プレゼンテーション層、 7 アプリケーション層、 10、10t、10r ハードウェア、 11、11t、11r ネットワークインタフェース、 12 インターネット、 13 トランスポート、 14 アプリケーション、 20t、20r、200 NDNノード、 21t、21r サブ層、 22、22t、22r NDN層、 30 NDNパケット、 32、32−1、32−2、32−n、32d、32d−1、32d−2、32d−n バイト列、 32c、32c−1、32c−2、32c−n 制御データ、 32p パディングバイト、 34 フレーム、 50 コンピュータ、 60 データバイト列記録DB、 70 機能ブロック、 71 セグメンテーション部、 72 リアセンブリング部、 81 CPU、 82 ROM、 83 RAM、 84 表示装置、 85 VRAM、 86 画像制御部、 87 コントローラ、 88 ディスク、 89 CD−ROM、 80 入力制御部、 91 入力操作部、 92 外部I/F部、 93 バス、 100 インタレストパケット、 101、102、151、152 パラメータ、 150 データパケット、 153 データ、 201 コンテンツ・ストア、 202 PIT、 203 FIB、 204、205, 206 Face、 207 インデックス、 210、211、212 外部通信環境。
【先行技術文献】
【非特許文献】
【0043】
【非特許文献1】“TCP/IPとOSI参照モデル”、[online]、68user’s page、[平成23年6月17日検索]、インターネット、<URL:http://x68000.q-e-d.net/~68user/net/osi7.html>.
【非特許文献2】Lixia Zhang, Deborah Estrin, Jeffrey Burke, etal., ”Named Data Networking (NDN) Project”, NDN-0001, October 31, 2010, 、[online]、[平成23年6月17日検索]、インターネット、<URL:http://www.named-data.net/ndn-proj.pdf>.

【特許請求の範囲】
【請求項1】
TCP/IPモデルにおけるネットワークインタフェース層又はOSI参照モデルにおけるデータリンク層に相当する下層と、該下層の上に定義された中層と、該中層の上に定義されたネームド・データ・ネットワーキング(Named Data Networking : NDN)層であってネットワーク中に存在するノードが有するコンテンツに名前を付けて送受の制御を行うものとを備えた通信プロトコルを実装するプロトコル・スタックにおける該中層のモジュール(プログラム)であって、コンピュータを、
前記NDN層から渡された入力バイト列のサイズが前記下層の最大転送サイズより大きい場合は、該入力バイト列を最大転送サイズ以下の複数のバイト列に分割し各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付して順に該下層へ渡すセグメンテーション手段、
前記下層から渡されたバイト列に含まれる制御データ中の後続情報により後続バイト列が有ると判断された場合は、制御データ中の順番情報に示される順番に該下層から渡されたバイト列から制御データを除くデータバイト列を記録して次のバイト列を待ち、後続情報により後続バイト列が無いと判断された場合は、記録されたデータバイト列に該下層から渡されたバイト列から制御データを除くデータバイト列を加えて一纏めにしたバイト列を前記NDN層へ渡すリアセンブリング手段として機能させるための中層のモジュール。
【請求項2】
請求項1記載の中層のモジュールにおいて、
前記セグメンテーション手段は前記NDN層から渡された入力バイト列のサイズが前記下層の最大転送サイズ以下の場合は、該入力バイト列に最初のバイト列であることを示す順番情報と後続バイト列は無しであることを示す後続情報とを含む制御データを付して該下層へ渡す手段をさらに備え、
前記リアセンブリング手段は前記下層から渡されたバイト列に含まれる制御データ中の順番情報により最初のバイト列であり後続情報により後続バイト列は無しであると判断された場合は、該下層から渡されたバイト列から制御データを除くデータバイト列を前記NDN層へ渡す手段をさらに備えたことを特徴とする中層のモジュール。
【請求項3】
請求項1又は2記載の中層のモジュールにおいて、バイト列に付された前記制御データは後続バイト列の有無を示すビットと、前記下層へ渡すバイト列の総サイズを所定の値に揃わせる際のパディングバイト長を示すビットと、該バイト列の順番を示すビットとを含むことを特徴とする中層のモジュール。
【請求項4】
請求項1乃至3のいずれかに記載の中層のモジュールを記録したコンピュータ読取り可能な記録媒体。
【請求項5】
TCP/IPモデルにおけるネットワークインタフェース層又はOSI参照モデルにおけるデータリンク層に相当する下層と、該下層の上に定義された中層と、該中層の上に定義されたネームド・データ・ネットワーキング(Named Data Networking : NDN)層であってネットワーク中に存在するノードが有するコンテンツに名前を付けて送受の制御を行うものとを備えた通信プロトコルを実装するプロトコル・スタックにおける該中層のモジュール(プログラム)が実行するデータ転送方法であって、
前記NDN層から渡された入力バイト列のサイズが前記下層の最大転送サイズより大きい場合は、該入力バイト列を最大転送サイズ以下の複数のバイト列に分割し各バイト列に順番を示す順番情報と後続バイト列の有無を示す後続情報とを含む制御データを付して順に該下層へ渡すセグメンテーションステップと、
前記下層から渡されたバイト列に含まれる制御データ中の後続情報により後続バイト列が有ると判断された場合は、制御データ中の順番情報に示される順番に該下層から渡されたバイト列から制御データを除くデータバイト列を記録して次のバイト列を待ち、後続情報により後続バイト列が無いと判断された場合は、記録されたデータバイト列に該下層から渡されたバイト列から制御データを除くデータバイト列を加えて一纏めにしたバイト列を前記NDN層へ渡すリアセンブリングステップとを備えたことを特徴とするデータ転送方法。
【請求項6】
請求項5記載のデータ転送方法において、
前記セグメンテーションステップは前記NDN層から渡された入力バイト列のサイズが前記下層の最大転送サイズ以下の場合は、該入力バイト列に最初のバイト列であることを示す順番情報と後続バイト列は無しであることを示す後続情報とを含む制御データを付して該下層へ渡すステップをさらに備え、
前記リアセンブリングステップは前記下層から渡されたバイト列に含まれる制御データ中の順番情報により最初のバイト列であり後続情報により後続バイト列は無しであると判断された場合は、該下層から渡されたバイト列から制御データを除くデータバイト列を前記NDN層へ渡すステップをさらに備えたことを特徴とするデータ転送方法。
【請求項7】
請求項5又は6記載のデータ転送方法において、バイト列に付された前記制御データは後続バイト列の有無を示すビットと、前記下層へ渡すバイト列の総サイズを所定の値に揃わせる際のパディングバイト長を示すビットと、該バイト列の順番を示すビットとを含むことを特徴とするデータ転送方法。




【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2013−38660(P2013−38660A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−174365(P2011−174365)
【出願日】平成23年8月9日(2011.8.9)
【出願人】(502087460)株式会社トヨタIT開発センター (232)
【Fターム(参考)】