(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-21
(45)【発行日】2023-08-29
(54)【発明の名称】コンテンツ配信システムの転送装置及びプログラム
(51)【国際特許分類】
H04L 45/60 20220101AFI20230822BHJP
H04L 45/7453 20220101ALI20230822BHJP
【FI】
H04L45/60
H04L45/7453
(21)【出願番号】P 2020159724
(22)【出願日】2020-09-24
【審査請求日】2022-05-31
【新規性喪失の例外の表示】特許法第30条第2項適用 ▲1▼ウェブサイトの掲載日:令和2年8月21日 ウェブサイトのアドレス https://ieeexplore.ieee.org/document/9173693
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(74)【代理人】
【識別番号】100076428
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【氏名又は名称】永川 行光
(74)【代理人】
【識別番号】100131886
【氏名又は名称】坂本 隆志
(74)【代理人】
【識別番号】100170667
【氏名又は名称】前田 浩次
(72)【発明者】
【氏名】武政 淳二
(72)【発明者】
【氏名】田上 敦士
【審査官】中川 幸洋
(56)【参考文献】
【文献】特開2009-165159(JP,A)
【文献】特開2004-248132(JP,A)
【文献】特開2015-162686(JP,A)
【文献】米国特許第09178806(US,B2)
【文献】中国特許出願公開第1842799(CN,A)
【文献】情報指向型ネットワークに適用するためのコンテンツ人気度推定方式,電子情報通信学会2018年総合大会,2018年03月06日
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/60
H04L 45/7453
(57)【特許請求の範囲】
【請求項1】
パケットに関連付けられたコンテンツの名前に基づき前記パケットを転送するコンテンツ配信システムの転送装置であって、
複数の通信インタフェースと、
前記パケットの転送処理を行う複数の転送処理手段と、
前記複数の通信インタフェースの内の通信インタフェースが前記パケットを受信した際、前記複数の転送処理手段から、当該パケットの転送処理を行う転送処理手段を決定する制御を行う制御手段と、
を備え、
前記制御手段は、
前記複数の通信インタフェースが受信した前記パケットに基づき、前記コンテンツを、第1コンテンツと、前記第1コンテンツより人気度の低い第2コンテンツに分類し、
前記第1コンテンツに関連付けられた前記パケットの転送処理を行う前記転送処理手段を
乱数に基づき決定することで、前記第1コンテンツに関連付けられた前記パケットの転送処理を行う前記転送処理手段を前記複数の転送処理手段に分散させ
、
前記第2コンテンツに関連付けられた前記パケットの転送処理を行う前記転送処理手段を前記第2コンテンツの名前に基づき決定することを特徴とする転送装置。
【請求項2】
前記制御手段は、
第1ハッシュ関数による第1ハッシュ値を求める第1算出手段と、
前記第1ハッシュ値に基づき前記パケットの転送処理を行う前記転送処理手段を決定する決定手段と、
を備え、
前記制御手段は、前記第1コンテンツに関連付けられた前記パケットの転送処理を行う前記転送処理手段を決定する場合、
前記乱数を前記第1算出手段への入力とし、前記第2コンテンツに関連付けられた前記パケットの転送処理を行う前記転送処理手段を決定する場合、前記第2コンテンツの
前記名前を前記第1算出手段への入力とすることを特徴とする請求項
1に記載の転送装置。
【請求項3】
前記乱数は、前記パケットに格納されている値であることを特徴とする請求項
2に記載の転送装置。
【請求項4】
前記制御手段は、前記複数の通信インタフェースで受信した前記パケットに基づき、前記コンテンツを要求するパケットの数を前記コンテンツ毎に判定し、判定した前記コンテンツ毎のパケットの数を閾値と比較することで、前記コンテンツを前記第1コンテンツと前記第2コンテンツに分類することを特徴とする請求項1から
3のいずれか1項に記載の転送装置。
【請求項5】
前記制御手段は、第2ハッシュ関数による第2ハッシュ値を求める第2算出手段をさらに備え、
前記制御手段は、前記第2ハッシュ値に対応する前記コンテンツが前記第1コンテンツであるか前記第2コンテンツであるかを示す対応関係情報を管理し、前記パケットの転送処理を行う前記転送処理手段を決定する際、当該パケットに関連付けられた前記コンテンツの名前を前記第2算出手段の入力とすることで求めた前記第2ハッシュ値と、前記対応関係情報とに基づき、当該パケットに関連付けられた前記コンテンツが前記第1コンテンツであるか前記第2コンテンツであるかを判定し、
前記制御手段は、前記複数の通信インタフェースで受信した前記パケットに基づき、前記コンテンツを前記第1コンテンツと前記第2コンテンツに分類すると、分類結果に基づき前記対応関係情報を更新することを特徴とする請求項
4に記載の転送装置。
【請求項6】
前記コンテンツを要求するパケットを転送して当該コンテンツを搬送するパケットの受信待ちであることと、当該コンテンツを搬送するパケットを送信する前記通信インタフェースとを示すテーブルを格納する格納手段をさらに備え、
前記制御手段は、前記パケットの転送処理を行う
前記転送処理手段を決定すると、前記通信インタフェースに、決定した前記転送処理手段と、当該パケットに関連付けられた前記コンテンツ
の処理において前記テーブルの排他制御が必要か否かと、を通知し、
前記通信インタフェースは、当該パケットの所定フィールドに、当該パケットに関連付けられた前記コンテンツ
の処理において前記テーブルの排他制御が必要か否かを示す情報を設定して、当該パケットを前記制御手段から通知された前記転送処理手段に出力
し、
前記制御手段は、前記コンテンツが前記第1コンテンツである場合、前記コンテンツの処理において前記テーブルの排他制御が必要であることを通知し、前記コンテンツが前記第2コンテンツである場合、前記コンテンツの処理において前記テーブルの排他制御が必要ではないことを通知することを特徴とする請求項1から
5のいずれか1項に記載の転送装置。
【請求項7】
前記転送処理手段は、前記通信インタフェースから前記パケットを受信すると、前記パケットの前記所定フィールドに設定された情報に基づき、前記テーブルに対する処理において排他制御を行うか否かを判定すること
を特徴とする請求項
6に記載の転送装置。
【請求項8】
1つ以上のプロセッサを有する装置の前記1つ以上のプロセッサで実行されると、前記1つ以上のプロセッサを有する装置を請求項1から
7のいずれか1項に記載の転送装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンテンツの名前に基づきルーティングを行うコンテンツ配信システムの転送装置及びプログラムに関する。
【背景技術】
【0002】
コンテンツの名前に基づきコンテンツの要求及び配信を行うコンテンツ配信システムが提案されている。非特許文献1は、その様なシステムの1つであるコンテンツ・セントリック・ネットワーク(CCN:Content Centric Networking)を開示している。
【0003】
CCNにおいて、コンテンツを公開するサーバ装置は当該コンテンツを1つ以上のチャンクに分割し、クライアント装置は、この分割されたチャンク単位でコンテンツを取得する。また、CCNにおいて、チャンクの転送を行った通信装置(以下、転送装置と呼ぶ。)は、当該チャンクを保存(キャッシュ)できる。転送装置は、キャッシュしているチャンクを要求するインタレスト・パケット(要求パケット)をクライアント装置から受信すると、当該インタレスト・パケットをサーバ装置に向けて転送することなく、キャッシュしているチャンクを、当該インタレスト・パケットを送信したクライアント装置に向けて送信できる。
【0004】
以下に、転送装置の動作の一例を説明する。転送装置は、CS(Contents Store)と、FIB(Forward Information Base)と、PIT(Pending Interest Table)と、を管理する。CSは、キャッシュしているチャンクを示す情報である。FIBは、インタレスト・パケットが要求するチャンクと、当該インタレスト・パケットの転送のために、当該インタレスト・パケットを送信するインタフェースとの関係を示す情報である。PITは、インタレスト・パケットが要求するチャンクと、当該インタレスト・パケットを受信したインタフェースとの関係を示す情報である。
【0005】
転送装置は、インタレスト・パケットを受信すると、CSを検索し、当該インタレスト・パケットが要求するチャンク(以下、要求チャンク)をキャッシュしているか否かを判定する。要求チャンクをキャッシュしている場合には、キャッシュしている要求チャンクを含むデータ・パケットを、当該インタレスト・パケットの送信元のクライアント装置に向けて送信する。なお、当該データ・パケットを送信するインタフェースは、当該インタレスト・パケットを受信したインタフェースである。一方、要求チャンクをキャッシュしていない場合、転送装置は、PITを検索して、要求チャンクを要求する別のインタレスト・パケットを既に転送し、要求チャンクの受信待ち状態であるかを判定する。受信待ち状態であると、転送装置は、受信したインタレスト・パケットを転送せず、PITの当該要求チャンクのエントリに当該インタレスト・パケットの受信インタフェースを追加する。一方、要求チャンクの受信待ち状態ではない場合、転送装置は、FIBに基づき判定したインタフェースから当該インタレスト・パケットを送信(転送)し、PITに要求チャンクのエントリを追加する。このエントリは、要求チャンクを示す情報(チャンク名)と、当該インタレスト・パケットを受信したインタフェースを示す情報と、を有する。
【0006】
また、転送装置は、チャンクを含むデータ・パケットを受信すると、当該データ・パケットを送信するインタフェースをPITに基づき判定し、判定したインタフェースから当該データ・パケットを送信し、当該チャンクのエントリをPITから削除する。なお、データ・パケットを送信するインタフェースは、当該チャンクを要求するインタレスト・パケットを受信したインタフェースであり、PITの当該チャンクに関するエントリに設定されている。また、転送装置は、受信したデータ・パケットに含まれるチャンクをキャッシュするとCSを更新する。
【0007】
この様に、CCNにおいて、チャンクを含むデータ・パケットは、当該チャンクを要求するインタレスト・パケットを受信したインタフェースに送信される。よって、チャンクは、当該チャンクを要求するインタレスト・パケットと同じ経路を逆向きに転送されて、当該チャンクを要求したクライアント装置に配信される。
【0008】
転送装置は、一般的には、パケットの送受信処理を行うインタフェース部と、パケットの転送処理を行う転送処理部と、を有する。なお、本明細書において、パケットとは、インタレスト・パケットとデータ・パケットの総称を意味する。ここで、転送装置のスループットを高めるために転送装置に複数の転送処理部を設けることが検討されている。
【0009】
転送装置の転送処理部は、パケットを受信した際、PITのエントリに対するエントリ処理を行う。なお、本明細書において、エントリ処理とは、PITへのエントリの追加処理、エントリ内容の更新処理、エントリの削除処理の総称である。転送装置に複数の転送処理部を設けると、各転送処理部が、PITの同じエントリに同時にアクセスしてエントリ処理を行うことが生じ得る。PITの同じエントリに対して、異なる転送処理部によるエントリ処理が同時に生じると、PITに格納すべき情報が消失するといった不具合がPITに生じ得る。
【0010】
このため、非特許文献2は、同じチャンクを要求するインタレスト・パケットと、同じチャンクを搬送しているデータ・パケットについては、同じ転送処理部に処理させる構成を開示している。具体的には、ハッシュ値と転送処理部との対応関係を予め決定して、この対応関係を示す情報を転送装置に格納しておく。そして、転送装置は、パケットを受信すると、当該パケットが要求している、或いは、当該パケットが搬送しているチャンク(以下、パケットが要求している、或いは、パケットが搬送しているチャンクを、"パケットに関連付けられたチャンク"と表記する。)の名前のハッシュ値を求め、求めたハッシュ値に対応する転送処理部に当該パケットの転送処理を行わせることを非特許文献2は開示している。この構成により、PITのあるエントリに対するエントリ処理は、同じ1つの転送処理部のみにより行われるため、PITに不具合が生じることを防ぐことができる。
【0011】
また、非特許文献3は、PITのエントリ処理において排他制御を行うことを提案している。具体的には、PITにロック状態フィールドを設ける。なお、ロック状態フィールドには、値"0"又は値"1"が設定され、値"0"はアンロック状態を示し、値"1"はロック状態を示している。PITのエントリ処理を行う転送処理部は、処理対象のエントリのロック・フィールドの値をチェックし、値が"1"、つまり、ロック状態であれば、値が"0"、つまりアンロック状態になるまで待機する。処理対象のPITエントリがアンロック状態である場合、転送処理部は、エントリ処理を開始するが、この際、転送処理部は、まず、処理対象のエントリのロック状態フィールドの値を"1"に設定して処理対象のエントリをロック状態にする。そして、転送処理部は転送処理及びエントリ処理を実行し、これらの処理が完了すると、処理対象のエントリのロック状態フィールドの値を"0"に設定してアンロック状態にする。非特許文献3においては、この排他制御により、異なる転送処理部が、PITの同じエントリに同時にアクセスすることを防いでいる。
【先行技術文献】
【非特許文献】
【0012】
【文献】V.Jacobson,et al.,"Networking Named Content",in Proceedings of ACM CoNEXT 2009,2009年12月
【文献】D.Kirchner,et al.,"Augustus:a CCN router for programmable networks",ACM ICN, 2016
【文献】J.Takemasa,et al.,"Analysis of mutual exclusion overhead of NDN packet forwarding on multi-core software router",ACM ICN 2018 Poster Session
【発明の概要】
【発明が解決しようとする課題】
【0013】
非特許文献3の構成において、転送処理部は、パケットを受信しても、当該パケットに関連付けられたチャンクに対応するPITのエントリがロック状態であると、アンロック状態になるまで待機しなければならず、スループットが低下する。また、非特許文献2の構成では、パケットに関連付けられたチャンクの名前により、当該パケットの転送処理を行う転送処理部が決まるため、同じ名前のチャンクに関連付けられたパケットが連続して到着すると、1つの転送処理部に処理が集中し、パケット損失の原因となり得る。
【0014】
本発明は、スループットの低下を防ぎ、かつ、パケット損失を低下させることができる技術を提供するものである。
【課題を解決するための手段】
【0015】
本発明の一態様によると、パケットに関連付けられたコンテンツの名前に基づき前記パケットを転送するコンテンツ配信システムの転送装置は、複数の通信インタフェースと、前記パケットの転送処理を行う複数の転送処理手段と、前記複数の通信インタフェースの内の通信インタフェースが前記パケットを受信した際、前記複数の転送処理手段から、当該パケットの転送処理を行う転送処理手段を決定する制御を行う制御手段と、を備え、前記制御手段は、前記複数の通信インタフェースが受信した前記パケットに基づき、前記コンテンツを、第1コンテンツと、前記第1コンテンツより人気度の低い第2コンテンツに分類し、前記第1コンテンツに関連付けられた前記パケットの転送処理を行う前記転送処理手段を乱数に基づき決定することで、前記第1コンテンツに関連付けられた前記パケットの転送処理を行う前記転送処理手段を前記複数の転送処理手段に分散させ、前記第2コンテンツに関連付けられた前記パケットの転送処理を行う前記転送処理手段を前記第2コンテンツの名前に基づき決定することを特徴とする。
【発明の効果】
【0016】
本発明によると、スループットの低下を防ぎ、かつ、パケット損失を低下させることができる。
【図面の簡単な説明】
【0017】
【発明を実施するための形態】
【0018】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴うち二つ以上の特徴が任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
【0019】
以下では、コンテンツ配信システム(コンテンツ配信ネットワーク)が、CCNであるものとして本実施形態の説明を行う。しかしながら、コンテンツを示す名前に基づきルーティングを行う任意のコンテンツ配信システムに対して本発明を適用することができる。特に、以下ではCCNによるコンテンツの配信に従い、チャンクと呼ばれるコンテンツの断片を単位としてコンテンツを配信する形態で本実施形態の説明を行うが、コンテンツを分割することなく配信するネットワークに対しても本発明を適用することができる。さらに、CCNにおいては、コンテンツの断片であるチャンクを単位としてコンテンツを配信するため、以下の説明では、このチャンクの名前を"チャンク名"と表記するが、チャンクもコンテンツであるため、本実施形態の"チャンク名"は、"コンテンツ名"に置き換えることもできる。
【0020】
図1は、本実施形態による転送装置100の構成図である。転送装置100は、通信インタフェース(IF)部1と、複数の転送処理部20と、記憶部30と、を有する。IF部1は、複数の通信インタフェース(IF)10と、制御部11と、を有する。複数の転送処理部20のそれぞれは、CPU(プロセッサ)により実現され得る。この場合、CPUが、例えば、記憶部30に格納されているプログラムを実行することで以下に説明する転送処理部20の機能が実現され得る。さらに、複数の転送処理部20は、複数のコアを有するマルチコアCPUにより実現され得る。この場合、マルチコアCPUが、例えば、記憶部30に格納されているプログラムを実行することで、各コアそれぞれが、以下に説明する転送処理部20として機能する。なお、転送処理部20の機能は、ASIC等のハードウェアによっても実現され得る。また、転送処理部20の機能は、適切なプログラムを実行する任意のプロセッサと、ASIC等のハードウェアの組み合わせでも実現され得る。なお、
図1においては、IF部1が有するIF10の数をN(Nは2以上の整数)としている。また、転送処理部20の数をM(Mは2以上の整数)としている。なお、個々のIF10を区別するため、n番目(nは1~Nまでの整数)のIF10をIF#nとも表記する。同様に、個々の転送処理部20を区別するため、m番目(mは1~Mまでの整数)の転送処理部20を転送処理部#mとも表記する。
【0021】
IF10は、通信線を介して他の装置(他の転送装置や、サーバ装置や、クライアント装置等)に接続され、接続されている他の装置とパケットの送受信を行う。具体的には、IF10は、パケットを受信すると、当該パケットを転送処理部#1~転送処理部#Mの内の1つに出力する。なお、IF10が、パケットを出力する転送処理部20については、制御部11が決定する。制御部11が、パケットを出力する転送処理部20をどの様に決定するかについては後述する。また、IF10は、転送処理部20からパケットを受信すると、当該パケットを、通信線を介して他の装置に送信する。
【0022】
記憶部30は、揮発性メモリ及び不揮発性メモリを含む1つ以上の記憶デバイス(メモリ)を備え、PIT、FIBを保持している。さらに、記憶部30は、チャンクをキャッシュし、かつ、キャッシュしているチャンクの情報(CS)も保持している。
【0023】
転送処理部20は、IF10からパケットを受信すると、当該パケットに応じた処理を行う。具体的には、パケットがインタレスト・パケットであり、要求チャンクをキャッシュしていると、当該パケットを受信したIF10にキャッシュしているチャンクを含むデータ・パケットを送信する。また、パケットがインタレスト・パケットであり、要求チャンクをキャッシュしていないが、PITに当該要求チャンクのエントリがあると、PITを更新してインタレスト・パケットを廃棄する。さらに、パケットがインタレスト・パケットであり、要求チャンクをキャッシュしておらず、かつ、PITに当該要求チャンクのエントリが無いと、PITに要求チャンクのエントリを追加し、FIBに基づき決定したIF10にインタレスト・パケットを転送する。また、パケットがデータ・パケットであると、PITに基づき判定したIF10に当該データ・パケットを送信し、当該データ・パケットが搬送しているチャンクに関するPITのエントリを削除する。
【0024】
図2は、パケットのヘッダの一部を示している。パケットのヘッダは、チャンク名フィールドと、ナンス値フィールドと、を含んでいる。チャンク名フィールドには、チャンク名が格納される。なお、インタレスト・パケットの場合には、要求するチャンクのチャンク名が格納され、データ・パケットの場合には、ペイロードに格納されているチャンクのチャンク名が格納される。本明細書において、パケットのチャンク名フィールドに格納されているチャンク名を、"パケットに関連付けられたチャンク名"と表記する。さらに、パケットのチャンク名フィールドに格納されているチャンク名が示すチャンクを、"パケットに関連付けられたチャンク"と表記する。同様に、"チャンク名に関連付けられたパケット"とは、チャンク名フィールドに当該チャンク名が格納されているパケットを意味するものとする。さらに、"チャンクに関連付けられたパケット"とは、チャンク名フィールドに当該チャンクのチャンク名が格納されているパケットを意味するものとする。ナンス値フィールドには、ランダムに生成された数字であるナンス値が格納される。ナンス値は、パケットがループ状に転送されているといったパケットの転送異常を検出するために設けられている。
【0025】
続いて、IF10が他の装置からパケットを受信した際、受信したパケットの出力先の転送処理部20を制御部11がどの様に決定するかについて説明する。なお、IF10は、他の装置からパケット受信した際、当該パケットのチャンク名フィールドに格納されているチャンク名と、ナンス値フィールドに格納されているナンス値と、を制御部11に通知するものとする。
図3は、制御部11の機能ブロック図である。例えば、制御部11は、1つ以上のプロセッサにより構成され、当該1つ以上のプロセッサが記憶部30に格納されているプログラムを実行することで、
図3の機能ブロックが実現され得る。また、制御部11は、ハードウェアによっても実現され得る。さらに、制御部11は、適切なプログラムを実行する任意のプロセッサと、ASIC等のハードウェアの組み合わせでも実現され得る。
【0026】
IF10から通知されるチャンク名は、第2ハッシュ値算出部110と、第1ハッシュ値算出部112に入力される。また、IF10から通知されるナンス値は、第1ハッシュ値算出部112に入力される。第2ハッシュ値算出部110は、チャンク名を第2ハッシュ関数の入力として、そのハッシュ値(第2ハッシュ値)を求め、選択部111に第2ハッシュ値を通知する。選択部111は、第2情報114と、第2ハッシュ値と、に基づき、チャンク名とナンス値のいずれか1つを選択して選択結果を第1ハッシュ値算出部112に通知する。
【0027】
図4(A)は、第2情報114の例である。第2情報114は、第2ハッシュ値と、第1ハッシュ関数の入力として使用する入力値との対応関係を示す対応関係情報である。
図4(A)の例において、第2ハッシュ値が"0"又は"1"であると、選択部111は、第1ハッシュ値算出部112に選択結果としてチャンク名を通知する。一方、第2ハッシュ値が"2"であると、選択部111は、第1ハッシュ値算出部112に選択結果としてナンス値を通知する。
【0028】
第1ハッシュ値算出部112は、チャンク名及びナンス値の内の選択部111から通知された値を第1ハッシュ関数の入力として、そのハッシュ値(第1ハッシュ値)を求め、決定部113に第1ハッシュ値を通知する。決定部113は、第1情報115と、第1ハッシュ値と、に基づき、転送処理部#1~転送処理部#Mの内の1つの転送処理部20を決定し、決定した転送処理部20を、チャンク名及びナンス値を通知したIF10に通知する。IF10は、決定部113から通知された転送処理部20に受信したパケットを出力する。
【0029】
図4(B)は、第1情報115の例である。第1情報115は、第1ハッシュ値と、転送処理部20との対応関係を示す情報である。
図4(B)の例において、第1ハッシュ値が"0"であると、決定部113は、転送処理部#1にパケットを出力することをIF10に通知する。
【0030】
例えば、IF#1から通知されたチャンク名が"Ca"であり、その第2ハッシュ値が"0"であり、その第1ハッシュ値が"1"であるものとする。なお、第2情報114及び第1情報115は
図4(A)及び
図4(B)に示す通りとする。選択部111は、第2ハッシュ値が"0"であるため、第1ハッシュ値算出部112に、第1ハッシュ値の算出にチャンク名"Ca"を使用することを通知する。したがって、第1ハッシュ値算出部112は、第1ハッシュ値として"1"を決定部113に通知する。よって、決定部113は、第1情報115に基づき、転送処理部#2をIF#1に通知する。この様に、受信したパケットのチャンク名が"Ca"であると、当該パケットは、常に、転送処理部#2で処理されることになる。
【0031】
一方、IF#1から通知されたチャンク名が"Cb"であり、その第2ハッシュ値が"2"であるものとする。なお、第2情報114及び第1情報115は
図4(A)及び
図4(B)に示す通りとする。選択部111は、第2ハッシュ値が"2"であるため、第1ハッシュ値算出部112に、第1ハッシュ値の算出にナンス値を使用することを通知する。したがって、第1ハッシュ値算出部112は、ナンス値に基づき第1ハッシュ値を算出して決定部113に通知する。ここで、ナンス値は、ランダムに生成された値であるため、パケットのチャンク名が"Cb"であっても、ナンス値はパケット毎に異なる。したがって、パケットのチャンク名が"Cb"であっても、第1ハッシュ値算出部112が算出する第1ハッシュ値もパケット毎に異なる。よって、パケットのチャンク名が"Cb"であっても決定部113が出力先として決定する転送処理部20は同じではなく、パケット毎に異なることになる。
【0032】
例えば、要求数の少ないチャンクに関連付けられたパケットについては、同じ転送処理部20で処理しても、転送処理部20の処理能力を超えることはなく、パケット損失等の原因とはなり得ない。また、同じチャンクに関連付けられたパケットを同じ転送処理部20が処理するため、異なる転送処理部20が同じPITのエントリに同時にアクセスすることで生じ得るPITの不具合を防ぐことができる。したがって、制御部11は、第2情報114において、要求数の少ないチャンクのチャンク名による第2ハッシュ値に対応する入力値を"チャンク名"に設定する。一方、要求数の多いチャンクに関連付けられたパケットを同じ転送処理部20で処理すると、転送処理部20の処理能力を超え、パケット損失の原因となり得る。したがって、制御部11は、第2情報114において、要求数の多いチャンクのチャンク名による第2ハッシュ値に対応する入力値を"ナンス値"に設定する。これにより、要求数の多いチャンクに関連付けられたパケットは、複数の転送処理部20により分散して処理されることになり、パケット損失の発生を抑えることができる。
【0033】
このため、制御部11は、IF10がパケットを受信した際にIF10から通知されるチャンク名に基づき、各チャンクの人気度を求める。チャンクの人気度は、例えば、所定期間において受信した当該チャンクを要求するインタレスト・パケットの合計数とすることができる。そして、制御部11は、人気度(合計数)を閾値と比較することで、チャンクを人気度の高い第1チャンクと、人気度の低い第2チャンクに分類する。第1チャンクは、合計数が閾値より大きいチャンクであり、第2チャンクは合計数が閾値以下のチャンクである。制御部11は、第1チャンクのチャンク名による第2ハッシュ値を求め、第2情報114のこの第2ハッシュ値に対応する入力値を"ナンス値"に設定し、それ以外の第2ハッシュ値に対応する入力値を"チャンク名"に設定する。制御部114は、各チャンクの人気度を求めて第1チャンクを判定する処理と、判定結果に基づき第2情報114を更新する処理を所定期間毎に繰り返す。この構成により、パケット損失を抑えつつ、パケットの転送処理を複数の転送処理部20に分散させることができ、転送装置100のスループットを高くすることができる。
【0034】
上述した構成により、人気度が閾値以下である第2チャンクに関連付けられたパケットは、同じ転送処理部20により処理されるため、異なる転送処理部20が同時にPITの同じエントリにアクセスすることは生じず、よって、PITに不具合は生じない。しかしながら、人気度が閾値より大きい第1チャンクに関するパケットは、異なる転送処理部20により処理されるため、異なる転送処理部20が同時にPITの同じエントリにアクセスすることが生じ得る。このため、本実施形態では、第1チャンクに関連付けられたパケットを転送処理部20が処理する際、当該転送処理部20にPITの排他制御を行わせる。
【0035】
例えば、制御部11は、ナンス値を使用して転送処理部20を決定した際、決定した転送処理部20にPITの排他制御を行うことを通知する構成とすることができる。本実施形態では、パケットのヘッダ領域を使用して、転送処理部20にPITの排他制御を行うことを通知する。このため、
図2に示すパケットのヘッダ領域に、ロック・フィールドを設ける。そして、第1ハッシュ値算出部112は、選択結果として"チャンク名"が通知された場合、第1ハッシュ値と共に"ロック不要"を示す情報を決定部113に通知する。一方、選択結果として"ナンス値"が通知された場合、第1ハッシュ値算出部112は、第1ハッシュ値と共に"ロック要"を示す情報を決定部113に通知する。決定部113は、決定した転送処理部20を示す情報と共に、第1ハッシュ値算出部112から通知された、"ロック不要"又は"ロック要"を示す情報をIF10に通知する。
【0036】
IF10は、決定部113から通知された転送処理部20にパケットを出力する際、決定部113から"ロック不要"が通知されていると、当該パケットのロック・フィールドに、例えば、値"0"を設定し、"ロック要"が通知されていると、当該パケットのロック・フィールドに、例えば、値"1"を設定する。転送処理部20は、ロック・フィールドに値"0"が設定されていると、PITの排他制御を行わず、ロック・フィールドに値"1"が設定されていると、PITの排他制御を行う。
【0037】
具体的には、
図5に示す様に、PITにロック状態フィールドを設ける。ロック状態フィールドには、値"0"又は値"1"が設定され、値"0"はアンロック状態を示し、値"1"はロック状態を示す。転送処理部20は、受信したパケットのロック・フィールドの値が"0"であると、PITの処理対象のエントリのロック状態フィールドの値に拘わらず当該パケットの転送処理と、処理対象のエントリに対するエントリ処理を実行する。一方、受信したパケットのロック・フィールドの値が"1"である場合、PITの処理対象のエントリのロック状態フィールドの値をまず検査する。そして、PITの処理対象のエントリのロック状態フィールドの値が"1"、つまり、ロック状態であると、値が"0"、つまりアンロック状態になるまで待機する。処理対象のPITエントリがアンロック状態である場合、転送処理部20は、転送処理及びエントリ処理を開始するが、この際、転送処理部20は、まず、処理対象のエントリのロック状態フィールドの値を"1"に設定して処理対象のエントリをロック状態にする。そして、転送処理部20は転送処理及びエントリ処理を実行し、これらの処理が完了すると、処理対象のエントリのロック状態フィールドの値を"0"に設定してアンロック状態にする。
【0038】
この様に、本実施形態では、総てのパケットの処理においてPITの排他制御を行うのではなく、一部のパケットの処理においてのみPITの排他制御を行うため、排他制御の実行によるスループットの低下を抑えることができる。
【0039】
なお、本実施形態において、制御部11は、第1ハッシュ関数と第2ハッシュ関数の2つのハッシュ関数を使用していたが、第1ハッシュ関数と第2ハッシュ関数は、異なる関数であっても、同じ関数であっても良い。さらに、本実施形態では、第1ハッシュ値に基づきパケットの転送処理を行う転送処理部20を決定し、第1ハッシュ値を求めるための第1ハッシュ関数の入力値を、第2ハッシュ値に基づき制御していた。しかしながら、第1チャンクに関連付けられたパケットを複数の転送処理部20に分散させて処理し、第2チャンクに関連付けられたパケットについては、基本的には、同じ1つの転送処理部20で処理すれば良く、第1チャンクに関連付けられたパケットを複数の転送処理部20に分散させる方法は、上記構成に限定されない。
【0040】
例えば、制御部11は、上記実施形態で説明した様に閾値に基づき第1チャンクを判定する。そして、第1チャンクとは判定されなかったチャンク(第2チャンク)については、上記実施形態と同様に、チャンク名に基づき1つの転送処理部20を決定してIF10に通知する。一方、第1チャンクについては、複数の転送処理部20から1つの転送処理部20をランダムに選択してIF10に通知する構成とすることもできる。例えば、第1チャンクについては、乱数を生成し、生成した乱数に基づき求めた第1ハッシュ値により、当該第1チャンクに関連付けられたパケットを転送する転送処理部20を決定する構成とすることもできる。また、複数の転送処理部20の選択順序を、例えば、ラウンドロビン形式で予め決めておき、第1チャンクについては、選択順序に従い複数の転送処理部20から1つの転送処理部20を選択してIF10に通知する構成とすることもできる。
【0041】
なお、上記実施形態において制御部11は、人気度の高い第1チャンクを判定し、第2情報114において、第1チャンクの名前の第2ハッシュ値に対応する入力値をナンス値に設定していた。この場合、人気度の低い第2チャンクの名前の第2ハッシュ値が、第1チャンクの名前の第2ハッシュ値に一致することが生じ得る。この様な場合、第2ハッシュ値が、第1チャンクの名前の第2ハッシュ値に一致する第2チャンクについては、同じ転送処理部20で処理されるのではなく、複数の転送処理部20で処理されることになる。しかしながら、この様なケースが生じる確率は低く、かつ、複数の転送処理部20で処理される場合にはPITの排他制御が行われるため問題はない。
【0042】
纏めると、人気度の高い第1チャンクに関連付けられたパケットの転送処理については複数の転送処理部20に分散させる。一方、人気度の低い第2チャンクに関連付けられたパケットの転送処理については、基本的には、同じ1つの転送処理部20で処理させる。つまり、本発明は、人気度の低い第2チャンクに関連付けられたパケットの転送処理を同じ1つの転送処理部20で処理させる形態のみならず、人気度の低い第2チャンクに関連付けられたパケットの内の一部が、複数の転送処理部20に分散されて処理され得る形態と、を含むものである。
【0043】
また、本発明による転送装置100は、複数のIF10と、1つ以上のプロセッサと、プログラムを格納する1つ以上のメモリと、を有する装置で実現することができる。この場合、1つ以上のメモリに格納されたプログラムは、1つ以上のプロセッサで実行されると、当該装置を上記転送装置100として機能・動作させるための命令を含んでいる。また、このプログラムは、コンピュータが読み取り可能な記憶媒体に記憶されて、又は、ネットワーク経由で配布が可能なものである。
【0044】
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。
【符号の説明】
【0045】
10:インタフェース、20:転送処理部、11:制御部