JP6067880B2 - 最長プレフィックス・マッチング・スイッチによるスケーラブル記憶システム - Google Patents

最長プレフィックス・マッチング・スイッチによるスケーラブル記憶システム Download PDF

Info

Publication number
JP6067880B2
JP6067880B2 JP2015549979A JP2015549979A JP6067880B2 JP 6067880 B2 JP6067880 B2 JP 6067880B2 JP 2015549979 A JP2015549979 A JP 2015549979A JP 2015549979 A JP2015549979 A JP 2015549979A JP 6067880 B2 JP6067880 B2 JP 6067880B2
Authority
JP
Japan
Prior art keywords
server
directory
file
port
requested
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015549979A
Other languages
English (en)
Other versions
JP2016506679A (ja
Inventor
グアンユ・シ
ジアンミン・ウ
ビュン・チェ
Original Assignee
ホアウェイ・テクノロジーズ・カンパニー・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ホアウェイ・テクノロジーズ・カンパニー・リミテッド filed Critical ホアウェイ・テクノロジーズ・カンパニー・リミテッド
Publication of JP2016506679A publication Critical patent/JP2016506679A/ja
Application granted granted Critical
Publication of JP6067880B2 publication Critical patent/JP6067880B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Description

ネットワークまたは分散記憶システムは、増大する要求を満たすために大容量かつ高速なアクセスを伴うデータ・リポジトリをクライアントに提供するのに有用である。多数の分散記憶システムは、2種類のノード、即ち、サーバ(例えば、従来型のコンピュータ)とスイッチ(例えばEthernet(登録商標)またはInfiniBand)から成る。スイッチは、サーバに対する透過な通信チャネルを実現する。分散ファイル・システム(DFS)は、大容量および高速アクセスを提供するために複数のバックエンドの記憶サーバにに跨ってもよく、単一のサーバのように見えることによって統一なインタフェースをクライアントに提供する。クライアントは、ポータブル・オペレーティング・システム・インタフェース(POSIX)ファイル・システム・ネーミング・フォーマットまたはバイナリ・フラット・フォーマットの何れかを用いてファイル・コンテンツに名前を付けることができる。
記憶システムが、ファイル名を理解しどのサーバが当該ファイルを記憶しているかを判定するための1つまたは複数のコンポーネントを有してもよい。即ち、記憶システムは、ファイル名を当該ファイルが存在するサーバのアイデンティティまたは位置にマップする1つまたは複数のコンポーネントを有してもよい。典型的なネットワーク・アタッチト・システム(NAS)またはDFSでは、当該マッピングを1つまたは複数のメタデータ・サーバにより実装してもよい。当該システムに格納された各ファイルは当該メタデータ・サーバ(複数可)内にエントリを有するべきである。大部分のキー値記憶システムに対して、シングルホップまたはマルチホップの分散ハッシュ・テーブル(DHT)を使用してもよい。各記憶サーバはルーティング・テーブルを維持しなければならないかもしれず、これが、計算量が記憶サーバの数とファイルの数に基づく原因となる。当該システムが拡大するとき、拡張可能性に対する主な課題には、メタデータ・サーバまたはDHTノード内のルーティング・テーブルを維持することがある。したがって、データ記憶のための集中的なメタデータ・サーバまたはインデクサへの依存を克服するためのスケーラブルな分散記憶システムを構築する必要がある。また、記憶域の要求の増大のため、増大した拡張可能性を有する記憶システムが必要である。
1実施形態では本発明はスイッチにより実施される方法を含む。当該方法は、ファイルに対する要求をクライアントから受信するステップであって、当該ファイルは分散記憶システムに配置されているステップと、当該ファイルのディレクトリを当該要求から抽出するステップと、当該ディレクトリの最長プレフィックス・マッチング(LPM)を転送情報ベース(FIB)に対して実施してポートを識別するステップであって、当該FIBはディレクトリを当該スイッチのポートと関連付けるステップと、クライアント要求を、当該ファイルを含むサーバに当該識別されたポートを介して転送するステップであって、サーバは当該分散記憶システム内の複数のサーバの1つであるステップとを含む。
別の実施形態では、本発明は、ファイルに対する要求をクライアントから取得し、当該ファイルのディレクトリを当該要求から抽出し、当該ディレクトリのLPMをFIBに対して実施してポートを識別するように構成されたプロセッサであって、当該ファイルは分散記憶システムに配置されており、当該FIBはディレクトリを当該スイッチのポートと関連付けるプロセッサと、当該LPMモジュールに接続され、当該識別されたポートを介してクライアント要求を当該ファイルを含むサーバに転送するように構成された送信器であって、サーバは当該分散記憶システム内の複数のサーバの1つである送信器とを備えたスイッチを備える。
さらに別の実施形態では本発明は、ユーザ・ダイアグラム・プロトコル(UDP)要求をクライアントから受信するステップであって、当該UDP要求は要求されたファイルと当該ファイルのディレクトリを含むステップと、当該ディレクトリのLPMをインデックス・テーブルに対して実施してポートを決定するステップと、クライアントと当該ポートを関連付けるフロー・テーブルにエントリを生成するステップとを含む方法を含む。
さらに別の実施形態では、本発明は、分散記憶システムにおけるサーバ内の方法を含む。サーバはディレクトリ・ツリーの一部を格納し、当該方法は、負荷を測定するステップと、当該負荷が閾値より大きいと判定するステップと、最近傍のサーバを当該ディレクトリ・ツリーの一部の第1の部分の受信者として選択するステップと、当該第1の部分を当該最近傍のサーバに転送するステップと、メッセージを最近傍の最長プレフィックス・マッチング(LPM)スイッチに送信して当該第1の部分が送信されたことを示すステップとを含む。
これらおよび他の機能は、添付の図面と特許請求の範囲と関連して以下の詳細な説明からより明らかに理解される。
本発明をより十分に理解するために、添付図面と詳細な説明と関連して以下の簡単な説明を参照する。図面では、同じ参照番号は同じ部分を表す。
POSIXファイル・システム・ツリーにおけるプレフィックス・ベースのサーバ割当ての1実施形態の図である。 バイナリ0−1フラット名キー値記憶ファイル・システム・ツリーの1実施形態の図である。 LPMスイッチ・ベースの記憶システムの1実施形態の図である。 LPMスイッチを介して記憶サーバからコンテンツを取り出すための方法の1実施形態の図である。 クライアント、LPMスイッチ、およびサーバの間のシグナリングの1実施形態を示すプロトコル図である。 LPM方法の1実施形態の流れ図である。 LPMスイッチの1実施形態の略図である。 フィールド・プログラマブル・ゲート・アレイ(FPGA)チップで実装されたLPMスイッチの1実施形態の略図である。 汎用コンピュータシステムで実装されたLPMスイッチの1実施形態の略図である。 負荷分散方法の1実施形態の流れ図である。 サーバの1実施形態の略図である。
最初に、以下では1つまたは複数の実施形態の例示的な実装を提供するが、開示したシステムおよび/または方法を、現在公知であるかまたは現存するかに関わらず、任意数の技術を用いて実装してもよいことは理解される。本発明は、本明細書で例示し説明する例示的な設計と実装を含めて、以下で例示する例示的な実装、図面、および技術には決して限定されず、添付の特許請求の範囲内においてその均等物の完全な範囲に沿って修正してもよい。
本明細書では、最長プレフィックス・マッチング(LPM)スイッチを用いてファイルまたはコンテンツ名を記憶装置にマップすることによって、拡張可能性を高め、分散記憶システムのコストを削減するためのシステム、方法、および装置を開示する。LPMスイッチが、ディレクトリ・パスおよびファイル名の最長プレフィックス・マッチングに基づいてルーティングまたはスイッチングを行ってもよい。当該マッチングを、多数の分散ハッシュ・テーブル(DHT)の実装で使用されるように、POSIXファイル・システム・ネーミング記法(例えば、任意の近代オペレーティング・システムにおけるディレクトリ−サブディレクトリ−ファイル構造)および/またはバイナリ0−1フラット・ネーミング記法で利用してもよい。LPMスイッチを、従来型の媒体アクセス制御(MAC)またはインターネット・プロトコル(IP)プレフィックス・ベースのルーティング/スイッチングに加えて使用してもよい。プレフィックス集約を利用して、転送テーブルのサイズを削減し空間を節約してもよい。さらに、負荷分散機構は、プレフィックス集約を保ちつつ、複数のサーバ間にデータを拡散することで、過負荷のサーバを軽減してもよい。LPMスイッチの利用により、従来型の分散記憶アーキテクチャと比較してインデックス・サーバの必要性を排除してもよい。
図1は、POSIXファイル・システム・ツリー100におけるプレフィックス・ベースのディレクトリ・グルーピングの1実施形態を示す。ファイル・システム100が、これらのディレクトリ内に複数のディレクトリ、サブディレクトリ、およびファイルを備えてもよい。ディレクトリ・グルーピング110、120、130の各々を異なる記憶サーバに割り当ててもよい。任意数のサーバをファイル記憶システムで使用してもよい。記憶サーバが、ネットワークによりアクセス可能でデータを格納するためのメモリ装置を有する任意の装置であってもよい。記憶サーバが、階層ファイル・システム内の1つまたは複数のサブディレクトリを担当してもよい。例えば、第1のサーバがパス/usr/stone/下のファイルおよびサブディレクトリの全てを管理してもよく、第2のサーバがパス/usr/Michael/下のファイルおよびサブディレクトリの全てを管理してもよく、第3のサーバがパス/bin/下のファイルおよびサブディレクトリの全てを管理してもよい。当該実装により、第1のレベルのプレフィックス集約機構を可能としてもよい。当該機構において、/usr/stone/のようなプレフィックスが同一の名前のパス下のファイルおよびサブディレクトリを表してもよい。
代替的な実施形態では、記憶サーバが或る範囲のDHTネーミング空間を管理してもよく、当該空間においてバイナリ0−1フラット・ネーミング記法を使用してもよい。図2は、バイナリ0−1フラット名キー値記憶ファイル・システム・ツリー200内のプレフィックス・ベースのディレクトリ・グルーピングの1実施形態を示す。ファイル・システム200が、これらのディレクトリ内に複数のディレクトリ、サブディレクトリ、およびファイルを含んでもよい。異なるディレクトリ・グルーピング210、220、230の各々が或る範囲のDHTネーミング空間を管理してもよい。0−1フラット名空間をプレフィックスにより表してもよい。例えば、「010001」が範囲[0100010000、0100100000]を表してもよい。さらなる例として、第1のサーバがホスト範囲00下のファイルおよびサブディレクトリの全てを管理してもよく、第2のサーバがホスト範囲01下のファイルおよびサブディレクトリの全てを管理してもよく、第3のサーバがホスト範囲1下のファイルおよびサブディレクトリの全てを管理してもよい。
図1および図2の両方のファイル・システム・ツリーにより、ルーティング/スイッチング機能はサーバと対応するプレフィックスとの間のマッピングを知るだけでよくなる。したがって、当該システムの計算量をO(Nsvr)に削減することができる。Nsvrはサーバの数である。典型的なパーソナル・コンピュータ・ベースのサーバは無数のファイルおよびオブジェクトを簡単に管理することができる。結果として、Nsvrは8乃至10の規模でN(ファイルの数)より小さいかもしれない。ブロック/セクタの数が図2の実施形態におけるキーとして実装される場合、当該キー値記憶部が従来型のストレージ・アクセス・ネットワーク(SAN)として動作してもよい。
記憶サーバをそれに応じて割り当てると(例えば、図1のようなサーバ割当て)、サーバはそれが担当するプレフィックスを当該スイッチに通知してもよい。当該スイッチは通常、それが接続された第1のホップ・スイッチであってもよい。当該第1のホップ・スイッチが直接、当該メッセージを他のスイッチに転送してもよい。別の実施形態では、当該スイッチが、図2のバイナリ0−1フラット名ファイル・システムにおけるもののような集約をさらに実施してもよい。例えば、「00」のサーバと「01」のサーバがたまたま同一のスイッチに接続されているかもしれない。この場合、当該スイッチが、「00」および「01」を2つのルーティング・エントリとして発行するのではなく、集約されたプレフィックス「0」を他のスイッチに発行すると決定してもよい。
スイッチ内のLPMモジュールが、従来型のMACまたはIPプレフィックス・ベースのルーティング/スイッチングに加えて、最長プレフィックス・マッチングに基づくルーティング/スイッチングを実行してもよい。例えば、クライアントが幾つかのコンテンツを要求してもよく、当該名前をPOSIXファイル名またはバイナリ0−1フラット名であるかどうかに応じて、転送情報ベース(FIB)でチェックしてもよい。FIBが、受信されたパケットを転送すべき宛先を決定するために転送テーブルを使用してもよい。当該最長プレフィックス・マッチング原理を使用して、出力ポートを発見してもよい。次いでLPMスイッチがクライアント要求を正しいサーバに転送してもよい。長いプレフィックスのマッチにより、記憶システム・ネットワーク内の適切なサーバを発見する精度を高めることができる。
図3は、LPMスイッチ・ベースの記憶システム300の1実施形態を示す。システム300が、図3に示すようにネットワーク325で接続された複数のクライアント310、スイッチ1(SW1)320、スイッチ2(SW2)322、および複数のサーバ330を備えてもよい。2つのスイッチ320および322、3つのクライアント310、および3つのサーバ330のみが例示の目的のために示されているが、任意数の各コンポーネントをLPMスイッチ・ベースのシステムで使用してもよい。LPMスイッチを、新たなコンポーネントとしてまたは既存のEthernet(登録商標)スイッチもしくはIPルータを補完することによって構築してもよい。ネットワーク325が、ファイル・システム固有のLPMシステムでありうる1つまたは複数のスイッチ(例えば、320、322)を備えてもよい。システム300内の番号1乃至4がスイッチ320、322の入力/出力ポートを示してもよい。ポートが、入力機能と出力機能の両方を有してもよく、状況に応じて本明細書では入力ポートまたは出力ポートと称してもよい。クライアント310が、リモートのデータ記憶のニーズを有する装置上のアプリケーションであってもよい。当該装置が、例えば、デスクトップ・コンピュータ、タブレット、ラップトップ、またはスマート・フォンであってもよい。サーバ330が、ファイル・システム・ツリーの1つまたは複数のサブディレクトリをホストしてもよい。1つのサーバが、ルート・ディレクトリをホストしてもよい。表1は、サーバ330が異なるホスティングディレクトリに割り当てられるプレフィックス・ツリー割当ての1例を示す。
Figure 0006067880
プレフィックスツリー割当てに従い、(例えば図3のスイッチ320、322のような)例示的なLPMスイッチ上のFIBを表2および3のように編成してもよい。表2および3はそれぞれ図3のLPMスイッチ1 320およびLPMスイッチ2 322に対応する。これらの転送テーブルから、LPMスイッチは、当該ファイルのプレフィックスに応じて、どの出力ポートにフレームを転送すべきかを知ることができる。
Figure 0006067880
Figure 0006067880
例えば、クライアント310はパス「/home/dfs/**/**/.」下の幾つかのファイルを求める要求をSW1320に送信してもよく、SW1320は表2の転送情報に基づいて出力ポート4を選択してもよい。ポート4は当該表の中の他のプレフィックスと比べて、最長のプレフィックスを当該要求「/home/dfs/」と共有するので、ポート4を選択してもよい。当該転送に基づいて、当該要求は、ターゲット宛先(例えば、Svr_C 330)により近い1つのホップを取得することができる。次に、SW2 322は、転送された要求をその入力ポート3を通じて受信してもよい。SW2322は、同一のLPM機構を使用して受信された要求を出力ポート4に転送してもよい。出力ポート4はターゲット宛先Svr_C 330に接続する。ターゲット・サーバはこの時点で当該要求に組込みのクライアント310のMAC/IPアドレスで応答してもよい。サーバは、クライアントとの従来型の伝送制御プロトコル(TCP)接続のような新たな接続を構築してもよい。クライアントおよびサーバの間で転送されるさらなるパケットが、この同一のセッション中にLPMルックアップに関らなくてもよい。なぜならば、出力ポートの宛先が既に発見されているからである。
別の実施形態では、記憶システム300が、ファイル記憶システムの実施形態に加えてキー値オブジェクト記憶を指してもよい。表4は、DHTキー値記憶シナリオに対するプレフィックスツリー割当てを表す。当該シナリオでは、サーバ330を異なるホスティング範囲に割り当ててもよい。表5および6は、それぞれ、LPMスイッチ1320およびLPMスイッチ2322に対するFIBを示す。SW1320が追加のプレフィックス集約を実施してもよい。当該集約が、表6から分かるようにSW2322内のFIBを簡略化してもよい。キー値オブジェクト記憶に対するLPM機構がファイル・システム記憶と同様に機能してもよい。
Figure 0006067880
Figure 0006067880
Figure 0006067880
図4は、コンテンツを記憶サーバからLPMスイッチを介して取り出すための方法340の1実施形態である。方法340を、LPMスイッチ320のようなLPMスイッチで実施してもよい。ブロック345で、サーバ通知を受信してもよい。サーバ通知が、サーバが担当するディレクトリおよびサブディレクトリを含んでもよい。サーバ通知をLPMスイッチ上のポートを介して受信してもよい。ブロック350で、様々なディレクトリ/サブディレクトリのプレフィックスをFIBのようなメモリに記録してもよい。ブロック345および350を、完全なディレクトリ情報が取得されるまで複数のサーバの各々に対して実施してもよい。幾つかのサーバ通知を、LPMスイッチに直接取り付けられたサーバから直接受信してもよく、幾つかのサーバ通知を、他のLPMスイッチを介してサーバから受信してもよい。FIBを構築した後、コンテンツに対するクライアント要求を受信してもよい。ブロック355で、クライアント要求を受信する。クライアント要求が、ファイル名および当該ファイル名に対応するディレクトリ情報を含むメッセージであってもよい。ブロック360で、当該ファイル名のフルパス情報を抽出する。ブロック365で、当該フルパス情報をFIBと比較することによりLPMを実施する。当該LPMの結果、クライアント要求がそれを通じて転送されるポート番号が生成される。ブロック370で、クライアント要求を、当該識別されたポート番号を介して送信してもよい。最後に、ブロック375で、当該要求されたファイルを、担当するサーバから受信し、要求側のクライアントに転送してもよい。当該要求されたファイルを、1つのデータパケットまたは複数のデータパケットを介して通信してもよい。
図5は、クライアント402、LPMスイッチ404、およびサーバ406の間のシグナリングの1実施形態を示すプロトコル図400である。特に、プロトコル図400は、スイッチを通じてデータをサーバから取得するためのユーザ要求に続くコンポーネント間の通信を示す。複数のかかるコンポーネントをネットワーク内で相互接続してもよい。図400のコンポーネントをシステム300のような記憶システムで実装してもよく、クライアント310、スイッチ320、322、およびサーバ330のようなコンポーネントを使用してもよい。データを、クライアント402、LPMスイッチ404、サーバ406の間のペイロードにおいて開放型システム相互接続(OSI)レイヤ4プロトコル・データ単位(PDU)で送信してもよい。当該OSIレイヤ4PDUがユーザ・ダイアグラム・プロトコル(UDP)パケットまたは伝送制御プロトコル(TCP)パケットであってもよい。
LPMスイッチでの送信中に、図400のイベント・シーケンスを410で開始し、サーバ406の初期登録を行ってもよい。サーバ情報を含むUDPパケットをLPMスイッチ404により受信してもよい。その内容が、ペイロード内に配置されたディレクトリ・パスおよびファイル名を含んでもよいがこれらに限られない。ペイロード内のコンテンツは約256バイトであってもよい。
当該UDPパケットのペイロードから、インデックス・テーブル内のエントリを生成してもよい。当該エントリには、各ファイルに対応するインデックス(IDX)、ポート番号、MAC、IP、およびTCPアドレスが含まれる。当該インデックスを識別子として使用してもよく、当該ポート番号が特定のサーバに配置されたポートを指してもよい。例えば、サーバA330に5個のファイルがある場合、当該IDX値が当該ファイルごとに0から4の値であってもよい。同様に、当該ファイルの全てが同一のサーバ(例えば、サーバA330)の同一のポート番号(例えば、ポート2)に配置されている場合、当該ポート番号が当該ファイルの全てに対して2であってもよい。当該MAC、IP、およびTCPアドレスをパケット編集およびOSIレイヤ4転送のためにインポートしてもよい。
表7は、特定のファイルに対するサーバ情報を含むインデックス・テーブルの例を示す。当該表の中の値は、ファイル要求から取得したインデックス、ポート、およびMACアドレスを例示する役割を果たす。
Figure 0006067880
インデックス・テーブルの追加に続いて、セグメント・テーブル内のエントリをUDPパケットのペイロードから生成してもよい。表8は、図示した値を有するかかるセグメント・テーブルの1例を示す。この表が、対応するMACアドレスに沿ってLPMスイッチ側のポート番号を提供してもよい。SW−MACが、スイッチ側に対するMACアドレスを表してもよく、T−MACは最終宛先のターゲットのMACアドレスを表す。当該宛先がサーバまたはクライアントであってもよい。
Figure 0006067880
さらに、LPMスイッチ404がサーバ登録中に文字列および/またはポート・ルックアップ・メモリをプロビジョニングしてもよい。当該文字列および/またはポート・ルックアップ・メモリのプロビジョニングがBloomフィルタとともにハッシング・アルゴリズムを使用して、コンテンツ・データを変換し、当該ファイル名およびポート情報のサイズを削減してもよい。当該ハッシュ関数およびBloomフィルタを使用して、文字列およびポート・ルックアップ情報を格納するときのメモリ空間の探索を削減してもよい。hash(1)またはhash(10)関数のような様々なハッシング・アルゴリズムを使用してもよい。1実施形態では、ハッシングによりペイロード・コンテンツのバイト数を256バイトから3バイトに減らしてもよい。
サーバ登録が完了した後、クライアントが、2つのパケット、即ち、UDP要求およびTCP要求を内部的に生成する要求を発行してもよい。UDP要求を420でクライアント402からLPMスイッチ404に送信してもよい。当該UDP要求が、LPMスイッチが既に登録したコンテンツ情報の一部(例えば、パスおよびファイル名)を運搬してもよい。(表7のような)インデックス・テーブル内のサーバ情報にLPMスイッチによりアクセスして当該UDP要求の宛先を決定してもよい。(インデックスとディレクトリの表を用いて)LPMを実施して、インデックス・テーブル内のインデックスを決定してもよい。宛先/出力ポートを、インデックス・テーブル内のインデックスに関連付けられたポートを検索することによって決定してもよい。宛先/出力ポートが決定されると、LPMスイッチはエントリをフロー・テーブルに作成することができる。当該エントリは、クライアントからサーバ(CAM−CS)へのコンテンツ関連のメモリに関する情報を含んでもよい。同様に、LPMスイッチが、サーバからクライアントへのコンテンツ関連のメモリ(CAM−SC)に関する別のエントリを別のフロー・テーブルに作成してもよい。
表9および10はそれぞれ、CAM−CSおよびCAM−SCに対するかかるフロー・テーブルの例を示す。SMAC、SIP、およびSTCPにおける「S」はソースに対する具体的なアドレスを表し、DMAC、DIP、およびDTCPにおける「D」は宛先に対応するアドレスを表す。デュアル・ポートのランダム・アクセス・メモリ(RAM)値が、それぞれ、表9および10における対応するサーバに対するインデックスとクライアントに対するポートを示してもよい。
1実施形態では、当該フロー・テーブルが一定数のビットと一定数のエントリを格納してもよい。例えば、100x32のCAM−CSフロー・テーブルが、夫々100ビットである32個のエントリを有するテーブルを示してもよく、一方、200x32のCAM−SCテーブルが、夫々200ビットである32個のエントリを有するテーブルを示してもよい。
表9および10のフロー・テーブルは、上の表2、3、5、および6に示すFIBと同様なFIBの1例であってもよい。さらに、表9および10のフロー・テーブルを、クライアントからサーバへのフローおよびその逆のフローに対するエントリを含む、1つの双方向フロー・テーブルに結合してもよい。
Figure 0006067880
Figure 0006067880
UDP要求が送信された少し後(例えば、当該UDP要求後数秒以内に)、TCP要求を430でクライアント402から送信してもよい。LPMスイッチ404がTCPパケットを受信し、OSIレイヤ4スイッチングを実施してもよい。例えば、当該スイッチが、当該UDP要求から生成された対応するフロー・テーブルをチェックして、最長プレフィックス・マッチングを用いて当該パケットの宛先を決定してもよい。ターゲット・サーバ情報(例えば、出力ポート)を、表9のもののようなクライアント・サーバフロー・テーブル内のエントリに基づいて取得してもよい。LPMスイッチ404が、必要ならば当該TCP要求を編集して、続いて取り出した情報に従って当該パケットをサーバ406に転送してもよい。
クライアント402のTCP要求を受信した後、サーバ406が、440で、当該要求された1つまたは複数のファイルを運搬する1つまたは複数のTCPパケットの送信を介して応答してもよい。サーバ応答をLPMスイッチ404に送信してもよい。LPMスイッチ404は、サーバ・クライアント・フロー・テーブル(例えば、表10)をチェックして、コマンドまたは要求を発行した適切なクライアントに当該パケット(複数可)を転送してもよい。1実施形態では、LPMスイッチ404が、上述のようにサーバのTCP応答に対するOSIレイヤ4スイッチングを行ってもよい。
図6は、最長プレフィックス・マッチング方法の1実施形態の流れ図500である。流れ図500のステップを、少なくとも1つのクライアントおよびサーバのような少なくとも1つのネットワーク記憶装置を有するデータ記憶システムで実装してもよく、一方で、当該システムを少なくとも1つのスイッチと相互接続してもよい。例えば、流れ図500のブロックを、複数のクライアント310、複数のスイッチ320、322、および複数のサーバ330を備えたシステム300のような記憶システム内のLPMスイッチで実施してもよい。流れ図500はブロック510で開始し、LPMスイッチ(例えば、図3のLPMスイッチ320、322)が初期UDPパケットをサーバから受信してもよい。ブロック520で、LPMスイッチが、サーバ情報を当該UDPパケットから取得し、当該情報をインデックスおよびセグメント・テーブル内のエントリに登録してもよい。インデックス・テーブルおよびセグメント・テーブルを、将来のTCP要求の宛先に関するポート番号、IDX値、MAC、IP、およびTCPアドレスで更新してもよい。次に、ブロック530で、LPMスイッチが文字列/ポート・ルックアップ・メモリを提供してもよい。ハッシュ関数および/またはBloomフィルタを使用してバイト数を削減し、メモリ内の空間を節約してもよい。
サーバ登録の後、当該方法はブロック540で継続し、LPMスイッチはクライアントからの要求をUDPパケットの形で受信してもよい。当該要求が、要求されたファイルと、当該ファイルに対するディレクトリまたはパス名を含んでもよい。ブロック550で、LPMスイッチが続いてフロー・エントリを対応するFIBまたはフロー・テーブルに生成してもよい。1つのフロー・エントリが、パケットをクライアントからサーバに転送するための出力ポートに関する位置を含んでもよい。別のフロー・エントリを、クライアントに転送するためのパケットをサーバから受信する際に入力ポートが利用するために作成してもよい。これらのエントリを、表9および10のようなCAM−CSおよびCAM−SCフロー・テーブルに作成してもよい。さらに、別々のFIBテーブルのエントリを1つのテーブルに結合して、クライアントからサーバへおよびサーバからクライアントへのパケットの双方向のフローを可能としてもよい。
次に、ブロック560で、LPMスイッチがTCPパケットをクライアントから受信してもよい。ブロック570で、LPMスイッチがフロー・テーブルを使用してパケット用の出力ポートを決定してもよい。LPMスイッチが次いで、ブロック580の受信パケットを、識別した出力ポートを介してターゲット・サーバに転送してもよい。当該方法は、LPMスイッチがブロック590でサーバのTCP応答を受信しクライアントに送信することで終了する。当該TCP応答が、クライアントにより要求されたファイルを備えてもよい。LPMスイッチが、フロー・テーブル内のフロー・エントリに基づいて、どのクライアントに当該パケットを転送するかを判定してもよい。
クライアントの要求が適切な記憶サーバに到着するために、スイッチが、プレフィックスと出力ポートの間のマッピングを知る必要があってもよい。次いで、最長プレフィックス・マッチングを、クライアント要求およびFIBの間のスイッチを用いて実行してもよい。LPMスイッチが、取出す必要があるファイルのディレクトリ名と当該FIBのエントリの間の最長プレフィックス・マッチングを実施してもよい。当該最長プレフィックス・マッチング自体を、任意の従来型の最長プレフィックス・マッチングアルゴリズムを用いて実施してもよい。本明細書で説明するように、Bloomフィルタおよびハッシュ関数を使用して、最長プレフィックス・マッチングを実装してもよい。LPMスイッチが、2つの新たなFIB、即ち、POSIXファイル・システム内の<ディレクトリ/サブディレクトリのプレフィックス、次の出力ポート>およびバイナリ0−1フラット名キー値記憶ファイル・システム内の<0−1の列から成るプレフィックス、次の出力ポート>のうち少なくとも1つを実装してもよい。クライアントが要求を行うと、当該名前が、POSIXファイル・システム内のファイルに対するパス、または、キー値記憶内のオブジェクトに対するバイナリ0−1フラット名であってもよい。LPMスイッチが当該要求を取得し、それに応じてFIBをチェックし、どのエントリが最長プレフィックスを当該要求と共有するかを決定してもよい。次いで、当該要求を適切な出力ポートに転送してもよい。別の実施形態では、LPMスイッチングを、同様にDHTキー値記憶に対して実装してもよい。
さらなる例として、LPMスイッチが要求取得モジュールおよび最長プレフィックス・マッチング・モジュールを備えてもよい。当該要求取得モジュールが、クライアントの要求およびサーバの通知または応答を処理してもよい。要求を行う前に、クライアントがどのサーバと連絡すればよいか知らないかもしれない。要求を、LPMスイッチにより所望の宛先で認識できる仮想アドレスに送信してもよい。当該要求をLPMスイッチにより認識し解釈できる限り、要求を送信するための他の方法を実装してもよい。クライアントが、特定の要求に関して連絡すべきサーバの正確な位置を知らないかもしれない。しかし、LPMスイッチは、要求ごとにクライアントを適切なサーバに接続するインテリジェンスを有することができる。これにより、クライアント側は、分散システムをローカル・システムとみなすことができる。なぜならば、サーバ・クラスタの分散特性を、相互接続されたLPMスイッチのネットワークにより隠蔽できるからである。組込みの名前でクライアント要求を受信した後、当該モジュールは、コンテンツ名を抽出し、対応するFIBでLPMを開始してもよい。別の実施形態では、LPMスイッチの要求取得モジュールは、サーバ応答のためにサーバをクライアントに接続してもよい。クライアント要求をどの出力ポートに転送するかに関するフロー・エントリがFIB内に作成されたとき、追加のフロー・エントリをサーバからクライアントへの応答に対して生成してもよい。サーバ通知に関して、当該スイッチが、プレフィックスと、当該通知がそこからFIBに入るポートとを記録してもよい。
本発明で説明した機能/方法の少なくとも一部をネットワーク要素で実装してもよい。例えば、本発明の機能/方法を、ハードウェア、ファームウェア、および/またはハードウェアで実行するようにインストールされたソフトウェアを用いて実装してもよい。当該ネットワーク要素が、ネットワーク、例えば、スイッチ、ルータ、ブリッジ、サーバ、クライアント等を通じてデータを伝送する任意の装置であってもよい。図7は、LPMスイッチ600の1実施形態を示す。LPMスイッチ600が、ネットワークを通じてデータを伝送し処理する任意のネットワーク要素であってもよい。例えば、LPMスイッチ600は、上述の最長プレフィックス・マッチング機構を実装するコンテンツ・ルータまたは任意の装置またはスイッチであってもよい。LPMスイッチ600を、上述の記憶サーバ割当て、プレフィックス集約、および最長プレフィックス・マッチングの戦略を実装またはサポートするように構成してもよい。
LPMスイッチ600が、送受信器(Tx/Rx)612に接続された1つまたは複数のポートまたは面610を備えてもよい。送受信器612が送信器および受信器を備えてもよい。送受信器612を、フレームを送信し、かつ/または、フレームを他のノードから受信するためのポート610に接続してもよい。1つの送受信器612を、メッセージをサーバから受信しサーバに送信するための分散記憶システム内のサーバに接続してもよい。例えば、1つの送受信器612を、ブロック345、370、および/または510を実施し、ブロック375で説明したようにコンテンツを転送し、かつ/または、図5に示すようにサーバ406との通信を実施するように構成してもよい。第2の送受信器612を、メッセージをクライアントから受信しクライアントに送信するために当該クライアントに接続してもよい。例えば、第2の送受信器612を、ブロック355を実施するか、または、図5に示すようにクライアント402との通信を実施するように構成してもよい。
プロセッサ625を、送受信器612に接続して、フレームを処理し、かつ/または、フレームを送信すべきノードを決定してもよい。プロセッサ625が、要求取得モジュール627、LPMモジュール628、およびメモリ・モジュール622を有する1つまたは複数のマルチ・コアプロセッサを備えてもよい。要求取得モジュール627が、クライアントおよび/またはサーバからの要求の認識および取得のような、LPMスイッチの上述の性質を実装してもよい。要求または応答を送信するために、モジュール627が、サーバをクライアントに接続するかまたはその逆を行ってもよい。LPMモジュール628が、メモリ・モジュール622を利用しつつ最長プレフィックス・マッチングに基づいてルーティング/スイッチングを行ってもよい。メモリ・モジュール622は、データ記憶、バッファ等として機能してもよい。プロセッサ625を、中央演算装置(CPU)チップ、コア(例えば、マルチ・コアプロセッサ)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特殊用途向け集積回路(ASIC)、および/またはデジタル信号プロセッサ(DSP)のうち1つまたは複数として実装してもよい。ポート610は、電気的および/または光学的な送信および/または受信のコンポーネントを含んでもよい。LPMスイッチ600が、ルーティング判定を行うルーティング・コンポーネントであってもよい。
メモリ・モジュール622が、キャッシュ、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、または二次記憶、またはそれらの任意の組合せのような、データを格納するための任意の装置であってもよい。二次記憶は一般に、1つまたは複数のディスク・ドライブまたはテープ・ドライブを備え、データの不揮発性記憶に使用され、RAMが全ての動作データを保持するのに十分に大きくない場合にはオーバフロー・データ記憶装置として使用される。二次記憶を使用して、実行のために選択するときにRAMにロードされるプログラムを記憶してもよい。ROMは、プログラム実行中に読み出される命令およびおそらくはデータを格納するために使用される。ROMは、二次記憶の大メモリ容量に対して一般に小さいメモリ容量を有する不揮発性メモリ装置である。RAMは、揮発性データを格納し、おそらくは命令を記憶するために使用される。ROMとRAMの両方へのアクセスは一般に二次記憶に対するものよりも高速であり、キャッシュへのアクセスは一般に任意のおよび他の種類のメモリより高速である。マッピング情報を、メモリ・モジュール622の転送情報ベース(FIB)624で維持してもよい。FIB624を、LPM方法におけるセグメント、インデックス、文字列および/またはポート・ルックアップ・メモリ、およびフロー・テーブル(例えば、図6)のようなサーバ情報を格納するために使用してもよい。
実行可能命令をプログラムしかつ/またはLPMスイッチ600にロードすることによって、プロセッサ625およびメモリ622の少なくとも1つが変更され、部分的にLPMスイッチ600が特定のマシンまたは装置、例えば、本明細書で教示した新規な機能を有するマルチ・コア転送アーキテクチャに変換されることは理解される。実行可能ソフトウェアをコンピュータにロードすることで実装できる機能を公知な設計規則によりハードウェア実装に変換できることは、電気工学やソフトウェア工学にとって基本的である。ソフトウェアで実装することとハードウェアで実装することとの間の決定は一般に、ソフトウェア領域からハードウェア領域への変換に関与する任意の問題ではなく、設計の安定性と生成されるユニットの数の考慮に依存する。一般に、頻繁な変更を依然として受ける設計は、ソフトウェアで実装されるのが好ましいかもしれない。なぜならば、ハードウェア実装を再検討するのはソフトウェア設計を再検討するよりも高価であるからである。一般に、大量生産に適した設計はハードウェア、例えば、ASICで実装されるのが好ましいかもしれない。なぜならば、大量生産では、ハードウェア実装がソフトウェア実装より高価でないかもしれないからである。しばしば、設計がソフトウェア形式で開発され試験され、後に、公知な設計規則により、ソフトウェアの命令を組み込んだ特殊用途向け集積回路における均等なハードウェア実装に変換されるかもしれない。同様に、新たなASICにより制御されるマシンは特定のマシンまたは装置であるので、同様に、プログラムされかつ/または実行可能命令をロードしたコンピュータも特定のマシンまたは装置とみなしてもよい。
図8は、XILINX VIRTEX−5 FPGAのようなフィールド・プログラマブル・ゲート・アレイ(FPGA)チップで実装されたLPMスイッチ700の1実施形態のブロック図を示す。チップ700が、先入れ先出し(FIFO)入力702、パケット・アナライザ704、LPM文字列/ポート・ルックアップ・ブロック706、L4スイッチング・ブロック712、およびFIFO出力714を備えてもよい。送信中に、FPGAチップ700がパケットを入力702で受信してもよく、各パケットのコンテンツをパケット・アナライザ704によりアクセスしてもよい。LPM文字列/ポート・ルックアップ・ブロック706が、図5で説明したように、プレフィックス・マッチング方法をパケット・コンテンツに対して実施してもよい。ファイルごとのMAC、IP、およびTCPアドレスおよびポート番号を対応する表で文書化してもよい。LPM文字列/ポート・ルックアップ・ブロック706がさらに、ルール・テーブル708およびフロー・テーブル710を備えてもよい。ルール・テーブル708を使用して、フロー・テーブルに対するソース情報を抽出してもよく、当該フロー・テーブルが、クライアント・サーバおよびサーバ・クライアントのフローに関するエントリを含んでもよい。L4スイッチング・ブロック712が、フロー検索、パケット編集、LPMスイッチにより受信されたものの転送を行ってもよい。次いで、当該パケットを、FIFO出力714を介してその宛先に送信してもよい。1実施形態では、LPMスイッチ700をNetFPGAカード上に実装してもよい。
図9は、汎用コンピュータシステムで実装されたLPMスイッチ800の1実施形態の略図である。システム800が、中央演算装置(CPU)802、ネットワーク・インタフェース・コントローラ(NIC)804、グラフィック処理ユニット(GPU)806、GPUランダム・アクセス・メモリ(RAM)808、メインRAM810、およびローカル・バス816を備えてもよい。メインRAM810がさらにメイン・メモリ・バッファ(mbuf)812およびGPUメモリ・バッファ(gbuf)814を備えてもよい。メイン・バッファ812をCPU・ベースの処理に使用してもよく、GPUメモリ・バッファ814をGPU・ベースの処理に使用してもよい。CPU802がINTELコア(Iコア)818を備えてもよい。
さらに、LPMスイッチ(例えば、スイッチ320、322)を、アクセス制御リスト(ACL)、ポリシ・ベース・ルーティング(PBR)、およびOpenFlowセットアップで実装してもよい。これらの構成に関して、サーバが、従来型のEthernet(登録商標)スイッチをそのままに保ちつつ、POSIXファイル・システム名および/またはDHTフラット名に対して追加のLPMを実施してもよい。クライアント(例えば、クライアント310)が、要求を仮想の特定アドレス(例えば、IP、MAC、またはVLAN ID)に送信してもよい。次いで、当該スイッチが要求されたパケットを特定し、当該LPMサーバ(例えば、サーバ330)に転送できてもよい。
サーバの過負荷を防止するため、負荷分散機構を、システム300のようなLPMスイッチ・ベースのシステムで実装してもよい。作業負荷は動的に変化しうるので、プレフィックス集約を保ちつつ、データを複数のサーバの間で拡散してもよい。ノードが潜在的な過負荷に遭遇した場合、ノードは一部のサブディレクトリまたは部分範囲を他のサーバにオフロードまたは移動させてもよい。このマイグレーションが完了すると、新たなサーバがその新たな通知を発行してもよい。当該潜在的に過負荷のサーバは、「距離」の優先度に基づいてオフロード・サーバの候補を選択する。当該距離は、候補とそれ自体の間のホップ数を指す。例えば、サーバA330が、その作業負荷の一部を別のサーバにオフロードしたいかもしれない。サーバA300は先ず、そのコンテンツの一部を、サーバBとサーバCの両方が適格でありオフロードに利用可能であるとしても、サーバCでなくサーバBに移動してもよい。負荷分散におけるサーバAのサーバBに対する優先は主に、サーバ間の減少した距離およびより少ないホップ数に起因するものである。
このホップ・ベースのマイグレーション優先機構により、LPMスイッチにより行われた潜在的なプレフィックス集約によりFIBの安定性を高めることができる。上述の例では、どれだけ多くのサーバAのサブディレクトリまたは部分範囲がサーバBに移動されても、SW1のFIBを除いて任意のFIBを更新する必要がなくともよい。したがって、リップルを更新するFIBを局所領域に制限してもよい。この時点で、FIBの計算量をO(Nsw)に軽減することができる。Nswはスイッチの数である。幾つかの適用では、NswがNsvrのほほ15分の1であってもよい。このマイグレーションの間、オリジナル・サーバが依然として要求をその担当するディレクトリまたは範囲に送信してもよい。このマイグレーションの後、サーバが、どのサーバに暫くオフロードするかの記録を保持してもよい。FIBが適時に更新されなかった場合には、サーバが、移動されたファイルに対する要求を受信してもよい。この場合、サーバが当該要求を新たなホストに転送してもよく、当該ホストで、着目するファイルを取り出してもよい。
図10は、記憶システム300のような記憶システム内の負荷分散方法850の1実施形態の流れ図である。方法900をサーバ330のようなサーバで実装してもよい。ブロック855で登録メッセージまたは通知が送信される。当該登録メッセージが、サーバが担当する分散記憶システム内のディレクトリの指示を提供してもよい。当該登録メッセージが、前述したもの、例えば、ブロック510またはブロック345に関して説明したものであってもよい。ブロック860でサーバの負荷を測定してもよい。当該負荷が、例えば、所定の時間間隔でのメモリ要求数またはサーバに接続された線で消費された帯域幅の測定値であってもよい。ブロック865で、当該負荷が所定の閾値を超えるかどうかを判定する。当該負荷が当該閾値を超えない場合、ブロック860を後の時点で繰り返してもよい。当該負荷が閾値を超える場合、当該方法はブロック870に進み、方法850を実行するサーバの1ホップ以内でサーバが選択される。当該負荷が閾値を超える場合、これは、サーバが担当するファイルの一部を別のサーバに転送すべきという指示である。次にブロック875で、ディレクトリ・ツリーの一部を選択されたサーバに移動して、方法850を実行するサーバの負荷を削減する。また、ブロック875で、メッセージを最近傍のLPMスイッチに送信して、当該ディレクトリ・ツリーの一部の転送に基づいてそのFIBテーブルを更新するようにLPMスイッチに指示する。
図11はサーバ900の1実施形態の略図である。サーバ900は、二次記憶904、読取り専用メモリ(ROM)906、ランダム・アクセス・メモリ(RAM)908を含むメモリ装置と通信するプロセッサ902(CPUと称してもよい)と、送受信器912とを備える。プロセッサ902を、1つまたは複数のCPUチップ、コア(例えば、マルチ・コアプロセッサ)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特殊用途向け集積回路(ASIC)、および/もしくはデジタル信号プロセッサ(DSP)として実装してもよく、かつ/または、1つまたは複数のASICの一部であってもよい。プロセッサ902が、負荷分散機構におけるサーバ割当ておよびプレフィックス集約を実装してもよく、または、これらを実施するように構成してもよい。
二次記憶904は一般に、1つまたは複数のディスク・ドライブまたはテープ・ドライブから構成され、データの不揮発性記憶に使用され、RAM908が全ての動作データを保持するのに十分に大きくない場合にはオーバフロー・データ記憶装置として使用される。二次記憶904を使用して、実行のために選択するときにRAM908にロードされるプログラムを記憶してもよい。ROM906は、プログラム実行中に読み出される命令およびおそらくはデータを格納するために使用される。ROM906は、二次記憶904の大メモリ容量に対して一般に小さいメモリ容量を有する不揮発性メモリ装置である。RAM908は揮発性データを格納し、おそらくは命令を記憶するために使用される。ROM906およびRAM908の両方に対するアクセスは一般に二次記憶904に対するものよりも高速である。RAM908および二次記憶904を結合して、図1および2で説明したようなディレクトリ構造にファイルを格納してもよい。サーバ900が、図3のサーバ330の機能および/または方法850を実装してもよい。
送受信器912が、サーバ900の出力および/または入力装置の役割を果たしてもよく、送受信器912がさらに送信器、受信器、またはそれらの組合せを備えてもよい。送受信器912が、モデム、モデム・バンク、Ethernet(登録商標)カード、ユニバーサル・シリアル・バス(USB)インタフェース・カード、シリアル・インタフェース、トークン・リング・カード、ファイバ分散データ・インタフェース(FDDI)カード、無線ローカル・エリア・ネットワーク(WLAN)カード、符号分割多重アクセス(CDMA)、グローバル移動体通信ステム(GSM(登録商標))、ロングターム・エボリューション(LTE)、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(WiMAX)、および/または他のエア・インタフェース・プロトコル無線送受信器カードのような無線送受信器カード、および他の周知なネットワーク装置の形態をとってもよい。送受信器912により、プロセッサ902がインターネットおよび/または1つまたは複数のイントラネットおよび/または1つまたは複数のLPMスイッチと通信できてもよい。実行可能命令をプログラムしかつ/またはサーバ900にロードすることによって、プロセッサ902、ROM906、およびRAM908の少なくとも1つが変更され、部分的にサーバ900が本明細書で教示した新規な機能を有する負荷分散サーバのような特定のマシンまたは装置に変換されることは理解される。
少なくとも1つの実施形態が開示され、当業者が行う当該実施形態(複数可)および/または当該実施形態(複数可)の機能の変形、組合せ、および/または修正は本開示の範囲内にある。当該実施形態(複数可)の機能を結合、統合、および/または省略したことから生ずる代替的な実施形態も本開示の範囲内にある。数値的な範囲または限定を明示的に述べたが、かかる明示的な範囲または限定が、明示的に述べた範囲または限定に入る同様な規模の反復的な範囲または限定を含むと理解してもよい(例えば、約1から約10とは2、3、4等を含み、0.10より大きいとは0.11、0.12、0.13等を含む)。例えば、下限がRで上限がRである数値範囲が開示される場合は常に、当該範囲に入る任意の数が具体的に開示される。特に、当該範囲内の以下の数が具体的に開示される。即ち、R=R+k*(R−R)である。kは1パーセントの増分で1パーセントから100パーセントまで変動する変数である。即ち、kは1パーセント、2パーセント、3パーセント、4パーセント、5パーセント、・・・、50パーセント、51パーセント、52パーセント、・・・、95パーセント、96パーセント、97パーセント、98パーセント、99パーセント、または100パーセントである。さらに、上で定義した2つのR個の数で定義された任意の数値範囲も具体的に開示されている。「約」という用語の使用は、特に断らない限り、それに続く数値の+/−10%を意味する。請求項の任意の要素に関する「場合によっては」という用語は、当該要素が必要であること、または、当該要素が必要でないことを意味し、両方の代替物が当該請求項の範囲内にある。備える、含む、および有するといった広い用語の使用は、〜から構成される、〜から本質的に構成される、および〜から実質的に成るといった狭い用語に対するサポートを提供すると理解してもよい。したがって、保護範囲は、上述の説明により制限されないが、添付の諸請求項により定義され、その範囲は、諸請求項の発明特定事項の全ての均等物を含む。夫々および全ての請求項は、さらなる開示として本明細書に組み込まれ、諸請求項は本発明の実施形態(複数可)である。本開示における文献の議論は、それが先行技術、特に、公開日が本願の優先日より後の任意の文献であると認めるものではない。本明細書で引用した全ての特許、特許出願、および刊行物の開示は、それらが本明細書を補完する、例示的な、手続き的な、または他の詳細を提供する範囲において、引用により取り込まれる。
幾つかの実施形態を本発明で提供したが、開示したシステムと方法を、本発明の趣旨または範囲から逸脱しない他の多数の具体的な形態で具体化してもよいことは理解される。本明細書の例は、例示的であり限定的なものではないと考えるべきであり、本発明は本明細書で与えた詳細に限定されない。例えば、様々な要素またはコンポーネントを組み合せるかもしくは別のシステムに統合してもよく、または、特定の機能を省略するかまたは実装しなくともよい。
さらに、様々な実施形態において別個または別々に説明し例示した技術、システム、サブシステム、および方法を、本発明の範囲から逸脱することなく組み合わせるかまたは他のシステム、モジュール、技術、もしくは方法と統合してもよい。互いに接続または直接接続または通信するとして図示または説明された他の項目を、電気的、機械的、またはそれ以外に関わらず、何らかのインタフェース、装置、または中間構成要素を通じて間接的に接続するかまたは通信させてもよい。変更、置換え、または代替の他の例は当業者により確認でき、本発明で開示した趣旨と範囲から逸脱せずに行うことができる。
402 クライアント
404 LPMスイッチ
406 サーバ
600 LPMスイッチ
610 ポート
622 メモリ
625 プロセッサ
627 要求取得モジュール
628 LPMモジュール
700 LPMスイッチ
702 入力FIFO
704 パケット分析器
706 LPM文字列/ポート検索
708 ルール・テーブル
710 フロー・テーブル
712 L4スイッチング
714 出力FIFO
810 メインRAM
816 ローカル・バス
902 プロセッサ
904 二次記憶
912 送受信器

Claims (16)

  1. スイッチにより実施される方法であって、
    複数のサーバ通知を分散記憶システム内の複数のサーバから前記スイッチ内の複数のポートを介して受信するステップであって、前記サーバ通知は記憶のために各サーバに割り当てられたディレクトリのプレフィックスを含む、ステップと、
    転送情報ベース(FIB)を前記サーバ通知から構築するステップであって、前記FIBは前記ポートに対応する前記ディレクトリのプレフィックスを示す、ステップと、
    ファイルに対する要求をクライアントから受信するステップであって、前記ファイルは分散記憶システムに配置されているステップと、
    要求された前記ファイルのディレクトリを前記要求から抽出するステップと、
    要求された前記ディレクトリの最長プレフィックス・マッチング(LPM)を前記FIBに対して実施して、前記要求されたディレクトリに対応するポートを識別するステップであって、ハッシュ関数が前記ディレクトリのプレフィックスの各々をバイナリ・シーケンスに関連付けるために使用され、前記FIBは前記ディレクトリのプレフィックスを前記ポートに前記ハッシュ関数を介して関連付け、LPMを実施するステップは、前記ハッシュ関数を用いて前記要求されたディレクトリをハッシュして要求されたバイナリ・シーケンス値を生成するステップを含む、ステップと、
    前記要求されたバイナリ・シーケンス値のLPMを前記FIBに対して実施して前記要求されたディレクトリに対応するポートを識別し、前記クライアントの要求を、前記ファイルを含むサーバに前記識別されたポートを介して転送し、前記クライアントの要求に応答して、前記ファイルを前記サーバから前記識別されたポートを介して受信し、前記ファイルを前記クライアントに転送するステップと、
    を含む、方法。
  2. スイッチであって、
    サーバ通知を分散記憶システム内のファイルを含むサーバから受信するように構成されたポートであって、前記サーバ通知は記憶のために前記サーバに割り当てられたディレクトリのプレフィックスを含む、ポートと、
    前記サーバ通知を受信する前記ポートに対応する前記サーバに割り当てられた前記ディレクトリのプレフィックスを示す転送情報ベース(FIB)を含む、メモリと、
    前記サーバ通知から前記FIBにデータ投入し、
    前記ファイルに対する要求をクライアントから取得し、
    前記ファイルの要求されたディレクトリを前記要求から抽出し、
    前記要求されたディレクトリの最長プレフィックス・マッチング(LPM)を前記FIBに対して実施して、前記ファイルを含む前記サーバに対応するポートを識別する、
    ように構成されたプロセッサであって、ハッシュ関数が前記ディレクトリのプレフィックスの各々をバイナリ・シーケンスに関連付けるために使用され、前記FIBは前記ディレクトリのプレフィックスを前記ポートに前記ハッシュ関数を介して関連付け、LPMを実施することは、前記ハッシュ関数を用いて前記要求されたディレクトリをハッシュして要求されたバイナリ・シーケンス値を生成することと、前記要求されたバイナリ・シーケンス値のLPMを前記FIBに対して実施して前記要求されたディレクトリに対応するポートを識別することを含む、プロセッサと、
    前記プロセッサに接続され、前記クライアントの要求を、前記ファイルを含むサーバに前記識別されたポートを介して転送するように構成された送信器
    前記クライアントの要求に応答して、前記ファイルを前記サーバから前記識別されたポートを介して受信するように構成された受信器と、
    前記ファイルを前記クライアントに転送するように構成された第2の送信器と、
    を備えた、スイッチ。
  3. 複数のユーザ・ダイアグラム・プロトコル(UDP)登録メッセージを分散記憶システム内の複数のサーバからスイッチ内の複数のポートを介して受信するステップであって、各UDP登録メッセージは、前記サーバが担当する少なくとも1つのディレクトリを含む、ステップと、
    ポートと、対応するディレクトリに対する対応する担当サーバとを関連付けるインデックス・テーブルを生成するステップと、
    UDP要求をクライアントから受信するステップであって、前記UDP要求は要求されたファイルと前記ファイルのディレクトリに関する情報を含むステップと、
    前記ファイルのディレクトリの最長プレフィックス・マッチング(LPM)を前記インデックス・テーブルに対して実施して、前記要求されたファイルに対する前記担当サーバに対応するポートを決定するステップであって、ハッシュ関数が前記ディレクトリのプレフィックスをバイナリ・シーケンスに関連付けるために使用され、前記インデックス・テーブルは、前記ディレクトリのプレフィックスを前記ポートに前記ハッシュ関数を介して関連付け、LPMを実施するステップは、前記ハッシュ関数を用いて前記ディレクトリをハッシュして、要求されたバイナリ・シーケンス値を生成するステップと、前記要求されたバイナリ・シーケンス値のLPMを前記インデックス・テーブルに対して実施して前記ディレクトリに対応するポートを識別するステップとを含む、ステップと、
    前記クライアントと、前記担当サーバに対応するポートを関連付けるフロー・テーブルにエントリを生成するステップと、
    第2のクライアント要求に応答して、前記要求されたファイルの少なくとも一部を前記担当サーバから前記識別されたポートを介して受信するステップと、
    前記要求されたファイルの一部を前記クライアントに転送するステップと、
    を含む、方法。
  4. 伝送制御プロトコル(TCP)要求を前記クライアントから受信するステップと、
    前記TCP要求を受信したことに応答して前記ポートを前記フロー・テーブルから検索するステップと、
    前記TCP要求をサーバに前記ポートを介して転送するステップであって、前記サーバは分散記憶システム内の複数のサーバの1つであり、前記サーバは前記要求されたファイルを格納するステップと、
    をさらに含む、請求項に記載の方法。
  5. TCP応答を前記サーバから受信するステップであって、前記TCP応答は前記要求されたファイルの少なくとも一部を含むステップと、
    前記TCP応答を前記クライアントに転送するステップと、
    をさらに含む、請求項に記載の方法。
  6. ユーザ・ダイアグラム・プロトコル(UDP)登録メッセージを前記サーバから前記ポートを介して受信するステップであって、前記登録メッセージは前記サーバが担当する少なくとも1つのディレクトリを含むステップと、
    前記ポートを前記少なくとも1つのディレクトリに関連付ける前記インデックス・テーブルに少なくとも1つのエントリを生成するステップと、
    をさらに含む、請求項またはに記載の方法。
  7. UDP登録メッセージを前記複数のサーバ内の残りのサーバの各々から受信するステップであって、前記UDP登録メッセージの各々は対応するサーバが担当するディレクトリを含むステップと、
    前記インデックス・テーブルの残りを前記UDP登録メッセージから生成するステップと、
    をさらに含む、請求項に記載の方法。
  8. 前記インデックス・テーブルの残りを生成するステップは、ハッシュ関数を用いて前記ディレクトリをハッシュして各ディレクトリに対応するバイナリ文字列を生成し、前記バイナリ文字列を前記インデックス・テーブルに格納するステップを含む、請求項に記載の方法。
  9. 分散記憶システムにおけるサーバ内の方法であって、前記サーバはディレクトリ・ツリーの一部を格納し、前記方法は、
    負荷を測定するステップと、
    前記負荷が閾値より大きいと判定するステップと、
    最近傍のサーバを前記ディレクトリ・ツリーの前記一部の第1の部分の受信者として選択するステップと、
    前記第1の部分を前記最近傍のサーバに転送するステップと、
    前記第1の部分が送信されたことを示すメッセージを最近傍の最長プレフィックス・マッチング(LPM)スイッチに送信するステップと、
    を含む、方法。
  10. 前記負荷は或る期間におけるファイルに対する要求の数であり、前記負荷を測定するステップは、前記期間における要求の数を計数するステップを含む、請求項に記載の方法。
  11. 前記分散記憶システムは複数のサーバを含み、前記ディレクトリ・ツリーは前記複数のサーバで分散され、前記サーバは前記複数のサーバ内にある、請求項または10に記載の方法。
  12. 前記サーバが前記ディレクトリ・ツリーの前記一部を格納することを示す登録メッセージを前記最近傍のLPMスイッチに送信するステップをさらに含む、請求項11に記載の方法。
  13. ユーザ・ダイアグラム・プロトコル(UDP)登録メッセージを分散記憶システム内の複数のサーバからスイッチ内の複数のポートを介して受信し、
    UDP要求をクライアントから受信する
    ように構成された送受信器であって、前記UDP登録メッセージは、前記サーバが担当する少なくとも1つのディレクトリを含み、前記UDP要求は要求されたファイルと前記要求されたファイルのディレクトリに関する情報を含む1つまたは複数の送受信器と、
    前記送受信器に接続され、
    前記ポートと、前記ディレクトリに対する対応する担当サーバとを関連付けるインデックス・テーブルを前記UDP登録メッセージに基づいて生成し、
    前記要求されたディレクトリの最長プレフィックス・マッチング(LPM)を前記インデックス・テーブルに対して実施して、前記担当サーバに対応するポートを決定し、
    前記クライアントと前記担当サーバに対応する前記ポートを関連付けるフロー・テーブルにエントリを生成する、
    ように構成されたプロセッサであってハッシュ関数が前記要求されたディレクトリのプレフィックスをバイナリ・シーケンスに関連付けるために使用され、前記インデックス・テーブルは、前記要求されたディレクトリのプレフィックスを前記ポートに前記ハッシュ関数を介して関連付け、LPMを実施することは、前記ハッシュ関数を用いて前記要求されたディレクトリをハッシュして、要求されたバイナリ・シーケンス値を生成することと、前記要求されたバイナリ・シーケンス値のLPMを前記インデックス・テーブルに対して実施して前記要求されたディレクトリに対応するポートを識別するステップこととを含む、プロセッサと、
    を備え、
    前記送受信器はさらに、第2のクライアント要求に応答して、前記要求されたファイルの少なくとも一部を前記担当サーバから前記対応するポートを介して受信し、前記要求されたファイルの一部を前記クライアントに転送するように構成される、
    装置。
  14. 前記送受信器はさらに、伝送制御プロトコル(TCP)要求を前記クライアントから受信するように構成され、前記プロセッサはさらに、前記TCP要求を受信したことに応答して前記ポートを前記フロー・テーブルから検索するように構成され、前記装置は、前記TCP要求をサーバに前記ポートを介して転送するように構成された第2の送受信器をさらに備え、前記サーバは分散記憶システム内の複数のサーバの1つである、請求項13に記載の装置。
  15. 前記第2の送受信器はさらに、TCP応答を前記サーバから受信するように構成され、前記TCP応答は前記要求されたファイルの少なくとも一部を含み、前記送受信器はさらに、前記TCP応答を前記クライアントに転送するように構成された、請求項14に記載の装置。
  16. 前記第2の送受信器はさらに、ユーザ・ダイアグラム・プロトコル(UDP)登録メッセージを前記サーバから前記ポートを介して受信するように構成され、前記登録メッセージは前記サーバが担当する少なくとも1つのディレクトリを含み、前記プロセッサはさらに、前記ポートを前記少なくとも1つのディレクトリに関連付ける前記インデックス・テーブルに少なくとも1つのエントリを生成するように構成された、請求項14に記載の装置。
JP2015549979A 2012-12-31 2013-12-31 最長プレフィックス・マッチング・スイッチによるスケーラブル記憶システム Active JP6067880B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261747670P 2012-12-31 2012-12-31
US61/747,670 2012-12-31
US201361784783P 2013-03-14 2013-03-14
US61/784,783 2013-03-14
US13/913,654 US9172743B2 (en) 2012-12-31 2013-06-10 Scalable storage systems with longest prefix matching switches
US13/913,654 2013-06-10
PCT/CN2013/091094 WO2014101884A1 (en) 2012-12-31 2013-12-31 Scalable storage systems with longest prefix matching switches

Publications (2)

Publication Number Publication Date
JP2016506679A JP2016506679A (ja) 2016-03-03
JP6067880B2 true JP6067880B2 (ja) 2017-01-25

Family

ID=51018485

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015549979A Active JP6067880B2 (ja) 2012-12-31 2013-12-31 最長プレフィックス・マッチング・スイッチによるスケーラブル記憶システム

Country Status (6)

Country Link
US (1) US9172743B2 (ja)
EP (1) EP2936776B1 (ja)
JP (1) JP6067880B2 (ja)
CN (1) CN105027527B (ja)
AU (1) AU2013369728B2 (ja)
WO (1) WO2014101884A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6139386B2 (ja) 2013-11-27 2017-05-31 株式会社東芝 プログラマブルコントローラ
CN105637831B (zh) * 2013-12-12 2019-04-19 Nec实验室欧洲有限公司 用于分析数据流的方法和系统
JP6517474B2 (ja) * 2014-05-12 2019-05-22 株式会社東芝 プログラマブルコントローラ、及び演算処理システム
KR102428142B1 (ko) * 2014-10-28 2022-08-02 소니그룹주식회사 수신 장치, 송신 장치, 및 데이터 처리 방법
US10560307B2 (en) * 2014-12-16 2020-02-11 Oracle International Corporation Method and system for management of an openflow agent in openflow devices
US9960999B2 (en) * 2015-08-10 2018-05-01 Futurewei Technologies, Inc. Balanced load execution with locally distributed forwarding information base in information centric networks
US20170131899A1 (en) * 2015-11-08 2017-05-11 A3Cube, Inc. Scale Out Storage Architecture for In-Memory Computing and Related Method for Storing Multiple Petabytes of Data Entirely in System RAM Memory
CN108287840B (zh) * 2017-01-09 2022-05-03 北京大学 一种基于矩阵哈希的数据存储和查询方法
US10581738B2 (en) * 2018-01-19 2020-03-03 Cisco Technology, Inc. Efficient inter-VLAN routing in openflow networks
US11727057B2 (en) 2019-09-04 2023-08-15 Samsung Electronics Co., Ltd. Network key value indexing design
CN112667636B (zh) * 2020-12-30 2023-03-24 杭州趣链科技有限公司 索引建立方法、装置及存储介质
CN113486025B (zh) * 2021-07-28 2023-07-25 北京腾云天下科技有限公司 数据存储方法、数据查询方法及装置

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3726484B2 (ja) * 1998-04-10 2005-12-14 株式会社日立製作所 記憶サブシステム
US6711152B1 (en) * 1998-07-06 2004-03-23 At&T Corp. Routing over large clouds
US6826613B1 (en) * 2000-03-15 2004-11-30 3Com Corporation Virtually addressing storage devices through a switch
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US8510468B2 (en) * 2000-04-17 2013-08-13 Ciradence Corporation Route aware network link acceleration
US8010469B2 (en) * 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
US7031320B2 (en) * 2000-12-22 2006-04-18 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed IP route lookup and managing routing/forwarding tables
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US7512673B2 (en) * 2001-01-11 2009-03-31 Attune Systems, Inc. Rule based aggregation of files and transactions in a switched file system
US7383288B2 (en) * 2001-01-11 2008-06-03 Attune Systems, Inc. Metadata based file switch and switched file system
US20030026246A1 (en) * 2001-06-06 2003-02-06 Zarlink Semiconductor V.N. Inc. Cached IP routing tree for longest prefix search
EP1423957A1 (en) * 2001-08-29 2004-06-02 Nokia Corporation Method and system for classifying binary strings
US7215644B2 (en) * 2003-03-19 2007-05-08 Alcatel Lucent Inter-domain constraint-based shortest path first technique for supporting hierarchical routing in interconnected multi-domain optical transport networks
US7366092B2 (en) * 2003-10-14 2008-04-29 Broadcom Corporation Hash and route hardware with parallel routing scheme
US8295286B2 (en) * 2003-12-31 2012-10-23 Stmicroelectronics, Inc. Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware
US7747836B2 (en) * 2005-03-08 2010-06-29 Netapp, Inc. Integrated storage virtualization and switch system
CN100579016C (zh) 2006-01-24 2010-01-06 华为技术有限公司 一种网络数据的分布式存储下载系统、设备及方法
CN101227460B (zh) 2007-01-19 2011-07-27 上海捷存软件有限公司 分布式文件上传、下载方法及其装置和系统
US7664866B2 (en) * 2007-04-10 2010-02-16 Apertio Limited Sub-tree access control in network architectures
CN101068163A (zh) 2007-06-29 2007-11-07 华为技术有限公司 实现文件传输的方法、装置及网管系统
CN101577662B (zh) * 2008-05-05 2012-04-04 华为技术有限公司 一种基于树形数据结构的最长前缀匹配方法和装置
CN101667958B (zh) * 2008-09-01 2012-08-29 华为技术有限公司 选择哈希函数的方法、存储及查找路由表的方法及装置
US8078622B2 (en) * 2008-10-30 2011-12-13 Network Appliance, Inc. Remote volume access and migration via a clustered server namespace
US7929557B2 (en) * 2008-11-14 2011-04-19 Juniper Networks, Inc. Summarization and longest-prefix match within MPLS networks
US8321385B2 (en) * 2010-03-12 2012-11-27 Lsi Corporation Hash processing in a network communications processor architecture
US8098584B2 (en) * 2009-08-07 2012-01-17 Microsoft Corporation Optimization of traffic routing for data center services
US8605722B1 (en) * 2009-12-10 2013-12-10 Juniper Networks, Inc. Deadlock-resistant fabric tree replication in a network device
BR112012027309A2 (pt) * 2011-02-28 2016-08-02 Fujifilm Corp aparelho de geração de imagens coloridas
US8972453B2 (en) 2011-05-12 2015-03-03 Futurewei Technologies, Inc. Method and system for longest prefix matching of variable-sized hierarchical names by treelets
US8667172B2 (en) * 2011-06-07 2014-03-04 Futurewei Technologies, Inc. Method and apparatus for content identifier based radius constrained cache flooding to enable efficient content routing
US8799507B2 (en) * 2012-03-13 2014-08-05 Juniper Networks, Inc. Longest prefix match searches with variable numbers of prefixes
US8891541B2 (en) * 2012-07-20 2014-11-18 International Business Machines Corporation Systems, methods and algorithms for named data network routing with path labeling
US9178806B2 (en) * 2012-07-31 2015-11-03 Alcatel Lucent High-speed content routing
US9245626B2 (en) * 2012-10-26 2016-01-26 Cisco Technology, Inc. System and method for packet classification and internet protocol lookup in a network environment
US8937955B2 (en) * 2012-12-05 2015-01-20 Cisco Technology, Inc. System and method for scaling IPv6 addresses in a network environment

Also Published As

Publication number Publication date
US9172743B2 (en) 2015-10-27
CN105027527B (zh) 2018-03-13
US20140188981A1 (en) 2014-07-03
WO2014101884A1 (en) 2014-07-03
EP2936776A4 (en) 2016-04-13
CN105027527A (zh) 2015-11-04
EP2936776A1 (en) 2015-10-28
AU2013369728A1 (en) 2015-07-23
AU2013369728B2 (en) 2016-07-14
AU2013369728A8 (en) 2015-07-30
EP2936776B1 (en) 2018-09-26
JP2016506679A (ja) 2016-03-03
WO2014101884A9 (en) 2015-07-23

Similar Documents

Publication Publication Date Title
JP6067880B2 (ja) 最長プレフィックス・マッチング・スイッチによるスケーラブル記憶システム
US9825860B2 (en) Flow-driven forwarding architecture for information centric networks
US9774531B2 (en) Hash-based forwarding in content centric networks
KR101337039B1 (ko) 통신 네트워크 내의 패킷을 라우팅하는 방법 및 통신 네트워크 내의 패킷을 라우팅하기 위한 네트워크 노드
US10348646B2 (en) Two-stage port-channel resolution in a multistage fabric switch
US20140280823A1 (en) Wire-speed pending interest table
US10581741B2 (en) Method and system for interest groups in a content centric network
JP6601784B2 (ja) 情報指向ネットワークにおいてコンテキスト認識型コンテンツ要求をサポートするための方法、ネットワークコンポーネント、およびプログラム
KR20150037938A (ko) 고속 콘텐츠 라우팅
US9183322B2 (en) Increasing internet protocol version 6 host table scalability in top of rack switches for data center deployments
US20170201375A1 (en) Secure content sharing using content centric approach
US9954795B2 (en) Resource allocation using CCN manifests
US10447585B2 (en) Programmable and low latency switch fabric for scale-out router
US11444996B2 (en) Two-level cache architecture for live video streaming through hybrid ICN
CN109691067A (zh) 用于传送和接收兴趣消息的系统和方法
Chen et al. Ndss: A named data storage system
US10033642B2 (en) System and method for making optimal routing decisions based on device-specific parameters in a content centric network
CN114745440B (zh) 一种ccn缓存替换方法及装置
KR102060907B1 (ko) 데이터 이름 기반 네트워크에서의 fib 테이블 공유 방법 및 데이터 이름 기반 네트워크 시스템
Azgin et al. H 2 N4: Packet forwarding on hierarchical hash-based names for content centric networks
KR20140115155A (ko) 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161026

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161221

R150 Certificate of patent or registration of utility model

Ref document number: 6067880

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250