(57)【要約】本発明の実施形態はコードをロードする方法を提供する。本方法は、ネットワーク装置の制御プレーンが、ネットワーク装置の転送プレーンによって実行される処理と処理を実行するコードとを取得するステップであって、コードは高水準プログラミング言語を用いて記述される、ステップと、ネットワーク装置の制御プレーンが、ネットワーク装置のサービス構成情報がコードに対応することを決定するステップと、ネットワーク装置の制御プレーンが、コードをコンパイルして、コンパイルされたコードを生成するステップと、ネットワーク装置の制御プレーンが、コンパイルされたコードをネットワーク装置の転送プレーンにロードするステップと、を有する。加えて、本発明の実施形態は更に、対応するネットワーク装置を提供する。上述の技術的解決策を用いて新サービスを展開することができ、よって、新サービスの需要を満たすのに役立つ。
2016535901.tif 000002
【特許請求の範囲】
【請求項１】
コードをロードする方法であって、
ネットワーク装置の制御プレーンが、前記ネットワーク装置の転送プレーンによって実行される処理と、前記処理を実行するコードとを取得するステップであって、前記コードは高水準プログラミング言語を用いて記述される、ステップと、
前記ネットワーク装置の前記制御プレーンが、前記ネットワーク装置のサービス構成情報が前記コードに対応することを決定するステップと、
前記ネットワーク装置の前記制御プレーンが、前記コードをコンパイルして、コンパイルされたコードを生成するステップと、
前記ネットワーク装置の前記制御プレーンが、前記コンパイルされたコードを前記ネットワーク装置の前記転送プレーンにロードするステップと、
を有する方法。
【請求項２】
前記ネットワーク装置の前記制御プレーンが、前記ネットワーク装置の前記転送プレーンによってマッチされる対象のフィールドの位置を取得するステップ、
を更に有する、請求項１に記載の方法。
【請求項３】
前記ネットワーク装置の前記制御プレーンが、前記ネットワーク装置の前記転送プレーンによってマッチされる対象のフィールドの位置を取得するステップの後に、
前記ネットワーク装置の前記制御プレーンが、前記フィールドの前記位置を翻訳して、前記ネットワーク装置の前記転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するステップ、
を更に有する、請求項２に記載の方法。
【請求項４】
前記コードの変数はパケットのフィールドの値又はレジスタの値を含む、
請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記コードは、関数又はコプロセッサにアクセスするのに用いられる、
請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
制御プレーン及び転送プレーンを備えるネットワーク装置であって、
前記制御プレーンは、
当該ネットワーク装置の転送プレーンによって実行される処理と、前記処理を実行するコードとを取得するように構成される第１の取得ユニットであって、前記コードは高水準プログラミング言語を用いて記述される、第１の取得ユニットと、
前記ネットワーク装置のサービス構成情報が前記第１の取得ユニットによって取得された前記コードに対応することを決定するように構成される決定ユニットと、
前記第１の取得ユニットによって取得された前記コードをコンパイルして、コンパイルされたコードを生成するように構成されるコンパイルユニットと、
前記コンパイルユニットによって生成された前記コンパイルされたコードを、前記転送プレーンにロードするように構成されるロードユニットと、
を有する、ネットワーク装置。
【請求項７】
前記ネットワーク装置の前記転送プレーンによってマッチされる対象のフィールドの位置を取得するように構成される第２の取得ユニット、
を更に備える、請求項６に記載のネットワーク装置。
【請求項８】
前記第２の取得ユニットによって取得された前記フィールドの前記位置を翻訳して、前記ネットワーク装置の前記転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するように構成される翻訳ユニット、
を更に備える、請求項７に記載のネットワーク装置。
【請求項９】
前記コードの変数はパケットのフィールドの値又はレジスタの値を含む、
請求項６乃至８のいずれか一項に記載のネットワーク装置。
【請求項１０】
前記コードは、関数又はコプロセッサにアクセスするのに用いられる、
請求項６乃至９のいずれか一項に記載のネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信分野に関し、特に、コードをロードする方法及びネットワーク装置に関する。
【背景技術】
【０００２】
ネットワーク装置（ルーターやスイッチ等）はネットワーク装置サプライヤによって提供される。ネットワーク装置サプライヤはＨｕａｗｅｉ又はＣｉｓｃｏであってよい。ネットワーク装置ユーザーはネットワーク装置オペレータである。ネットワーク装置オペレータは、中国移動通信（China  Mobile  Communications  Corporation）又はベライゾン・コミュニケーションズ（Verizon  Communications）であってよい。ネットワーク装置サプライヤによって提供されるネットワーク装置には、サービスを実行するコードが含まれてよい。例えば、ルーターは、インターネットプロトコル（Internet  Protocol、略称ＩＰ）転送を実行するコードを含んでよい。したがって、ルーターは、ＩＰパケットを受信した後、転送を実行するコードに従って該ＩＰパケットを転送してよい。技術の発展に伴い、新サービスが要求されている。例えば、ネットワーク装置オペレータは、ネットワーク装置により新サービスの展開が可能であると予想する。新サービスはＯＡＭ（operation,  administration  and  maintenance）であってよい。従来技術では、新サービスの需要を十分に満たすことができない。
【発明の概要】
【０００３】
本発明の実施形態は、コードをロードする方法及びネットワーク装置を提供する。本発明の実施形態によって提供される技術的解決策を用いて新サービスを展開することができ、よって、よって、新サービスの需要を満たすのに役立つ。
【０００４】
第１の態様によれば、コードをロードする方法が提供される。本方法は、
ネットワーク装置の制御プレーン（control  plane）が、ネットワーク装置の転送プレーン（forwarding  plane）によって実行される処理（process）と、該処理を実行するコードとを取得するステップであって、該コードは高水準プログラミング言語（programming  language）を用いて記述される、ステップと、
ネットワーク装置の制御プレーンが、ネットワーク装置のサービス構成情報がコードに対応することを決定するステップと、
ネットワーク装置の制御プレーンが、コードをコンパイルして、コンパイルされたコード（compiled  code）を生成するステップと、
ネットワーク装置の制御プレーンが、コンパイルされたコードをネットワーク装置の転送プレーンにロードするステップと、
を有する。
【０００５】
上述の技術的解決策において、ネットワーク装置の制御プレーンは処理と該処理を実行するコードとを取得する。ネットワーク装置の制御プレーンは、サービス構成情報がコードに対応することを決定する。ネットワーク装置の制御プレーンは、コードをコンパイルして、コンパイルされたコードを生成する。ネットワーク装置の制御プレーンは、コンパイルされたコードをネットワーク装置の転送プレーンにロードする。ネットワーク装置の転送プレーンにロードされたコンパイルされたコードにより、新サービスが実行されてよい。したがって、上述の技術的解決策を用いて新サービスを展開することができ、よって、新サービスの需要を満たすのに役立つ。
【０００６】
第１の態様によって提供される方法の第１の可能な実施方式では、本方法は、
ネットワーク装置の制御プレーンが、ネットワーク装置の転送プレーンによってマッチされる対象のフィールドの位置を取得するステップ、
を更に有する。
【０００７】
第１の態様によって提供される方法の第１の可能な実施方式に従って、第１の態様によって提供される方法の第２の可能な実施方式では、
ネットワーク装置の制御プレーンがネットワーク装置の転送プレーンによってマッチされる対象のフィールドの位置を取得するステップの前に、本方法は、
ネットワーク装置の制御プレーンが、フィールドの位置を翻訳して、ネットワーク装置の転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するステップ、
を更に有する。
【０００８】
第１の態様、又は第１の態様によって提供される方法の第１の可能な実施方式、又は第１の態様によって提供される方法の第２の可能な実施方式に従って、第１の態様によって提供される方法の第３の可能な実施方式では、
コードの変数は、パケットのフィールドの値又はレジスタの値を含む。
【０００９】
第１の態様、又は第１の態様によって提供される方法の第１の可能な実施方式、又は第１の態様によって提供される方法の第２の可能な実施方式、又は第１の態様によって提供される方法の第３の可能な実施方式に従って、第１の態様によって提供される方法の第４の可能な実施方式では、
コードは、関数又はコプロセッサにアクセスするのに用いられる。
【００１０】
第２の態様によれば、制御プレーン及び転送プレーンを備えるネットワーク装置が提供される。
制御プレーンは、
ネットワーク装置の転送プレーンによって実行される処理と、処理を実行するコードとを取得するように構成される第１の取得ユニットであって、コードは高水準プログラミング言語を用いて記述される、第１の取得ユニットと、
ネットワーク装置のサービス構成情報が第１の取得ユニットによって取得されたコードに対応することを決定するように構成される決定ユニットと、
第１の取得ユニットによって取得されたコードをコンパイルして、コンパイルされたコードを生成するように構成されるコンパイルユニットと、
コンパイルユニットによって生成されたコンパイルされたコードを、転送プレーンにロードするように構成されるロードユニットと、
を有する。
【００１１】
第２の態様によって提供されるネットワーク装置の第１の可能な実施方式において、ネットワーク装置は、
ネットワーク装置の転送プレーンによってマッチされる対象のフィールドの位置を取得するように構成される第２の取得ユニット、
を更に備える。
【００１２】
第２の態様によって提供されるネットワーク装置の第１の可能な実施方式に従って、第２の態様によって提供されるネットワーク装置の第２の可能な実施方式では、ネットワーク装置は、
第２の取得ユニットによって取得されたフィールドの位置を翻訳して、ネットワーク装置の転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するように構成される翻訳ユニット、
を更に備える。
【００１３】
第２の態様、又は第２の態様によって提供されるネットワーク装置の第１の可能な実施方式、又は第２の態様によって提供されるネットワーク装置の第２の可能な実施方式に従って、第２の態様によって提供されるネットワーク装置の第３の可能な実施方式では、
コードの変数は、パケットのフィールドの値又はレジスタの値を含む。
【００１４】
第２の態様、又は第２の態様によって提供されるネットワーク装置の第１の可能な実施方式、又は第２の態様によって提供されるネットワーク装置の第２の可能な実施方式、又は第２の態様によって提供されるネットワーク装置の第３の可能な実施方式に従って、第２の態様によって提供されるネットワーク装置の第４の可能な実施方式では、
コードは、関数又はコプロセッサにアクセスするのに用いられる。
【図面の簡単な説明】
【００１５】
本発明の実施形態又は従来技術における技術的解決策をより明確に説明するために、以下、実施形態又は従来技術の説明に要する添付の図面を簡単に紹介する。当然ながら、以下の説明において、添付の図面は本発明の一部の実施形態を示すに過ぎない。当業者であれば、これらの添付の図面から創意工夫なく他の図面を更に導出できるであろう。
【図１】本発明の実施形態に係るコードをロードする方法の概略フローチャートである。
【図２】本発明の実施形態に係るネットワーク装置の概略構造図である。
【図３】本発明の実施形態に係るネットワーク装置の概略構造図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態において添付の図面を参照して、本発明の実施形態における技術的解決策を明確に説明する。当然ながら、説明される実施形態は本発明の実施形態の一部であり、全部ではない。当業者が本発明の実施形態に基づいて創意工夫なく得る他の実施形態は、全て本発明の保護範囲に包含されるものとする。
【００１７】
図１は、本発明の実施形態に係るコードをロードする方法の概略フローチャートである。本方法は、ネットワーク装置によって実行される。ネットワーク装置は、ルーター、ネットワークスイッチ、パケット・トランスポート・ネットワーク（packet  transport  network、略称ＰＴＮ）装置、ファイアウォール、ロードバランサ、データセンター又は波長分割多重（wavelength-division  multiplexing、略称ＷＤＭ）装置であってよい。ネットワークスイッチはオープンフロースイッチ（英語：OpenFlow  Switch）であってよい。図１を参照して、本方法は以下のステップを有する。
【００１８】
Ｓ１０１：ネットワーク装置の制御プレーンが、ネットワーク装置の転送プレーンによって実行される処理と、処理を実行するコードとを取得する。コードは高水準プログラミング言語を用いて記述される。
【００１９】
例えば、ネットワーク装置の制御プレーンは、中央処理装置（central  processing  unit、略称ＣＰＵ）を含んでよい。
【００２０】
例えば、ネットワーク装置の転送プレーンは、ネットワークプロセッサ（network  processor、略称ＮＰ）を含んでよい。
【００２１】
例えば、制御プレーンは、ネットワーク装置の主制御ボード（control  board）によって担持されてよい。転送プレーンは、ネットワーク装置のインターフェースボード（interface  board）によって担持されてよい。
【００２２】
例えば、高水準プログラミング言語はＪａｖａ又はＣ＋＋であってよい。
【００２３】
例えば、処理は、パケットに転送オペレーションを実行することと、パケットに変更オペレーションを実行することと、チェックサム（チェックサム）を計算することと、有効期間の値から１を引くことと、パケットに計算オペレーションを実行することと、パケットにサービス品質（quality  of  service、略称ＱｏＳ）オペレーションを実行することと、パケットにアクセス制御オペレーションを実行することと、パケットにドロッピングオペレーションを実行することと、のうち少なくとも１つを含んでよい。
【００２４】
例えば、パケットに変更オペレーションを実行することは、パケットにカプセル化オペレーションを実行すること、又はパケットにカプセル除去オペレーションを実行することであってよい。チェックサムは、伝送制御プロトコル（transmission  control  protocol、略称ＴＣＰ）チェックサムであってよい。ＱｏＳオペレーションはＣＡＲ（英語名称：committed  access  rate）オペレーションであってよい。パケットにアクセス制御オペレーションを実行することは、アクセス制御リスト（access  control  list、略称ＡＣＬ）を用いて実施されてよい。
【００２５】
Ｓ１０２：ネットワーク装置の制御プレーンが、ネットワーク装置のサービス構成情報がコードに対応することを決定する。
【００２６】
例えば、サービス構成情報は、ネットワーク装置に実行されるサービスを記述するのに用いられる。
【００２７】
例えば、サービスは転送サービスであってよい。
【００２８】
例えば、転送サービスは、レイヤ３仮想プライベートネットワーク（layer  3  virtual  private  network、略称Ｌ３ＶＰＮ）転送サービス、レイヤ２仮想プライベートネットワーク（layer  2  virtual  private  network、略称Ｌ２ＶＰＮ）転送サービス、仮想プライベートローカルエリアネットワークサービス（virtual  private  LAN  service、略称ＶＰＬＳ）、マルチプロトコル・ラベル・スイッチング（multiprotocol  label  switching、略称ＭＰＬＳ）転送サービス、ＩＰ転送サービス又はレイヤ２スイッチング（layer  2  switching）サービスであってよい。
【００２９】
例えば、サービスは、ネットワーク装置のインターフェースを用いて実行されてよい。例えば、サービス構成情報は、インターフェースに対してサービスが有効であると記述されてよい。インターフェースは物理インターフェースであってよく、或いは論理インターフェースであってよい。例えば、論理インターフェースは、トランクインターフェース（trunk  interface）又は仮想ローカルエリアネットワークインターフェース（VLAN  interface）であってよい。
【００３０】
例えば、サービス構成情報はテルネットを用いて生成されてよい。サービス構成情報はネットワーク管理システムによって生成されてもよい。
【００３１】
例えば、ネットワーク装置がオープンフロースイッチであるシナリオでは、サービス構成情報はオープンフローコントローラによって生成されてよい。オープンフローコントローラは、制御チャネル（control  channel）を用いて、サービス構成情報をオープンフロースイッチに送信してよい。
【００３２】
例えば、Ｓ１０２は、具体的には、ネットワーク装置の制御プレーンが、サービス構成情報に対応するサービスを決定するステップ、を含む。ネットワーク装置の制御プレーンは、コードがサービスの実行に用いられるコンピュータープログラムであることを決定する。
【００３３】
Ｓ１０３：ネットワーク装置の制御プレーンが、コードをコンパイルして、コンパイルされたコードを生成する。
【００３４】
例えば、Ｓ１０３は、具体的には、ネットワーク装置の制御プレーンが、コンパイラ（compiler）を用いてコードをコンパイルして、コンパイルされたコードを生成するステップ、を含んでよい。
【００３５】
例えば、コンパイルされたコードは、アセンブリ言語のコード、機械語のコード、オープンフロー命令（instruction）又はオープンフローアクション（action）を含んでよい。例えば、アクションは、プッシュタグ（Push-Tag）、ポップタグ（Pop-Tag）、ドロップ（Drop）、アウトプット（Output）又はグループ（Group）であってよい。オープンフロー命令又はオープンフローアクションについては、オープンフロースイッチ仕様書バージョン１．４．０を参照されたい（OpenFlow  Switch  Specification  version  1.4.0）。
【００３６】
Ｓ１０４：ネットワーク装置の制御プレーンが、コンパイルされたコードをネットワーク装置の転送プレーンにロードする。
【００３７】
上述の技術的解決策では、ネットワーク装置の制御プレーンは、処理と、該処理を実行するコードとを取得する。ネットワーク装置の制御プレーンは、サービス構成情報がコードに対応することを決定する。ネットワーク装置の制御プレーンは、コードをコンパイルして、コンパイルされたコードを生成する。ネットワーク装置の制御プレーンは、コンパイルされたコードをネットワーク装置の転送プレーンにロードする。新サービスは、ネットワーク装置の転送プレーンにロードされたコンパイルされたコードによって実行されてよい。したがって、上述の技術的解決策を用いて新サービスを展開することができ、よって、新サービスの需要を満たすのに役立つ。
【００３８】
任意に、上述の技術的解決策は、
ネットワーク装置の制御プレーンが、ネットワーク装置の転送プレーンによってマッチされる対象のフィールドの位置を取得するステップ、
を更に有してよい。
【００３９】
例えば、フィールドは、ＩＰヘッダーの宛先ＩＰアドレスであってよい。例えば、フィールドは宛先ＩＰアドレスであってよい。例えば、フィールドは、ソースＩＰアドレス、宛先ＩＰアドレス、ソースポート、宛先ポート及びプロトコル（protocol）であってよい。ソースＩＰアドレス、宛先ＩＰアドレス及びプロトコルは、ＩＰヘッダー内の情報である。ソースポート及び宛先ポートは、ＴＣＰヘッダー内の情報又はユーザーデータグラムプロトコル（user  datagram  protocol、略称ＵＤＰ）ヘッダー内の情報であってよい。
【００４０】
例えば、ネットワーク装置の制御プレーンがフィールドの位置を取得するステップは、ネットワーク装置の制御プレーンが、統合開発環境（integrated  development  environment、略称ＩＤＥ）を用いてフィールドの位置を取得するステップ、を含んでよい。
【００４１】
例えば、フィールドがレジスタ内のデータであるシナリオでは、位置はレジスタのアドレスであってよい。フィールドがパケット内のフィールドであるシナリオでは、位置は、フィールドの開始位置及び長さであってよい。
【００４２】
任意に、Ｓ１０１は、具体的には、
ネットワーク装置の制御プレーンが、ＩＤＥを用いて処理及びコードを取得するステップ、
を含む。
【００４３】
例えば、Ｓ１０１は、
ネットワーク装置の制御プレーンが、ＩＤＥを用いてユーザーの入力を受信して、コードを生成するステップ、
を含んでよい。
【００４４】
例えば、ＩＤＥはコードエディタ（code  editor）を含んでよい。加えて、ＩＤＥは更に、コンパイラ、デバッガー（debugger）及びグラフィカル・ユーザー・インターフェース（graphical  user  interface、略称ＧＵＩ）を含んでよい。ユーザーは、ネットワーク装置の操作者であってよい。具体的には、ユーザーはオペレータの技術者であってよい。
【００４５】
例えば、ユーザーは、物理キーボード又は仮想キーボードを用いて、ネットワーク装置の制御プレーンに入力を提供することができる。仮想キーボードは、グラフィカル・ユーザー・インターフェースを用いて実現されてよい。
【００４６】
任意に、
コードの変数は、パケットのフィールドの値とレジスタの値とのうち少なくとも１つを含む。
【００４７】
任意に、
コードは、関数（function）又はコプロセッサ（coprocessor）にアクセスするのに用いられる。
【００４８】
例えば、コードは関数の名称を含む。例えば、コードは、コプロセッサにアクセスするための命令を含む。例えば、コプロセッサはチップ会社によって提供されてよい。チップ会社はＥＺＣＨＩＰ又はＣＡＶＩＵＭであってよい。
【００４９】
任意に、上述の技術的解決策では、ネットワーク装置の制御プレーンが、ネットワーク装置の転送プレーンによってマッチされる対象のフィールドの位置を取得するステップの後に、本方法は更に、
ネットワーク装置の制御プレーンが、フィールドの位置を翻訳して、ネットワーク装置の転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するステップ、
を有する。
【００５０】
例えば、ネットワーク装置の制御プレーンは、コンパイラを用いてフィールドの位置を翻訳して、ネットワーク装置の転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成してよい。
【００５１】
任意に、上述の技術的解決策では、本方法はＳ１０４の後に、
ネットワーク装置の転送プレーンが、パケットを受信するステップと、
ネットワーク装置の転送プレーンの検索エンジンが、フィールドの位置に従って、パケット及び／又はレジスタから検索キー（search  key）を取得するステップと、
ネットワーク装置の転送プレーンの検索エンジンが、検索キーに従ってマッチングオペレーションを実行するステップと、
ネットワーク装置の転送プレーンの検索エンジンが、マッチングオペレーションの結果がヒットであることを決定するステップと、
ネットワーク装置の転送プレーンが、コンパイルされたコードに従ってパケットに対して処理を実行するステップと、
を更に有してよい。
【００５２】
例えば、パケットは、ＩＰパケット、イーサネットフレーム（ethernet  frame）又はＭＰＬＳプロトコルパケットであってよい。
【００５３】
図２は、本発明の実施形態に係るネットワーク装置の概略構造図である。ネットワーク装置２００は、図１に示される方法を実行するように構成されてよい。ネットワーク装置は、ルーター、ネットワークスイッチ、ＰＴＮ装置、ファイアウォール、ロードバランサ、データセンター又はＷＤＭ装置であってよい。ネットワークスイッチはオープンフロースイッチであってよい。図２を参照して、ネットワーク装置２００は制御プレーン２１０及び転送プレーン２２０を備える。
【００５４】
制御プレーン２１０は、第１の取得ユニット２１１、決定ユニット２１２、コンパイルユニット２１３及びロードユニット２１４を有する。
【００５５】
第１の取得ユニット２１１は、ネットワーク装置の転送プレーンによって実行される処理と、処理を実行するコードとを取得するように構成される。コードは、高水準プログラミング言語を用いて記述される。
【００５６】
例えば、制御プレーンは、ネットワーク装置２００の主制御ボードによって担持されてよい。転送プレーンは、ネットワーク装置２００のインターフェースボードによって担持されてよい。
【００５７】
例えば、ネットワーク装置２００の制御プレーン２１０はＣＰＵを含んでよい。
【００５８】
例えば、ネットワーク装置２００の転送プレーン２２０はＮＰを含んでよい。
【００５９】
例えば、高水準プログラミング言語はＪａｖａ又はＣ＋＋であってよい。
【００６０】
例えば、処理は、パケットに転送オペレーションを実行することと、パケットに変更オペレーションを実行することと、チェックサムを計算することと、有効期間の値から１を引くことと、パケットに計算オペレーションを実行することと、パケットにＱｏＳオペレーションを実行することと、パケットにアクセス制御オペレーションを実行することと、パケットにドロッピングオペレーションを実行することと、のうち少なくとも１つを含んでよい。
【００６１】
例えば、パケットに変更オペレーションを実行することは、パケットにカプセル化オペレーションを実行すること、又はパケットにカプセル除去オペレーションを実行することであってよい。チェックサムはＴＣＰチェックサムであってよい。ＱｏＳオペレーションはＣＡＲオペレーションであってよい。パケットにアクセス制御オペレーションを実行することは、ＡＣＬを用いて実施されてよい。
【００６２】
決定ユニット２１２は、ネットワーク装置のサービス構成情報が第１の取得ユニット２１１によって取得されたコードに対応することを決定するように構成される。
【００６３】
例えば、サービス構成情報は、ネットワーク装置に実行されるサービスを記述するのに用いられる。
【００６４】
例えば、サービスは転送サービスであってよい。
【００６５】
例えば、転送サービスは、Ｌ３ＶＰＮ転送サービス、Ｌ２ＶＰＮ転送サービス、ＶＰＬＳ、ＭＰＬＳ転送サービス、ＩＰ転送サービス又はレイヤ２スイッチングサービスであってよい。
【００６６】
例えば、サービスは、ネットワーク装置のインターフェースによって実行されてよい。例えば、サービス構成情報は、インターフェースがサービスを有効にすると記述されてよい。インターフェースは物理インターフェースであってよく、或いは論理インターフェースであってよい。例えば、論理インターフェースは、トランクインターフェース又は仮想ローカルエリアネットワークインターフェースであってよい。
【００６７】
例えば、サービス構成情報はテルネットを用いて生成されてよい。サービス構成情報は、ネットワーク管理システムによって生成されてもよい。
【００６８】
例えば、ネットワーク装置がオープンフロースイッチであるシナリオでは、サービス構成情報はオープンフローコントローラによって生成されてよい。オープンフローコントローラは、制御チャネルを用いて、オープンフロースイッチにサービス構成情報を送信してよい。
【００６９】
例えば、決定ユニット２１２は、具体的には、第１のユニット及び第２のユニットを有してよい。
【００７０】
第１のユニットは、サービス構成情報に対応するサービスを決定するように構成される。
【００７１】
第２のユニットは、コードがサービスの実行に用いられるコンピュータープログラムであることを決定するように構成される。
【００７２】
コンパイルユニット２１３は、第１の取得ユニット２１１によって取得されたコードをコンパイルして、コンパイルされたコードを生成するように構成される。
【００７３】
例えば、コンパイルユニット２１３は、具体的には、第１の取得ユニット２１１によって取得されたコードをコンパイラを用いてコンパイルして、コンパイルされたコードを生成するように構成される。
【００７４】
例えば、コンパイルされたコードは、アセンブリ言語のコード、機械語のコード、オープンフロー命令又はオープンフローアクションを含んでよい。例えば、アクションは、プッシュタグ、ポップタグ、ドロップ、アウトプット又はグループであってよい。オープンフロー命令又はオープンフローアクションについては、オープンフロースイッチ仕様書バージョン１．４．０を参照されたい（OpenFlow  Switch  Specification  version  1.4.0）。
【００７５】
ロードユニット２１４は、コンパイルユニット２１３によって生成されたコンパイルされたコードを、転送プレーン２２０にロードするように構成される。
【００７６】
任意に、図２に示されるネットワーク装置２００の制御プレーン２１０は、
ネットワーク装置の転送プレーンによってマッチされる対象のフィールドの位置を取得するように構成される第２の取得ユニット、
を更に有してよい。
【００７７】
例えば、フィールドはＩＰヘッダー内の宛先ＩＰアドレスであってよい。例えば、フィールドは、ソースＩＰアドレス、宛先ＩＰアドレス、ソースポート、宛先ポート、及びプロトコルであってよい。ソースＩＰアドレス、宛先ＩＰアドレス及びプロトコルは、ＩＰヘッダー内の情報である。ソースポート及び宛先ポートは、ＴＣＰヘッダー内の情報又はＵＤＰヘッダー内の情報であってよい。
【００７８】
例えば、第２の取得ユニットは、具体的には、ＩＤＥを用いてフィールドの位置を取得するように構成される。
【００７９】
例えば、フィールドがレジスタ内のデータであるシナリオでは、位置はレジスタのアドレスであってよい。フィールドがパケット内のフィールドであるシナリオでは、位置は、フィールドの開始位置及び長さであってよい。
【００８０】
任意に、第１の取得ユニット２１１は、具体的には、ＩＤＥを用いて処理及びコードを取得するように構成される。
【００８１】
任意に、第１の取得ユニット２１１は、具体的には、ＩＤＥを用いてユーザーの入力を受信して、コードを生成するように構成される。
【００８２】
例えば、ＩＤＥはコードエディタを含んでよい。加えて、ＩＤＥは更に、コンパイラ、デバッガー及びＧＵＩを含んでよい。ユーザーは、ネットワーク装置の操作者であってよい。具体的には、ユーザーはオペレータの技術者であってよい。
【００８３】
例えば、ユーザーは、物理キーボード又は仮想キーボードを用いて、ネットワーク装置の制御プレーンに入力を提供することができる。仮想キーボードは、グラフィカル・ユーザー・インターフェースを用いて実現されてよい。
【００８４】
任意に、制御プレーン２１０は、
第２の取得ユニットによって取得されたフィールドの位置を翻訳して、ネットワーク装置の転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するように構成される翻訳ユニット、
を更に有してよい。
【００８５】
例えば、翻訳ユニットは、具体的には、コンパイラを用いてフィールドの位置を翻訳して、ネットワーク装置の転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するように構成される。
【００８６】
任意に、上述の技術的解決策では、
コードの変数は、パケットのフィールドの値とレジスタの値とのうち少なくとも１つを含む。
【００８７】
任意に、上述の技術的解決策では、
コードは、関数又はコプロセッサにアクセスするのに用いられる。
【００８８】
例えば、コードは関数の名称を含む。例えば、コードは、コプロセッサにアクセスするための命令を含む。例えば、コプロセッサはチップ会社によって提供されてよい。チップ会社はＥＺＣＨＩＰ又はＣＡＶＩＵＭであってよい。
【００８９】
任意に、上述の技術的解決策では、転送プレーン２２０は以下の要素を有してよい。
受信ユニットは、ロードユニット２１４がコンパイルユニット２１３によって生成されたコンパイルされたコードを転送プレーン２２０にロードした後に、パケットを受信するように構成される。
検索エンジンは、フィールドの位置に従って、パケット及び／又はレジスタから検索キーを取得するように構成される。
検索エンジンは更に、検索キーに従ってマッチングオペレーションを実行するように構成される。
検索エンジンは更に、マッチングオペレーションの結果がヒットであることを決定するように構成される。
処理ユニットは、コンパイルされたコードに従って、パケットに対して処理を実行するように構成される。
【００９０】
例えば、パケットは、ＩＰパケット、イーサネットフレーム又はＭＰＬＳプロトコルパケットであってよい。
【００９１】
図３は、本発明の実施形態に係るネットワーク装置の概略構造図である。ネットワーク装置は、ルーター、ネットワークスイッチ、ＰＴＮ装置、ファイアウォール、ロードバランサ、データセンター又はＷＤＭ装置であってよい。ネットワークスイッチはオープンフロースイッチであってよい。ネットワーク装置３００は、図１に示される方法を実行するように構成されてよい。ネットワーク装置３００は、図２に示されるネットワーク装置２００を実現するように構成されてよい。図３を参照して、ネットワーク装置３００は、メモリ３１０、中央処理装置３２０及びネットワークプロセッサ３３０を備える。メモリ３１０は中央処理装置３２０に結合される。中央処理装置３２０はネットワークプロセッサ３３０に結合される。メモリ３１０はコンピュータープログラムを有する。中央処理装置３２０は、メモリ３１０にアクセスすることにより、コンピュータープログラムを実行してよい。コンピュータープログラムは、第１の取得ユニット３１１、決定ユニット３１２、コンパイルユニット３１３及びロードユニット３１４を含む。ネットワークプロセッサ３３０は、検索エンジン３３１及びメモリ３３２を含む。メモリ３１０及び中央処理装置３２０は、ネットワーク装置３００の制御プレーンに位置する。ネットワークプロセッサ３３０はネットワーク装置３００の転送プレーンに位置する。制御プレーンは、ネットワーク装置３００の主制御ボードによって担持される。転送プレーンは、ネットワーク装置３００インターフェースボードによって担持される。
【００９２】
第１の取得ユニット３１１は、ネットワーク装置の転送プレーンによって実行される処理と、処理を実行するコードとを取得するように構成される。コードは高水準プログラミング言語を用いて記述される。
【００９３】
例えば、高水準プログラミング言語はＪａｖａ又はＣ＋＋であってよい。
【００９４】
例えば、処理は、パケットに転送オペレーションを実行することと、パケットに変更オペレーションを実行することと、チェックサムを計算することと、有効期間の値から１を引くことと、パケットに計算オペレーションを実行することと、パケットにＱｏＳオペレーションを実行することと、パケットにアクセス制御オペレーションを実行することと、パケットにドロッピングオペレーションを実行することと、のうち少なくとも１つを含んでよい。
【００９５】
例えば、パケットに変更オペレーションを実行することは、パケットにカプセル化オペレーションを実行すること、又はパケットにカプセル除去オペレーションを実行することであってよい。チェックサムはＴＣＰチェックサムであってよい。ＱｏＳオペレーションはＣＡＲオペレーションであってよい。パケットにアクセス制御オペレーションを実行することは、ＡＣＬを用いて実施されてよい。
【００９６】
決定ユニット３１２は、ネットワーク装置のサービス構成情報が第１の取得ユニット３１１によって取得されたコードに対応することを決定するように構成される。
【００９７】
例えば、サービス構成情報は、ネットワーク装置に実行されるサービスを記述するのに用いられる。
【００９８】
例えば、サービスは転送サービスであってよい。
【００９９】
例えば、転送サービスは、Ｌ３ＶＰＮ転送サービス、Ｌ２ＶＰＮ転送サービス、ＶＰＬＳ、ＭＰＬＳ転送サービス、ＩＰ転送サービス又はレイヤ２スイッチングサービスであってよい。
【０１００】
例えば、サービスは、ネットワーク装置のインターフェースを用いて実行されてよい。例えば、サービス構成情報は、インターフェースに対してサービスが有効であると記述されてよい。インターフェースは物理インターフェースであってよく、或いは論理インターフェースであってよい。例えば、論理インターフェースは、トランクインターフェース又は仮想ローカルエリアネットワークインターフェースであってよい。
【０１０１】
例えば、サービス構成情報はテルネットを用いて生成されてよい。サービス構成情報は、ネットワーク管理システムを用いて生成されてもよい。
【０１０２】
例えば、ネットワーク装置がオープンフロースイッチであるシナリオでは、サービス構成情報はオープンフローコントローラによって生成されてよい。
【０１０３】
例えば、決定ユニット３１２は、具体的には、第１のユニット及び第２のユニットを有してよい。
【０１０４】
第１のユニットは、サービス構成情報に対応するサービスを決定するように構成される。
【０１０５】
第２のユニットは、コードがサービスの実行に用いられるコンピュータープログラムであることを決定するように構成される。
【０１０６】
コンパイルユニット３１３は、第１の取得ユニット３１１によって取得されたコードをコンパイルして、コンパイルされたコードを生成するように構成される。
【０１０７】
例えば、コンパイルユニット３１３は、具体的には、第１の取得ユニット３１１によって取得されたコードを、コンパイラを用いてコンパイルして、コンパイルされたコードを生成するように構成される。
【０１０８】
例えば、コンパイルされたコードは、アセンブリ言語のコード、機械語のコード、オープンフロー命令又はオープンフローアクションを含んでよい。例えば、アクションは、プッシュタグ、ポップタグ、ドロップ、アウトプット又はグループであってよい。オープンフロー命令又はオープンフローアクションについては、オープンフロースイッチ仕様書バージョン１．４．０を参照されたい（OpenFlow  Switch  Specification  version  1.4.0）。
【０１０９】
ロードユニット３１４は、コンパイルユニット３１３によって生成されたコンパイルされたコードを、ネットワーク装置の転送プレーンにロードするように構成される。具体的には、コンパイルされたコードは、ネットワークプロセッサ３３０のメモリ３３２にロードされる。
【０１１０】
任意に、図３に示されるネットワーク装置３００のメモリ３１０は、
ネットワーク装置の転送プレーンによってマッチされる対象のフィールドの位置を取得するように構成される第２の取得ユニット、
を更に有してよい。
【０１１１】
例えば、フィールドは、ＩＰヘッダー内の宛先ＩＰアドレスであってよい。例えば、フィールドは、ソースＩＰアドレス、宛先ＩＰアドレス、ソースポート、宛先ポート及びプロトコルであってよい。ソースＩＰアドレス、宛先ＩＰアドレス及びプロトコルは、ＩＰヘッダー内の情報である。ソースポート及び宛先ポートは、ＴＣＰヘッダー内の情報又はＵＤＰヘッダー内の情報であってよい。
【０１１２】
例えば、第２の取得ユニットは、具体的には、ＩＤＥを用いてフィールドの位置を取得するように構成される。
【０１１３】
例えば、フィールドがレジスタ内のデータであるシナリオでは、位置はレジスタのアドレスであってよい。フィールドがパケット内のフィールドであるシナリオでは、位置は、フィールドの開始位置及び長さであってよい。
【０１１４】
任意に、第１の取得ユニット３１１は、具体的には、ＩＤＥを用いて処理及びコードを取得するように構成される。
【０１１５】
任意に、第１の取得ユニット３１１は、具体的には、ＩＤＥを用いてユーザーの入力を受信して、コードを生成するように構成される。
【０１１６】
例えば、ＩＤＥはコードエディタを含んでよい。加えて、ＩＤＥは更に、コンパイラ、デバッガー及びＧＵＩを含んでよい。ユーザーは、ネットワーク装置の操作者であってよい。具体的には、ユーザーはオペレータの技術者であってよい。
【０１１７】
例えば、ユーザーは、物理キーボード又は仮想キーボードを用いて、ネットワーク装置の制御プレーンに入力を提供することができる。仮想キーボードは、グラフィカル・ユーザー・インターフェースを用いて実現されてよい。
【０１１８】
任意に、メモリ３１０は、
第２の取得ユニットによって取得されたフィールドの位置を翻訳して、ネットワーク装置の転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するように構成される翻訳ユニット、
を更に有してよい。
【０１１９】
例えば、翻訳ユニットは、具体的には、コンパイラを用いてフィールドの位置を翻訳して、ネットワーク装置の転送プレーンの検索エンジンがマッチングオペレーションを実行するようにトリガする命令を生成するように構成される。
【０１２０】
任意に、上述の技術的解決策では、
コードの変数は、パケットのフィールドの値とレジスタの値とのうち少なくとも１つを含む。
【０１２１】
任意に、上述の技術的解決策では、
コードは、関数又はコプロセッサにアクセスするのに用いられる。
【０１２２】
例えば、コードは関数の名称を含む。例えば、コードは、コプロセッサにアクセスするための命令を含む。例えば、コプロセッサはチップ会社によって提供されてよい。チップ会社はＥＺＣＨＩＰ又はＣＡＶＩＵＭであってよい。
【０１２３】
任意に、上述の技術的解決策では、ネットワークプロセッサ３３０は以下の要素を有してよい。
受信ユニットは、ロードユニット３１４がコンパイルユニット３１３によって生成されたコンパイルされたコードを転送プレーンにロードした後に、パケットを受信するように構成される。受信ユニットは受信器であってよい。
検索エンジン３３１は、フィールドの位置に従って、パケット及び／又はレジスタから検索キーを取得するように構成される。
検索エンジン３３１は更に、検索キーに従ってマッチングオペレーションを実行するように構成される。
検索エンジン３３１は更に、マッチングオペレーションの結果がヒットであることを決定するように構成される。
【０１２４】
メモリ３３２は更に処理ユニットを有する。
【０１２５】
処理ユニットは、コンパイルされたコードに従って、パケットに処理を実行するように構成される。
【０１２６】
処理ユニットは、コンパイルされたコードであってよい。
【０１２７】
例えば、パケットは、ＩＰパケット、イーサネットフレーム又はＭＰＬＳプロトコルパケットであってよい。
【０１２８】
当業者であれば、本明細書に開示される実施形態に説明される例と組み合わせて、ユニット及びアルゴリズムステップが電子機器又はコンピューターソフトウェアと電子機器の組合わせによって実施されてよいことに気付くであろう。機能がハードウェアによって実行されるかソフトウェアによって実行されるかは、技術的解決策の特定の応用と設計制約条件によって決まる。当業者であれば、特定の応用の各々について記載の機能を実施するために異なる方法を利用できるであろうが、実施は本発明の範囲を超えることを考慮されたい。
【０１２９】
当業者であれば、説明を簡便にするために、上述のシステム、装置及びユニットの動作プロセスの詳細については、上述の方法実施形態における対応するプロセスを参照できることが明らかに理解できるであろう。よって、詳細の説明は省略する。
【０１３０】
本願で提供されるいくつかの実施形態において、開示のシステム、装置及び方法は他の方式で実施されてよいことを理解されたい。例えば、記載の装置実施形態は例示に過ぎない。例えば、ユニットの分割は論理的な機能分割に過ぎず、実際の実施では他の分割であってよい。例えば、複数のユニット又はコンポーネントは別のシステムに組み合わせ又は統合されてよく、或いは、一部の特徴は省略されてよく、或いは実行されなくてよい。加えて、提示又は議論される相互結合又は直接結合又は通信接続は、いくつかのインターフェースによって実施されてよい。装置もしくはユニット間の間接的な結合又は通信接続は、電子的形式、機械的形式その他の形式で実施されてよい。
【０１３１】
別々の要素として記載されたユニットは物理的に別々であってもなくてもよい。ユニットとして示された要素は物理的なユニットであってもなくてもよく、且つ、１ヶ所に位置しても複数のネットワークユニット上に分布してもよい。ユニットの一部又は全部は、実施形態の解決策の目的を達成するために、実際の要件に従って選択されてよい。
【０１３２】
加えて、本発明の実施形態における機能ユニットは１つの処理ユニットに統合されてよい。或いは、ユニットの各々は物理的に単独で存在してよく、或いは、２以上のユニットは１つのユニットに統合されてよい。
【０１３３】
機能がソフトウェア機能ユニットの形式で実施され、且つ、独立した製品として販売又は使用される場合、該機能はコンピューター可読記憶媒体に格納されてよい。そのような理解に基づき、本発明の技術的解決策は本質的にソフトウェアの形式で実施されてよく、或いは、従来技術に寄与する部分又は技術的解決策の一部は、ソフトウェアの形式で実施されてよい。ソフトウェアは、記憶媒体に格納され、且つ、コンピューター装置（パーソナルコンピューター、サーバー又はネットワーク装置であってよい）が本発明の実施形態に記載の方法のステップの全部又は一部を実行することを命令するためのいくつかの命令を含む。上述の記憶媒体はプログラムコードを格納できる任意の媒体を含んでよく、例えば、ＵＳＢフラッシュドライブ、リムーバブルハードディスク、リードオンリーメモリ（Read-Only  Memory、ＲＯＭ）、ランダムアクセスメモリ（Random  Access  Memory、ＲＡＭ）、磁気ディスク、光ディスク等を含んでよい。
【０１３４】
上述の説明は本発明の具体的な実施方式に過ぎず、本発明の保護範囲を限定する意図はない。本発明に開示された技術的範囲内で当業者により容易に想到され得る変形又は置換は、いかなるものでも本発明の保護範囲に包含されるものとする。したがって、本発明の保護範囲は特許請求の範囲の保護範囲に従うものとする。
【図１】
2016535901.tif 000003
【図２】
2016535901.tif 000004
【図３】
2016535901.tif 000005
【国際調査報告】
2016535901.tif 000006
2016535901.tif 000007
2016535901.tif 000008
2016535901.tif 000009