(57)【特許請求の範囲】
【請求項１】
パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うスイッチと、
前記スイッチに対して、前記フローエントリの登録の指示を行うコントローラと
を含み、
前記スイッチは、異なる権限を持つ複数のユーザにより使用されるアクセス元ホストから未知のパケットを受信した際、該パケットを前記コントローラに通知し、
前記コントローラは、前記アクセス元ホストに対して、該パケットの発信に係るユーザの認証情報を問い合わせ、前記認証情報を基に、該パケットの宛先であるアクセス先ホストに対して、アクセス可否を問い合わせ、アクセスが許可された場合、前記スイッチに対して、該パケットの転送に関するフローエントリの登録の指示を行い、アクセスが拒否された場合、前記スイッチに対して、該パケットの破棄に関するフローエントリの登録の指示を行う
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記コントローラは、アクセスが拒否された場合、アクセス拒否回数を記録し、前記アクセス拒否回数が許容値内であるか確認し、前記アクセス拒否回数が許容値内である場合、前記スイッチに対して、該パケットの破棄に関するフローエントリの登録の指示を行い、前記アクセス拒否回数が許容値に達した場合、前記アクセス元ホストに対して、該パケットの発信に係るユーザの利用制限の指示を行い、前記スイッチに対して、該パケットの破棄に関するフローエントリの削除の指示を行う
ネットワークシステム。
【請求項３】
請求項１または２に記載のネットワークシステムであって、
前記コントローラは、異なる権限を持つ複数のユーザにより使用されるアクセス元ホストがアクセス先ホストへのアクセスを試みる際、前記アクセス元ホストから、パケットの発信に係るユーザの認証情報を取得し、前記認証情報を基に、アクセス可否を判断し、アクセスを許可する場合、前記スイッチに対して、該パケットの転送に関するフローエントリの登録の指示を行い、アクセスを拒否する場合、前記スイッチに対して、該パケットの破棄に関するフローエントリの登録の指示を行う
ネットワークシステム。
【請求項４】
パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って受信したパケットの処理を行うスイッチに対して、前記フローエントリの登録の指示を行う手段と、
前記スイッチから、異なる権限を持つ複数のユーザにより使用されるアクセス元ホストが送出した未知のパケットに関する通知を受信する手段と、
前記アクセス元ホストに対して、該パケットの発信に係るユーザの認証情報を問い合わせる手段と、
前記認証情報を基に、該パケットの宛先であるアクセス先ホストに対して、アクセス可否を問い合わせる手段と、
アクセスが許可された場合、前記スイッチに対して、該パケットの転送に関するフローエントリの登録の指示を行う手段と、
アクセスが拒否された場合、前記スイッチに対して、該パケットの破棄に関するフローエントリの登録の指示を行う手段と
を具備する
コントローラ。
【請求項５】
請求項４に記載のコントローラであって、
アクセスが拒否された場合、アクセス拒否回数を記録する手段と、
前記アクセス拒否回数が許容値内であるか確認する手段と、
前記アクセス拒否回数が許容値内である場合、前記スイッチに対して、該パケットの破棄に関するフローエントリの登録の指示を行う手段と、
前記アクセス拒否回数が許容値に達した場合、前記アクセス元ホストに対して、該パケットの発信に係るユーザの利用制限の指示を行い、前記スイッチに対して、該パケットの破棄に関するフローエントリの削除の指示を行う手段と
を更に具備する
コントローラ。
【請求項６】
請求項４または５に記載のコントローラであって、
異なる権限を持つ複数のユーザにより使用されるアクセス元ホストがアクセス先ホストへのアクセスを試みる際、前記アクセス元ホストから、パケットの発信に係るユーザの認証情報を取得する手段と、
前記認証情報を基に、アクセス可否を判断する手段と、
アクセスを許可する場合、前記スイッチに対して、該パケットの転送に関するフローエントリの登録の指示を行う手段と、
アクセスを拒否する場合、前記スイッチに対して、該パケットの破棄に関するフローエントリの登録の指示を行う手段と
を更に具備する
コントローラ。
【請求項７】
スイッチが、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うことと、
コントローラが、前記スイッチから、異なる権限を持つ複数のユーザにより使用されるアクセス元ホストが送出した未知のパケットに関する通知を受信することと、前記アクセス元ホストに対して、該パケットの発信に係るユーザの認証情報を問い合わせること、前記認証情報を基に、該パケットの宛先であるアクセス先ホストに対して、アクセス可否を問い合わせることと、アクセスが許可された場合、前記スイッチに対して、該パケットの転送に関するフローエントリの登録の指示を行うことと
を含む
パケット認証方法。
【請求項８】
パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って受信したパケットの処理を行うスイッチに対して、前記フローエントリの登録の指示を行うステップと、
前記スイッチから、異なる権限を持つ複数のユーザにより使用されるアクセス元ホストが送出した未知のパケットに関する通知を受信するステップと、
前記アクセス元ホストに対して、該パケットの発信に係るユーザの認証情報を問い合わせるステップと、
前記認証情報を基に、該パケットの宛先であるアクセス先ホストに対して、アクセス可否を問い合わせるステップと、
アクセスが許可された場合、前記スイッチに対して、該パケットの転送に関するフローエントリの登録の指示を行うステップと
を計算機に実行させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムに関し、特にネットワーク機器のパケット転送機能と経路制御機能を分離したネットワークシステムに関する。
【背景技術】
【０００２】
コンピュータシステムのホストやネットワークの利用形態の１つとして、共通のホスト（共有ホスト）に異なる権限を持つ複数のユーザが、ログインやプログラムを実行して、当該共有ホストからネットワーク内の別ホストにアクセスするといった利用形態がしばしば見られる。以下に例を挙げる。【０００３】
（１）内部共有ホスティングサービス
大規模な組織において、異なる部署のユーザがネットワークやホストを共有するサービス等が考えられる。共有ホストからアクセスする先にある別のサーバやネットワークはユーザによって利用権限が異なる。【０００４】
（２）外部共有ホスティングサービス
通信業者やインターネットサービスプロバイダが提供する共有のホスティングサービス等が考えられる。追加契約したユーザしか利用できないサービスに共有ホストからアクセスする場合等が該当する。【０００５】
（３）クラウドコンピューティングサービス
クラウドコンピューティングで、多数のユーザにアプリケーション（Ａｐｐｌｉｃａｔｉｏｎ  ｓｏｆｔｗａｒｅ）の開発／実行環境を提供するサービス等が考えられる。いわゆるＰａａＳ（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）の一部である。ＰａａＳの実現形態は様々であり、実質的に共有ホストで行われているものがある。そのような実現形態で、上記の（２）外部共有ホスティングサービスの例と同様に、追加契約のサービス等が存在すると該当する。【０００６】
このような環境において、十分なネットワークセキュリティを確保することは、ある種の困難を伴う。何故なら、共有ホストからコネクション（接続）を試みる場合、そのコネクションをパケット単位で監視しても発信元（送信元）のユーザやプログラムを識別できない。すなわち、パケットに許されるべき転送先を判断できないためである。したがって、パケット転送を行うデータリンク層（以後、Ｌ２）やネットワーク層（以後、Ｌ３）のスイッチやルータでは、アクセス制御を行うのが困難である。【０００７】
セキュリティを実現する方式の１つとして、Ｌ２やＬ３ではアクセス制御を行わず、専ら受信側ホストの上位層でユーザの認証／認可をするアクセス制御方式が考えられる。このようなアクセス制御方式として、サービス毎に固有のアクセス制御方式、或いは、「Ｋｅｒｂｅｒｏｓ」や「ＩＤＥＮＴ」（参考文献：ＲＦＣ１４１３）のように汎用的なアクセス制御方式が存在する。【０００８】
しかし、サービス毎に固有のアクセス制御方式では、受信側ホストの該当の処理が脆弱性を持っていると深刻な攻撃を受ける危険性がある。より強固なセキュリティを実現するためには、複数のネットワーク層でセキュリティの対策を講じることが望ましい。【０００９】
また、汎用的なアクセス制御方式は、広く使用され十分に検証されていることから、サービス毎に固有のアクセス制御方式よりも一般に安全性が高いと期待できる。しかし、既存サービスの中には、汎用的なアクセス制御方式に未対応のサービスも存在する。そのような未対応のサービスを汎用的なアクセス制御方式に対応させるには、接続手順の変更が伴うという問題がある。なお、「ＩＤＥＮＴ」については、情報の信頼性や流出といった問題により、現在では使用されなくなっている。【００１０】
別の方式として、物理的な共有ホストにおいて、仮想化技術を用いてユーザ毎に分離された仮想のホスト環境を提供する方式もある。この場合、仮想のホスト環境の各々から送信されるパケットのそれぞれに、異なる「ＩＰアドレス」や「ＶＬＡＮ  ＩＤ」を付すことで、ルータやＬ２スイッチがパケットへのアクセス制御を容易に行えるようになる。しかし、仮想のホスト環境を用いる場合、単純な共有ホストよりも多くのハードウェア資源が必要になる。【００１１】
以上のような弊害なく、共有ホストからの通信に高度なセキュリティを確保するためには、コネクション単位のアクセス制御が接続先のサーバにパケットが届く前の段階で行われることが求められる。したがって、パケットを転送／中継する機能を有するルータやスイッチといったネットワーク機器において、パケットの発信元の「ＩＰアドレス」や「ＶＬＡＮ  ＩＤ」が同一でも、発信元のユーザに応じて適切な許可・不許可を判断すれば良い。【００１２】
このような目的を達成し得るものとして、ファイアウォール装置やＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ：ネットワークアドレス変換）装置にコネクション単位で接続要求を出して該コネクションのパケットのみ転送を許可する技術が公開されている。【００１３】
［特許文献１］
例えば、特許文献１（特開２００８−０８５４７０号公報）に、ＩＰアプリケーションサービス提供システムが開示されている。このＩＰアプリケーションサービス提供システムは、内部から外部向けへのアウトバウンド通信のみを許容するように設定されているゲートウェイ装置により外部ネットワークから隠蔽され、かつ内部ネットワークに属する内部ノードと、外部ネットワークに属する外部ノードとの間での意図するＩＰアプリケーション通信での外部から内部向けへのインバウンド通信も可能にする。このとき、ゲートウェイ装置配下の内部ノードが、外部ネットワーク上の接続支援装置に対し、制御チャネルポートの通知及び制御チャネルパスの通信許容エントリの維持を目的とする制御パケットを定期送信する。また、接続支援装置から制御チャネルを通して外部ノード対応の接続先アドレス及びポートの通知を受ける。また、通知を受けた接続先アドレス及びポートに対してＩＰアプリケーションのデータチャネルをアクティブにオープンする。【００１４】
［特許文献２］
また、特許文献２（特許第４３６２１３２号公報）に、アドレス変換方法、アクセス制御方法、及びそれらの方法を用いた装置が開示されている。この関連技術では、グローバルネットワーク側の送信元の装置又は送信元のネットワーク毎に定めたアクセス制御ルールと、送信元の装置毎に定めたアドレス変換ルールとをデータベースに記録しておく。グローバルネットワーク側からのパケットを受信すると、送信元情報を含んだアクセス制御ルールに従って、グローバルネットワークからプライベートネットワークへのアクセスを制限する。また、送信元情報を含んだアドレス変換ルールに従って、宛先アドレスの変換を行って、グローバルネットワーク側からの情報をプライベートネットワーク側に伝える。プライベートネットワーク側からのパケットを受信すると、送信元情報を含んだアドレス変換ルールに従って、送信元アドレスの変換を行って、プライベートネットワーク側からの情報をグローバルネットワーク側に伝える。【００１５】
しかし、これらの技術には、以下のような課題がある。【００１６】
［第１の課題］
第１の課題は、ユーザやアプリケーションに対して通常と異なる接続手順を求めることである。【００１７】
特許文献１（特開２００８−０８５４７０号公報）では、ファイアウォール装置／ＮＡＴ装置の外側に配置された仲介ノードに接続を要求する。そして、その要求によってファイアウォール装置／ＮＡＴ装置の内側にある本来の通信相手から要求元のホストの方向で接続するので、通常とは、接続方向が逆転する。【００１８】
特許文献２（特許第４３６２１３２号公報）では、本来の通信相手との接続手順の前にファイアウォール装置／ＮＡＴ装置に接続して認証処理を行う。【００１９】
また、特許文献１（特開２００８−０８５４７０号公報）、特許文献２（特許第４３６２１３２号公報）ともに本来の通信相手のアドレスに加えて、仲介ノードやファイアウォール装置／ＮＡＴ装置のアドレスも知っている必要がある。【００２０】
［第２の課題］
第２の課題は、同時接続できるコネクションの数がファイアウォール装置／ＮＡＴ装置の保持できるエントリ数に制約されることである。【００２１】
特許文献１（特開２００８−０８５４７０号公報）、特許文献２（特許第４３６２１３２号公報）ともに、コネクションを試みる前にファイアウォール装置／ＮＡＴ装置にパケット転送が行われるようにエントリを登録し、コネクションが存在する間は、該エントリを保持しておく必要がある。【００２２】
［第３の課題］
第３の課題は、複数のファイアウォール装置／ＮＡＴ装置を多段にした大規模な構成に適さないことである。【００２３】
特許文献２（特許第４３６２１３２号公報）では、通過する各装置に事前の要求を繰り返さなければならない。これは、通信を行うユーザやアプリケーションの負担が増大することを意味する。【００２４】
また、特許文献１（特開２００８−０８５４７０号公報）、特許文献２（特許第４３６２１３２号公報）ともに、特定の装置に通信経路が集約されるようにネットワークを構成すると、該装置で多くのエントリが使用される。そのため、前記の第２の課題が顕在化しやすい。ファイアウォール装置／ＮＡＴ装置は、ネットワークのゲートウェイとしても使用されることが多いので、このような構成は、ごく一般形なものである。【００２５】
この問題は、フィルタリング・ルールによって回避することも考えられる。例えば、あるファイアウォール装置／ＮＡＴ装置から別の装置に向かうパケットについては、一方でのみアクセス制御を行い、もう一方では、常に通信を許可するよう設定することが考えられる。【００２６】
しかし、このような回避策は、ネットワークの規模に応じて設定や運用の負担が増大するので、やはり大規模な多段構成には適さない。【００２７】
［特許文献３］
更に、関連する技術として、特許文献３（特開２０００−２９５２７４号公報）にパケット交換装置が開示されている。このパケット交換装置は、ＩＰフローテーブルに対して、発信元ＩＰアドレスと宛先ＩＰアドレスとをサーチキー（検索キー）として、ルーティング処理の結果を登録し、保持する。また、パケットを受信した場合に、発信元ＩＰアドレス及び宛先ＩＰアドレスをサーチキーとしてＩＰフローテーブルを検索し、該当ＩＰフローが登録されていた場合、マイクロプロセッサによるルーティング処理へ移行することなく、ＩＰフローに示されるルーティング処理結果に基づいて、適切な出力ポートへ転送する。また、ネットワークインタフェースと接続され、受け取ったパケットに対し下位レイヤの処理を実行し送出する。【００２８】
［特許文献４］
また、特許文献４（特開２００２−０４４１４３号公報）に通信制御方式及びルータ及び通信制御方法が開示されている。この関連技術では、ユニキャスト経路表にホスト毎の経路を挿入／削除することにより、端末に対するユニキャストの経路制御を行う通信制御方式において、通信制御方式の適用範囲内にマルチキャストアドレスとそのマルチキャストアドレス宛てのパケットの受信を望む端末のユニキャストアドレスをブロードキャストすることによりマルチキャストグループ管理表を管理し、上記ユニキャスト経路表とマルチキャストグループ管理表からマルチキャスト経路表を作成する。【００２９】
［特許文献５］
また、特許文献５（特開２０１１−１６６７００号公報）にネットワークシステム、及びパケット投機転送方法が開示されている。この関連技術では、制御機能を外部のコントローラとして分離したネットワーク機器で構成されるネットワークにおいて、各ネットワーク機器の経路情報を管理するフローテーブルに経路情報がないパケットを投機的に転送し、外部ネットワークに送信する直前で保留する。各ネットワーク機器は、投機的な転送の成否をコントローラからのフローテーブルの設定によって判定する。また、投機的に転送したパケットを経由した全てのネットワーク機器で保持しておき、投機的な転送に失敗したと判定した場合に、投機キャンセルパケットを送ることによって投機的に転送したパケットを取り消し、転送先を間違えたネットワーク機器からパケットを送り直す。【００３０】
［特許文献６］
また、特許文献６（特表２００７−５２９１３５号公報）に予測的アドホックに関する技術が開示されている。この関連技術は、複数のネットワーク・ノードから成る複数ホップの無線通信ネットワークにおいて、効率的なルーティングを行うシステムに関するものである。当該システムは、該インフラ・ノード間のリンク状態を示す品質情報を取得する。また、予測手順を用いるインフラ・ノード内の経路決定プロセスにおいて該リンク品質情報を用いる。そして、決定された経路に従ってデータパケットを送る。該リンク品質情報は、該リンク状態の時間的に変化する情報についての情報を含んでおり、該予測手順は、予測手順の中でリンク状態の該時間的に変化する情報を使用する。【００３１】
［ＣＵ分離型ネットワークの説明］
現在、ネットワークシステムの制御方式の１つとして、外部の制御装置（コントロールプレーン）からノード装置（ユーザプレーン）を制御するＣＵ（Ｃ：コントロールプレーン／Ｕ：ユーザプレーン）分離型ネットワークが提案されている。【００３２】
ＣＵ分離型ネットワークの一例として、コントローラからスイッチを制御してネットワークの経路制御を行うオープンフロー（ＯｐｅｎＦｌｏｗ）技術を利用したオープンフローネットワークが挙げられる。オープンフロー技術の詳細については、非特許文献１（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｖｅｒｓｉｏｎ  １．１．０）に記載されている。なお、オープンフローネットワークは、一例に過ぎない。【００３３】
［オープンフローネットワークの説明］
オープンフローネットワークでは、オープンフローコントローラ（ＯＦＣ：ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）等の制御装置が、オープンフロースイッチ（ＯＦＳ：ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）等のノード装置の経路制御に関するフローテーブル（Ｆｌｏｗ  ｔａｂｌｅ）を操作することにより、ノード装置の挙動を制御する。【００３４】
以下、記載の簡略化のため、オープンフローコントローラ（ＯＦＣ）を「コントローラ（ＯＦＣ）」と表記し、オープンフロースイッチ（ＯＦＳ）を「スイッチ（ＯＦＳ）」と表記する。【００３５】
コントローラ（ＯＦＣ）とスイッチ（ＯＦＳ）の間は、コントローラ（ＯＦＣ）がオープンフロー規約（ＯｐｅｎＦｌｏｗ  Ｐｒｏｔｏｃｏｌ）に準拠した制御メッセージであるオープンフローメッセージ（ＯｐｅｎＦｌｏｗ  Ｍｅｓｓａｇｅ）を用いてスイッチ（ＯＦＳ）を制御するためのセキュアチャンネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）により接続されている。【００３６】
オープンフローネットワークにおけるスイッチ（ＯＦＳ）とは、オープンフローネットワークを形成し、コントローラ（ＯＦＣ）の制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチ（Ｉｎｇｒｅｓｓ）でのパケット（ｐａｃｋｅｔ）の受信から出力側エッジスイッチ（Ｅｇｒｅｓｓ）での送信までのパケットの一連の流れをフロー（Ｆｌｏｗ）と呼ぶ。【００３７】
パケットは、フレーム（ｆｒａｍｅ）と読み替えても良い。パケットとフレームの違いは、プロトコルが扱うデータの単位（ＰＤＵ：Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）の違いに過ぎない。パケットは、「ＴＣＰ／ＩＰ」（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）のＰＤＵである。一方、フレームは、「Ｅｔｈｅｒｎｅｔ（登録商標）」のＰＤＵである。【００３８】
フローテーブルとは、所定のマッチ条件（ルール）に適合するパケット（通信データ）に対して行うべき所定の動作（アクション）を定義したフローエントリ（Ｆｌｏｗ  ｅｎｔｒｙ）が登録されたテーブルである。【００３９】
フローエントリのルールは、パケットの各プロトコル階層のヘッダ領域（フィールド）に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は、全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローエントリのルールとして使用可能である。また、フローエントリのルールとして、フローを示すパケットのヘッダ領域の値の一部（又は、全部）を、正規表現やワイルドカード「＊」等で表現したものを指定することもできる。【００４０】
フローエントリのアクションは、「パケットを特定のポートに出力／転送する」、「パケットを破棄／廃棄する（削除する）」、「パケットのヘッダを書き換える」といった動作を示す。例えば、スイッチ（ＯＦＳ）は、フローエントリのアクションに出力ポートの識別情報（出力ポート番号等）が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチ（ＯＦＳ）は、フローエントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいてパケットのヘッダを書き換える。【００４１】
オープンフローネットワークにおけるスイッチ（ＯＦＳ）は、フローエントリのルールに適合するパケット群（パケット系列）に対して、フローエントリのアクションを実行する。
【先行技術文献】
【特許文献】
【００４２】
【特許文献１】特開２００８−０８５４７０号公報
【特許文献２】特許第４３６２１３２号公報
【特許文献３】特開２０００−２９５２７４号公報
【特許文献４】特開２００２−０４４１４３号公報
【特許文献５】特開２０１１−１６６７００号公報
【特許文献６】特表２００７−５２９１３５号公報
【非特許文献】
【００４３】
【非特許文献１】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｖｅｒｓｉｏｎ  １．１．０  Ｉｍｐｌｅｍｅｎｔｅｄ”，［ｏｎｌｉｎｅ］，Ｆｅｂｒｕａｒｙ  ２８，  ２０１１，インターネット（ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．１．０．ｐｄｆ）
【発明の概要】
【００４４】
本発明では、共有ホスティングサービスの環境であることを前提にして、上記の既存技術の課題を解決する効果的な方式を提案する。このような環境では、共有ホストとネットワーク機器は、同一の主体（共通の管理者（ａｄｍｉｎｉｓｔｒａｔｏｒ））によって十分に管理されると期待できる。よって、これらの機器により構成された閉じたネットワークの範囲内であれば、従来と異なる接続手順を導入することが容易である。また、閉じたネットワークの範囲内であれば、通信機器同士は相互に信頼できるので情報の信頼性や流出といった問題も発生しない（又は、発生する可能性が十分に低い）と想定できる。
【００４５】
本発明の目的は、ネットワーク機器にパケットが届いた時点で、パケット転送の可否の判断を行い、パケット転送が許可された場合、ネットワーク機器にそのパケットの転送を許可するフローエントリの登録を行うネットワークシステムを提供することである。
【００４６】
従来技術では、ネットワーク機器にパケットが届く以前にエントリを登録しておく必要があった。それに対して、本発明では、ネットワーク機器にパケットが届いてから（届いた後に）エントリを登録する。すなわち、いわゆる「オン・デマンド」（ｏｎ  ｄｅｍａｎｄ）でエントリを登録する。
【００４７】
本発明に係るネットワークシステムは、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うスイッチと、スイッチに対して、フローエントリの登録の指示を行うコントローラとを含む。コントローラは、スイッチに到着するパケットに対し、当該パケットの送信元の権限に基づいて、当該パケットの転送の可否の判断に関する処理を行い、当該パケットの転送が許可された場合、スイッチに対して、当該パケットの転送に関するフローエントリの登録の指示を行う。
【００４８】
本発明に係るコントローラは、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って受信したパケットの処理を行うスイッチに対して、フローエントリの登録の指示を行う機能部と、スイッチに到着するパケットに対し、当該パケットの送信元の権限に基づいて、当該パケットの転送の可否の判断に関する処理を行い、当該パケットの転送が許可された場合、スイッチに対して、当該パケットの転送に関するフローエントリの登録の指示を行う機能部とを具備する。
【００４９】
本発明に係るパケット認証方法では、スイッチが、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行う。また、コントローラが、スイッチに到着するパケットに対し、当該パケットの送信元の権限に基づいて、当該パケットの転送の可否の判断に関する処理を行い、当該パケットの転送が許可された場合、スイッチに対して、当該パケットの転送に関するフローエントリの登録の指示を行う。
【００５０】
本発明に係るプログラムは、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って受信したパケットの処理を行うスイッチに対して、フローエントリの登録の指示を行うステップと、スイッチに到着するパケットに対し、当該パケットの送信元の権限に基づいて、当該パケットの転送の可否の判断に関する処理を行うステップと、当該パケットの転送が許可された場合、スイッチに対して、当該パケットの転送に関するフローエントリの登録の指示を行うステップとを計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００５１】
これにより、接続先のホスト（サーバ等）にパケットが届く前の段階で、コネクション単位のアクセス制御を可能にする。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明に係るネットワークシステムの構成例を示す図である。
【図２】図２は、フローテーブルの初期状態について説明するための図である。
【図３】図３は、認証／許可に関する処理の流れを示すフローチャートである。
【図４】図４は、フローテーブル２２が初期状態で、適切な権限を持つユーザがアクセスを試みた場合における一連の動作について説明するための図である。
【図５】図５は、フローテーブルに「転送」のフローエントリが登録された状態について説明するための図である。
【図６】図６は、フローテーブルに「転送」のフローエントリが登録された状態の時に、適切な権限を持たないユーザがアクセスを試みた場合における一連の動作について説明するための図である。
【図７】図７は、フローテーブルに「破棄」のフローエントリが登録された状態について説明するための図である。
【図８】図８は、フローテーブルが多数の「破棄」のフローエントリで占められた状態について説明するための図である。
【図９】図９は、フローテーブルが多数の「破棄」のフローエントリで占められた状態から回復する場合における一連の動作について説明するための図である。
【発明を実施するための形態】
【００５３】
本発明は、ＣＵ分離型ネットワークを対象としている。ここでは、ＣＵ分離型ネットワークの１つであるオープンフローネットワークを例に説明する。但し、実際には、オープンフローネットワークに限定されない。
【００５４】
＜実施形態＞
以下に、本発明の実施形態について添付図面を参照して説明する。
【００５５】
［システム構成］
図１を参照して、本発明に係るネットワークシステムの構成例について説明する。
【００５６】
本発明に係るネットワークシステムは、コントローラ（ＯＦＣ）１０と、スイッチ（ＯＦＳ）２０と、アクセス元ホスト３０と、アクセス先ホスト４０を含む。
【００５７】
コントローラ（ＯＦＣ）１０、スイッチ（ＯＦＳ）２０、アクセス元ホスト３０、及びアクセス先ホスト４０は、それぞれ複数でも良い。
【００５８】
コントローラ（ＯＦＣ）１０は、スイッチ（ＯＦＳ）２０を管理する制御装置である。
【００５９】
スイッチ（ＯＦＳ）２０は、ネットワークを構成し、アクセス元ホスト３０とアクセス先ホスト４０との間の通信を中継するパケット転送装置である。ここでは、アクセス元ホスト３０からのパケットを最初に受信する入力側エッジスイッチ（Ｉｎｇｒｅｓｓ）を想定している。無論、スイッチ（ＯＦＳ）２０は、多段構成にすることができる。すなわち、スイッチ（ＯＦＳ）２０とアクセス先ホスト４０との間に、スイッチ（ＯＦＳ）２０と同じ構成のスイッチ（ＯＦＳ）を配置しても良い。これらのスイッチ（ＯＦＳ）は、コントローラ（ＯＦＣ）１０により一元的に管理されているものとする。
【００６０】
アクセス元ホスト３０は、異なる権限を持つ複数のユーザがログインやプログラムを実行し、アクセス先ホスト４０とのコネクション（接続）を試みる際に利用する発信元の共有ホストである。
【００６１】
アクセス先ホスト４０は、アクセス元ホスト３０からユーザがコネクションを試みる宛先のホストである。
【００６２】
アクセス元ホスト３０及びアクセス先ホスト４０は、スイッチ（ＯＦＳ）２０を介してネットワーク通信を行う。ここでは、アクセス元ホスト３０は、クライアントに相当する。アクセス先ホスト４０は、サーバに相当する。クライアントとサーバとの間でＴＣＰ接続を確立するには、クライアントがサーバに「ＳＹＮパケット」を送信し、サーバがクライアントに「ＡＣＫパケット」を返信し、最後にクライアントがその「ＡＣＫパケット」を送り返すという手順を踏む。例えば、アクセス元ホスト３０は、アクセス先ホスト４０にＳＹＮパケットを送信する。アクセス先ホスト４０は、ＳＹＮパケットを受信した際、ＡＣＫパケットを返信する。アクセス元ホスト３０は、アクセス先ホスト４０からＡＣＫパケットを受信した際、アクセス先ホスト４０にＡＣＫパケットを送り返す。なお、アクセス元ホスト３０及びアクセス先ホスト４０は、クライアントやサーバに限らず、オープンフローに未対応のネットワーク機器等でも良い。
【００６３】
前述の通り、アクセス元ホスト３０を利用する複数のユーザの各々は、異なる権限を持っている。無論、同一の権限を持つユーザが存在していても良い。アクセス元ホスト３０を利用するユーザの中には、権限の違いによって、アクセス先ホスト４０へのアクセスが許可されるユーザと拒否されるユーザとが存在する。
【００６４】
コントローラ（ＯＦＣ）１０とスイッチ（ＯＦＳ）２０の間は、専用線やＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）等により保護された通信路である「セキュアチャンネル」で接続されている。セキュアチャンネルにより構成された制御ネットワークを「セキュアチャンネルネットワーク」と呼ぶ。コントローラ（ＯＦＣ）１０とスイッチ（ＯＦＳ）２０は、セキュアチャンネルネットワークを経由し、オープンフロープロトコルに則った通信を行う。ここでは、コントローラ（ＯＦＣ）１０は、セキュアチャンネルネットワークを介してスイッチ（ＯＦＳ）２０と接続し、スイッチ（ＯＦＳ）２０からの通知を受信し、スイッチ（ＯＦＳ）２０への指示を行う。
【００６５】
コントローラ（ＯＦＣ）１０は、スイッチ（ＯＦＳ）２０に到着するパケットをスイッチ（ＯＦＳ）２０がどのように処理するかについて、各パケットに対応する経路情報であるフローエントリを操作することにより制御する。
【００６６】
コントローラ（ＯＦＣ）１０は、スイッチ（ＯＦＳ）２０に、多数のフローエントリを登録することになる。フローエントリの集合は、「フローテーブル」と呼ばれる表形式で管理されている。
【００６７】
スイッチ（ＯＦＳ）２０は、パケットの転送等を行う装置であり、内部に備えるフローテーブルに登録されたフローエントリの内容に従って、受信したパケットへの操作を行う。本発明で行われる「パケットへの操作」は、パケットの転送／破棄／コントローラ（ＯＦＣ）１０への通知の３種類である。すなわち、スイッチ（ＯＦＳ）２０は、フローテーブルに登録されたフローエントリの内容に従って、パケットの通過／遮断／フローエントリの問い合わせ（経路制御要求）に関する処理を行う。
【００６８】
スイッチ（ＯＦＳ）２０は、フローテーブルを少なくとも１つ保持している。コントローラ（ＯＦＣ）１０は、配下の各スイッチ（ＯＦＳ）２０のフローテーブルと同じ内容のフローテーブルを全て保持している。すなわち、コントローラ（ＯＦＣ）１０は、各スイッチ（ＯＦＳ）２０のフローテーブルのマスターテーブルを保持している。
【００６９】
なお、「フローテーブルを保持している」とは、そのフローテーブルを管理していることを意味する。そのフローテーブルをネットワーク経由等で管理可能であれば、実際には、そのフローテーブルが自身の内部に存在していなくても良い。すなわち、フローテーブルの保管場所は、そのフローテーブルを管理する装置の内部に限らず、外部でも良い。例えば、コントローラ（ＯＦＣ）１０とスイッチ（ＯＦＳ）２０が、ネットワーク上にある同一のフローテーブルを共有することも考えられる。
【００７０】
フローテーブルは、フローエントリの集まりである。一般なネットワーク機器と対比を示すなら、通常のルータのルーティングテーブルとそのルーティングエントリ、或いは、ファイアウォール装置／ＮＡＴ装置のフィルタリング・ルールの集合と個別のルール（エントリ）に近いものである。
【００７１】
しかし、オープンフローのフローエントリには、一般のネットワーク機器のルーティングエントリやルールよりも多くの情報が含まれる。例えば、より複雑なパケットのマッチング条件、当該フローエントリがタイムアウトされるまでの時間、或いは前述のパケットへの操作等の情報が含まれる。
【００７２】
［コントローラ（ＯＦＣ）の構成］
次に、コントローラ（ＯＦＣ）１０の構成例について説明する。
【００７３】
コントローラ（ＯＦＣ）１０は、コントローラ制御部１１と、アクセス拒否集計表１２を備える。
【００７４】
コントローラ制御部１１は、オープンフローネットワークにおけるコントローラ（ＯＦＣ）としての処理を行う。また、コントローラ制御部１１は、セキュアチャンネルネットワークを介して、スイッチ（ＯＦＳ）２０、アクセス元ホスト３０、及びアクセス先ホスト４０との通信・連携を行う。
【００７５】
アクセス拒否集計表１２は、ユーザ毎についてアクセスの認可に失敗した回数（拒否回数）を記録するための記憶領域である。アクセス拒否集計表１２は、データベース等により実現しても良い。
【００７６】
［スイッチ（ＯＦＳ）の構成］
次に、スイッチ（ＯＦＳ）２０の構成例について説明する。
【００７７】
スイッチ（ＯＦＳ）２０は、スイッチ制御部２１と、フローテーブル２２を備える。
【００７８】
スイッチ制御部２１は、オープンフローネットワークにおけるスイッチ（ＯＦＳ）としての処理を行う。また、スイッチ制御部２１は、セキュアチャンネルネットワークを介して、コントローラ（ＯＦＣ）１０との通信・連携を行う。また、スイッチ制御部２１は、ユーザネットワークを介して、アクセス元ホスト３０やアクセス先ホスト４０との通信を行う。
【００７９】
フローテーブル２２は、フローエントリの集合である。ここでは、フローテーブル２２の各行がフローエントリである。フローテーブル２２は、データベース等により実現しても良い。
【００８０】
フローエントリは、「パケットのマッチ条件」（ルール）、「パケットへの操作」（アクション）、「タイムアウト条件」に関する情報を含む。
【００８１】
スイッチ制御部２１は、「パケットのマッチ条件」として、「発信ＩＰアドレス」、「発信ポート番号」、「宛先ＩＰアドレス」、「宛先ポート番号」の４項目を使用する。
【００８２】
スイッチ制御部２１は、パケットを受信した場合、上記の４項目を検索キーとしてフローテーブル２２を検索し、マッチするフローエントリに指定された「パケットへの操作」に従って、パケットを操作する。
【００８３】
なお、当該フローエントリの「タイムアウト条件」として、様々な値が考えられる。例えば、システムで共通の固定値、或いは、システムの利用状況（空きフローエントリ数値）に応じて変化する値等が考えられる。また、当該フローエントリが未使用の時間を示す「アイドルタイム」（Ｉｄｌｅ  ｔｉｍｅ：遊休時間）と、当該フローエントリが登録されてからの時間を示す「ハードタイム」（Ｈａｒｄ  ｔｉｍｅ：固定時間）の一方、又は、両方を使用しても良い。
【００８４】
ここでは、スイッチ制御部２１は、フローエントリの「タイムアウト条件」として、「アイドルタイムアウト」、「ハードタイムアウト」の２項目を使用する。
【００８５】
［アクセス元ホストの構成］
次に、アクセス元ホスト３０の構成例について説明する。
【００８６】
アクセス元ホスト３０は、認証処理部３１と、ユーザプロセス実行部３２を備える。
【００８７】
認証処理部３１は、認証エージェント３１１を実行する。認証エージェント３１１は、ユーザ情報の問い合わせに応じて、該当するユーザを特定し、特定されたユーザに関するユーザ情報を返却する処理を行うための常駐のソフトウェア／プログラムである。ユーザ情報の例として、ユーザＩＤ／アカウントやパスワード等の認証情報、或いは、ユーザ／ホストを特定する何らかの情報が考えられる。認証エージェント３１１は、２つの役割を持つ。１つは、問い合わせに応じてパケットを発信したユーザの情報を返却することである。もう１つは、指示に応じて指定されたユーザによるアクセス元ホスト３０の利用を制限することである。また、認証処理部３１は、セキュアチャンネルネットワークを介して、コントローラ（ＯＦＣ）１０との通信・連携を行う。
【００８８】
ユーザプロセス実行部３２は、ユーザのプロセス３２１を実行する。ユーザのプロセス３２１は、アクセス先ホスト４０のサービスにコネクションを試みるためのソフトウェア／プログラムである。ユーザのプロセス３２１の例として、アクセス先ホストにログインするためのリモートシェル（ｓｓｈ、ｔｅｌｎｅｔ等）や、アクセス先ホストに配置されたデータベース等へ接続するためのクライアントソフトウェア等のように、共有ホストを利用する人間が意識して操作可能であり、アクセス制御が必要なソフトウェアが考えられる。また、ユーザプロセス実行部３２は、ユーザネットワークを介して、スイッチ（ＯＦＳ）２０やアクセス先ホスト４０との通信を行う。
【００８９】
［アクセス先ホストの構成］
次に、アクセス先ホスト４０の構成例について説明する。
【００９０】
アクセス先ホスト４０は、認可処理部４１と、サービス実行部４２を備える。
【００９１】
認可処理部４１は、認可エージェント４１１を実行する。認可エージェント４１１は、アクセス可否の問い合わせに応じて、ユーザ情報を基に、アクセスの許可／拒否を判断し、結果を返却する処理を行うための常駐のソフトウェア／プログラムである。認可エージェント４１１の役割は、問い合わせに応じてユーザのアクセス可否を返却することである。また、認可処理部４１は、セキュアチャンネルネットワークを介して、コントローラ（ＯＦＣ）１０との通信・連携を行う。
【００９２】
サービス実行部４２は、サービス４２１を実行する。サービス４２１は、ユーザのプロセス３２１とのコネクションを確立した後に、ネットワーク経由で何らかの機能を提供するためのソフトウェア／プログラムである。サービス４２１の例として、サーバ等にインストールされたアプリケーションやグループウェア、又はサーバ上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）等が考えられる。また、サービス実行部４２は、ユーザネットワークを介して、スイッチ（ＯＦＳ）２０やアクセス元ホスト３０との通信を行う。
【００９３】
［認証と認可の違い］
本発明では、「認証」は、ユーザ等の正体／素性を明らかにすることを意味する。また、「認可」は、ユーザ等の行動（コネクション）を許可するか判断することを意味する。
【００９４】
［ホストの構成の共通化］
なお、アクセス元ホスト３０及びアクセス先ホスト４０は、同一構成の装置でも良い。例えば、認証処理部３１、ユーザプロセス実行部３２、認可処理部４１、及びサービス実行部４２を全て備えたホスト装置であれば、アクセス元ホスト３０、アクセス先ホスト４０のいずれとしても使用できる。
【００９５】
［フローテーブルの初期状態］
図２を参照して、フローテーブル２２の初期状態について説明する。
【００９６】
フローテーブル２２には、初期状態で、１個のフローエントリ（デフォルトエントリ）が登録されている。
【００９７】
このフローエントリ（デフォルトエントリ）は、「パケットのマッチ条件」（ルール）、「パケットへの操作」（アクション）、「タイムアウト条件」に関する情報を含む。
【００９８】
パケットのマッチ条件の４項目（「発信ＩＰアドレス」、「発信ポート番号」、「宛先ＩＰアドレス」、「宛先ポート番号」）には、任意を表すワイルドカード「＊」が指定されている。
【００９９】
パケットへの操作には、「コントローラに通知」という動作が指定されている。
【０１００】
タイムアウト条件の２項目（「アイドルタイムアウト」、「ハードタイムアウト」）には、「なし」が指定されている。すなわち、何も指定されていない。
【０１０１】
初期状態では、スイッチ（ＯＦＳ）２０に到着する全てのパケット（任意のパケット）が、必ずこのフローエントリ（デフォルトエントリ）にマッチする。したがって、初期状態では、スイッチ（ＯＦＳ）２０は、到着した全てのパケット（任意のパケット）をコントローラ（ＯＦＳ）１０に通知することになる。
【０１０２】
フローエントリには、オープンフロープロトコルに則った仕様・形式で、優先度を指定することができる。図示しないが、このフローエントリ（デフォルトエントリ）には、最低の優先度が割り当てられている。スイッチ（ＯＦＳ）２０に到着したパケットについて、他にマッチするフローエントリがない場合、このフローエントリ（デフォルトエントリ）がパケットに対して適用される。コントローラ（ＯＦＳ）１０からフローエントリが登録され、他にマッチするフローエントリがある場合、当該他にマッチするフローエントリには、このフローエントリ（デフォルトエントリ）よりも高い優先度が割り当てられているため、当該他にマッチするフローエントリがパケットに対して適用される。
【０１０３】
［認証／許可処理］
図３を参照して、本発明における認証／許可の処理の流れについて説明する。
【０１０４】
本発明では、コントローラ（ＯＦＣ）１０とスイッチ（ＯＦＳ）２０を連携させることで、以下のように「オン・デマンド」（ｏｎ  ｄｅｍａｎｄ）でフローエントリを登録して、パケット転送やアクセス制御を実現する。
【０１０５】
（１）ステップＳ１０１
スイッチ（ＯＦＳ）２０は、ファーストパケットを受信した場合、コントローラ（ＯＦＣ）１０に通知する。なお、ファーストパケットとは、スイッチ（ＯＦＳ）２０のフローテーブル２２において、デフォルトエントリ以外にマッチするフローエントリが存在しない未知のパケットのことである。
【０１０６】
（２）ステップＳ１０２
コントローラ（ＯＦＣ）１０は、通知されたパケットについて、アクセス元ホスト３０、及びアクセス先ホスト４０に問い合わせて認証／認可を行う。
【０１０７】
（３）ステップＳ１０３
コントローラ（ＯＦＣ）１０は、認証／認可の結果を基に、フローエントリの内容を決定して、スイッチ（ＯＦＳ）２０に当該フローエントリの登録の指示を行う。
【０１０８】
（４）ステップＳ１０４
スイッチ（ＯＦＳ）２０は、フローエントリの登録後、同種のパケットを受信した場合、当該フローエントリの内容に従って操作（転送／破棄）する。
【０１０９】
（５）ステップＳ１０５
スイッチ（ＯＦＳ）２０は、フローエントリのタイムアウトが発生した場合、当該フローエントリを削除する。
【０１１０】
なお、スイッチ（ＯＦＳ）２０は、フローエントリの削除後、同種のパケットを受信した場合、再び（１）ステップＳ１０１以降の処理を行う。フローエントリの削除後には、同種のパケットであっても、再びファーストパケットに戻っているためである。
【０１１１】
また、ＤｏＳ攻撃（Ｄｅｎｉａｌ  ｏｆ  Ｓｅｒｖｉｃｅ  ａｔｔａｃｋ：サービス妨害攻撃）によってスイッチ（ＯＦＳ）２０のフローエントリが枯渇することを防ぐために、不正なアクセスを繰り返すユーザの利用を制限する機能も備える。
【０１１２】
Ｄｏｓ攻撃の一般的な攻撃の１つである「ＳＹＮ  Ｆｌｏｏｄ」攻撃は、攻撃者がＴＣＰ接続の手順を中途半端な状態で中止することでサーバのリソースを枯渇させる攻撃である。前述のように、クライアントとサーバとの間でＴＣＰ接続を確立するには、クライアントがサーバに「ＳＹＮパケット」を送信し、サーバがクライアントに「ＡＣＫパケット」を返信し、最後にクライアントがＡＣＫパケットを送り返すという手順を踏む。最後のＡＣＫパケットが届くまでサーバ側は「応答待ち」状態のまま待機することになり、その接続のために用意されたメモリ領域等のリソースを開放できなくなる。悪意のある攻撃者が大量のＳＹＮパケットを送信し、故意にＡＣＫパケットを送らずに放置すると、そのうちサーバ側の「応答待ち」の接続数が限界を超え、新たに接続を受け付けられない状態になる。
【０１１３】
［具体例］
以下の３つのケースに分けて具体的な動作について説明する。
（Ａ）アクセスの許可（「転送」のフローエントリ登録）
（Ｂ）アクセスの拒否（「破棄」のフローエントリ登録）
（Ｃ）不正ユーザの利用を制限（「破棄」のフローエントリ削除）
【０１１４】
［（Ａ）アクセスの許可（「転送」のフローエントリ登録）］
最初に、アクセスが許可されるべきパケットを受信した時の動作について説明する。
【０１１５】
図４を参照して、フローテーブル２２が、図２に示すように初期状態で、適切な権限を持つユーザがアクセスを試みた場合における一連の動作について説明する。
【０１１６】
（１）ステップＳ２０１
アクセス元ホスト３０のユーザプロセス実行部３２は、ユーザのプロセス３２１を実行し、アクセス先ホスト４０との通信を試みるため、スイッチ（ＯＦＳ）２０にパケットを送信する。
【０１１７】
（２）ステップＳ２０２
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、アクセス元ホスト３０からパケットを受信した際、フローテーブル２２を検索し、当該パケットにマッチするフローエントリを探す。ここでは、当該パケットにマッチするフローエントリは、図２に示すように、マッチ条件の各項目が任意を表すワイルドカード「＊」であり、パケットへの操作が「コントローラに通知」となっているフローエントリ（デフォルトエントリ）である。
【０１１８】
（３）ステップＳ２０３
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、当該フローエントリ（デフォルトエントリ）に従って、コントローラ（ＯＦＣ）１０に当該パケットを通知する。このとき、スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、当該パケットのコピーをコントローラ（ＯＦＣ）１０に転送し、当該パケット自体を保留する。
【０１１９】
（４）ステップＳ２０４
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、通知されたパケットの発信元であるアクセス元ホスト３０にユーザ情報を問い合わせる。このユーザ情報の問い合わせには、当該パケットの発信ポート番号が付されている。
【０１２０】
（５）ステップＳ２０５
アクセス元ホスト３０の認証処理部３１は、ユーザ情報の問い合わせを受けた場合、認証エージェント３１１の動作により、当該パケットの発信ポート番号を基に、当該パケットを発信したユーザのプロセス３２１を特定して、特定されたプロセスを実行したユーザに関するユーザ情報をコントローラ（ＯＦＣ）１０に返却する。
【０１２１】
（６）ステップＳ２０６
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、当該パケットの宛先であるアクセス先ホスト４０にアクセス可否を問い合わせる。このアクセス可否の問い合わせには、ユーザ情報が付されている。
【０１２２】
（７）ステップＳ２０７
アクセス先ホスト４０の認可処理部４１は、アクセス可否の問い合わせを受けた場合、認可エージェント４１１の動作により、ユーザ情報を基に、アクセス可否を判断して、その結果をコントローラ（ＯＦＣ）１０に返却する。ここでは、アクセス先ホスト４０の認可処理部４１は、「アクセス許可」と判断し、「アクセス許可」の情報をコントローラ（ＯＦＣ）１０に返却する。
【０１２３】
（８）ステップＳ２０８
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、「アクセス許可」の情報を受信した際、スイッチ（ＯＦＳ）２０に、「転送」のフローエントリの登録の指示を行う。
【０１２４】
（９）ステップＳ２０９
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、コントローラ（ＯＦＣ）１０からの指示に従って、フローテーブル２２に「転送」のフローエントリを登録し、「転送」のフローエントリの登録が成功（完了）した旨をコントローラ（ＯＦＣ）１０に通知する。
【０１２５】
この時点で、フローテーブル２２は、図５に示すような状態になる。フローテーブル２２に登録される「転送」のフローエントリの内容は、下記の通りである。
【０１２６】
（ア）パケットのマッチ条件
「発信ＩＰアドレス」＝「Ｘ１」（アクセス許可されたアクセス元ホストのＩＰアドレス）
「発信ポート番号」＝「Ｘ２」（アクセス許可されたアクセス元ホストのポート番号）
「宛先ＩＰアドレス」＝「Ｘ３」（アクセス許可したアクセス先ホストのＩＰアドレス）
「宛先ポート番号」＝「Ｘ４」（アクセス許可したアクセス先ホストのポート番号）
【０１２７】
（イ）パケットへの操作
「アクション」＝「転送」（アクセス元ホストからのパケットをアクセス先ホストへ転送する）
【０１２８】
（ウ）タイムアウト条件
「アイドルタイムアウト」＝「Ｐ１」（「転送」のフローエントリが未使用の時間）
「ハードタイムアウト」＝「Ｐ２」（「転送」のフローエントリが登録されてからの時間）
【０１２９】
（１０）ステップＳ２１０
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、フローエントリを登録した後、スイッチ（ＯＦＳ）２０に対して、通知されたパケットを転送するように指示する。
【０１３０】
（１１）ステップＳ２１１
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、コントローラ（ＯＦＣ）１０からの指示に従って、保留していたパケットをアクセス先ホスト４０に転送する。
【０１３１】
これにより、ユーザのプロセス３２１とサービス４２１とのコネクションが確立する。
【０１３２】
以降、スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、当該コネクションのパケットを受信すると、フローテーブル２２に登録されたフローエントリの内容に従って転送する。
【０１３３】
やがて、タイムアウト条件に指定された時間が経過して、フローエントリのタイムアウトが発生すると、スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、フローテーブル２２から、当該フローエントリを削除する。
【０１３４】
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、フローエントリを削除した後に、再び当該コネクションのパケットを受信した場合、当該コネクションのパケットはファーストパケットとなるため、再度、上記の動作でフローエントリ登録／パケット転送が行われる。
【０１３５】
また、ユーザ情報の問い合わせ／返却の処理を安全にできる理由は、前述の通り、アクセス元ホスト３０が共有ホストだからである。
【０１３６】
ここでは、コントローラ（ＯＦＣ）１０と、アクセス元ホスト３０とは、同一の主体（共通の管理者）の下で十分に管理されているものとする。この場合、コントローラ（ＯＦＣ）１０と、アクセス元ホスト３０とは、相互に信用でき、ユーザ情報の偽装や流出といった問題はないと考えられる。
【０１３７】
［（Ｂ）アクセスの拒否（「破棄」のフローエントリ登録）］
次に、アクセスが拒否されるべきパケットを受信した時の動作について説明する。
【０１３８】
図６を参照して、フローテーブルに「転送」のフローエントリが登録された状態（図５に示すような状態）の時に、適切な権限を持たないユーザがアクセスを試みた場合における一連の動作について説明する。
【０１３９】
（１）ステップＳ３０１
アクセス元ホスト３０のユーザプロセス実行部３２は、ユーザのプロセス３２１を実行し、アクセス先ホスト４０との通信を試みるため、スイッチ（ＯＦＳ）２０にパケットを送信する。
【０１４０】
（２）ステップＳ３０２
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、アクセス元ホスト３０からパケットを受信した際、フローテーブル２２を検索し、当該パケットにマッチするフローエントリを探す。ここでは、当該パケットにマッチするフローエントリは、図２に示すように、マッチ条件の各項目が任意を表すワイルドカード「＊」であり、パケットへの操作が「コントローラに通知」となっているフローエントリ（デフォルトエントリ）である。
【０１４１】
（３）ステップＳ３０３
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、当該フローエントリ（デフォルトエントリ）に従って、コントローラ（ＯＦＣ）１０に当該パケットを通知する。このとき、スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、当該パケットのコピーをコントローラ（ＯＦＣ）１０に転送し、当該パケット自体を保留する。
【０１４２】
（４）ステップＳ３０４
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、通知されたパケットの発信元であるアクセス元ホスト３０にユーザ情報を問い合わせる。このユーザ情報の問い合わせには、当該パケットの発信ポート番号が付されている。
【０１４３】
（５）ステップＳ３０５
アクセス元ホスト３０の認証処理部３１は、ユーザ情報の問い合わせを受けた場合、認証エージェント３１１の動作により、当該パケットの発信ポート番号を基に、当該パケットを発信したユーザのプロセス３２１を特定して、特定されたプロセスを実行したユーザに関するユーザ情報をコントローラ（ＯＦＣ）１０に返却する。
【０１４４】
（６）ステップＳ３０６
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、当該パケットの宛先であるアクセス先ホスト４０にアクセス可否を問い合わせる。このアクセス可否の問い合わせには、ユーザ情報が付されている。
【０１４５】
ここまでは、「（Ａ）アクセスの許可（「転送」のフローエントリ登録）」の場合と同じである。
【０１４６】
（７）ステップＳ３０７
アクセス先ホスト４０の認可処理部４１は、アクセス可否の問い合わせを受けた場合、認可エージェント４１１の動作により、ユーザ情報を基に、アクセス可否を判断して、その結果をコントローラ（ＯＦＣ）１０に返却する。ここでは、アクセス先ホスト４０の認可処理部４１は、「アクセス拒否」と判断し、「アクセス拒否」の情報をコントローラ（ＯＦＣ）１０に返却する。
【０１４７】
（８）ステップＳ３０８
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、「アクセス拒否」の情報を受信した際、アクセス拒否集計表１２を参照し、当該ユーザがアクセスの認可に失敗した回数（拒否回数）に値を加算する。すなわち、コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、当該ユーザの拒否回数を集計する。更に、コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、アクセス拒否集計表１２を参照し、積算された当該ユーザの拒否回数と、予め設定された許容値とを比較する。ここでは、当該ユーザの拒否回数は、許容値内に収まっているものとする。
【０１４８】
（９）ステップＳ３０９
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、スイッチ（ＯＦＳ）２０に、「破棄」のフローエントリの登録の指示を行う。
【０１４９】
（１０）ステップＳ３１０
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、コントローラ（ＯＦＣ）１０からの指示に従って、フローテーブル２２に「破棄」のフローエントリを登録し、「破棄」のフローエントリの登録が成功（完了）した旨をコントローラ（ＯＦＣ）１０に通知する。
【０１５０】
この時点で、フローテーブル２２は、図７に示すような状態になる。フローテーブル２２に登録される「破棄」のフローエントリの内容は、下記の通りである。
【０１５１】
（ア）パケットのマッチ条件
「発信ＩＰアドレス」＝「Ｙ１」（アクセス拒否されたアクセス元ホストのＩＰアドレス）
「発信ポート番号」＝「Ｙ２」（アクセス拒否されたアクセス元ホストのポート番号）
「宛先ＩＰアドレス」＝「Ｙ３」（アクセス拒否したアクセス先ホストのＩＰアドレス）
「宛先ポート番号」＝「Ｙ４」（アクセス拒否したアクセス先ホストのポート番号）
【０１５２】
（イ）パケットへの操作
「アクション」＝「破棄」（アクセス元ホストからアクセス先ホストへのパケットを破棄する）
【０１５３】
（ウ）タイムアウト条件
「アイドルタイムアウト」＝「Ｑ１」（「破棄」のフローエントリが未使用の時間）
「ハードタイムアウト」＝「Ｑ２」（「破棄」のフローエントリが登録されてからの時間）
【０１５４】
ここでは、「転送」のフローエントリには、「破棄」のフローエントリよりも高い優先度を割り当てている。但し、実際には、「破棄」のフローエントリには、「転送」のフローエントリよりも高い優先度を割り当てるようにしても良い。認証が必要な環境で通信を行う場合、パケットの「転送」（通過）よりも「破棄」（遮断）のほうが、重要度が高いこともあるからである。
【０１５５】
（１１）ステップＳ３１１
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、フローエントリを登録した後、スイッチ（ＯＦＳ）２０に対して、通知されたパケットを破棄するように指示する。
【０１５６】
（１２）ステップＳ３１２
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、コントローラ（ＯＦＣ）１０からの指示に従って、保留していたパケットを破棄する。
【０１５７】
以降、スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、当該コネクションのパケットを受信すると、フローテーブル２２に登録されたフローエントリの内容に従って破棄する。
【０１５８】
やがて、タイムアウト条件に指定された時間が経過して、フローエントリのタイムアウトが発生すると、スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、フローテーブル２２から、当該フローエントリを削除する。
【０１５９】
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、フローエントリを削除した後に、再び当該コネクションのパケットを受信した場合、当該コネクションのパケットはファーストパケットとなるため、再度、上記の動作でフローエントリ登録／パケット破棄が行われる。
【０１６０】
［（Ｃ）不正ユーザの利用を制限（「破棄」のフローエントリ削除）］
次に、不正なアクセスが繰り返される時の動作について説明する。
【０１６１】
異なるマッチ条件で不正なアクセスが繰り返されると、フローテーブル２２は、図８に示すように、多数の「破棄」のフローエントリで占められてしまう。
【０１６２】
図９を参照して、フローテーブル２２が多数の「破棄」のフローエントリで占められた状態から回復する場合における一連の動作について説明する。
【０１６３】
（１）ステップＳ４０１
アクセス元ホスト３０のユーザプロセス実行部３２は、ユーザのプロセス３２１を実行し、アクセス先ホスト４０との通信を試みるため、スイッチ（ＯＦＳ）２０にパケットを送信する。
【０１６４】
（２）ステップＳ４０２
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、アクセス元ホスト３０からパケットを受信した際、フローテーブル２２を検索し、当該パケットにマッチするフローエントリを探す。ここでは、当該パケットにマッチするフローエントリは、図２に示すように、マッチ条件の各項目が任意を表すワイルドカード「＊」であり、パケットへの操作が「コントローラに通知」となっているフローエントリ（デフォルトエントリ）である。
【０１６５】
（３）ステップＳ４０３
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、当該フローエントリ（デフォルトエントリ）に従って、コントローラ（ＯＦＣ）１０に当該パケットを通知する。このとき、スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、当該パケットのコピーをコントローラ（ＯＦＣ）１０に転送し、当該パケット自体を保留する。
【０１６６】
（４）ステップＳ４０４
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、通知されたパケットの発信元であるアクセス元ホスト３０にユーザ情報を問い合わせる。このユーザ情報の問い合わせには、当該パケットの発信ポート番号が付されている。
【０１６７】
（５）ステップＳ４０５
アクセス元ホスト３０の認証処理部３１は、ユーザ情報の問い合わせを受けた場合、認証エージェント３１１の動作により、当該パケットの発信ポート番号を基に、当該パケットを発信したユーザのプロセス３２１を特定して、当該ユーザのプロセス３２１を実行したユーザに関するユーザ情報をコントローラ（ＯＦＣ）１０に返却する。
【０１６８】
（６）ステップＳ４０６
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、当該パケットの宛先であるアクセス先ホスト４０にアクセス可否を問い合わせる。このアクセス可否の問い合わせには、ユーザ情報が付されている。
【０１６９】
（７）ステップＳ４０７
アクセス先ホスト４０の認可処理部４１は、アクセス可否の問い合わせを受けた場合、認可エージェント４１１の動作により、ユーザ情報を基に、アクセス可否を判断して、その結果をコントローラ（ＯＦＣ）１０に返却する。ここでは、アクセス先ホスト４０の認可処理部４１は、「アクセス拒否」と判断し、「アクセス拒否」の情報をコントローラ（ＯＦＣ）１０に返却する。
【０１７０】
ここまでは、「（Ｂ）アクセスの拒否（「破棄」のフローエントリ登録）」の場合と同じである。
【０１７１】
（８）ステップＳ４０８
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、「アクセス拒否」の情報を受信した際、アクセス拒否集計表１２を参照し、当該ユーザがアクセスの認可に失敗した回数（拒否回数）に値を加算する。すなわち、コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、当該ユーザの拒否回数を集計する。更に、コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、アクセス拒否集計表１２を参照し、積算された当該ユーザの拒否回数と、予め設定された許容値とを比較する。ここでは、当該ユーザの拒否回数は、許容値に達した／許容値を超過したものとする。
【０１７２】
（９）ステップＳ４０９
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、アクセス元ホスト３０が共有ホストであることを利用し、アクセス元ホスト３０に当該ユーザの利用制限の指示を行う。利用制限とは、以後の不正アクセスを制限する措置である。例えば、ユーザのプロセス３２１を強制終了させ、当該ユーザの新規のログインやプロセス実行を禁止することが考えられる。また、ユーザのプロセス３２１に係るアプリケーション自体を使用禁止にすることも考えられる。
【０１７３】
（１０）ステップＳ４１０
アクセス元ホスト３０の認証エージェント３１１は、コントローラ（ＯＦＣ）１０からの指示に従って、当該ユーザの利用制限を行う。ユーザの利用制限を確実に実施するために、アクセス元ホスト３０の認証エージェント３１１は、コントローラ（ＯＦＣ）１０やスイッチ（ＯＦＳ）２０と同一の主体（共通の管理者）の下で管理されるものとする。すなわち、コントローラ（ＯＦＣ）１０やスイッチ（ＯＦＳ）２０の管理者は、アクセス元ホスト３０の管理者としてのユーザ権限を持つ。また、アクセス元ホスト３０の認証エージェント３１１は、アクセス元ホスト３０の管理者にだけ許される特権ユーザ権限で実行されるものとする。
【０１７４】
（１１）ステップＳ４１１
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、スイッチ（ＯＦＳ）２０に、当該ユーザのプロセス３２１によるアクセスによって登録された「破棄」のフローエントリの削除の指示を行う。なお、異なるマッチ条件で不正なアクセスが繰り返される場合、当該不正なアクセスによって登録された「破棄」のフローエントリの各々について、削除の指示を行うことになる。
【０１７５】
（１２）ステップＳ４１２
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、コントローラ（ＯＦＣ）１０からの指示に従って、フローテーブル２２に「破棄」のフローエントリを削除し、「破棄」のフローエントリの削除が成功（完了）した旨をコントローラ（ＯＦＣ）１０に通知する。
【０１７６】
（１３）ステップＳ４１３
コントローラ（ＯＦＣ）１０のコントローラ制御部１１は、フローエントリを登録した後、スイッチ（ＯＦＳ）２０に対して、通知されたパケットを破棄するように指示する。
【０１７７】
（１４）ステップＳ４１４
スイッチ（ＯＦＳ）２０のスイッチ制御部２１は、コントローラ（ＯＦＣ）１０からの指示に従って、保留していたパケットを破棄する。
【０１７８】
これにより、フローテーブル２２は、再び図５に示すような状態になり、フローエントリ溢れを回避できる。
【０１７９】
＜本発明の特徴＞
以上のように、本発明では、接続先のサーバにパケットが届く前の段階で、コネクション単位のアクセス制御を可能にする。例えば、ＳＹＮパケット送信の時点で、発信元のユーザやプログラムを認証／認可して、パケット転送の可否を判断する。
【０１８０】
更に、本発明では、コントローラ（ＯＦＣ）やスイッチ（ＯＦＳ）の管理者と、アクセス元ホスト（共有ホスト）の管理者が同じであるため、アクセス元ホスト（共有ホスト）から得たユーザ認証の情報を、ネットワークのアクセス制御に利用できる。
【０１８１】
また、本発明には、従来技術と比較して、以下の利点がある。
【０１８２】
（１）ユーザ／アプリケーションの接続手順は、一般的な手順から変更不要
本発明では、パケットの認証／認可は、ユーザ／アプリケーションが意識することなく自動的に行われるため、パケットの認証／認可のために、ユーザ／アプリケーションの接続手順を変更する必要はない。
【０１８３】
（２）同時接続コネクション数の制約がない
フローエントリは、コネクションが存在していても削除されるので、スイッチ（ＯＦＳ）が備えるフローテーブルのフローエントリ数に制約されることはない。また、フローエントリを削除しても、新たにパケットを受信すれば再びフローエントリが登録されるので、通信不能になるといった問題も生じない。
【０１８４】
（３）大規模な多段構成にも適している
スイッチ（ＯＦＳ）を多段構成にする場合は、１つのコントローラ（ＯＦＣ）の配下に複数のスイッチ（ＯＦＳ）を配置すれば良い。スイッチ（ＯＦＳ）が備えるフローテーブルのフローエントリ数より多くのコネクションを同時に接続できるので、特定の装置に経路が集約されるようなネットワーク構成にも対応可能である。
【０１８５】
＜効率化のための仕様変更＞
本発明の実施形態の説明では、本発明の要点を明らかにするため、基本的な動作について説明した。但し、認証／認可の動作は一例であって、他にも様々な方法を選択可能である。
【０１８６】
本発明を実際のシステムに適用する場合には、認証／認可に掛かる処理時間を短縮することが重要である。そのため、例えば、以下のように変更／機能追加／機能切り替えすることが考えられる。
【０１８７】
（１）認証の効率化の観点
アクセス元ホストは、コネクションを試みるためにＳＹＮパケットを送出する場合、ＳＹＮパケットにユーザに関する情報を付加する。コントローラ（ＯＦＣ）は、その付加された情報に基づいて、ユーザを識別する。
【０１８８】
（２）認可の効率化の観点
コントローラ（ＯＦＣ）は、アクセス先ホストから、返却された認可結果をキャッシュ（ｃａｃｈｅ）として保存する。以後、パケット転送の可否は、キャッシュを参照して決定する。これにより、コントローラ（ＯＦＣ）からアクセス元ホスト、及びアクセス先ホストへ問い合わせを行う機会／回数を大幅に削減することができる。
【０１８９】
或いは、アクセス先ホストに認可エージェントを配置せず、代わりにコントローラ（ＯＦＣ）が認可エージェントに相当する機能を有する。すなわち、コントローラ（ＯＦＣ）が、アクセス元ホストからのユーザ情報を基に、アクセス可否を判断する。これにより、コントローラ（ＯＦＣ）からアクセス先ホストへ問い合わせを行う必要がなくなる。
【０１９０】
これらの変更によって、本発明に係るネットワークシステムにおいても、スイッチ（ＯＦＳ）とコントローラ（ＯＦＣ）のみで構成する通常のオープンフローネットワークシステムと同等の処理速度になると期待できる。他にも様々な変更／改善／応用が考えられる。
【０１９１】
（３）処理時間の効率化の観点
アクセス元ホストは、コネクション生成時（パケット送信時）／ユーザのログイン時／定期的に、コントローラ（ＯＦＣ）にユーザ情報を通知する。これにより、コントローラ（ＯＦＣ）は、アクセス元ホストへ問い合わせを行う必要がなくなる。
【０１９２】
或いは、コントローラ（ＯＦＣ）は、アクセス元ホストがアクセス先ホストにコネクションを試みる際に、アクセス元ホストから、ユーザ情報と共に、ＳＹＮパケットを受信する。例えば、アクセス元ホストは、アクセス先ホストにコネクションを試みる際、認証エージェントの動作により、必ずコントローラ（ＯＦＣ）に、ＳＹＮパケットとユーザ情報を送信するようにする。コントローラ（ＯＦＣ）は、アクセス元ホストからのＳＹＮパケットに基づいて経路計算を行い、アクセス元ホストからのユーザ情報に基づいて認証に関する処理を行い、アクセスが許可された場合、算出された経路上のスイッチ（ＯＦＳ）に「転送」のフローエントリの登録を指示する。なお、認証に関する処理については、アクセス先ホストにユーザ情報を通知してアクセス可否を問い合わせても良いし、コントローラ（ＯＦＣ）自身がアクセス可否を判断するようにしても良い。これにより、スイッチ（ＯＦＳ）からファーストパケットの通知を受ける必要がなくなる。
【０１９３】
また、スイッチ（ＯＦＳ）が多段構成の場合（経路上に複数のスイッチ（ＯＦＳ）が存在する場合）、コントローラ（ＯＦＣ）は、経路上の後続のスイッチ（ＯＦＳ）からの通知に備えて、パケットの認証／認可の結果をキャッシュする。後続のスイッチ（ＯＦＳ）からの通知があれば、キャッシュされたパケットの認証／認可の結果を基に、フローエントリの登録の指示を行う。
【０１９４】
或いは、スイッチ（ＯＦＳ）が多段構成の場合、未知パケットが１台のスイッチ（ＯＦＳ）から通知された場合、パケットの認証／認可の結果をキャッシュせずに、即時に経路上の全スイッチ（ＯＦＳ）にフローエントリの登録の指示を行う。
【０１９５】
（４）フローエントリの削除／フローテーブルのリソース回収の観点
コネクションの切断時、スイッチ（ＯＦＳ）は、アクセス元ホストからのＦＩＮパケットを検知した際に、当該コネクションのフローエントリを削除する。
【０１９６】
或いは、コントローラ（ＯＦＣ）は、スイッチ（ＯＦＳ）のフローテーブルの空きを監視し、フローテーブルの空きが少なくなったと判断／検知した場合、コントローラ（ＯＦＣ）からスイッチ（ＯＦＳ）へフローエントリの削除の指示を行い、必要な空き数を確保する。
【０１９７】
更に、コントローラ（ＯＦＣ）は、スイッチ（ＯＦＳ）のフローテーブルの空きの枯渇によってフローエントリの登録が失敗した場合、フローテーブルの空きが十分に確保できるまで、その時点で最も使用頻度の低いフローエントリから順に、削除の指示を行う。
【０１９８】
また、コントローラ（ＯＦＣ）は、スイッチ（ＯＦＳ）のフローテーブルの空きが少なくなった場合、拒否回数の許容値を小さくして、フローエントリの削除／フローテーブルのリソース回収を早める。
【０１９９】
なお、コントローラ（ＯＦＣ）は、「破棄」のフローエントリがタイムアウトした場合、該当ユーザの拒否回数を減算するようにしても良い。
【０２００】
（５）認可の条件の観点
認可の条件に、「課金の有無」、「料金コース」、「アクセス先の負荷状況」等を追加する。
【０２０１】
（６）構成の観点
セキュアチャンネルネットワーク（制御ネットワーク）と、ユーザネットワークを共通のものにする。例えば、アクセス元ホスト及びアクセス先ホストは、スイッチ（ＯＦＳ）を経由して、コントローラ（ＯＦＣ）と通信するようにしても良い。
【０２０２】
なお、上記の動作は、組み合わせて実施しても良い。
【０２０３】
［本発明の要点］
（１）オン・デマンドでパケットの認証／認可を行うこと
（２）使用中のフローエントリであっても削除すること
（３）接続元（アクセス元ホスト）が共有ホストであること
【０２０４】
＜ハードウェアの例示＞
以下に、本発明に係るネットワークシステムを実現するための具体的なハードウェアの例について説明する。
【０２０５】
コントローラ（ＯＦＣ）、アクセス元ホスト、及びアクセス先ホストの例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアント用サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、アクセス元ホスト及びアクセス先ホストの他の例として、ＩＰ電話機、携帯電話機、スマートフォン、スマートブック、カーナビ（カーナビゲーションシステム）、携帯型ゲーム機、家庭用ゲーム機、携帯型音楽プレーヤー、ハンディターミナル、ガジェット（電子機器）、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器、店頭端末・高機能コピー機、デジタルサイネージ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｇｅ：電子看板）等も考えられる。なお、コントローラ（ＯＦＣ）、アクセス元ホスト、及びアクセス先ホストは、端末やサーバに限らず、中継機器や周辺機器でも良い。また、コントローラ（ＯＦＣ）、アクセス元ホスト、及びアクセス先ホストは、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ）でも良い。
【０２０６】
スイッチ（ＯＦＳ）の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置（ｐａｃｋｅｔ  ｓｈａｐｅｒ）、セキュリティ監視制御装置（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ）、ゲートキーパー（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等が考えられる。また、物理マシン上に構築された仮想マシン（ＶＭ）により実現される仮想スイッチでも良い。
【０２０７】
コントローラ（ＯＦＣ）、スイッチ（ＯＦＳ）、アクセス元ホスト、及びアクセス先ホストは、車両や船舶、航空機等の移動体に搭載されていても良い。
【０２０８】
図示しないが、コントローラ（ＯＦＣ）、スイッチ（ＯＦＳ）、アクセス元ホスト、及びアクセス先ホストの各々は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインターフェースによって実現される。
【０２０９】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ（ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）、或いは、専用の機能を有する半導体集積回路（ＬＳＩ：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等が考えられる。
【０２１０】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）等でも良い。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【０２１１】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。したがって、電子機器等に搭載される１チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例も考えられる。
【０２１２】
上記のインターフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【０２１３】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【０２１４】
なお、コントローラ（ＯＦＣ）、スイッチ（ＯＦＳ）、アクセス元ホスト、及びアクセス先ホストの各々の内部の構成要素は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【０２１５】
但し、実際には、これらの例に限定されない。
【０２１６】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０２１７】
なお、本出願は、日本特許出願番号２０１２−０８４７１８に基づく優先権を主張するものであり、日本特許出願番号２０１２−０８４７１８における開示内容は引用により本出願に組み込まれる。
【図１】
0005987902.tif 000002
【図２】
0005987902.tif 000003
【図３】
0005987902.tif 000004
【図４】
0005987902.tif 000005
【図５】
0005987902.tif 000006
【図６】
0005987902.tif 000007
【図７】
0005987902.tif 000008
【図８】
0005987902.tif 000009
【図９】
0005987902.tif 000010