JP5601601B2 - 通信制御システム、スイッチノード、及び通信制御方法 - Google Patents

通信制御システム、スイッチノード、及び通信制御方法 Download PDF

Info

Publication number
JP5601601B2
JP5601601B2 JP2013505986A JP2013505986A JP5601601B2 JP 5601601 B2 JP5601601 B2 JP 5601601B2 JP 2013505986 A JP2013505986 A JP 2013505986A JP 2013505986 A JP2013505986 A JP 2013505986A JP 5601601 B2 JP5601601 B2 JP 5601601B2
Authority
JP
Japan
Prior art keywords
packet
processing
switch
processors
extended network
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.)
Expired - Fee Related
Application number
JP2013505986A
Other languages
English (en)
Other versions
JPWO2012128282A1 (ja
Inventor
洋一 飛鷹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2013505986A priority Critical patent/JP5601601B2/ja
Publication of JPWO2012128282A1 publication Critical patent/JPWO2012128282A1/ja
Application granted granted Critical
Publication of JP5601601B2 publication Critical patent/JP5601601B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、通信制御システムに関し、特にスイッチノードの制御を行う通信制御システムに関する。
従来のネットワーク機器はブラックボックスであり、外部から負荷分散や片寄等柔軟性に富んだ制御ができない。このため、ネットワークの規模が大きくなると、システムとしての挙動の把握と改善が困難になり、設計や構成変更には多大なコストを伴うことが問題であった。
こうした課題を解決するための技術として、ネットワーク機器のパケット転送機能と経路制御機能を分離する手法が考えられている。例えば、パケット転送機能をネットワーク機器が担当し、経路制御機能をネットワーク機器の外部に分離した制御装置が担当することで、制御が容易になり柔軟性に富んだネットワークを構築することが可能になる。
[CD分離型ネットワークの説明]
機能を分離したネットワークの1つとして、コントロールプレーン側の制御装置からデータプレーン側のノード装置を制御するCD(C:コントロールプレーン/D:データプレーン)分離型ネットワークが提案されている。
CD分離型ネットワークの一例として、コントローラからスイッチを制御してネットワークの経路制御を行うオープンフロー(OpenFlow)技術を利用したオープンフローネットワークが挙げられる。オープンフロー技術の詳細については、非特許文献1に記載されている。なお、オープンフローネットワークは一例に過ぎない。
[オープンフローネットワークの説明]
オープンフローネットワークでは、制御装置に相当するオープンフローコントローラ(OFC:OpenFlow Controller)が、ノード装置に相当するオープンフロースイッチ(OFS:OpenFlow Switch)の経路制御に関するフローテーブル(Flow table)を操作することにより、オープンフロースイッチ(OFS)の挙動を制御する。
以下、記載の簡略化のため、オープンフローコントローラ(OFC)を「コントローラ」と表記し、オープンフロースイッチ(OFS)を「スイッチ」と表記する。
コントローラとスイッチの間は、専用線やSSL(SecureSocketLayer)等により保護された通信路である「セキュアチャンネル」(Secure Channel)と呼ばれる制御チャネル(制御用の通信チャネル)により接続されている。コントローラとスイッチとは、制御チャネルを介して、オープンフロープロトコル(OpenFlow Protocol)に則った(準拠した)制御メッセージであるオープンフローメッセージ(OpenFlow Message)を送受信する。
オープンフローネットワークにおけるスイッチとは、オープンフローネットワークに配置され、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入口側エッジスイッチ(Ingress)でのパケット(packet)の受信から出口側エッジスイッチ(Egress)での送信までのパケットの一連の流れをフロー(Flow)と呼ぶ。オープンフローネットワークでは、通信をエンドツーエンド(E2E:End to End)のフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行う。
パケットは、フレーム(frame)と読み替えても良い。パケットとフレームの違いは、プロトコルが扱うデータの単位(PDU:Protocol Data Unit)の違いに過ぎない。パケットは、「TCP/IP」(Transmission Control Protocol/Internet Protocol)のPDUである。一方、フレームは、「イーサネット(登録商標)」(Ethernet)のPDUである。
フローテーブルとは、フローとして扱うパケットを特定するための判別条件(ルール)と、パケットがルールに適合(マッチ)した回数を示す統計情報と、パケットに対して行うべき処理内容(アクション)の組を定義したフローエントリ(Flow entry)の集合である。
フローエントリのルールは、パケットのヘッダ領域(フィールド)に含まれる各プロトコル階層の情報のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。各プロトコル階層の情報の例として、送信先アドレス(Destination Address)、送信元アドレス(Source Address)、送信先ポート(Destination Port)、送信元ポート(Source Port)等が考えられる。なお、上記のアドレスには、MACアドレス(Media Access Control Address)やIPアドレス(Internet Protocol Address)を含むものとする。また、上記に加えて、入口ポート(Ingress Port)の情報も、フローエントリのルールとして使用可能である。また、フローエントリのルールとして、フローとして扱うパケットのヘッダ領域の値の一部(又は全部)を、正規表現やワイルドカード「*」等で表現したものを設定することもできる。
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作を示す。例えば、スイッチは、フローエントリのアクションに出力ポートの識別情報(出力ポート番号等)が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを廃棄する。或いは、スイッチは、フローエントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいてパケットのヘッダを書き換える。
スイッチは、フローエントリのルールに適合するパケット群(パケット系列)に対して、フローエントリのアクションを実行する。具体的には、スイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するルールを持つフローエントリを検索する。検索の結果、受信パケットのヘッダ情報に適合するルールを持つフローエントリが見つかった場合、当該フローエントリの統計情報を更新すると共に、受信パケットに対して、当該フローエントリのアクションとして指定された動作を実施する。一方、検索の結果、受信パケットのヘッダ情報に適合するルールを持つフローエントリが見つからなかった場合、当該受信パケットを最初のパケット(first packet)と判断し、制御チャネルを介して、オープンフローネットワークにおけるコントローラに対して、受信パケット(又はそのコピー)を転送し、受信パケットの送信元・送信先(宛先)等に基づいたパケットの経路計算を要求し、応答としてフローエントリの設定用メッセージを受信し、フローテーブルを更新する。
なお、フローテーブルには、低い優先度で、全てのパケットのヘッダ情報に適合するルールを持つデフォルトエントリが登録されている。受信パケットに適合するフローエントリが他に見つからなかった場合、受信パケットは、このデフォルトエントリに適合する。デフォルトエントリのアクションは、「コントローラへの当該受信パケットの問い合わせ情報の送信」である。
[PCIエクスプレスの説明]
また、近年、PCIバス(Peripheral Component Interconnect bus)に代わり、「PCIエクスプレス(PCIe:PCI Express)」というインターフェース(I/F:interface)が広く利用されるようになっている。PCIバスはパラレル転送方式であり、PCIエクスプレス(PCIe)はシリアル転送方式である。PCIバスとPCIエクスプレス(PCIe)との間に物理レベルでの互換性はないが、通信プロトコル等は共通のものが使用されている。PCIエクスプレス(PCIe)で用いられる最小構成の伝送路(レーン)では、片方向2.5Gbps(Gigabit per second:ギガビット毎秒)、双方向5.0Gbpsの全二重通信が可能である。
[従来のネットワークシステムの説明]
図1、図2、図3、図4、図5は、従来のネットワークシステムの構成を示す。具体的には、ハードウェアベースでスイッチ処理を行い、制御サーバで拡張ネットワークサービスを実行する際のシステム構成である。
[従来のネットワークシステム構成]
図1は、従来のネットワークシステムの基本構成を示す。
従来のネットワークシステムは、スイッチノード1と、端末2(2−i、i=1〜T:Tは端末数)と、制御サーバ3を含む。
スイッチノード1は、オープンフローネットワークにおけるスイッチに相当する。制御サーバ3は、オープンフローネットワークにおけるコントローラに相当する。端末2(2−i、i=1〜T)及び制御サーバ3は、スイッチノード1と接続されている。
スイッチノード1は、CPU(Central Processing Unit)10と、メモリ20と、転送テーブル30と、ネットワークフォワーディングエンジン40を備える。
CPU10は、メモリ20と接続されている。また、CPU10及び転送テーブル30は、ネットワークフォワーディングエンジン40と接続されている。
従来のネットワークシステムでは、スイッチノード1上には、ハードウェアでパケット処理を行うネットワークフォワーディングエンジン40が存在し、このフォワーディングエンジン40は、端末2(2−i、i=1〜T)から入力されるパケットを受信し、1つの転送テーブル30を用いてフローの宛先を管理し、パケット受信時、テーブル検索を行い、端末間のパケットスイッチ処理を行う。この転送テーブル30は、端末間のスイッチ処理容量に耐えるように、高速な処理に対応するが、メモリ20容量が限られているため、大量のフローを管理する転送テーブル30を構成することができない。
[ネットワークスイッチフォワーディングエンジンの内部構成]
図2は、ネットワークスイッチフォワーディングエンジン40の内部の構成を示している。
ネットワークスイッチフォワーディングエンジン40は、PCIエクスプレス・エンドポイント(PCIe EP:PCI Express End Point)41と、LAN(Local Area Network)インターフェース(1G MAC)42と、スイッチ転送処理部43と、テーブル検索結果レジスタ44と、CPU宛パケットキュー45と、CPU送信パケットキュー46と、スイッチファブリック共有パケットバッファ47と、DMA(Direct Memory Access)コントローラ48を備える。
PCIエクスプレス・エンドポイント(PCIe EP)41は、CPU10、CPU宛パケットキュー45、及びCPU送信パケットキュー46と接続されている。
LANインターフェース(1G MAC)42は、端末2(2−i、i=1〜T)及び制御サーバ3と接続されている。
スイッチ転送処理部43は、転送テーブル30、LANインターフェース(1G MAC)42、テーブル検索結果レジスタ44、CPU送信パケットキュー46、スイッチファブリック共有パケットバッファ47と接続されている。
スイッチ転送処理部43は、テーブル検索部431と、パケット解析処理部432と、スイッチング処理部433を備える。
テーブル検索部431は、検索キーを用いて、転送テーブル30を検索する。
パケット解析処理部432は、パケットのヘッダ部分を抽出し、ヘッダ部分の任意の情報を用いて検索キーを作成し、検索キーをテーブル検索部431に通知する。
スイッチング処理部433は、検索キーがヒットした転送テーブル30のエントリのアクションの内容に従って、パケットを転送する。
テーブル検索結果レジスタ44は、CPU宛パケットキュー45と接続されている。
スイッチ転送処理部43のテーブル検索部431は、転送テーブル30に対して検索要求(検索キー)を送り、テーブル検索を行う。転送テーブル30の格納場所として、スイッチ転送処理部43の処理能力に応じたメモリ20が利用されるが、高速な処理能力が求められるため、処理能力に反比例してメモリ20の容量は少なくなり、管理できる転送テーブル数は限られる。
[転送テーブルの構成]
図3は、転送テーブル30の構成を示す。
転送テーブル30は、オープンフローネットワークにおけるフローテーブルに相当する。この転送テーブル30では、64000件のエントリを管理できる。
なお、「MAC DA」は、宛先MACアドレスを示す。「MAC SA」は、送信元MACアドレスを示す。「IP DA」は、宛先IPアドレスを示す。「IP SA」は、送信元IPアドレスを示す。
[CPUの構成]
図4は、CPU10で実行されるソフトウェアの構成図を示す。
CPU10は、PCIエクスプレス・ルート・コンプレックス(PCIe RC:PCI Express Root Complex)11と、フォワーディングエンジンドライバ12と、拡張ネットワークサービス設定部13と、サービス内容問合せ処理部14と、パケットバッファ処理部15と、パケット受信処理部16と、暗号処理部17を備える。
フォワーディングエンジンドライバ12、拡張ネットワークサービス設定部13、サービス内容問合せ処理部14、パケットバッファ処理部15、パケット受信処理部16、及び暗号処理部17は、CPU10がソフトウェアを実行することにより実現される。
従来のネットワークシステムでのCPU10は、制御サーバ3と接続し、拡張ネットワークサービスを実行するためだけに用いられる。
[制御サーバの構成]
図5は、制御サーバ3の構成図を示す。
制御サーバ3は、パケット送受信処理部31と、暗号処理部32と、拡張ネットワークサービス処理部33を備える。
制御サーバ3は、スイッチノード1からの処理問合せに対応し、問合せパケットに対しての宛先決定や、パケットの変更処理、又はスイッチノードの制御等を行う拡張ネットワークサービス処理の実行を行う。また、スイッチノード1とセキュアな通信を行うため暗号処理を行いパケットの送受信を行う。
上記のように、ハードウェアベースのスイッチノードは、1つの高速な転送テーブルを保持するメモリ20を利用したパケット処理を行うため、転送テーブルのメモリ20容量が限られ、大容量の転送テーブルを構成することが困難である。
また、ハードウェアベースのフォワーディングエンジンは、専用LSI(Large Scale Integration)で構成されるために、汎用性が低くコストが高くなり、また、処理方法の変更等の自由度はないといったデメリットもある。
なお、関連する技術として、特許文献1(特開2007−195166号公報)に組み込みDIDによるPCIバス・アドレス・ベースのルーティング用ルーティング・テーブルを作成し、管理する方法、コンピュータ・プログラム及び装置が開示されている。
この関連技術では、複数のルートノードと、1つまたは複数のPCIスイッチ及びPCIアダプタを備え、ルートノードが複数のホストを含み、ルートノードのうちの1つがPCI構成マネージャ(PCM)を含む分散コンピューティングシステムにおいて、ホストとアダプタの間でスイッチを通してPCIトランザクションパケットをルーティングする。
このとき、1つの指定されたスイッチ内にテーブルを作成し、特定のホストが指定されたスイッチに接続された場合に、PCMを操作して指定されたビットセットを有する送信先識別子をテーブルに入力する。指定されたスイッチを通して特定のホストからアダプタの1つに送出されたPCIパケットに送信先識別子をアドレスとして追加する。送信先識別子を用いてアダプタの1つから指定されたスイッチを通して送出されたPCIパケットが特定のホスト用であると判定する。
特開2007−195166号公報
"OpenFlow Switch Specification, Version 1.0.0"、 December 31, 2009、 インターネット(URL:http://www.openflowswitch.org/documents/openflow−spec−v1.0.0.pdf)
従来のスイッチノード構成は、ハードウェアベースのフォワーディングエンジンに接続される転送テーブルの容量に限界があり、大量の転送テーブルを持つスイッチノードの構築が難しい。一方で、ソフトウェアベースのスイッチノードを構成した場合、CPUが一つであるため、スイッチノードでは転送処理能力が低い課題がある。
本発明の目的は、ソフトウェアベースのスイッチノードにおいて、大容量のフローテーブルを構成し、高速なパケットスイッチ処理を行い、外部の制御サーバと接続し高機能なサービス・プロトコル処理を、PCIエクスプレス(PCIe)で規定されているマルチルート対応のスイッチ並びにネットワークインターフェース(NW I/F:Network Interface)を活用して実現する通信制御システムを提供することである。
本発明に係る通信制御システムは、スイッチノードと、パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリを、該スイッチノードのフローテーブルに設定する制御サーバとを含む。該スイッチノードは、大容量のメモリを持つ複数のプロセッサと複数の拡張ネットワークインターフェース(拡張NW I/F)とを、マルチルート対応のPCIエクスプレス(PCIe)スイッチで接続し、複数の拡張ネットワークインターフェース(拡張NW I/F)によるスイッチポートを構成する機能部と、該複数の拡張ネットワークインターフェース(拡張NW I/F)から該複数のプロセッサへの負荷分散転送処理を行い、該複数のプロセッサを用いた多重処理による高速パケット処理を行う機能部と、該複数のプロセッサの大容量のメモリ空間を用いて、ソフトウェアベースのスイッチノードで大容量のフローテーブルを構成する機能部とを具備する。
本発明に係るスイッチノードは、パケットを受信する複数の拡張ネットワークインターフェース(拡張NW I/F)と、大容量のメモリを持つ複数のプロセッサと、該複数のプロセッサと複数の拡張ネットワークインターフェース(拡張NW I/F)とを接続するマルチルート対応のPCIエクスプレス(PCIe)スイッチとを具備する。該複数の拡張ネットワークインターフェース(拡張NW I/F)の各々は、パケットの入出力を行うLANインターフェースと、該複数のプロセッサへのパケットの振分け処理、複数のプロセッサ間でのパケット転送並びに制御サーバへのパケットの転送処理のうち、少なくとも1つの転送処理を行うパケット転送処理部と、該複数プロセッサとDMA転送でパケットの送受信を高速に行うための複数のPFリソースと、該PCIエクスプレス(PCIe)スイッチと接続するためのPCIエクスプレス・エンドポイント(PCIe EP)とを具備する。
本発明に係る通信制御方法は、制御サーバからの制御に応じて、パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリを、自身のフローテーブルに設定するスイッチノードにおける通信制御方法であって、大容量のメモリを持つ複数のプロセッサと複数の拡張ネットワークインターフェース(拡張NW I/F)とを、マルチルート対応のPCIエクスプレス(PCIe)スイッチで接続し、複数の拡張ネットワークインターフェース(拡張NW I/F)によるスイッチポートを構成することと、該複数の拡張ネットワークインターフェース(拡張NW I/F)から該複数のプロセッサへの負荷分散転送処理を行い、該複数のプロセッサを用いた多重処理による高速パケット処理を行うことと、該複数のプロセッサの大容量のメモリ空間を用いて、ソフトウェアベースのスイッチノードで大容量のフローテーブルを構成することとを含む。
本発明に係るプログラムは、パケットを受信する複数の拡張ネットワークインターフェース(拡張NW I/F)と、大容量のメモリを持つ複数のプロセッサと、がマルチルート対応のPCIエクスプレス(PCIe)スイッチを介して接続されており、制御サーバからの制御に応じて、パケットをフローとして一律に制御するためのルールとアクションが定義されたフローエントリを、自身のフローテーブルに設定するスイッチノードにより実行されるプログラムであって、端末からLANインターフェースを経由してパケットを受信すると、パケットのヘッダ部分を抽出するステップと、該抽出したパケットのヘッダ部分の情報のうち、MACアドレス、VLANアドレス、IPアドレスの少なくとも1つの情報を用いて、フロー単位でハッシュ処理を行うステップと、該ハッシュ処理により振分け先のプロセッサを決定するステップと、該決定された振分け先のプロセッサに対応するPFリソースのパケットキューにパケットを送信するステップと、該決定された振分け先のプロセッサからの制御に応じて、該決定された振分け先のプロセッサへパケットをDMA(Direct Memory Access)転送するステップとをスイッチノードに実行させるためのプログラムである。
本発明に係るプログラムは、上記の通信制御方法における処理を、スイッチノードに実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
これにより、大容量の転送テーブルを対応した高速スイッチ処理が可能なソフトウェアベースのスイッチノードを実現できる。
従来のネットワークシステムの基本構成例を示す図である。 従来のネットワークシステムのネットワークスイッチフォワーディングエンジンの内部構成を示す図である。 従来のネットワークシステムの転送テーブルの構成例を示す図である。 従来のネットワークシステムのCPUの構成例を示す図である。 従来のネットワークシステムの制御サーバの構成例を示す図である。 本発明に係る通信制御システムの基本構成例を示す図である。 端末側の拡張ネットワークインターフェース(拡張NW I/F)の構成例を示す図である。 CPUとの間のパケット転送処理の動作を説明するためのフローチャートである。 制御サーバ側の拡張ネットワークインターフェース(拡張NW I/F)の構成例を示す図である。 宛先解析処理の動作を説明するためのフローチャートである。 本発明に係る通信制御システムのCPUの構成例を示す図である。 マルチCPU転送テーブル同期処理の動作を説明するためのフローチャートである。 本発明に係る通信制御システムの転送テーブルの構成例を示す図である。 本発明に係る通信制御システムの第1の実施例を示す図である。 本発明に係る通信制御システムの第2の実施例を示す図である。
<本発明の概要>
「PCI−SIG」(PCI Special Interest Group)で規定されているマルチルートPCIエクスプレス(PCIe:PCI Express)スイッチに、高速なパケットの処理を行うために複数のCPUと、パケットの入出力を行うための複数の拡張ネットワークインターフェース(NW I/F:Network Interface)を接続し、ソフトウェアベースでパケット処理を行うスイッチノードを構成する。
拡張ネットワークインターフェース(拡張NW I/F)は、端末から入力されるパケットを高速に処理するために、マルチルートPCIエクスプレス(PCIe)スイッチの先に接続されている複数のCPUに対して、パケットを送信する機能を持ち、パケットの処理を行うCPUを決定するためにパケットのヘッダを解析し、複数のCPUにパケットを振分けて転送を行う。
複数のCPUと複数の拡張ネットワークインターフェース(拡張NW I/F)間のデータ転送については、拡張ネットワークインターフェース(拡張NW I/F)は、複数のCPUに対してDMA転送を高速に行うために、複数のDMAコントローラを搭載し、複数のCPUに対して、各々のDMAコントローラを用いて、DMA転送で各CPUに負荷をかけず転送処理を行う。
各CPUは、大容量のメモリと接続し、パケットの転送先を決定する大量のエントリを持つ転送テーブルをメモリ上に構成する。
CPUは、拡張ネットワークインターフェース(拡張NW I/F)から入力されるパケットを受信すると、CPU上のソフトウェアによる処理で、パケットのフレーム解析を行い、メモリ上にある転送テーブルを検索し、パケットに対する処理(パケットの出力ポートやパケットヘッダ書換処理等)を決定する。
CPUは、パケットに対する処理が決定した後は、ソフトウェアベースで、決定した処理を行い、該当する拡張ネットワークインターフェース(拡張NW I/F)にパケットを送信する。
CPUは、転送テーブルの検索の結果、パケットに対する処理が決まらない場合は、拡張ネットワークインターフェース(拡張NW I/F)の先に接続される制御サーバにパケットの処理内容を問い合わせる。
CPUは、制御サーバからパケットの処理内容を受け取ると、転送テーブルに、エントリとして登録を行う。
また、CPUは、他のCPUが管理している転送テーブルにもエントリ登録を行い、同期処理を行い、拡張ネットワークインターフェース(拡張NW I/F)からどのCPUに対してもパケットを振分けて転送しても問題が発生しないようにする。
<実施形態>
以下に、本発明の実施形態について添付図面を参照して説明する。
本発明は、CD分離型ネットワークを対象としている。ここでは、CD分離型ネットワークの1つであるオープンフローネットワークを例に説明する。但し、実際には、オープンフローネットワークに限定されない。
[通信制御システムの構成]
図6は、本発明に係る通信制御システムの基本構成を示す。
本発明に係る通信制御システムは、端末2(2−i、i=1〜T:nは端末数)と、制御サーバ3と、スイッチノード4を含む。
制御サーバ3は、オープンフローネットワークにおけるコントローラに相当する。スイッチノード4は、オープンフローネットワークにおけるスイッチに相当する。端末2(2−i、i=1〜T)及び制御サーバ3は、スイッチノード4と接続されている。
制御サーバ3は、スイッチノード4に対して、ネットワークから入力されるパケットの最適な経路での転送や、該制御サーバ3との連携のための制御を行い、ネットワークサービスの向上を行う。なお、制御サーバ3は、従来のネットワークシステムと同様である。すなわち、制御サーバ3は、図5に示す通りである。
スイッチノード4は、マルチルートPCIエクスプレス(PCIe)スイッチ50と、拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M:Mは任意)と、CPU70(70−y、y=1〜N:Nは任意)と、メモリ80(80−y、y=1〜N)を備える。
マルチルートPCIエクスプレス(PCIe)スイッチ50は、拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)、及びCPU70(70−y、y=1〜N)と接続されている。
マルチルートPCIエクスプレス(PCIe)スイッチ50は、複数の拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)と複数のCPU70(70−y、y=1〜N)間のデータ転送を行うマルチルート対応のPCIエクスプレス(PCIe)スイッチである。
拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)は、端末2(2−i、i=1〜T)及び制御サーバ3と接続されている。
ここでは、拡張ネットワークインターフェース(拡張NW I/F)60−1は、端末2−1と接続されている。拡張ネットワークインターフェース(拡張NW I/F)60−2は、端末2−2と接続されている。拡張ネットワークインターフェース(拡張NW I/F)60−3は、端末2−3と接続されている。拡張ネットワークインターフェース(拡張NW I/F)60−4は、制御サーバ3と接続されている。
拡張ネットワークインターフェース(拡張NW I/F)60−1〜60−3は、端末2−1〜2−3から入力されるパケットを受け付ける。
例えば、拡張ネットワークインターフェース(拡張NW I/F)60−1は、端末2−1からLANインターフェース(1G MAC)にパケットが入力されると、複数のCPU70(70−y、y=1〜N)のうち、どのCPU70(70−y、y=1〜N)にパケットを振分けるかを判断し、マルチルートPCIエクスプレス(PCIe)スイッチ50を介して、該当のCPU70(70−y、y=1〜N)へパケット転送を行う。
CPU70(70−y、y=1〜N)は、メモリ80(80−y、y=1〜N)と接続されている。また、CPU70(70−y、y=1〜N)及び転送テーブル81(81−y、y=1〜N)は、ネットワークフォワーディングエンジン40と接続されている。
CPU70(70−y、y=1〜N)とメモリ80(80−y、y=1〜N)は、それぞれ1対1で対応している。すなわち、CPU70(70−y、y=1〜N)とメモリ80(80−y、y=1〜N)は、同数である。但し、実際には、複数のCPU70(70−y、y=1〜N)の各々が同一のメモリ80(80−y、y=1〜N)を共有していても良い。
CPU70(70−y、y=1〜N)は、パケット転送処理を行う。
メモリ80(80−y、y=1〜N)は、大容量のメモリであり、転送テーブル81(81−z、z=1〜N)を格納する。
このように、スイッチノード4において、マルチルートPCIエクスプレス(PCIe)スイッチ50は、大量のメモリ80(80−y、y=1〜N)を持つ複数のCPU70(70−y、y=1〜N)と、複数の拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)とをそれぞれ接続することで、複数の拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)によるスイッチポートを構成する。
また、複数の拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)から複数のCPU70(70−y、y=1〜N)への負荷分散転送処理を可能とすることで、複数のCPU70(70−y、y=1〜N)を用いた多重処理による高速パケット処理の実現、CPUの大容量メモリ空間を用いた大容量のフローテーブルを実現する。
これにより、スイッチノード4は、ソフトウェアベースのスイッチノードでありながら大容量フローテーブルを構成する高速なスイッチノードを実現する。
<ハードウェアの例示>
以下に、本発明に係る通信制御システムを実現するための具体的なハードウェアの例について説明する。
端末2(2−i、i=1〜T)、及び制御サーバ3の例として、PC(パソコン)、アプライアンス(appliance)、シンクライアント端末/サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、端末2(2−i、i=1〜T)の他の例として、IP電話機、携帯電話機、スマートフォン、スマートブック、カーナビ(カーナビゲーションシステム)、携帯型ゲーム機、家庭用ゲーム機、携帯型音楽プレーヤー、ハンディターミナル、ガジェット(電子機器)、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電(information home appliance)、OA(Office Automation)機器、店頭端末・高機能コピー機、デジタルサイネージ(Digital Signage:電子看板)等も考えられる。なお、端末2(2−i、i=1〜T)、及び制御サーバ3は、中継機器や周辺機器でも良い。
スイッチノード4の例として、ネットワークスイッチ(network switch)、ルータ(router)、プロキシ(proxy)、ゲートウェイ(gateway)、ファイアウォール(firewall)、ロードバランサ(load balancer:負荷分散装置)、帯域制御装置(packet shaper)、セキュリティ監視制御装置(SCADA:Supervisory Control And Data Acquisition)、ゲートキーパー(gatekeeper)、基地局(base station)、アクセスポイント(AP:Access Point)、通信衛星(CS:Communication Satellite)、或いは、複数の通信ポートを有する計算機等が考えられる。
端末2(2−i、i=1〜T)、制御サーバ3、及びスイッチノード4は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン(Virtual Machine(VM))でも良い。また、端末2(2−i、i=1〜T)、制御サーバ3、及びスイッチノード4は、車両や船舶、航空機等の移動体に搭載されていても良い。
拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)の例として、LANに対応した基板(マザーボードやI/Oボード)等の半導体集積回路、NIC(Network Interface Card)等のネットワークアダプタ、或いは、同様の拡張カード等が考えられる。ここでは、拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)は、ハードウェアで高速に処理を行うために、ネットワークプロセッサ(Network Processor)を搭載しているものとする。
CPU70(70−Y、Y=1〜N)は、プロセッサ(processor)の一例に過ぎない。CPU70(70−Y、Y=1〜N)は、ネットワークプロセッサ(NP:Network Processor)、マイクロプロセッサ(microprocessor)、マイクロコントローラ(microcontroller)、或いは、専用の機能を有する半導体集積回路(LSI:Large Scale Integration)等でも良い。
メモリ80(80−y、y=1〜N)の例として、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリ等の半導体記憶装置、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の補助記憶装置、又は、DVD(Digital Versatile Disk)等のリムーバブルディスクやSDメモリカード(Secure Digital memory card)等の記憶媒体(メディア)等が考えられる。
但し、実際には、これらの例に限定されない。
[拡張ネットワークインターフェースの構成(端末側)]
図7は、端末2−1〜2−3のいずれかと接続される拡張ネットワークインターフェース(拡張NW I/F)60−1〜60−3の構成を示す。
拡張ネットワークインターフェース(拡張NW I/F)60−1〜60−3の各々は、マルチルートPCIエクスプレス・エンドポイント(PCIe EP)61と、LANインターフェース(1G MAC)62と、CPU振分け処理部63と、PFリソース64(64−y、y=1〜N)を備える。
マルチルートPCIエクスプレス・エンドポイント(PCIe EP)61は、マルチルートPCIエクスプレス(PCIe)スイッチ50と接続されている。
LANインターフェース(1G MAC)62は、端末2−1〜2−3のいずれかとの間で、パケットの入出力を行う。LANインターフェース(1G MAC)とは、1Gbpsのデータ転送に対応したLANインターフェースという意味である。なお、「1G」は一例に過ぎない。
CPU振分け処理部63は、複数のCPU70(70−y、y=1〜N)へのパケットの振分け処理を行う。
PFリソース64(64−y、y=1〜N)は、複数のCPU70(70−y、y=1〜N)との間で、DMA転送で、制御メッセージやパケットの送受信を高速に行う。ここでは、PFリソース64(64−y、y=1〜N)の例として、PF1リソース64−1と、PF2リソース64−2と、PF3リソース64−3を示す。
[CPU振分け処理部の構成]
CPU振分け処理部63は、パケット振分処理部631と、パケット送信バッファ632と、パケット受信バッファ633と、パケット送信処理部634を備える。
パケット振分処理部631は、パケットのヘッダ部分を抽出し、ヘッダ部分の情報のうち、MACアドレスや、VLANアドレス、IPアドレス等の情報を用いて、フロー単位でハッシュ処理を行う。
パケット送信バッファ632は、振分け先のCPU70(70−y、y=1〜N)へパケットを転送するために、決定された振分け先のCPU70(70−y、y=1〜N)へパケットを届けることができるPFリソース64(64−y、y=1〜N)のいずれかにパケットを送信する。
パケット受信バッファ633は、CPU70(70−y、y=1〜N)から送信されたパケットを、PFリソース64(64−y、y=1〜N)を介して受信し、パケット送信処理部634に送信する。
パケット送信処理部634は、パケット受信バッファ633から受信したパケットを、端末2(2−i、i=1〜T)に送信する。
[PFリソースの構成]
PFリソース64(64−y、y=1〜N)の各々は、DMAコントローラ641と、CPU宛パケットキュー642と、CPU送信パケットキュー643を備える。
DMAコントローラ641は、該PFリソース64(64−y、y=1〜N)とCPU70(70−y、y=1〜N)との間のDMA転送制御を行う。
CPU宛パケットキュー642は、CPU70(70−y、y=1〜N)宛に送信するパケットを保持する。
CPU送信パケットキュー643は、CPU70(70−y、y=1〜N)から送信されたパケットを保持する。
[CPUとの間のパケット転送処理]
図8は、端末2(2−i、i=1〜T)からパケットが入力され、CPU70(70−y、y=1〜N)でパケットが処理され転送される場合の動作を説明するためのフローチャートを示す。
(1)ステップS101
端末2(2−i、i=1〜T)から拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)にパケットが入力されると、LANインターフェース(1G MAC)62は、パケットを受信し、パケット振分け処理部63のパケット振分処理部631にパケットを転送する。
(2)ステップS102
パケット振分処理部631は、パケットを受信すると、パケットのヘッダ部分を抽出する。
(3)ステップS103
パケット振分処理部631は、抽出したパケットのヘッダ部分の情報のうち、MACアドレスや、VLANアドレス、IPアドレス等の情報を用いて、フロー単位でハッシュ処理を行う。
ここでは、パケット振分処理部631は、複数のCPU70(70−y、y=1〜N)のどのCPU70(70−y、y=1〜N)にそのフローの処理を行わせるかを確定するためにハッシュ処理を行う。
(4)ステップS104
パケット振分処理部631は、ハッシュ処理により振分け先のCPU70(70−y、y=1〜N)を決定する。
(5)ステップS105
パケット振分処理部631は、決定された振分け先のCPU70へパケットを転送するために、パケット送信バッファ632にパケットを送信する。
パケット送信バッファ632は、決定された振分け先のCPU70へパケットを転送するために、決定された振分け先のCPU70へパケットを届けることができるPFリソース64のCPU宛パケットキュー642のいずれかにパケットを送信する。
この例では、パケット送信バッファ632は、CPU70−1に転送するため、PF1リソース64−1へパケットを送信する。
CPU70−1は、パケット送信バッファ632から送信されたパケットがPF1リソース64−1のCPU宛パケットキュー642−1に格納された場合、マルチルートPCIエクスプレス(PCIe)スイッチ50を介して、PF1リソース64−1のDMAコントローラ641−1を制御し、CPU70−1に負荷をかけずに高速にCPU宛パケットキュー642−1に蓄積されたパケットを受信する。
ここでは、CPU70−1は、PCIエクスプレス・ルート・コンプレックス(PCIe RC)71、マルチルートPCIエクスプレス(PCIe)スイッチ50、及びマルチルートPCIエクスプレス・エンドポイント(PCIe EP)61で構成されたPCIエクスプレス(PCIe)バスを通じて、PF1リソース64−1のDMAコントローラ641−1を制御する。
[拡張ネットワークインターフェースの構成(制御サーバ側)]
図9は、制御サーバ3と接続される拡張ネットワークインターフェース(拡張NW I/F)60−4の構成を示す。
拡張ネットワークインターフェース(拡張NW I/F)60−4は、マルチルートPCIエクスプレス・エンドポイント(PCIe EP)61と、LANインターフェース(1G MAC)62と、PF(ページファイル)リソース64(64−y、y=1〜N)と、パケット転送処理部65を備える。
拡張ネットワークインターフェース(拡張NW I/F)60−1〜60−3は、CPU振分け処理部63を備えていたが、拡張ネットワークインターフェース(拡張NW I/F)60−4は、代わりに、パケット転送処理部65を備える。実際には、CPU振分け処理部63とパケット転送処理部65の両方の機能を統合したものでも良い。
マルチルートPCIエクスプレス・エンドポイント(PCIe EP)61は、マルチルートPCIエクスプレス(PCIe)スイッチ50と接続されている。
LANインターフェース(1G MAC)62は、制御サーバ3との間で、パケットの入出力を行う。
PFリソース64(64−y、y=1〜N)は、複数のCPU70(70−y、y=1〜N)との間で、DMA転送で、制御メッセージやパケットの送受信を高速に行う。ここでは、PFリソース64(64−y、y=1〜N)の例として、PF1リソース64−1と、PF2リソース64−2と、PF3リソース64−3を示す。
パケット転送処理部65は、複数のCPU70(70−y、y=1〜N)の各々、並びに、制御サーバ3との間でのパケットの転送処理を行う。
[パケット転送処理部の構成]
パケット転送処理部65は、宛先解析処理部651と、パケット送信バッファ652と、パケット受信バッファ653と、パケット送信処理部654を備える。
宛先解析処理部651は、パケットのヘッダ部分を抽出し、ヘッダ部分の情報のうち、宛先MACアドレスを確認し、スイッチノード4内のCPU70(70−y、y=1〜N)が使用しているMACアドレスかどうかをチェックする。宛先解析処理部651は、チェック結果に応じて、パケットの転送先を変更する。
パケット送信バッファ652は、振分け先のCPU70(70−y、y=1〜N)へパケットを転送するために、決定された振分け先のCPU70(70−y、y=1〜N)へパケットを届けることができるPFリソース64(64−y、y=1〜N)のいずれかにパケットを送信する。
パケット受信バッファ653は、CPU70(70−y、y=1〜N)から送信されたパケットを、PFリソース64(64−y、y=1〜N)を介して受信し、パケット送信処理部654に送信する。
パケット送信処理部654は、パケット受信バッファ653から受信したパケットを、端末2(2−i、i=1〜T)に送信する。
[宛先解析処理]
図10は、宛先解析処理の動作を説明するためのフローチャートを示す。
(1)ステップS201
端末2(2−i、i=1〜T)から拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)にパケットが入力されると、LANインターフェース(1G MAC)62は、パケットを受信し、パケット振分け処理部63のパケット振分処理部631にパケットを転送する。
(2)ステップS202
宛先解析処理部651は、パケットを受信すると、パケットのヘッダ部分を抽出し、パケットの宛先MACアドレスを確認する。
(3)ステップS203
宛先解析処理部651は、宛先MACアドレスがスイッチノード4内のCPU70(70−y、y=1〜N)が使用しているMACアドレスかどうかをチェックする。
(4)ステップS204
宛先解析処理部651は、宛先MACアドレスがCPU70(70−y、y=1〜N)で利用されているMACアドレスである場合、外部にパケットを出力せず、折り返して、パケット送信バッファ652にパケットを出力する。
(5)ステップS205
宛先解析処理部651は、宛先MACアドレスがCPU70(70−y、y=1〜N)で利用されているMACアドレスではない場合、パケット送信処理部654にパケットを出力する。パケット送信処理部654は、LANインターフェース(1G MAC)62−4を経由し、制御サーバ3にパケットを送信する。
[拡張ネットワークインターフェースとCPUとの関係]
拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)は、マルチルート対応であり、端末2(2−i、i=1〜T)等から送信されるパケットを受信すると、内部で、CPU70(70−y、y=1〜N)の各々でのソフトウェアパケット処理の負荷分散処理と、パケット処理の多重化による高速化を行う。
拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)は、ハッシュ等を用いて、CPU70(70−y、y=1〜N)の各々へのパケットの振分け処理を決定する。
拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)は、DMAコントローラ641を用いて、CPU70(70−y、y=1〜N)の負荷を最小限にするように、マルチルートPCIエクスプレス(PCIe)スイッチ50を介して、高速にパケットを、CPU70(70−y、y=1〜N)の各々へ分散して、転送を行う。
CPU70(70−y、y=1〜N)の各々は、受信したパケットを各々ソフトウェア処理で解析し、各CPU70(70−y、y=1〜N)に付属する大容量のメモリ80(80−y、y=1〜N)に格納された転送テーブル81(81−z、z=1〜N)を用いて、テーブル検索を行い宛先出力ポートの決定を行う。
転送テーブル81(81−z、z=1〜N)は、大量のフローの宛先を管理する。
CPU70(70−y、y=1〜N)の各々は、出力ポート決定後は、出力先となる拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)のDMAコントローラ641を制御し、CPU負荷を最小限に高速に該当パケットを、マルチルートPCIエクスプレス(PCIe)スイッチ50を介して転送する。
また、CPU70(70−y、y=1〜N)の各々は、転送テーブル81(81−z、z=1〜N)の検索の結果、出力ポートが決定しない場合は、制御サーバ3に、拡張ネットワークインターフェース(拡張NW I/F)60−4を介してパケットを転送し、出力先の問合せを行う。
CPU70(70−y、y=1〜N)の各々は、問合せの結果、宛先が決まると、転送テーブル81(81−z、z=1〜N)に該当フローの宛先情報を格納する。
この際、CPU70(70−y、y=1〜N)の各々は、メモリ80(80−y、y=1〜N)で管理される転送テーブル81(81−z、z=1〜N)が同じ情報になるように同期処理を行い、検索処理の負荷分散を図ることを可能にする。
従って、従来のネットワークシステムのような、処理能力に限界がある単一のCPUベースで処理を行うソフトウェアベースのスイッチ処理を行わず、転送テーブル81(81−z、z=1〜N)容量が限られるハードウェアベースのスイッチ処理を行わないことで、大容量の転送テーブル81(81−z、z=1〜N)を対応した高速スイッチ処理が可能なソフトウェアベースのスイッチノード4を実現することが可能になる。
また、スイッチノード4は、一般のコンピュータでも利用される汎用性が高く安価で高性能なCPU、メモリ、PCIエクスプレス(PCIe)スイッチ、ネットワークインターフェースで構成することができ、コストの面で有利であり、ソフトウェアベースであるため変更の自由度が高いといったメリットもある。
[CPUの構成]
図11は、CPU70(70−y、y=1〜N)で実行されるソフトウェアの構成図を示す。
CPU70(70−y、y=1〜N)の各々は、PCIエクスプレス・ルート・コンプレックス(PCIe RC)71と、ネットワークインターフェースドライバ72と、パケット解析処理部73と、テーブル検索部74と、パケットバッファ処理部75と、サービス内容問合せ処理部76と、暗号処理部77と、拡張ネットワークサービス設定部78と、マルチCPU転送テーブル同期処理部79を備える。
PCIエクスプレス・ルート・コンプレックス(PCIe RC)71は、マルチルートPCIエクスプレス(PCIe)スイッチ50と接続されている。
ネットワークインターフェースドライバ72、パケット解析処理部73、テーブル検索部74、パケットバッファ処理部75、サービス内容問合せ処理部76、暗号処理部77、拡張ネットワークサービス設定部78、及びマルチCPU転送テーブル同期処理部79は、各CPU70(70−y、y=1〜N)がソフトウェアを実行することにより実現される。
ネットワークインターフェースドライバ72は、拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)を制御する。
パケット解析処理部73は、拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)から入力されるパケットの解析処理を行う。
テーブル検索部74は、パケットの転送処理方法を決定するための転送テーブル81(81−z、z=1〜N)を検索する。
パケットバッファ処理部75は、スイッチ処理、並びに、処理未決定のパケットに関して、制御サーバ3にパケットの処理内容を問い合わせるか否か決定するまでパケットを格納する。
サービス内容問合せ処理部76は、制御サーバ3にパケットの処理内容を問い合わせる。
暗号処理部77は、制御サーバ3と暗号通信を行う。
拡張ネットワークサービス設定部78は、制御サーバ3からの指示に従って、転送テーブル81(81−z、z=1〜N)を設定し拡張ネットワークサービスの処理を行う。
マルチCPU転送テーブル同期処理部79は、制御サーバ3からの指示を他のCPU70(70−y、y=1〜N)に伝え、転送テーブル81(81−z、z=1〜N)の同期処理を行う。
[マルチCPU転送テーブル同期処理]
図12は、マルチCPU転送テーブル同期処理の動作を説明するためのフローチャートを示す。
(1)ステップS301
サービス内容問合せ処理部76は、制御サーバ3へサービス処理方法(処理内容)を問い合わせる。ここでは、サービス内容問合せ処理部76は、サービス処理方法の問合せに関するパケットを暗号処理部77に送る。暗号処理部77は、サービス処理方法の問合せに関するパケットを暗号化してネットワークインターフェースドライバ72に送る。ネットワークインターフェースドライバ72は、暗号化されたパケットを、PCIエクスプレス・ルート・コンプレックス(PCIe RC)71を介して、マルチルートPCIエクスプレス(PCIe)スイッチ50に送る。マルチルートPCIエクスプレス(PCIe)スイッチ50は、暗号化されたパケットを、制御サーバ3へ送信する。
(2)ステップS302
制御サーバ3は、サービス処理方法を決定する。ここでは、制御サーバ3のパケット送受信処理部31は、暗号化されたパケットを受信し、暗号処理部32に送る。暗号処理部32は、暗号化されたパケットを復号し、サービス処理方法の問合せに関するパケットを拡張ネットワークサービス処理部33に送る。拡張ネットワークサービス処理部33は、サービス処理方法の問合せに関するパケットを基に、サービス処理方法を決定する。
(3)ステップS303
制御サーバ3は、決定されたサービス処理方法に従い、転送テーブル81(81−z、z=1〜N)へのエントリ追加処理を行う。ここでは、制御サーバ3は、上記のステップS301の逆の流れで、決定されたサービス処理方法に基づくエントリ追加要求を、サービス内容問合せ処理部76に送信する。サービス内容問合せ処理部76は、エントリ追加要求を拡張ネットワークサービス設定部78に通知する。
(4)ステップS304
拡張ネットワークサービス設定部78は、エントリ追加要求に従って、自CPU上の転送テーブル81(81−z、z=1〜N)の設定を行う。ここでは、拡張ネットワークサービス設定部78は、エントリ追加要求に従って、自CPUに付属する大容量のメモリ80(80−y、y=1〜N)に格納された転送テーブル81(81−z、z=1〜N)の設定を行う。
(5)ステップS305
拡張ネットワークサービス設定部78は、マルチCPU転送テーブル同期処理部79に、自CPU上の転送テーブル81(81−z、z=1〜N)の内容を通知する。マルチCPU転送テーブル同期処理部79は、自CPU上の転送テーブル設定を基に、他CPUへの転送テーブルの書込みを依頼する。ここでは、拡張ネットワークサービス設定部78は、自CPU上の転送テーブル81(81−z、z=1〜N)の内容を、マルチCPU転送テーブル同期処理部79に通知する。マルチCPU転送テーブル同期処理部79は、他CPU上の転送テーブル81(81−z、z=1〜N)を自CPU上の転送テーブル81(81−z、z=1〜N)と同期させるために、他CPUに対して、自CPU上の転送テーブル81(81−z、z=1〜N)の全エントリを通知し、他CPU上の転送テーブル81(81−z、z=1〜N)への書込みを依頼する。
(6)ステップS306
マルチCPU転送テーブル同期処理部79は、他CPUから書込み完了応答があるまで待機し、他CPUから書込み完了応答があれば、処理を終了する。
[転送テーブルの構成]
図13は、転送テーブル81(81−z、z=1〜N)の構成を示している。
転送テーブル81(81−z、z=1〜N)は、大量のフローを管理することができる。ここでは、転送テーブル81(81−z、z=1〜N)は、6400000件のエントリを管理している。
なお、「MAC DA」は、宛先MACアドレスを示す。「MAC SA」は、送信元MACアドレスを示す。「IP DA」は、宛先IPアドレスを示す。「IP SA」は、送信元IPアドレスを示す。
[CPUにおけるソフトウェアでのパケット処理]
以下に、CPU70(70−y、y=1〜N)において、ソフトウェアでパケットの処理を行う場合の動作について説明する。
CPU70(70−y、y=1〜N)において、拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)を制御するネットワークインターフェースドライバ72は、PCIエクスプレス・ルート・コンプレックス(PCIe RC)71を介して、DMAコントローラ641を制御し、CPU70(70−y、y=1〜N)と拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)間でのデータの送受信を行う。
ネットワークインターフェースドライバ72は、PCIエクスプレス・ルート・コンプレックス(PCIe RC)71を介して、拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)からパケットを受信した後、スイッチ動作を行うために、パケット解析処理部73に転送する。
パケット解析処理部73は、パケットのヘッダ情報等を抽出し、抽出したヘッダ情報等を解析し、ヘッダ情報を用いて検索キーを作成し、テーブル検索部74に渡す。
テーブル検索部74は、パケットに対する処理方法を決定するために、検索キーを用いて、大容量のメモリ80(80−y、y=1〜N)に格納されている転送テーブル81(81−z、z=1〜N)を検索する。
テーブル検索部74は、転送テーブル81(81−z、z=1〜N)を検索した結果、該当(ヒット)したエントリが存在した場合、該エントリのアクションを基に、パケットの出力ポート先、並びに、ヘッダの書換処理等の処理方法を決定する。
その後、テーブル検索部74は、パケットバッファ処理部75へパケットを転送する。
その後、パケットバッファ処理部75は、処理方法が決定している際、パケットの処理を行い、スイッチ動作のため、該当する出力ポートにパケットを出力する動作を行う。パケットバッファ処理部75は、決定した処理方法に従って、該当する出力ポートにパケットを出力するため、ネットワークインターフェースドライバ72にパケットを転送する。
ネットワークインターフェースドライバ72は、PCIエクスプレス・ルート・コンプレックス(PCIe RC)71を介して、DMAコントローラ641を制御し、出力ポート先となる拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)のCPU送信パケットキュー643にパケットを出力する。
更に、ネットワークインターフェースドライバ72は、DMAコントローラ641を制御し、CPU送信パケットキュー643に送信されたパケットを、パケット受信バッファ633に格納する。
パケット送信処理部634は、パケット受信バッファ633に格納されたパケットを読み出し、LANインターフェース(1G MAC)62を介して、出力先の端末2(2−i、i=1〜T)に送信する。
また、テーブル検索部74は、転送テーブル81(81−z、z=1〜N)を検索した結果、該当(ヒット)したエントリが存在しない場合、制御サーバ3にパケットの処理方法を問合せ、処理方法を確定する。
その際、サービス内容問合せ処理部76は、暗号処理部77を利用してパケット情報を暗号化した上で、ネットワークインターフェースドライバ72に転送する。
ネットワークインターフェースドライバ72は、PCIエクスプレス・ルート・コンプレックス(PCIe RC)71を介して、拡張ネットワークインターフェース(拡張NW I/F)60−4のDMAコントローラ641を制御し、暗号化されたパケット情報を、拡張ネットワークインターフェース(拡張NW I/F)60−4のCPU送信パケットキュー643に送信する。
ネットワークインターフェースドライバ72は、DMAコントローラ641を制御し、CPU送信パケットキュー643に送信されたパケット(暗号化されたパケット情報)を、パケット転送処理部65のパケット受信バッファ653に送信する。
その後、ネットワークインターフェースドライバ72は、DMAコントローラ641を制御し、パケット受信バッファ653に送信されたパケット(暗号化されたパケット情報)を、宛先解析処理部651に送信する。
宛先解析処理部651は、パケット(暗号化されたパケット情報)を受信すると、パケットの宛先MACアドレスを確認し、スイッチノード4内のCPU70(70−y、y=1〜N)が使用しているMACアドレスかどうかをチェックする。
宛先解析処理部651は、もしCPU70(70−y、y=1〜N)で利用されているMACアドレスの場合、外部にパケットを出力せず、折り返して、パケット送信バッファ652へパケット(暗号化されたパケット情報)を出力する。
宛先解析処理部651は、制御サーバ3宛のパケットのように、異なるMACアドレスの場合、パケット送信処理部654に送り、LANインターフェース(1G MAC)62−4を経由し、制御サーバ3にパケット(暗号化されたパケット情報)を送信する。
制御サーバ3のパケット送受信処理部31は、送信されたパケット(暗号化されたパケット情報)を受信し、暗号処理部32に転送する。
暗号処理部32は、暗号化されたパケット情報を復号し、パケット情報を拡張ネットワークサービス処理部33へ送信し、パケットに対する処理方法を決定する。
処理方法決定後、再度暗号処理部32は、処理方法に関する情報のパケットを暗号化し、パケット送受信処理部31へ送る。パケット送受信処理部31は、拡張ネットワークインターフェース(拡張NW I/F)60−4へパケットを送信し、暗号化されたパケットをスイッチノード4へ応答する。
スイッチノード4の拡張ネットワークインターフェース(拡張NW I/F)60−4のLANインターフェース(1G MAC)62−4は、応答パケットを受信し、パケット送信バッファ652に応答パケットを格納する。
スイッチノード4のCPU70(70−y、y=1〜N)のネットワークインターフェースドライバ72は、DMAコントローラ641を制御し、パケット送信バッファ652に格納された応答パケットを受信し、暗号処理部77に送る。暗号処理部77は、応答パケットを復号してサービス内容問合せ処理部76に送信する。
サービス内容問合せ処理部76は、制御サーバ3からの応答パケットにより、処理方法が確定すると、拡張ネットワークサービス設定部78に処理内容を通知する。
拡張ネットワークサービス設定部78は、パケットヘッダ書換処理を行い、指示されたパケット出力ポートにパケットを送信し、パケットのスイッチ動作を行う。
また、拡張ネットワークサービス設定部78は、次回パケットから転送テーブル81(81−z、z=1〜N)での処理方法を確定できるように、制御サーバ3から得たパケット処理方法を、自CPUに付随するメモリ80の転送テーブル81(81−z、z=1〜N)に書き込む。
また、拡張ネットワークサービス設定部78は、複数のCPU70(70−y、y=1〜N)で同様の処理を行えるように、マルチCPU転送テーブル同期処理部79に同期処理を要求する。
マルチCPU転送テーブル同期処理部79は、同期処理の要求に応じて、自CPU70(70−y、y=1〜N)の転送テーブル81(81−z、z=1〜N)の情報を基に、他のCPU70(70−y、y=1〜N)の転送テーブル81(81−z、z=1〜N)の情報を更新し、複数のCPU間の転送テーブル81(81−z、z=1〜N)の同期処理を行う。
[本実施形態の特徴]
以上のように、マルチルートPCIエクスプレス(PCIe)スイッチを用いて、各CPUへのパケットの振分け処理を実現可能にすることができる。
また、拡張ネットワークインターフェース(拡張NW I/F)を用いて、複数のCPUを用いたソフトウェアベースの高速なスイッチ動作処理を実現可能にすることができる。
また、CPUは大容量のメモリを搭載することが可能なため、大容量の転送テーブルの構築が可能で、大量のフローを管理可能な高速なソフトウェアベースのスイッチノード構成が可能となる。
本発明では、「PCI−SIG」で規定されている複数のCPU70(70−y、y=1〜N)と複数のI/O(Input/Output)を、接続可能な標準のマルチルート対応のPCIエクスプレス(PCIe)スイッチを利用する。
また、本発明では、ネットワークプロセッサ等を搭載したパケットに対して解析を行い、CPUへ処理を振分けることが可能な、マルチルートに対応する拡張ネットワークインターフェース(拡張NW I/F)カードを利用する。
また、本発明では、パケット処理を行うための汎用的なCPUとメモリを利用する。
本発明では、ソフトウェアベースでありながら、CPU間の転送テーブルの同期化と複数のCPUによるパケット処理を行うことで、高速なパケット処理を実現する。
また、本発明では、PCIエクスプレス(PCIe)ベースによるDMAコントローラを利用した、拡張ネットワークインターフェース(拡張NW I/F)とCPU間、並びに、複数のCPU間での高速なパケットの送受信を行う。
これにより、大容量の転送テーブルを持つ、高速なソフトウェアベースのスイッチノードの構成が可能になる。
また、スイッチノードを構成するハードウェア部品は、標準規格の部品であるため、装置のコスト削減効果が期待できると共に、CPUを増やすことで、性能面のスケーラビリティと、ソフトウェアベースであるため、柔軟性が高いスイッチノードの構成が期待できる。
本発明は、1000万フロー等、大量のフローの管理を必要とするネットワーク装置や、高速で複雑なパケット処理を必要とするネットワーク装置、或いは、多数のサーバを利用した高機能ネットワーク装置に適用することができる。
本発明は、外部に制御サーバを用いない構成においても適用することができ、高性能なスイッチノードを実現することができる。
<第1の実施例>
図14に、第1の実施例におけるスイッチノードの構成例を示す。
本実施例に係る通信制御システムは、端末2(2−i、i=1〜T)と、制御サーバ3と、スイッチノード5を含む。
端末2(2−i、i=1〜T)、及び制御サーバ3については、先に説明した通りである。
スイッチノード5は、LANスイッチ100と、CPU及びメモリ110(110−y、y=1〜N)と、PCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)と、シングルルートPCIエクスプレス・エンドポイント(PCIe EP)及び拡張ネットワークインターフェース(拡張NW I/F)130(130−x、x=1〜(M+1))と、マルチルートPCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)140(140−x、x=1〜(M+1))を備える。
LANスイッチ100は、イーサネットスイッチ(Ethernet(登録商標) switch)であり、PCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)と、シングルルートPCIエクスプレス・エンドポイント(PCIe EP)及び拡張ネットワークインターフェース(拡張NW I/F)130(130−x、x=1〜(M+1))とを接続する。
CPU及びメモリ110(110−y、y=1〜N)は、CPU70(70−y、y=1〜N)とメモリ80(80−y、y=1〜N)を組み合わせたものに相当する。
PCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)は、PCIエクスプレス(PCIe)スイッチとネットワーク仮想化インターフェース(NW仮想化I/F)を組み合わせたものに相当する。PCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)は、LANスイッチ100と、CPU及びメモリ110(110−y、y=1〜N)とを接続する。
シングルルートPCIエクスプレス・エンドポイント(PCIe EP)及び拡張ネットワークインターフェース(拡張NW I/F)130(130−x、x=1〜(M+1))は、シングルルートPCIエクスプレス・エンドポイント(PCIe EP)と拡張ネットワークインターフェース(拡張NW I/F)60(60−x、x=1〜M)を組み合わせたものに相当する。シングルルートPCIエクスプレス・エンドポイント(PCIe EP)及び拡張ネットワークインターフェース(拡張NW I/F)130(130−x、x=1〜(M+1))は、端末2(2−i、i=1〜T)と、マルチルートPCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)140(140−x、x=1〜(M+1))を接続する。
マルチルートPCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)140(140−x、x=1〜(M+1))は、マルチルートPCIエクスプレス(PCIe)スイッチ50とネットワーク仮想化インターフェース(NW仮想化I/F)を組み合わせたものに相当する。マルチルートPCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)140(140−x、x=1〜(M+1))は、LANスイッチ100と、シングルルートPCIエクスプレス・エンドポイント(PCIe EP)及び拡張ネットワークインターフェース(拡張NW I/F)130(130−x、x=1〜(M+1))を接続する。
本発明では、CPUの数を増やせば増やすほど、スイッチ処理能力の向上が期待できる。
「PCI−SIG」規定に準拠したマルチルート対応のPCIエクスプレス(PCIe)スイッチ相当のものであれば、同様に利用可能であり、LANスイッチを用いた、マルチルート対応のスイッチを構成し、シングルルートの拡張ネットワークインターフェース(拡張NW I/F)を仮想化して、複数のCPUからアクセス可能し、マルチルートと同等なシステム構成にも適用可能である。
この場合、スイッチはLAN上に構成されるため、非常に大規模な仮想スイッチを構成し、そこにCPUとメモリを持つ大量のサーバと、ネットワークインターフェースを接続することで、非常に大規模で高性能なスイッチノードを構成することができる。
<第2の実施例>
また、図15に、第2の実施例におけるスイッチノードの構成例を示す。
図15は、図14のCPU70(70−y、y=1〜N)部分を大量のプロセッサを搭載したGPU(Graphics Processing Unit)に変更した場合の構成である。
GPUを用いた場合、CPUよりも更にパケット処理の高速化が期待でき、PCIエクスプレス(PCIe)に接続できるため、CPUの代わりにパケット処理をGPUに行わせることも可能である。
但し、GPUはI/Oであるため、1つはマスターCPUとして、余分にCPUの接続が必要である。
本実施例に係る通信制御システムは、端末2(2−i、i=1〜T)と、制御サーバ3と、スイッチノード6を含む。
端末2(2−i、i=1〜T)、及び制御サーバ3については、先に説明した通りである。
スイッチノード6は、LANスイッチ100と、CPU及びメモリ110と、PCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)と、シングルルートPCIエクスプレス・エンドポイント(PCIe EP)及び拡張ネットワークインターフェース(拡張NW I/F)130(130−x、x=1〜(M+1))と、マルチルートPCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)140(140−x、x=1〜(M+1))と、GPU及びメモリ150(150−y、y=1〜N)と、エクスプレス(PCI Express)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)を備える。
LANスイッチ100、CPU及びメモリ110、PCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)、シングルルートPCIエクスプレス・エンドポイント(PCIe EP)及び拡張ネットワークインターフェース(拡張NW I/F)130(130−x、x=1〜(M+1))、マルチルートPCIエクスプレス(PCIe)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)140(140−x、x=1〜(M+1))については、図14に示す第1の実施例と同じである。
GPU及びメモリ150(150−y、y=1〜N)は、GPU及びメモリ150(150−y、y=1〜N)を組み合わせたものに相当する。
エクスプレス(PCI Express)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)は、エクスプレス(PCI Express)スイッチとネットワーク仮想化インターフェース(NW仮想化I/F)を組み合わせたものに相当する。エクスプレス(PCI Express)スイッチ及びネットワーク仮想化インターフェース(NW仮想化I/F)120(120−y、y=1〜N)は、LANスイッチ100と、GPU及びメモリ150(150−y、y=1〜N)とを接続する。
<まとめ>
本発明は、ソフトウェアベースのネットワークスイッチノードにおいて、「PCI−SIG」で規定されているマルチルートPCIエクスプレス(PCIe)スイッチを活用した、大量の転送テーブルを管理でき、高性能なパケット転送処理を実現するノード構成に関する。
本発明は、ソフトウェアベースのスイッチノードにおいて、大容量のフローテーブルを構成し高速なパケットスイッチ処理を行い、外部の制御サーバと接続し高機能なサービス・プロトコル処理を、PCIエクスプレス(PCIe)で規定されているマルチルート対応のスイッチ並びにネットワークインターフェースを活用して実現する。
本発明に係るスイッチノードは、マルチルートPCIエクスプレス(PCIe)スイッチと、多数のCPUと、多数のネットワークインターフェースカードを用いて、ソフトウェアベースで構築される。
本発明に係るスイッチノードは、ネットワークインターフェース内で、パケットの処理負荷分散を行うために、CPUへの処理振分けを行い、マルチルートPCIエクスプレス(PCIe)スイッチを用いて、複数のCPUへ処理の負荷分散を行う。
本発明に係るスイッチノードは、複数のCPU間で転送テーブルの同期を、マルチルートPCIエクスプレス(PCIe)スイッチを介して、折り返し可能な拡張インターフェースカードを利用して、高速に同期処理を行う。
<備考>
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
なお、本出願は、日本出願番号2011−063441に基づく優先権を主張するものであり、日本出願番号2011−063441における開示内容は引用により本出願に組み込まれる。

Claims (6)

  1. パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うスイッチノードと、
    前記スイッチノードのフローテーブルに対して、前記フローエントリの設定を行う制御サーバと
    を含み、
    前記スイッチノードは、
    大容量のメモリを持つ複数のプロセッサと複数の拡張ネットワークインターフェースとを、マルチルート対応のPCIエクスプレススイッチで接続し、複数の拡張ネットワークインターフェースによるスイッチポートを構成する手段と、
    前記複数の拡張ネットワークインターフェースから前記複数のプロセッサへの負荷分散転送処理を行い、前記複数のプロセッサを用いた多重処理による高速パケット処理を行う手段と、
    前記複数のプロセッサの大容量のメモリ空間を用いて、ソフトウェアベースのスイッチノードで大容量のフローテーブルを構成する手段と
    前記複数の拡張ネットワークインターフェースのいずれかでパケットを受信する手段と、
    前記パケットを受信した拡張ネットワークインターフェース内で、ハッシュを用いて前記複数のプロセッサへの振分け処理を決定し、プロセッサでのソフトウェアパケット処理の負荷分散処理とパケット処理の多重化による高速化を行う手段と、
    前記PCIエクスプレススイッチを介して、前記拡張ネットワークインターフェースのDMAコントローラを用いて、前記パケットを前記複数のプロセッサへ分散して転送を行う手段と
    を具備し、
    前記複数のプロセッサの各々は、
    受信したパケットをソフトウェア処理で解析する手段と、
    該プロセッサに付属する大容量のメモリを用いて構成された大量のフローの宛先を管理するフローテーブルを用いて、テーブル検索を行い宛先出力ポートの決定を行う手段と、
    前記宛先出力ポートの決定後、出力先となる拡張ネットワークインターフェースのDMAコントローラを制御し、前記PCIエクスプレススイッチを介して、前記パケットを転送する手段と、
    前記フローテーブルの検索の結果、前記宛先出力ポートが決定しない場合、前記スイッチノードの拡張ネットワークインターフェースを介して、前記パケットを制御サーバに転送し、出力先の問合せを行う手段と、
    問合せの結果、宛先が決まると、前記フローテーブルに該当フローの宛先情報を格納する手段と、
    前記複数のプロセッサ間でのフローテーブルの同期処理を行い、前記複数のプロセッサの各々で管理されるフローテーブルに同じ情報を格納して、検索処理の負荷分散を図る手段と
    を具備する
    通信制御システム。
  2. パケットを受信する複数の拡張ネットワークインターフェースと、
    大容量のメモリを持つ複数のプロセッサと、
    前記複数のプロセッサと複数の拡張ネットワークインターフェースとを接続するマルチルート対応のPCIエクスプレススイッチと
    を具備し、
    前記複数の拡張ネットワークインターフェースの各々は、
    パケットの入出力を行うLANインターフェースと、
    前記複数のプロセッサへのパケットの振分け処理、複数のプロセッサ間でのパケット転送並びに制御サーバへのパケットの転送処理のうち、少なくとも1つの転送処理を行うパケット転送処理部と、
    前記複数プロセッサとDMA転送でパケットの送受信を高速に行うための複数のPFリソースと、
    前記PCIエクスプレススイッチと接続するためのPCIエクスプレス・エンドポイントと
    を具備し、
    前記複数のプロセッサの各々は、
    PCIエクスプレス・ルート・コンプレックスを介して前記PCIエクスプレススイッチと接続し、前記拡張ネットワークインターフェースを制御するネットワークインターフェースドライバと、
    前記拡張ネットワークインターフェースから入力されるパケットの解析処理を行うパケット解析処理部と、
    前記パケットの解析結果を基に、前記パケットの転送処理方法を決定するためのフローテーブルを検索するテーブル検索部と、
    スイッチ処理並びに処理未決定のパケットに関して制御サーバに問合せ、処理方法を決定するまでパケットを格納しておくためのパケットバッファ処理部と、
    前記制御サーバにパケットの処理内容を問い合わせるためのサービス内容問合せ処理部と、
    前記制御サーバと暗号通信を行うための暗号処理部と、
    前記制御サーバからの指示に従って、前記フローテーブルを設定し、前記拡張ネットワークサービスの処理を行うための拡張ネットワークサービス設定部と、
    前記制御サーバからの指示を他のプロセッサに伝え、前記複数のプロセッサ間でのフローテーブルの同期処理を行うためのマルチプロセッサ転送テーブル同期処理部と
    を具備する
    スイッチノード。
  3. 請求項に記載のスイッチノードであって、
    前記パケット処理部は、
    パケットを受信すると、パケットの宛先MACアドレスを確認し、該スイッチノード内のプロセッサが使用しているMACアドレスかどうかをチェックする手段と、
    該スイッチノード内のプロセッサが使用しているMACアドレスである場合、外部にパケットを出力せず、折り返して、前記PFリソースへパケットを送信する手段と、
    該スイッチノード内のプロセッサが使用しているMACアドレスではない場合、前記LANインターフェースを経由し、前記制御サーバにパケットを送信し、前記制御サーバに該パケットの処理内容を問い合わせて、前記制御サーバからの応答パケットを、前記PFリソースへ送信する手段と
    を更に具備する
    スイッチノード。
  4. 制御サーバから自身のフローテーブルに設定された、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うスイッチノードにおける通信制御方法であって、
    大容量のメモリを持つ複数のプロセッサと複数の拡張ネットワークインターフェースとを、マルチルート対応のPCIエクスプレススイッチで接続し、複数の拡張ネットワークインターフェースによるスイッチポートを構成することと、
    前記複数の拡張ネットワークインターフェースから前記複数のプロセッサへの負荷分散転送処理を行い、前記複数のプロセッサを用いた多重処理による高速パケット処理を行うことと、
    前記複数のプロセッサの大容量のメモリ空間を用いて、ソフトウェアベースのスイッチノードで大容量のフローテーブルを構成することと
    を含む通信制御方法であって、
    前記複数の拡張ネットワークインターフェースのいずれかでパケットを受信することと、
    前記パケットを受信した拡張ネットワークインターフェース内で、ハッシュを用いて前記複数のプロセッサへの振分け処理を決定し、プロセッサでのソフトウェアパケット処理の負荷分散処理とパケット処理の多重化による高速化を行うことと、
    前記PCIエクスプレススイッチを介して、前記拡張ネットワークインターフェースのDMAコントローラを用いて、前記パケットを前記複数のプロセッサへ分散して転送を行うことと、
    前記複数のプロセッサの各々において、
    受信したパケットをソフトウェア処理で解析することと、
    該プロセッサに付属する大容量のメモリを用いて構成された、大量のフローの宛先を管理するフローテーブルを用いて、テーブル検索を行い宛先出力ポートの決定を行うことと、
    前記宛先出力ポートの決定後、出力先となる拡張ネットワークインターフェースのDMAコントローラを制御し、前記PCIエクスプレススイッチを介して、前記パケットを転送することと、
    前記フローテーブルの検索の結果、前記宛先出力ポートが決定しない場合、前記スイッチノードの拡張ネットワークインターフェースを介して、前記パケットを制御サーバに転送し、出力先の問合せを行うことと、
    問合せの結果、宛先が決まると、前記フローテーブルに該当フローの宛先情報を格納することと、
    前記複数のプロセッサ間でのフローテーブルの同期処理を行い、前記複数のプロセッサの各々で管理されるフローテーブルに同じ情報を格納して、検索処理の負荷分散を図ることと
    を更に含む
    通信制御方法。
  5. パケットを受信する複数の拡張ネットワークインターフェースと、大容量のメモリを持つ複数のプロセッサと、がマルチルート対応のPCIエクスプレススイッチを介して接続されており、制御サーバから自身のフローテーブルに設定された、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うスイッチノードにより実行されるプログラムを格納した記憶媒体であって、
    前記複数の拡張ネットワークインターフェースのいずれかにおいて、端末からパケットを受信すると、パケットのヘッダ部分を抽出するステップと、
    前記抽出したパケットのヘッダ部分の情報のうち、MACアドレス、VLANアドレス、IPアドレスの少なくとも1つの情報を用いて、フロー単位でハッシュ処理を行うステップと、
    前記ハッシュ処理により振分け先のプロセッサを決定するステップと、
    前記決定された振分け先のプロセッサに対応するPFリソースのパケットキューにパケットを送信するステップと、
    前記決定された振分け先のプロセッサからの制御に応じて、前記決定された振分け先のプロセッサへパケットをDMA転送するステップと
    パケットを受信すると、パケットの宛先MACアドレスを確認し、該スイッチノード内のプロセッサが使用しているMACアドレスかどうかをチェックするステップと、
    該スイッチノード内のプロセッサが使用しているMACアドレスである場合、外部にパケットを出力せず、折り返して、前記PFリソースへパケットを送信するステップと、
    該スイッチノード内のプロセッサが使用しているMACアドレスではない場合、前記制御サーバにパケットを送信し、前記制御サーバに該パケットの処理内容を問い合わせて、前記制御サーバからの応答パケットを、前記PFリソースへ送信するステップと
    をスイッチノードに実行させるためのプログラムを格納した
    記憶媒体。
  6. 請求項に記載の記憶媒体であって、
    前記制御サーバにより決定されたサービス処理方法に基づくエントリ追加要求に従って、自CPUに付属する大容量のメモリに格納されたフローテーブルの設定を行うステップと、
    前記フローテーブルの設定を基に、他CPUへのフローテーブルの書込みを行い、複数のプロセッサ間でのフローテーブルの同期処理を行うステップと
    を更にスイッチノードに実行させるためのプログラムを格納した
    記憶媒体。
JP2013505986A 2011-03-23 2012-03-21 通信制御システム、スイッチノード、及び通信制御方法 Expired - Fee Related JP5601601B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013505986A JP5601601B2 (ja) 2011-03-23 2012-03-21 通信制御システム、スイッチノード、及び通信制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011063441 2011-03-23
JP2011063441 2011-03-23
PCT/JP2012/057176 WO2012128282A1 (ja) 2011-03-23 2012-03-21 通信制御システム、スイッチノード、及び通信制御方法
JP2013505986A JP5601601B2 (ja) 2011-03-23 2012-03-21 通信制御システム、スイッチノード、及び通信制御方法

Publications (2)

Publication Number Publication Date
JPWO2012128282A1 JPWO2012128282A1 (ja) 2014-07-24
JP5601601B2 true JP5601601B2 (ja) 2014-10-08

Family

ID=46879424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013505986A Expired - Fee Related JP5601601B2 (ja) 2011-03-23 2012-03-21 通信制御システム、スイッチノード、及び通信制御方法

Country Status (7)

Country Link
US (1) US9407577B2 (ja)
EP (1) EP2690831A4 (ja)
JP (1) JP5601601B2 (ja)
KR (1) KR101559644B1 (ja)
CN (1) CN103444138B (ja)
RU (1) RU2584449C2 (ja)
WO (1) WO2012128282A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5928087B2 (ja) * 2012-03-29 2016-06-01 富士通株式会社 スイッチ、情報処理装置および通信制御方法
US10129182B2 (en) * 2012-06-29 2018-11-13 Juniper Networks, Inc. Methods and apparatus for providing services in distributed switch
US10097481B2 (en) 2012-06-29 2018-10-09 Juniper Networks, Inc. Methods and apparatus for providing services in distributed switch
CN104038425B (zh) * 2013-03-06 2018-01-02 阿里巴巴集团控股有限公司 转发以太网报文的方法和装置
CN103596649B (zh) * 2013-04-25 2015-07-29 华为技术有限公司 一种在虚拟局域网中通信的方法、设备和系统
US9319349B2 (en) * 2013-06-20 2016-04-19 Micron Technology, Inc. Encapsulation enabled PCIE virtualisation
CN103428094B (zh) * 2013-08-12 2016-08-17 杭州华三通信技术有限公司 开放流OpenFlow系统中的报文转发方法及装置
CN104702496A (zh) * 2013-12-10 2015-06-10 财团法人资讯工业策进会 封包交换系统及方法
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
WO2015147859A1 (en) 2014-03-28 2015-10-01 Hewlett-Packard Development Company, L.P. Reconciling information in a controller and a node
US10142220B2 (en) 2014-04-29 2018-11-27 Hewlett Packard Enterprise Development Lp Efficient routing in software defined networks
JPWO2015194534A1 (ja) 2014-06-17 2017-04-20 日本電気株式会社 スイッチ装置とコンピュータシステムと方法並びにプログラム
US9961167B2 (en) * 2014-06-19 2018-05-01 Cavium, Inc. Method of modifying packets to a generic format for enabling programmable modifications and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
AU2014399458B2 (en) * 2014-06-30 2018-01-18 Huawei Technologies Co., Ltd. Flow Entry Configuration Method, Apparatus, and System
KR102398213B1 (ko) * 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US20170004802A1 (en) * 2015-07-01 2017-01-05 Asustek Computer Inc. Digital signage
KR101678850B1 (ko) * 2015-07-09 2016-12-06 아토리서치(주) 소프트웨어 정의 네트워크에서 스위치의 변경 방법, 장치 및 컴퓨터 프로그램
KR101881780B1 (ko) * 2016-02-19 2018-07-25 정덕기 네트워크 데이터 처리 장치 및 방법
KR101854377B1 (ko) * 2016-11-10 2018-05-03 고려대학교 산학협력단 고속 패킷 처리 시스템 및 그 제어방법
RU179300U1 (ru) * 2017-04-05 2018-05-07 Общество с ограниченной ответственностью "БУЛАТ" Абонентское сетевое устройство с виртуализированными сетевыми функциями
JP6617744B2 (ja) * 2017-04-05 2019-12-11 トヨタ自動車株式会社 車両システム
CN107241249B (zh) * 2017-05-19 2020-05-22 闫晓峰 以太总线交换机、以太总线系统以及数据通讯方法
KR102007082B1 (ko) * 2017-08-09 2019-08-02 박익동 다대다(n:n) 구조의 경로 관리 스위치 및 그것에 의해 수행되는 경로 관리 방법
JP7104308B2 (ja) 2018-04-25 2022-07-21 富士通株式会社 プロセッサ及び情報処理装置
CN108810182B (zh) * 2018-04-28 2021-05-18 深圳市德赛微电子技术有限公司 一种基于openflow系统的NAT流表动态学习及配置方法
CN108462661A (zh) * 2018-06-07 2018-08-28 浙江国自机器人技术有限公司 一种多cpu控制器及其通讯系统
KR101939788B1 (ko) * 2018-06-29 2019-01-17 한화시스템(주) 단일 이더넷 연동 지원 장비에 대한 통합연동처리 시스템 및 이를 이용한 통합연동처리 방법
US10964158B2 (en) 2018-10-05 2021-03-30 Jcm American Corporation Apparatus for retrofit of auxiliary serial communication port(s) in a slot accounting system
JP2022118598A (ja) * 2021-02-02 2022-08-15 株式会社オートネットワーク技術研究所 車載装置、通信速度の制御方法、及びプログラム
US11714775B2 (en) * 2021-05-10 2023-08-01 Zenlayer Innovation LLC Peripheral component interconnect (PCI) hosting device
US11677672B2 (en) 2021-06-25 2023-06-13 Cornelis Newtorks, Inc. Telemetry-based load-balanced fine-grained adaptive routing in high-performance system interconnect
US11637778B2 (en) * 2021-06-25 2023-04-25 Cornelis Newtorks, Inc. Filter with engineered damping for load-balanced fine-grained adaptive routing in high-performance system interconnect
CN114422419B (zh) * 2021-12-17 2024-05-28 阿里巴巴(中国)有限公司 网络设备连接方法及装置
WO2023233574A1 (ja) * 2022-06-01 2023-12-07 日本電信電話株式会社 情報処理システム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010110183A1 (ja) * 2009-03-23 2010-09-30 日本電気株式会社 分散処理システム、インタフェース、記憶装置、分散処理方法、分散処理プログラム
WO2011004548A1 (ja) * 2009-07-06 2011-01-13 日本電気株式会社 I/oシステム、下流pciエクスプレスブリッジ、インターフェース共有方法、およびプログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7293129B2 (en) * 2005-04-22 2007-11-06 Sun Microsystems, Inc. Flexible routing and addressing
US7478178B2 (en) * 2005-04-22 2009-01-13 Sun Microsystems, Inc. Virtualization for device sharing
US7613864B2 (en) * 2005-04-22 2009-11-03 Sun Microsystems, Inc. Device sharing
US7565463B2 (en) * 2005-04-22 2009-07-21 Sun Microsystems, Inc. Scalable routing and addressing
US20070165596A1 (en) 2006-01-18 2007-07-19 Boyd William T Creation and management of routing table for PCI bus address based routing with integrated DID
US7380046B2 (en) * 2006-02-07 2008-05-27 International Business Machines Corporation Method, apparatus, and computer program product for routing packets utilizing a unique identifier, included within a standard address, that identifies the destination host computer system
WO2008018485A1 (fr) 2006-08-09 2008-02-14 Nec Corporation Commutateur pour une interconnexion, et système
CN101242371B (zh) * 2008-03-14 2010-11-10 杭州华三通信技术有限公司 基于PCIe交换架构路由器堆叠的方法、系统和装置
US8346996B2 (en) * 2008-10-29 2013-01-01 Nec Corporation Information processing system
US8503468B2 (en) * 2008-11-05 2013-08-06 Fusion-Io, Inc. PCI express load sharing network interface controller cluster
CN102365846B (zh) 2009-03-26 2014-07-02 日本电气株式会社 路由设置服务器、路由设置方法和路由设置程序
JP5267943B2 (ja) * 2009-03-30 2013-08-21 日本電気株式会社 PCI−Express通信システム、及びPCI−Express通信方法
US8327039B2 (en) * 2009-08-14 2012-12-04 Cadence Design Systems, Inc. Integrated DMA processor and PCI express switch for a hardware-based functional verification system
US20110064424A1 (en) 2009-09-15 2011-03-17 Xerox Corporation Dynamic media thickness, curl sensing system
JPWO2011105303A1 (ja) * 2010-02-23 2013-06-20 日本電気株式会社 遠隔制御システム、遠隔制御方法、及び遠隔制御用プログラム
US20110302390A1 (en) * 2010-06-05 2011-12-08 Greg Copeland SYSTEMS AND METHODS FOR PROCESSING COMMUNICATIONS SIGNALS fUSING PARALLEL PROCESSING

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010110183A1 (ja) * 2009-03-23 2010-09-30 日本電気株式会社 分散処理システム、インタフェース、記憶装置、分散処理方法、分散処理プログラム
WO2011004548A1 (ja) * 2009-07-06 2011-01-13 日本電気株式会社 I/oシステム、下流pciエクスプレスブリッジ、インターフェース共有方法、およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7014001436; Yan Luo,Pablo Cascon,Eric Murray,Julio Ortega: 'Accelerating OpenFlowswitching with network processors' ANCS '09 Proceedings of the 5th ACM/IEEE Symposium on Architectures for Networking and Communication , 20091020, pp.70-71, ACM *

Also Published As

Publication number Publication date
JPWO2012128282A1 (ja) 2014-07-24
US9407577B2 (en) 2016-08-02
EP2690831A1 (en) 2014-01-29
CN103444138A (zh) 2013-12-11
RU2013147150A (ru) 2015-04-27
CN103444138B (zh) 2016-03-30
EP2690831A4 (en) 2014-12-10
KR101559644B1 (ko) 2015-10-12
KR20130128461A (ko) 2013-11-26
US20140016648A1 (en) 2014-01-16
RU2584449C2 (ru) 2016-05-20
WO2012128282A1 (ja) 2012-09-27

Similar Documents

Publication Publication Date Title
JP5601601B2 (ja) 通信制御システム、スイッチノード、及び通信制御方法
CN108476208B (zh) 多路径传输设计
US9450780B2 (en) Packet processing approach to improve performance and energy efficiency for software routers
TWI538453B (zh) 網路介面控制器、積體電路微晶片、系統及方法
US8644139B2 (en) Priority based flow control within a virtual distributed bridge environment
US8806025B2 (en) Systems and methods for input/output virtualization
US9838300B2 (en) Temperature sensitive routing of data in a computer system
US8176204B2 (en) System and method for multi-host sharing of a single-host device
TWI515572B (zh) 分散式虛擬橋接器環境中暫存器存取之系統及方法
JP2008171413A (ja) データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(ソケット接続および共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
JP2008152786A (ja) データ処理システム内で1つまたは複数のエンドポイントの第1の物理機能から第2の物理機能に仮想機能を移行するための方法、プログラム、およびシステム(単一ルート・ステートレス仮想機能の移行のためのシステムおよび方法)
JP2008165776A (ja) データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法、プログラム、およびシステム(複数のルート複合体全域でエンドポイントを共用するために共用メモリを初期設定するためのシステムおよび方法)
JP2008152783A (ja) データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(トランザクション・プロトコルおよび共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
US10599600B2 (en) Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments
US9021125B2 (en) Control path I/O virtualisation
EP3563534B1 (en) Transferring packets between virtual machines via a direct memory access device
US9515963B2 (en) Universal network interface controller
US20170351639A1 (en) Remote memory access using memory mapped addressing among multiple compute nodes
US11086801B1 (en) Dynamic resource management of network device
US10616116B1 (en) Network traffic load balancing using rotating hash
US10257080B1 (en) Hardware resource allocation for equal-cost multi-path groups
Zang et al. PROP: Using PCIe-based RDMA to accelerate rack-scale communications in data centers
US20240104045A1 (en) System and method for ghost bridging

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140704

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: 20140725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140807

R150 Certificate of patent or registration of utility model

Ref document number: 5601601

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees