(57)【特許請求の範囲】
【請求項１】
コントローラによって、第1のスイッチからの第1のARP要求を受信するステップであって、前記第1のARP要求は、前記第1のスイッチに接続されたホストによって前記第1のスイッチに送信される、ステップと、
前記コントローラが、前記第1のARP要求に対応するARPエントリがローカルに存在しないと判定した場合、または、前記コントローラが、前記第1のARP要求に対応する前記ARPエントリがローカルに存在すると判定し、前記第1のARP要求を、前記ARPエントリに基づいて判定された宛先スイッチに送信した後、前記宛先スイッチが返したARP応答が指定された時間内に受信されない場合、前記コントローラによって、前記第1のARP要求をフラッディングするように前記第1のスイッチに命令するために使用される第1の命令を前記第1のスイッチに送信するステップと、
を含む、ソフトウェア定義ネットワークSDNベースのアドレス解決プロトコルARP実装方法。
【請求項２】
前記第1の命令は、前記第1のスイッチに隣接するスイッチと前記第1のスイッチに接続された前記ホストとの両方に前記第1のARP要求を送信するように前記第1のスイッチに命令するために使用される、請求項1に記載の方法。
【請求項３】
コントローラによって、第1のスイッチからの第1のARP要求を受信する、前記ステップの前に、
前記コントローラによって、前記第1のスイッチに対する予め設定されたフローテーブルルールを構成するステップであって、
前記フローテーブルルールは、隣接するスイッチからのARP要求を受信した場合、スイッチが前記隣接するスイッチによって送信された前記ARP要求をフラッディングすることを含む、ステップ
をさらに含む、請求項1または2に記載の方法。
【請求項４】
前記第1のスイッチに第1の命令を送信する、前記ステップの後、
第1のARP応答を受信し、前記第1のARP応答を前記第1のスイッチに転送し、前記第1のARP応答内のARPエントリをローカルに格納するステップ
をさらに含む、請求項1、2、または3のいずれか一項に記載の方法。
【請求項５】
前記第1のARP要求に対応する前記ARPエントリがローカルに存在すると判定した場合、前記コントローラによって、前記ARPエントリに基づいて宛先スイッチを判定し、前記第1のARP要求を前記宛先スイッチに送信するステップ
をさらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記コントローラによって、前記第1のARP要求を前記宛先スイッチに送信する、前記ステップの後に、
前記宛先スイッチが返した前記ARP応答を受信した場合、前記ARP応答を前記第1のスイッチに転送するステップ
をさらに含む、請求項5に記載の方法。
【請求項７】
第1のスイッチによって、前記第1のスイッチに接続されたホストからの第1のARP要求を受信するステップと、
前記第1のスイッチによって、前記第1のARP要求をコントローラに報告するステップと、
前記コントローラが、前記第1のARP要求に対応するARPエントリがローカルに存在しないと判定した場合、または、前記コントローラが、前記第1のARP要求に対応する前記ARPエントリがローカルに存在すると判定し、前記第1のARP要求を、前記ARPエントリに基づいて判定された宛先スイッチに送信した後、前記宛先スイッチが返したARP応答が指定された時間内に受信されない場合、前記第1のスイッチによって、前記第1のARP要求をフラッディングするように前記第1のスイッチに命令するために使用され、かつ前記第1のARP要求に従って前記コントローラが配信した、命令を受信するステップと、
前記第1のスイッチによって、前記命令に従って前記第1のARP要求をフラッディングするステップと、
を含む、SDNベースのARP実装方法。
【請求項８】
前記第1のスイッチによって、前記命令に従って前記第1のARP要求をフラッディングする、前記ステップは、
前記第1のスイッチによって、前記命令に従って、前記第1のスイッチに隣接するスイッチと前記第1のスイッチに接続された前記ホストとの両方に前記第1のARP要求を送信するステップ
を特に含む、請求項7に記載の方法。
【請求項９】
第1のスイッチによって、前記第1のスイッチに接続されたホストが送信した第1のARP要求を受信する、前記ステップの前に、
前記第1のスイッチによって、前記コントローラが配信したフローテーブルルール構成コマンドに従ってフローテーブルルールに対する構成を行うステップであって、
前記フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが前記隣接するスイッチによって送信された前記ARP要求をフラッディングすることを含む、ステップ
をさらに含む、請求項7または8に記載の方法。
【請求項１０】
請求項1から6のいずれか一項に記載の方法を実行するように構成されたSDNベースのARP実装装置。
【請求項１１】
請求項7から9のいずれか一項に記載の方法を実行するように構成されたSDNベースのARP実装装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信技術の分野に関し、特に、ソフトウェア定義ネットワーク（Software Defined Networking、SDN）ベースのアドレス解決プロトコル（Address Resolution Protocol、ARP）実装方法および装置に関する。
【背景技術】
【０００２】
SDNは新しいネットワークアーキテクチャであり、データセンターネットワークおよび電気通信ネットワークに広く適用されている。図1に示すように、SDNは、ネットワーク要素の制御ロジックをネットワーク要素の転送機能から切り離す。制御層はネットワークサービスを提供する。ネットワークサービスは、制御層によって対応するポリシーをネットワーク装置に配信することによって実現される。ネットワーク装置は、転送層でパケットを送信するように構成される。ネットワークサービスには、ルーティング、マルチキャスト、サービス品質、およびアクセス制御などの、様々なネットワークサービスおよびアプリケーションが含まれる。
【０００３】
OpenFlowプロトコルは、SDNネットワークの典型的な技術である。OpenFlowプロトコルによれば、OpenFlow Controller（以下、OF Controllerと略記する）が制御層の機能を実現し、転送層ネットワーク装置としていくつかのOpenFlow Switch（以下、OF Switchと略記する）を使用して、転送層の機能を実現する。各スイッチはいくつかのホストに接続され得る。
【０００４】
OF Controllerは、パケット特性に応じてサービスフローのアクションを判定する役割を担う。パケット特性には、インターネットプロトコル（Internet Protocol、IP）5タプル、イーサネット（登録商標）フレームヘッダ、仮想ローカルエリアネットワーク識別子（Virtual Local Area Network IDentification、VLAN ID）などが含まれる。加えて、OF Controllerは、フローテーブルルールをOF Switchに配信する。OF Switchは、フローテーブルルールを取得して格納し、フローテーブルルールを満たす後続のパケットに対して対応するアクションを実行して、パケットを転送または処理する。
【０００５】
図2に示すように、フローテーブルルールを配信する基本的なプロセスは以下の通りである。
【０００６】
ステップ201：OF Controllerは、OFP＿Flow＿Modメッセージ（すなわち、フローテーブル修正メッセージ）を使用して、OF Switchにフローテーブルルールを送信する。
【０００７】
OF Controllerは、複数のOFP＿Flow＿Modメッセージを使用して、異なるフローテーブルのフローテーブルルールをOF Switchに配信することができる。
【０００８】
ステップ202：OF Switchは、すべてのフローテーブルルールおよび対応する転送アクションセットを対応するフローテーブルに格納する。
【０００９】
ステップ203：OF Switchは、ユーザが送信したパケットを受信すると、受信したパケットのフローテーブルマッチングを行い、一致したフローテーブルルールおよび対応する転送アクションセットに従って、受信したパケットに対して対応する転送処理を行う。
【００１０】
図3に示すように、フローテーブルマッチングおよび転送処理のプロセスは、以下の通りである。
【００１１】
入力ポート（Ingress port）を使用してパケットがスイッチに入力されると、最初のフローテーブルであるTable 0からマッチングが開始する。対応するフローテーブルルールが一致する場合、フローテーブルルール内の命令が実行され、その命令に従って次のフローテーブルであるTable 1にマッチングが進められる。パケットについてTable 1でマッチングが行われるとき、パケットは、Ingress port情報とメタデータ（metadata）情報とを運ぶ。metadataは、マスカブルレジスタの値であり、フローテーブル間で情報を転送するために使用される。Table 1において一致したフローテーブルルールの命令が次のフローテーブルへの移動を命令しない場合、マッチングが終了し、Table 1において一致したフローテーブルルールに対応する、対応するアクションセット（Action Set）が実行される。そのパケットではフローテーブル内で一致する、対応するフローテーブルルールがない場合、パケットは破棄されるか、処理のためにOF Controllerに転送される。例えば、OF Controllerは、指定された出力ポートにパケットを転送する、パケットを破棄する、パケットヘッダを変更する、またはグループテーブルに従ってパケットを転送する。
【００１２】
イーサネットプロトコルでは、送信元ホストが宛先ホストと通信する必要がある場合、送信元ホストは、宛先ホストのMACアドレスを知る必要がある。しかしながら、送信元ホストは、宛先ホストのインターネットプロトコル（Internet Protocol、IP）アドレスのみを通常知っている。アドレス解決プロトコル（Address Resolution Protocol、ARP）の基本的な機能は、宛先ホストのIPアドレスを使用して、宛先ホストのMACアドレスを問い合わせて取得することである。図4に示すように、ARPに基づいてホスト間の通信を実現するプロセスは以下の通りである。
【００１３】
ステップ401：パケットをホストBに送信する前に、ホストAは、ローカルにキャッシュされたARPマッピングテーブルがホストBのARPエントリを有するかどうかをチェックする。ローカルにキャッシュされたARPマッピングテーブルがホストBのARPエントリを有する場合、ホストAは、ARPエントリに従ってパケットをホストBに直接送信する、またはローカルにキャッシュされたARPマッピングテーブルがホストBのARPエントリを有していない場合、ステップ402が実行される。
【００１４】
ステップ402：ホストAは、接続されたスイッチS1を使用してネットワーク全体にARP要求メッセージを送信する。
【００１５】
実際のアプリケーションでは、ホストAはARP要求メッセージを接続されたスイッチS1に送信し、スイッチS1はARP要求メッセージをネットワーク全体にブロードキャストする。
【００１６】
ステップ403：ARP要求を受信した後、ホストBは、ホストAのARPエントリをホストBに追加する。
【００１７】
ステップ404：ホストBは、接続されたスイッチS2を使用してユニキャスト方式でARP応答をホストAに送信する。
【００１８】
具体的には、スイッチS2は、受信したARP要求メッセージを使用して、ホストAのMACアドレス情報を取得し、ホストAのMACアドレス情報に従って、ホストAにユニキャスト方式でARP応答を送信し得る。
【００１９】
ステップ405：ARP応答を受信した後、ホストAは、ホストBのARPエントリを追加する。
【００２０】
ホストBとのその後の通信プロセスでは、ARPエントリに従ってパケットをホストBに送信することができる。
【００２１】
ARP要求メッセージのブロードキャストは、ネットワーク帯域幅をかなり消費することが分かる。SDNを使用するネットワークアーキテクチャでは、ARP要求メッセージをブロードキャストする回数を減らすために、OF Controllerが、ネットワーク全体のARPマッピングテーブルを格納し、すべてのARP要求を処理するように構成される。
【００２２】
図5に示すように、既存のARP実装方法は以下の通りである。
【００２３】
501：ホストAは、接続されたスイッチOF Switch S1にARP要求メッセージを送信する。
【００２４】
502：OF Switch S1は、ARP要求メッセージをパケットイン（packet−in）メッセージにカプセル化し、packet−inメッセージをコントローラOF Controllerに送信する。
【００２５】
503：OF Controllerは、packet−inメッセージを受信し、内部ARPマッピングテーブルでホストBのARPエントリを検索する。ホストBのARPエントリが見つかった場合、OF Controllerは、ARP応答を直接生成し、ARP応答をパケットアウト（packet−out）メッセージにカプセル化し、packet−outメッセージをOF Switch S1に返す、またはホストBのARPエントリが見つからなかった場合、OF Controllerは、ホストAのARPエントリを格納し、すべてのOF Switchに、ARP要求を接続されたホストに送信するように、packet−outメッセージの方式で命令する。
【００２６】
504：スイッチOF Switch S3は、ARP要求をホストBに転送する。
【００２７】
505：ホストBはARP応答を返す。
【００２８】
506：OF Switch S3は、ARP応答をpacket−inメッセージにカプセル化し、packet−inメッセージをOF Controllerに送信する。
【００２９】
507：OF Controllerは、packet−inメッセージを受信し、ホストBのARPエントリを格納し、ARP応答をpacket−outメッセージにカプセル化し、packet−outメッセージをOF Switch S1に送信する。
【００３０】
508：次いで、OF Switch S1は、ARP応答をホストAに転送する。
【００３１】
ARP応答を受信した後、ホストAは、ホストBのARPエントリを追加する。後続の通信プロセスにおいて、ホストAは、ARPエントリに従ってホストBにパケットを送信できる。
【００３２】
既存のSDNベースのARP実装方法によれば、OF Controllerを使用してすべてのARPマッピングテーブルを共に維持することにより、ARP要求メッセージをブロードキャストする回数が減る。しかしながら、ネットワーク規模の拡大およびARP要求の増加に伴い、集中コントローラ（つまり、OF Controller）を使用して多くのスイッチにpacket−outメッセージを送信すると、コントローラの制御処理負荷が大きくなるだけでなく、コントローラのより多くの伝送リソースを占有する。その結果、コントローラが処理のボトルネックになる。
【発明の概要】
【課題を解決するための手段】
【００３３】
本発明の各実施形態は、コントローラに基づいてARP要求をブロードキャストすることは、コントローラに比較的高い負荷をかけ、かつコントローラの多くの伝送リソースを浪費するという従来技術の問題を解決するために、SDNベースのARP実装方法および装置を提供する。
【００３４】
第1の実施態様によれば、SDNベースのARP実装方法であって、
コントローラによって、第1のスイッチが送信した第1のARP要求を受信するステップであって、第1のARP要求は、第1のスイッチに接続されたホストによって第1のスイッチに送信される、ステップと、
第1のARP要求に対応するARPエントリがローカルに存在しないと判定した場合、コントローラによって、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される第1の命令を第1のスイッチに送信するステップと、
を含む、SDNベースのARP実装方法が提供される。
【００３５】
第1の実施態様に関連して、第1の実施態様の第1の可能な実装では、第1の命令は、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するように第1のスイッチに命令するために使用される。
【００３６】
第1の実施態様または第1の実施態様の第1の可能な実装のいずれかに関連して、第1の実施態様の第2の可能な実装では、コントローラによって、第1のスイッチが送信した第1のARP要求を受信するステップの前に、本方法は、
コントローラによって、第1のスイッチに対する予め設定されたフローテーブルルールを構成するステップであって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングすることを含む、ステップ
をさらに含む。
【００３７】
第1の実施態様または第1の実施態様の第1から第2の可能な実装のいずれか1つに関連して、第1の実施態様の第3の可能な実装では、第1のスイッチに第1の命令を送信するステップの後、本方法は、
第1のARP応答を受信し、第1のARP応答を第1のスイッチに転送し、第1のARP応答内のARPエントリをローカルに格納するステップ
をさらに含む。
【００３８】
第1の実施態様または第1の実施態様の第1から第3の可能な実装のいずれか1つに関連して、第1の実施態様の第4の可能な実装では、
第1のARP要求に対応するARPエントリがローカルに存在すると判定した場合、コントローラによって、ARPエントリに基づいて宛先スイッチを判定し、第1のARP要求を宛先スイッチに送信する。
【００３９】
第1の実施態様の第4の可能な実装に関連して、第1の実施態様の第5の可能な実装では、コントローラによって、第1のARP要求を宛先スイッチに送信するステップの後に、本方法は、
宛先スイッチが返した第2のARP応答を受信した場合、第2のARP応答を第1のスイッチに転送するステップ、または
宛先スイッチが返したARP応答が指定された時間内に受信されない場合、第1のARP要求に対応し、かつローカルに格納されたARPエントリを削除し、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される第2の命令を第1のスイッチに送信する、ステップであって、
第2の命令は、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するように第1のスイッチに命令するために使用される、ステップ
をさらに含む。
【００４０】
第1の実施態様の第5の可能な実装に関連して、第1の実施態様の第6の可能な実装では、第1のスイッチに第2の命令を送信するステップの後、本方法は、
第2のスイッチが送信した第3のARP応答を受信した場合、第3のARP応答に含まれるARPエントリをローカルに格納するステップと、
第3のARP応答を第1のスイッチに転送するステップと、
をさらに含む。
【００４１】
第2の実施態様によれば、別のSDNベースのARP実装方法であって、
第1のスイッチによって、コントローラは、第1のスイッチに接続されたホストが送信した第1のARP要求を受信するステップと、
第1のスイッチによって、第1のARP要求をコントローラに報告するステップと、
第1のスイッチによって、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用され、かつ第1のARP要求に従ってコントローラが配信した、命令を受信するステップと、
第1のスイッチによって、命令に従って第1のARP要求をフラッディングするステップと、
を含む、別のSDNベースのARP実装方法が提供される。
【００４２】
第2の実施態様に関連して、第2の実施態様の第1の可能な実装では、
第1のスイッチによって、命令に従って第1のARP要求をフラッディングするステップは、
第1のスイッチによって、命令に従って、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するステップ
を特に含む。
【００４３】
第2の実施態様または第2の実施態様の第1の可能な実装に関連して、第2の実施態様の第2の可能な実装では、第1のスイッチによって、第1のスイッチに接続されたホストが送信した第1のARP要求を受信するステップの前に、本方法は、
第1のスイッチによって、コントローラが配信したフローテーブルルール構成コマンドに従ってフローテーブルルールに対する構成を行うステップであって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングすることを含む、ステップ
をさらに含む。
【００４４】
第3の実施態様によれば、別のSDNベースのARP実装方法であって、
第1のスイッチによって、第1のスイッチに隣接する第2のスイッチが送信した第1のARP要求を受信するステップと、
第1のスイッチによって、第1のARP要求を直接フラッディングするステップと、
を含む、別のSDNベースのARP実装方法が提供される。
【００４５】
第3の実施態様に関連して、第3の実施態様の第1の可能な実装では、第1のスイッチによって、第1のARP要求を直接フラッディングするステップは、
第1のスイッチによって、第2のスイッチとは異なり、かつ第1のスイッチに隣接するスイッチと、第1のスイッチに接続されたホストと、に第1のARP要求を送信するステップ
を特に含む。
【００４６】
第3の実施態様または第3の実施態様の第1の可能な実装に関連して、第3の実施態様の第2の可能な実装では、第1のスイッチによって、第1のスイッチに隣接する第2のスイッチが送信した第1のARP要求を受信するステップの前に、本方法は、
第1のスイッチによって、コントローラが配信したフローテーブルルール構成コマンドに従ってフローテーブルルールに対する構成を行うステップであって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングし、接続されたホストが送信したARP要求を受信した場合、スイッチが接続されたホストによって送信されたARP要求をコントローラに報告することを含む
をさらに含む。
【００４７】
第4の実施態様によれば、SDNベースのARP実装装置であって、
第1のスイッチが送信した第1のARP要求を受信するように構成された受信ユニットであって、第1のARP要求は、第1のスイッチに接続されたホストによって第1のスイッチに送信される、受信ユニットと、
受信ユニットが受信した第1のARP要求に対応するARPエントリがローカルに存在するか否か判定するように構成されたマッピングユニットと、
第1のARP要求に対応するARPエントリがローカルに存在するとマッピングユニットが判定した場合、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される第1の命令を第1のスイッチに送信するように構成された送信ユニットと、
を備える、SDNベースのARP実装装置が提供される。
【００４８】
第4の実施態様に関連して、第4の実施態様の第1の可能な実装では、第1の命令は、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するように第1のスイッチに命令するために使用される。
【００４９】
第4の実施態様または第4の実施態様の第1の可能な実装に関連して、第4の実施態様の第2の可能な実装では、本装置は、
第1のスイッチが送信した第1のARP要求を受信ユニットが受信する前に、第1のスイッチのための予め設定されたフローテーブルルールを構成するように構成された構成ユニットであって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングすることを含む、構成ユニット
をさらに備える。
【００５０】
第4の実施態様または第4の実施態様の第1から第2の可能な実装のいずれか1つに関連して、第4の実施態様の第3の可能な実装では、受信ユニットは、送信ユニットが第1の命令を第1のスイッチに送信した後、第1のARP応答を受信するようにさらに構成され、
送信ユニットは、受信ユニットが受信した第1のARP応答を第1のスイッチに転送するようにさらに構成され、
マッピングユニットは、受信ユニットが受信した第1のARP応答内のARPエントリをローカルに格納するようにさらに構成される。
【００５１】
第4の実施態様または第1の実施態様の第1から第3の可能な実装のいずれか1つに関連して、第4の実施態様の第4の可能な実装では、マッピングユニットは、第1のARP要求に対応するARPエントリがローカルに存在すると判定した場合、ARPエントリに基づいて宛先スイッチを判定するようにさらに構成され、
送信ユニットは、マッピングユニットが判定した宛先スイッチに第1のARP要求を送信するようにさらに構成される。
【００５２】
第4の実施態様の第4の可能な実装に関連して、第4の実施態様の第5の可能な実装では、送信ユニットが、第1のARP要求を宛先スイッチに送信した後、宛先スイッチが返した第2のARP応答を受信ユニットが受信した場合、送信ユニットは、第2のARP応答を第1のスイッチに転送する、または
宛先スイッチが返したARP応答を指定された時間内に受信ユニットが受信しない場合、マッピングユニットは、第1のARP要求に対応し、かつローカルに格納されたARPエントリを削除し、送信ユニットは、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される第2の命令を第1のスイッチに送信し、
第2の命令は、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するように第1のスイッチに命令するために使用される。
【００５３】
第4の実施態様の第5の可能な実装に関連して、第4の実施態様の第6の可能な実装では、送信ユニットが、第2の命令を第1のスイッチに送信した後、第2のスイッチが送信した第3のARP応答を受信ユニットが受信した場合、マッピングユニットは、第3のARP応答に含まれるARPエントリをローカルに格納するようにさらに構成され、
送信ユニットは、第3のARP応答を第1のスイッチに転送するようにさらに構成される。
【００５４】
第5の実施態様によれば、SDNベースのARP実装装置であって、
本装置に接続されたホストが送信した第1のARP要求を受信するように構成された第1の受信ユニットと、
第1の受信ユニットが受信した第1のARP要求をコントローラに報告するようにさらに構成された送信ユニットと、
第1のARP要求をフラッディングするように本装置に命令するために使用され、かつ第1のARP要求に従ってコントローラが配信した、命令を受信するように構成された第2の受信ユニットと、
第2の受信ユニットが受信した命令に従って第1のARP要求をフラッディングするように構成されたフラッディングユニットと、
を備える、SDNベースのARP実装装置が提供される。
【００５５】
第5の実施態様に関連して、第5の実施態様の第1の可能な実装では、フラッディングユニットは、
本装置に隣接するスイッチと本装置に接続されたホストとの両方に第1のARP要求を送信するように特に構成される。
【００５６】
第5の実施態様または第5の実施態様の第1の可能な実装に関連して、第5の実施態様の第2の可能な実装では、本装置は、
本装置に接続されたホストが送信した第1のARP要求を第1の受信ユニットが受信する前に、コントローラが配信したフローテーブルルール構成コマンドに従って、フローテーブルルールに対して構成を行うように構成された構成ユニットであって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングすることを含む、構成ユニット
をさらに備える。
【００５７】
第6の実施態様によれば、SDNベースのARP実装装置であって、
本装置に隣接する第2のスイッチが送信した第1のARP要求を受信するように構成された受信ユニットと、
受信ユニットが受信した第1のARP要求を直接フラッディングするように構成されたフラッディングユニットと、
を備える、SDNベースのARP実装装置が提供される。
【００５８】
第6の実施態様に関連して、第6の実施態様の第1の可能な実装では、フラッディングユニットは、
本装置とは異なり、かつ本装置に隣接するスイッチと、本装置に接続されたホストと、に第1のARP要求を送信するように特に構成される。
【００５９】
第6の実施態様または第6の実施態様の第1の可能な実装に関連して、第6の実施態様の第2の可能な実装では、本装置は、
第1のスイッチに隣接する第2のスイッチが送信した第1のARP要求を受信ユニットが受信する前に、コントローラが配信したフローテーブルルール構成コマンドに従って、フローテーブルルールに対して構成を行うように構成された構成ユニットであって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングし、接続されたホストが送信したARP要求を受信した場合、スイッチが接続されたホストによって送信されたARP要求をコントローラに報告することを含む、構成ユニット
をさらに備える。
【００６０】
第7の実施態様によれば、コントローラであって、送受信機と、プロセッサと、メモリと、バスと、を備えるコントローラが提供され、送受信機、プロセッサ、およびメモリは、バスに接続され、メモリは、一式のプログラムを格納し、プロセッサは、メモリに格納したプログラムを呼び出すように構成され、その結果、コントローラは、第1の実施態様または第1の実施態様の第1から第6の可能な実装のいずれか1つに従って方法を実行する。
【００６１】
第8の実施態様によれば、スイッチであって、送受信機と、プロセッサと、メモリと、バスと、を備えるスイッチが提供され、送受信機、プロセッサ、およびメモリは、バスに接続され、メモリは、一式のプログラムを格納し、プロセッサは、メモリに格納したプログラムを呼び出すように構成され、その結果、スイッチは、第2の実施態様または第2の実施態様の第1から第2の可能な実装のいずれか1つに従って方法を実行する。
【００６２】
第9の実施態様によれば、スイッチであって、送受信機と、プロセッサと、メモリと、バスと、を備えるスイッチが提供され、送受信機、プロセッサ、およびメモリは、バスに接続され、メモリは、一式のプログラムを格納し、プロセッサは、メモリに格納したプログラムを呼び出すように構成され、その結果、スイッチは、第3の実施態様または第3の実施態様の第1から第2の可能な実装のいずれか1つに従って方法を実行する。
【００６３】
本発明の実施形態では、第1のARP要求に対応するARPエントリがローカルに存在する場合、コントローラは、ユニキャスト方式で第1のARP要求を宛先スイッチに送信し、ARP応答を受信した場合、ユニキャスト方式でARP応答を第1のスイッチにフィードバックし、その結果、第1のスイッチは、ARP応答を送信元ホストにさらにフィードバックする、または指定された時間の間なんらARP応答が受信されない場合、対応するARPエントリをローカルで削除し、スイッチ間のメッセージ転送により第1のARP要求をブロードキャストし、宛先ホストのものであり、かつ第1のARP要求における宛先IPアドレスに対応する正しいMACアドレスを取得し、ARPエントリをローカルで更新する。このようにして、コントローラが格納したARPテーブルを適時に更新し、コントローラ格納した無効なARPエントリによって引き起こされる、より深刻なネットワークエラーを回避できる。
【図面の簡単な説明】
【００６４】
【図１】従来技術におけるSDNの基本的なアーキテクチャ図である。
【図２】従来技術におけるフローテーブルルールを配信するための基本的な流れ図である。
【図３】従来技術におけるフローテーブルのマッチングおよび処理の流れ図である。
【図４】従来技術におけるARPに基づくホスト間の通信を実現するための流れ図である。
【図５】従来技術におけるARP実装方法の流れ図である。
【図６】本発明の一実施形態によるARP実装システムの図である。
【図７】本発明の実施形態1によるSDNベースのARP実装方法の流れ図である。
【図８ａ】本発明の実施形態2による別のSDNベースのARP実装方法の流れ図である。
【図８ｂ】本発明の実施形態3による別のSDNベースのARP実装方法の流れ図である。
【図９】本発明の実施形態4によるシナリオ1におけるARP実装の流れ図である。
【図１０】本発明の実施形態4によるシナリオ2におけるARP実装の流れ図である。
【図１１】本発明の実施形態5によるSDNベースのARP実装装置の構成図である。
【図１２】本発明の実施形態6によるSDNベースのARP実装装置の構成図である。
【図１３】本発明の実施形態7によるSDNベースのARP実装装置の構成図である。
【図１４】本発明の実施形態8によるコントローラの構成図である。
【図１５】本発明の実施形態9によるスイッチの構成図である。
【図１６】本発明の実施形態10によるスイッチの構成図である。
【発明を実施するための形態】
【００６５】
SDNネットワーク構造では、スパニングツリープロトコルがブロードキャストストームを回避するために良好に実装されることを考慮すると、本発明の実施形態によれば、スイッチ間の対話メッセージを使用してARP要求がブロードキャストされる。この方法は、ARP要求がコントローラのpacket−outイベントを使用してネットワーク全体にブロードキャストされる従来技術の方法を置き換えるものである。コントローラがpacket−outメッセージを送信する回数が減り、コントローラがpacket−outメッセージを送信することと比較して、スイッチ間のメッセージ対話のために占有される伝送リソースが少なくなる。従って、ARP要求をブロードキャストするためにコントローラが占有する伝送リソースが減り、コントローラが比較的高負荷であるために処理のボトルネックになるという問題が回避される。
【００６６】
本発明の目的、技術的解決策、および利点をより明確にするために、以下、添付の図面を参照しながら、本発明を詳細に説明する。当然のことながら、説明される実施形態は、単に本発明の実施形態の一部に過ぎず、すべてではない。本発明の実施形態に基づいて、当業者によって創造的努力なしに得られるすべての他の実施形態は、本発明の保護範囲内に含まれるものとする。
【００６７】
本発明の実施形態によるSDNベースのネットワーク構造では、ネットワーク全体のすべてのホストのARPマッピング情報は、コントローラを使用して共に維持される。図6に示すように、本発明の一実施形態によるARP実装システムは、OF Controller（すなわち、コントローラ）601と、OF Switch（すなわち、スイッチ）602と、ホスト603と、を含む。
【００６８】
コントローラ601は、複数のスイッチに接続されている。図6では、コントローラ601が3つのスイッチに接続されている例を用いて説明する。3つのスイッチは、スイッチS1、スイッチS2、およびスイッチS3であり、それぞれ602−a、602−b、および602−cで表される。各スイッチは少なくとも1つのホストに接続される。図6では、各スイッチが2つのホストに接続されている例を用いて説明する。スイッチS1はホストAおよびホストBに接続され、スイッチS2はホストCおよびホストDに接続され、スイッチS3はホストEおよびホストFに接続される。ホストA、ホストB、ホストC、ホストD、ホストE、およびホストFは、それぞれ603−a、603−b、603−c、603−d、603−e、および603−fで表される。
【００６９】
コントローラ601は、SDNネットワークアーキテクチャの制御プレーンデバイスであり、パケット特性に従ってサービスフローの転送アクションを判定し、対応するフローテーブルルールを形成し、対応するフローテーブルルールをスイッチ602に配信し、ホスト603のARPマッピング情報を一緒に維持する役割を担う。
【００７０】
例えば、ARPマッピング情報は、ARPマッピングテーブルの形態でコントローラ601に一様に記録されてもよい。コントローラ601は、各ホストについて1つのARPエントリを維持し、ARPエントリは、ホストのIPアドレスとMACアドレスとの間のマッピング関係を記録する。
【００７１】
スイッチ602は、SDNネットワークアーキテクチャにおけるユーザプレーンデバイスであり、コントローラ601からフローテーブルルールを取得し、フローテーブルルールを格納し、格納されたフローテーブルルールに記録された転送アクションに従って、格納されたフローテーブルルールを満たすパケットに対して対応するアクションを実行して、パケットの転送処理を実施するように構成される。
【００７２】
宛先ホストにパケットを送信する前に、送信元ホストは宛先ホストのMACアドレスを知る必要がある。宛先ホストのARPエントリがローカルにキャッシュされていない場合、送信元ホストは送信元ホストに接続されているスイッチにARP要求を送信し、次いで、スイッチはARP要求をpacket−inメッセージにカプセル化し、packet−inメッセージをコントローラ601に送信し、コントローラ601は、その後にARP要求をブロードキャストするか否かを判定する。
【００７３】
以下、本発明の本実施形態によるSDNベースのARP実装方法を詳細に説明する。
【００７４】
SDNネットワークでは、処理できないARP要求メッセージを受信すると、スイッチはpacket−inメッセージを生成し、packet−inメッセージをコントローラに報告する。処理できないARP応答メッセージを受信すると、スイッチはpacket−outメッセージを生成し、packet−outメッセージをコントローラに報告する。本発明の本実施形態では、スイッチがネットワークにアクセスする場合、コントローラはすべてのスイッチのフローテーブルルールを予め構成する。構成されたフローテーブルルールには、隣接するスイッチによって送信されたARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングすることが少なくとも含まれる。
【００７５】
構成されたフローテーブルルールには、非スイッチ相互接続ポートから（例えば、スイッチに接続されたホストから）ARP要求を受信した場合、スイッチが非スイッチ相互接続ポートからのARP要求をコントローラに報告することがさらに含まれ得る。
【００７６】
フラッディングとは、スイッチがスパニングツリープロトコルに基づいて、受信したパケットを、そのパケットが受信されたポートとは異なる他のすべてのポートを使用して送信することを意味する。つまり、スイッチは、隣接するスイッチに対応するポートとは異なる他のすべてのポートを使用して、隣接するスイッチから受信したARP要求を送信する。他のすべてのポートには、スイッチに隣接する他のすべてのスイッチに対応するポートと、スイッチに接続されているすべてのホストに対応するポートと、が含まれる。
【００７７】
図6に示すように、例えばスイッチS1およびS3はスイッチS2に隣接し、ホストCおよびホストDはスイッチS2に接続されている。スイッチS2がスイッチS1によって転送されたARP要求を受信すると、S2はARP要求を受信したポートとは異なる他のすべてのポートにARP要求を転送する、すなわち、S2はARP要求をS1とは異なるS3に、そしてホストCおよびホストDに転送する。
【００７８】
実施形態1
図7に示すように、スイッチ（第1のスイッチとする）がARP要求を送信する例では、本発明の実施形態1におけるSDNベースのARP実装方法のプロセスは、具体的には以下の通りである。
【００７９】
ステップ700：コントローラは、第1のスイッチが送信した第1のARP要求を受信し、第1のARP要求は、第1のスイッチに接続されたホストによって第1のスイッチに送信される。
【００８０】
具体的には、第1のスイッチが受信した第1のARP要求は、第1スイッチに接続されたホストによって送信されるので、第1スイッチは第1のARP要求をpacket−inメッセージにカプセル化し、第1のスイッチのためにコントローラによって予め構成されたフローテーブルルールに従って、packet−inメッセージをコントローラに報告する。例えば、第1のスイッチは、第1のARP要求のパケットをpacket−inメッセージに加え、packet−inメッセージをコントローラに報告することができる。
【００８１】
コントローラは、第1のARP要求を報告するホスト（送信元ホストとも呼ばれる）に対応するARPエントリをローカルに格納する、すなわち、送信元ホストのIPアドレスとMACアドレスとの間の対応関係を対応するARPエントリに格納する。
【００８２】
第1のARP要求は、送信元ホストが通信しようとするホスト（宛先ホストとも呼ばれる）のIPアドレス、すなわち宛先IPアドレスを含む。
【００８３】
ステップ710：第1のARP要求に対応するARPエントリがローカルに存在しないと判定した場合、コントローラは、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される第1の命令を第1のスイッチに送信する。
【００８４】
第1の命令は、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するように第1のスイッチに命令するために使用される。
【００８５】
本発明の実施形態1では、コントローラはネットワーク全体のすべてのホストのARPマッピングエントリを一緒に維持する。コントローラは、第1のARP要求を運び、かつ第1のスイッチが送信したpacket−inメッセージを受信した後、第1のARP要求を取得するためにpacket−inメッセージを解析し、第1のARP要求に対応するARPエントリが存在するか否かをチェックする、すなわち、宛先IPアドレスに対応する宛先MACアドレスがローカルに存在するか否かをチェックする。第1のARP要求に対応するARPエントリがローカルに存在しない場合、コントローラはユニキャスト方式で第1のスイッチにpacket−outメッセージを送信する。packet−outメッセージは、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される。
【００８６】
具体的には、第1のスイッチが第1のARP要求をフラッディングした後、第1のスイッチに隣接するスイッチは第1のスイッチによって転送された第1のARP要求を受信し、隣接するスイッチは、隣接するスイッチの予め構成されたフローテーブルルールに従って、第1のARP要求をフラッディングし続ける。加えて、第1のスイッチに接続されたホストは、第1のスイッチによって転送された第1のARP要求を受信する。第1のARP要求に含まれる宛先IPアドレスがホストのIPアドレスと一致すると判定された場合、ホストは第1のスイッチにARP応答を返す、または第1のARP要求に含まれる宛先IPアドレスがホストのIPアドレスと一致しないと判定した場合、ホストはARP応答を返さない。
【００８７】
上述のプロセスにおいて、コントローラは、第1のARP要求に対応するARPエントリがローカルに存在しないと判定した場合、第1のARP要求を送信する第1のスイッチに第1のARP要求をフラッディングするよう命令し、第1のスイッチに隣接するスイッチは、各スイッチの予め構成されたフローテーブルルールに従って第1のARP要求をフラッディングし続ける。このようにして、スイッチ間のメッセージ転送によりネットワーク全体に第1のARP要求をブロードキャストできる。第1のARP要求がスイッチ間で転送される場合、第1のARP要求をpacket−inメッセージにカプセル化する必要がなく、コントローラがpacket−outメッセージを第1のスイッチにのみ送信することから、packet−outメッセージを送信する回数が大幅に削減され、コントローラの処理負荷が軽減される。従って、ARP要求をブロードキャストするために占有されるネットワーク伝送リソースがより少なくなり、ARP要求をブロードキャストする効率を向上させることができる。加えて、ARP要求をブロードキャストするプロセスにおいて、スイッチが隣接するスイッチによって転送されたARP要求を受信した場合に、スイッチがpacket−inメッセージを再び生成し、packet−inメッセージをコントローラに繰り返し報告することを回避するために、スイッチのフローテーブルルールは予め設定される。
【００８８】
さらに、第1のARP要求を受信すると、ホストは、第1のARP要求がホストのIPアドレスに対応するMACアドレスを問い合わせるために使用されるか否かをチェックする。ホスト（つまり、宛先ホスト）が、第1のARP要求がホストのIPアドレスと一致することを検出すると、ホストは接続されたスイッチにARP応答（第1のARP応答として示す場合がある）を返し、接続されたスイッチは、第1のARP応答をpacket−inメッセージにカプセル化し、packet−inメッセージをコントローラに送信する。
【００８９】
コントローラが、第1のARP応答を運び、かつスイッチ（第1のスイッチまたは別のスイッチであり得る）によって返されたpacket−inメッセージを受信すると、コントローラは、packet−inメッセージを、第1のARP応答を運ぶ、対応するpacket−outメッセージに変換し、packet−outメッセージを第1のスイッチにユニキャスト方式で送信する。第1のスイッチは、第1のARP要求を送信するホスト（つまり送信元ホスト）に第1のARP応答をフィードバックし、コントローラは、第1のARP応答内のARPエントリをローカルに格納する。後続の通信プロセスにおいて、送信元ホストは、第1のARP応答内の宛先ホストのMACアドレスに従って、宛先ホストにパケットを送信することができる。
【００９０】
加えて、コントローラは、第1のARP要求を運び、かつ第1のスイッチが送信したpacket−inメッセージを受信した後、第1のARP要求に対応するARPエントリがローカルに存在するか否かをチェックする。第1のARP要求に対応するARPエントリが存在すると判定された場合、コントローラは、ARPエントリに従って、宛先ホストおよび宛先ホストに接続された宛先スイッチを判定し、第1のARP要求を宛先スイッチに送信する。
【００９１】
具体的には、コントローラは、ローカルに格納されたARPマッピングテーブルに従って、第1のARP要求に対応するARPエントリを判定する。ARPエントリは、宛先IPアドレスと宛先MACアドレスとの間の対応関係を含む。このケースでは、コントローラはARPエントリを第1のスイッチに直接フィードバックしないが、宛先ホストに接続されている宛先スイッチを使用して宛先MACアドレスに従って第1のARP要求を宛先ホストに転送する。
【００９２】
コントローラが宛先スイッチを使用して第1のARP要求を宛先ホストに転送した後には、2つのケースがある。
【００９３】
ケース1：
宛先スイッチによって返された第2のARP応答が受信された場合、コントローラは第2のARP応答を第1のスイッチに転送する。
【００９４】
宛先スイッチによって返された第2のARP応答が受信された場合、これは、第1のARP要求に対応し、かつコントローラによって格納されたARPエントリが、宛先ホストの最新のIPアドレスおよびMACアドレスに関する情報と一致する、つまり、宛先ホストの元のIPアドレスおよびMACアドレスが変更されていないことを示す。
【００９５】
具体的には、コントローラは、第2のARP応答を運び、かつ宛先スイッチによって送信されたpacket−inメッセージを受信する。packet−inメッセージは、宛先スイッチが宛先ホストによって送信された第2のARP応答を受信した後に、宛先スイッチによって第2のARP応答をカプセル化することによって得られる。第2のARP応答を運ぶpacket−inメッセージを受信すると、コントローラは、packet−inメッセージを、第2のARP応答を運ぶpacket−outメッセージに変換し、packet−outメッセージを第1のスイッチにユニキャスト方式で送信する。第1のスイッチは、第1のARP要求を送信するホストに第2のARP応答をフィードバックする。
【００９６】
ケース2：
宛先スイッチが返したARP応答が指定された時間内に受信されない場合、コントローラは、第1のARP要求に対応し、かつローカルに格納されたARPエントリを削除し、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される第2の命令を第1のスイッチに送信する。第2の命令は、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するように第1のスイッチに命令するために使用される。
【００９７】
宛先スイッチによって返されたARP応答が指定された時間内に受信されない場合、これは、第1のARP要求に対応し、かつコントローラによって格納されたARPエントリが、宛先ホストの最新のIPアドレスおよびMACアドレスに関する情報と一致しない、つまり、宛先ホストのIPアドレスが変わったことを示す。第1のARP要求に対応し、かつコントローラによってローカルに格納されているARPエントリは無効になり、従って、対応するARPエントリが削除される。
【００９８】
このケースでは、コントローラはARPブロードキャストを開始し、第1のARP要求に対応する正しい宛先ホストと、正しい宛先ホストに接続されているスイッチと、を取得し続ける。
【００９９】
具体的には、コントローラはユニキャスト方式で第1のスイッチにpacket−outメッセージを送信する。packet−outメッセージは、第1のARP要求をフラッディングするように第1のスイッチに命令する、すなわち、第1のARP要求を隣接するスイッチおよび接続されたホストに転送するよう第1のスイッチに命令する。隣接するスイッチは第1のARP要求を受信し、予め構成されたフローテーブルルールに従って第1のARP要求をフラッディングし続ける。加えて、第1のスイッチに接続されたホストは、第1のスイッチによって転送された第1のARP要求を受信する。第1のARP要求に含まれる宛先IPアドレスがホストのIPアドレスと一致すると判定された場合、ホストは第1のスイッチにARP応答を返し、そうではない場合、ホストはARP応答を返さない。このようにして、隣接するスイッチ間のメッセージ転送によりネットワーク全体に第1のARP要求をブロードキャストできる。
【０１００】
コントローラが第1のARP要求をブロードキャストした後、ホスト（ホストCとする）は、第1のARP要求に含まれる宛先IPアドレスがホストのIPアドレスと一致することを検出し、第3のARP応答を接続された第2のスイッチ（スイッチS2とする）に返し、第2のスイッチは、第3のARP応答をpacket−inメッセージにカプセル化し、packet−inメッセージをコントローラに送信する。
【０１０１】
さらに、コントローラは、第2のスイッチによって送信された第3のARP応答を受信した後、第2のスイッチによって送信された第3のARP応答に含まれるARPエントリをローカルに格納し、第3のARP応答を第1のスイッチに転送する。
【０１０２】
具体的には、コントローラは、第3のARP応答を運び、かつ第2のスイッチによって送信されたpacket−inメッセージを受信する。packet−inメッセージは、第2のスイッチがホストCによって送信された第3のARP応答を受信した後に第2のスイッチによって第3のARP応答をカプセル化することによって取得される。第3のARP応答を運ぶpacket−inメッセージを受信すると、コントローラは、packet−inメッセージを、第3のARP応答を運ぶpacket−outメッセージに変換し、packet−outメッセージを第1のスイッチにユニキャスト方式で送信する。第1のスイッチは、第1のARP要求を送信するホストに第3のARP応答をフィードバックする。
【０１０３】
上述のプロセスでは、第1のARP要求に対応するARPエントリがローカルに存在する場合、コントローラは、ユニキャスト方式で第1のARP要求を宛先スイッチに送信し、ARP応答を受信した場合、ユニキャスト方式でARP応答を第1のスイッチにフィードバックし、その結果、第1のスイッチは、ARP応答を送信元ホストにさらにフィードバックする、または指定された時間の間なんらARP応答が受信されない場合、対応するARPエントリをローカルで削除し、スイッチ間のメッセージ転送により第1のARP要求をブロードキャストし、宛先ホストのものであり、かつ第1のARP要求における宛先IPアドレスに対応する正しいMACアドレスを取得し、ARPエントリをローカルで更新する。このようにして、コントローラが格納したARPテーブルを適時に更新し、コントローラ格納した無効なARPエントリによって引き起こされる、より深刻なネットワークエラーを回避できる。
【０１０４】
以上が、本発明の実施形態1によるSDNベースのARP実装方法である。
【０１０５】
実施形態2
同じ発明概念に基づいて、本発明の実施形態2は、別のSDNベースのARP実装方法を提供する。以下では、説明のための例として第1のスイッチを引き続き使用している。具体的なプロセスが図8aに示されている。
【０１０６】
ステップ800a：第1のスイッチは、第1のスイッチに接続されたホストによって送信された第1のARP要求を受信し、第1のARP要求をコントローラに報告する。
【０１０７】
第1のスイッチは、コントローラによって配信されるフローテーブルルール構成コマンドに従ってフローテーブルルールの構成を行う。
【０１０８】
フローテーブルルールには、非スイッチ相互接続ポートから（例えば、スイッチに接続されたホストから）ARP要求を受信した場合、スイッチが非スイッチ相互接続ポートからのARP要求をコントローラに報告することが含まれる。
【０１０９】
ステップ810a：第1のスイッチは、第1のARP要求をフラッディングするようにスイッチに命令するために使用され、かつ第1のARP要求に従ってコントローラによって配信される命令を受信し、命令に従って第1のARP要求をフラッディングする。
【０１１０】
具体的には、第1のスイッチは、命令に従って、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信する。
【０１１１】
命令は、ARP要求に対応するARPエントリがローカルに存在しないとコントローラが判定した場合に、コントローラによって第1のスイッチにユニキャスト方式で送信される。
【０１１２】
あるいは、命令は、ARP要求に対応するARPエントリがローカルに存在するとコントローラが判定し、ARP要求を宛先スイッチにユニキャスト方式で送信するが、宛先スイッチを使用して宛先ホストにARP要求を送信した後、宛先スイッチを使用して宛先ホストが返したARP応答を受信しない場合に、コントローラによって第1のスイッチにユニキャスト方式で送信される。
【０１１３】
具体的には、第1のスイッチと同様に、ネットワーク全体にあるすべてのスイッチは、コントローラによって配信されたフローテーブルルール構成コマンドに従って、ネットワークにアクセスするときに予めフローテーブルルール上の構成を行う。このようにして、第1のスイッチに隣接するスイッチが第1のスイッチによって転送されたARP要求を受信すると、スイッチは接続されたホストおよび第1のスイッチとは異なる他のすべての隣接するスイッチにARP要求を直接転送する。従って、スイッチ間のメッセージ転送によりARP要求をブロードキャストできる。
【０１１４】
さらに、第1のARP要求に含まれる宛先IPアドレスに対応するホストが、そのホストに接続されたスイッチによって送信された第1のARP要求を受信すると、ホストは、接続されたスイッチにARP応答を返す。接続されたスイッチは、ARP応答をpacket−inメッセージにカプセル化し、packet−inメッセージをコントローラに報告する。コントローラはARP応答を処理し、packet−outメッセージを使用してユニキャスト方式でARP応答を第1のスイッチに送信する。第1のスイッチは、第1のARP要求を送信するホストにARP応答をフィードバックする。このようにして、後続の通信プロセスにおいて、第1のARP要求を送信するホストは、ARP応答に含まれるARPエントリに基づいて宛先ホストにパケットを送信することができる。
【０１１５】
実施形態3
同じ発明概念に基づいて、本発明の実施形態3は、別のSDNベースのARP実装方法を提供する。以下では、説明のための例として第1のスイッチを引き続き使用している。具体的なプロセスが図8bに示されている。
【０１１６】
ステップ800b：第1のスイッチは、第1のスイッチに隣接する第2のスイッチによって送信された第1のARP要求を受信する。
【０１１７】
第1のスイッチに隣接する第2のスイッチによって送信された第1のARP要求を受信する前に、第1のスイッチは、コントローラによって配信されるフローテーブルルール構成コマンドに従ってフローテーブルルールの構成を行う。
【０１１８】
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングし、接続されたホストが送信したARP要求を受信した場合、スイッチが接続されたホストによって送信されたARP要求をコントローラに報告することを含む。
【０１１９】
ステップ810b：第1のスイッチは、第1のARP要求を直接フラッディングする。
【０１２０】
具体的には、第1のスイッチは、第2のスイッチとは異なり、かつ第1のスイッチに隣接するスイッチと、第1のスイッチに接続されたホストと、に第1のARP要求を送信する。
【０１２１】
以下、図6および具体的なアプリケーションシナリオを参照しながら、本発明の本実施形態をよりさらに詳細に説明する。
【０１２２】
実施形態4
ホストAは、宛先ホストと通信する前に、ARPプロトコルを使用して宛先IPアドレスに従って宛先MACアドレスを取得する必要がある。実施形態4では、ホストAはスイッチS1に接続され、ホストEはスイッチS3に接続され、スイッチS2はスイッチS1およびスイッチS3に隣接し、スイッチS1はスイッチS3に隣接しない。
【０１２３】
以下、2つのシナリオにおける、本発明の実施形態4によるARP実装プロセスを詳細に説明する。
【０１２４】
シナリオ1：宛先IPアドレスに対応するARPエントリがコントローラにローカルに存在しない。
【０１２５】
図9を参照すると、シナリオ1におけるARP実装プロセスは以下の通りである。
【０１２６】
ステップ900：スイッチがネットワークにアクセスすると、コントローラはスイッチのフローテーブルルールを予め構成する。
【０１２７】
構成されたフローテーブルルールには、非スイッチ相互接続ポートから（例えば、スイッチに接続されたホストから）ARP要求を受信した場合、スイッチが非スイッチ相互接続ポートからのARP要求をコントローラに報告することが含まれ、隣接するスイッチによって送信されたARP要求を受信した場合、スイッチは、隣接するスイッチによって送信されたARP要求をフラッディングする。
【０１２８】
ステップ901：ホストAは、接続されたスイッチS1にARP要求を送信する。
【０１２９】
ARP要求は、ホストAが通信しようとするホスト（すなわち、宛先ホスト）のIPアドレスを含み、IPアドレスは、宛先IPアドレスである。
【０１３０】
ステップ902：スイッチS1は、ARP要求をpacket−inメッセージにカプセル化し、packet−inメッセージをコントローラに報告する。
【０１３１】
ARP要求は、非スイッチ相互接続ポートからのものであるため、ARP要求を受信すると、スイッチS1は、予め構成されたフローテーブルルールに従ってコントローラにARP要求を報告する。
【０１３２】
ステップ903：コントローラは、ローカルARPキャッシュテーブルをチェックし、宛先IPアドレスに対応するARPエントリが存在しないと判定した場合、スイッチS1にユニキャスト方式でpacket−outメッセージを送信し、ARP要求をフラッディングするようにスイッチS1に命令する。
【０１３３】
ステップ904：ARP要求をフラッディングするプロセスにおいて、スイッチS1は、隣接するスイッチ（例えば、スイッチS2）にARP要求を送信する。
【０１３４】
加えて、スイッチS1はまた、接続されたホスト（例えば、ホストAおよびホストB）にARP要求を送信する。
【０１３５】
ステップ905：ARP要求をフラッディングするプロセスにおいて、スイッチS2は、スイッチS3にARP要求を送信する。
【０１３６】
具体的には、スイッチS2は、ARP要求を受信すると、スイッチS2の予め構成されたフローテーブルルールに従って、スイッチS1とは異なる隣接するスイッチ（例えば、スイッチS3）と、接続されたホスト（例えば、ホストCまたはホストD）と、の両方にARP要求を送信する。
【０１３７】
ステップ906：ARP要求をフラッディングするプロセスにおいて、スイッチS3は、接続されたホスト（例えば、ホストE）にARP要求を送信する。
【０１３８】
同様に、スイッチS3は、ARP要求を受信すると、スイッチS3の予め構成されたフローテーブルルールに従って、接続されたホストと、スイッチ2とは異なる隣接するスイッチと、の両方にARP要求を送信する。
【０１３９】
宛先IPアドレスに対応するホスト、すなわち宛先ホストがホストEであるとすると、ステップ907が実行される。
【０１４０】
ステップ907：ホストEは、スイッチS3にARP応答を返す。
【０１４１】
ステップ908：スイッチS3は、ARP応答をpacket−inメッセージにカプセル化し、packet−inメッセージをコントローラに送信する。
【０１４２】
ステップ909：コントローラは、ARP応答を運ぶpacket−inメッセージを、ARP応答を運ぶpacket−outメッセージに変換し、ARP応答を運ぶpacket−outメッセージをユニキャスト方式でスイッチS1に送信する。
【０１４３】
ステップ910：スイッチS1は、ARP応答を運ぶpacket−outメッセージを解析し、ARP応答をユニキャスト方式でホストAに送信する。
【０１４４】
後続の通信プロセスにおいて、ホストAは、ARP応答に含まれる宛先MACアドレスに従って通信を行うことができる。
【０１４５】
シナリオ2：宛先IPアドレスに対応するARPエントリがコントローラにローカルに存在する。
【０１４６】
図10を参照すると、シナリオ2におけるARP実装プロセスは以下の通りである。
【０１４７】
ステップ1000：スイッチがネットワークにアクセスすると、コントローラはスイッチのフローテーブルルールを予め構成する。
【０１４８】
構成されたフローテーブルルールには、非スイッチ相互接続ポートから（例えば、スイッチに接続されたホストから）ARP要求を受信した場合、スイッチが非スイッチ相互接続ポートからのARP要求をコントローラに報告することが少なくとも含まれ、隣接するスイッチによって送信されたARP要求を受信した場合、スイッチは、隣接するスイッチによって送信されたARP要求をフラッディングする。
【０１４９】
ステップ1001：ホストAは、接続されたスイッチS1にARP要求を送信する。
【０１５０】
ARP要求は、ホストAが通信しようとするホスト（すなわち、宛先ホスト）のIPアドレスを含み、IPアドレスは、宛先IPアドレスである。
【０１５１】
ステップ1002：スイッチS1は、ARP要求をpacket−inメッセージにカプセル化し、packet−inメッセージをコントローラに報告する。
【０１５２】
ARP要求を受信すると、スイッチS1は、予め構成されたフローテーブルルールに従ってコントローラにARP要求を報告する。
【０１５３】
ステップ1003：コントローラは、ローカルARPキャッシュテーブルをチェックする。宛先IPアドレスに対応するARPエントリが存在すると判定した場合、コントローラは、宛先ホスト（ホストEとする）に接続された宛先スイッチ（すなわち、スイッチS3）を判定し、ARP要求をpacket−outメッセージにカプセル化し、packet−outメッセージをユニキャスト方式でスイッチS3に送信する。
【０１５４】
ステップ1004：スイッチS3は、ホストEに対応するポートにARP要求をユニキャスト方式で送信する。
【０１５５】
ARP要求を受信した後、ホストEは、ARP要求内の宛先IPアドレスをローカル最新IPアドレスと突き合わせる。以下のプロセスは、突き合わせた結果に応じて2つの異なる状況を有する。ARP要求内の宛先IPアドレスがローカル最新IPアドレスと一致する場合、ステップ1005’から1008’が実行される、またはARP要求内の宛先IPアドレスがローカル最新IPアドレスと一致しない場合、ステップ1005からステップ1012が実行される。
【０１５６】
ステップ1005’：ホストEは、スイッチS3にARP応答を返す。
【０１５７】
ステップ1006’：スイッチS3は、ARP応答をpacket−inメッセージにカプセル化し、packet−inメッセージをコントローラに送信する。
【０１５８】
ステップ1007’：コントローラは、ARP応答を運ぶpacket−inメッセージを、ARP応答を運ぶpacket−outメッセージに変換し、ARP応答を運ぶpacket−outメッセージをユニキャスト方式でスイッチS1に送信する。
【０１５９】
ステップ1008’：スイッチS1は、ARP応答を運ぶpacket−outメッセージを解析し、ARP応答をユニキャスト方式でホストAに送信する。
【０１６０】
後続のプロセスにおいて、ホストAは、ARP応答に含まれる宛先MACアドレスに従って通信を行うことができる。
【０１６１】
ステップ1005：コントローラが指定された時間後にARP応答を受信しない場合、コントローラは、宛先IPに対応し、ローカルに格納されているARPエントリを削除し、ステップ1006が実行される。
【０１６２】
ステップ1006：コントローラは、packet−outメッセージをユニキャスト方式でスイッチS1に送信し、packet−outメッセージは、ARP要求をフラッディングするようにスイッチS1に命令するために使用される。
【０１６３】
ステップ1007からステップ1013は、シナリオ1のステップ904からステップ910と同様であり、同じ細部は繰り返し説明しない。
【０１６４】
実施形態5
同じ発明概念に基づいて、図11を参照すると、本発明の実施形態5は、SDNベースのARP実装装置であって、
第1のスイッチが送信した第1のARP要求を受信するように構成された受信ユニット1101であって、第1のARP要求は、第1のスイッチに接続されたホストによって第1のスイッチに送信される、受信ユニット1101と、
受信ユニット1101が受信した第1のARP要求に対応するARPエントリがローカルに存在するか否か判定するように構成されたマッピングユニット1102と、
第1のARP要求に対応するARPエントリがローカルに存在するとマッピングユニット1102が判定した場合、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される第1の命令を第1のスイッチに送信するように構成された送信ユニット1103と、
を備える、SDNベースのARP実装装置を提供する。
【０１６５】
実施形態5に関連して、第1の可能な実装では、第1の命令は、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するように第1のスイッチに命令するために使用される。
【０１６６】
実施形態5または実施形態5の第1の可能な実装に関連して、第2の可能な実装では、本装置は、
第1のスイッチが送信した第1のARP要求を受信ユニット1101が受信する前に、第1のスイッチのための予め設定されたフローテーブルルールを構成するように構成された構成ユニットであって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングすることを含む、構成ユニット
をさらに備える。
【０１６７】
実施形態5または実施形態5の第1から第2の可能な実装のいずれか1つに関連して、第3の可能な実装では、受信ユニット1101は、送信ユニット1103が第1の命令を第1のスイッチに送信した後、第1のARP応答を受信するようにさらに構成され、
送信ユニット1103は、受信ユニット1101が受信した第1のARP応答を第1のスイッチに転送するようにさらに構成され、
マッピングユニット1102は、受信ユニット1101が受信した第1のARP応答内のARPエントリをローカルに格納するようにさらに構成される。
【０１６８】
実施形態5または実施形態5の第1から第3の可能な実装のいずれか1つに関連して、第4の可能な実装では、マッピングユニット1102は、第1のARP要求に対応するARPエントリがローカルに存在すると判定した場合、ARPエントリに基づいて宛先スイッチを判定するようにさらに構成され、
送信ユニット1103は、マッピングユニット1102が判定した宛先スイッチに第1のARP要求を送信するようにさらに構成される。
【０１６９】
実施形態5の第4の可能な実装に関連して、第5の可能な実装では、送信ユニット1103が、第1のARP要求を宛先スイッチに送信した後、宛先スイッチが返した第2のARP応答を受信ユニット1101が受信した場合、送信ユニット1103は、第2のARP応答を第1のスイッチに転送する、または
宛先スイッチが返したARP応答を指定された時間内に受信ユニット1101が受信しない場合、マッピングユニット1102は、第1のARP要求に対応し、かつローカルに格納されたARPエントリを削除し、送信ユニット1103は、第1のARP要求をフラッディングするように第1のスイッチに命令するために使用される第2の命令を第1のスイッチに送信し、
第2の命令は、第1のスイッチに隣接するスイッチと第1のスイッチに接続されたホストとの両方に第1のARP要求を送信するように第1のスイッチに命令するために使用される。
【０１７０】
実施形態5の第5の可能な実装に関連して、第6の可能な実装では、送信ユニット1103が、第2の命令を第1のスイッチに送信した後、第2のスイッチが送信した第3のARP応答を受信ユニット1101が受信した場合、マッピングユニット1102は、第3のARP応答に含まれるARPエントリをローカルに格納するようにさらに構成され、
送信ユニット1103は、第3のARP応答を第1のスイッチに転送するようにさらに構成される。
【０１７１】
実施形態6
同じ発明概念に基づいて、図12を参照すると、本発明の実施形態6は、別のSDNベースのARP実装装置であって、
本装置に接続されたホストが送信した第1のARP要求を受信するように構成された第1の受信ユニット1201と、
第1の受信ユニット1201が受信した第1のARP要求をコントローラに報告するようにさらに構成された送信ユニット1202と、
第1のARP要求をフラッディングするように本装置に命令するために使用され、かつ第1のARP要求に従ってコントローラが配信した、命令を受信するように構成された第2の受信ユニット1203と、
第2の受信ユニット1203が受信した命令に従って第1のARP要求をフラッディングするように構成されたフラッディングユニット1204と、
を備える、SDNベースのARP実装装置を提供する。
【０１７２】
実施形態6に関連して、第1の可能な実装では、フラッディングユニット1204は、
本装置に隣接するスイッチと本装置に接続されたホストとの両方に第1のARP要求を送信するように特に構成される。
【０１７３】
実施形態6または実施形態6の第1の可能な実装に関連して、第2の可能な実装では、本装置は、
本装置に接続されたホストが送信した第1のARP要求を第1の受信ユニット1201が受信する前に、コントローラが配信したフローテーブルルール構成コマンドに従って、フローテーブルルールに対して構成を行うように構成された構成ユニット1200であって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングすることを含む、構成ユニット1200
をさらに備える。
【０１７４】
実施形態7
同じ発明概念に基づいて、図13を参照すると、本発明の実施形態7は、別のSDNベースのARP実装装置であって、
本装置に隣接する第2のスイッチが送信した第1のARP要求を受信するように構成された受信ユニット1301と、
受信ユニット1301が受信した第1のARP要求を直接フラッディングするように構成されたフラッディングユニット1302と、
を備える、SDNベースのARP実装装置を提供する。
【０１７５】
実施形態7に関連して、第1の可能な実装では、フラッディングユニットは、
本装置とは異なり、かつ本装置に隣接するスイッチと、本装置に接続されたホストと、に第1のARP要求を送信するように特に構成される。
【０１７６】
実施形態7または実施形態7の第1の可能な実装に関連して、第2の可能な実装では、本装置は、
第1のスイッチに隣接する第2のスイッチが送信した第1のARP要求を受信ユニット1301が受信する前に、コントローラが配信したフローテーブルルール構成コマンドに従って、フローテーブルルールに対して構成を行うように構成された構成ユニット1300であって、
フローテーブルルールは、隣接するスイッチが送信したARP要求を受信した場合、スイッチが隣接するスイッチによって送信されたARP要求をフラッディングし、接続されたホストが送信したARP要求を受信した場合、スイッチが接続されたホストによって送信されたARP要求をコントローラに報告することを含む、構成ユニット
をさらに備える。
【０１７７】
実施形態8
同じ発明概念に基づいて、図14を参照すると、本発明の実施形態8は、送受信機1401と、プロセッサ1402と、メモリ1403と、バス1404と、を含む、コントローラ1400を提供する。送受信機1401、プロセッサ1402、メモリ1403は、バス1404に接続されている。メモリ1403は一式のプログラムを格納し、プロセッサ1402はメモリ1403に格納されたプログラムを呼び出すように構成され、その結果、コントローラ1400が本発明の実施形態1の方法を実行する。
【０１７８】
実施形態9
同じ発明概念に基づいて、図15を参照すると、本発明の実施形態9は、送受信機1501と、プロセッサ1502と、メモリ1503と、バス1504と、を含む、スイッチ1500を提供する。送受信機1501、プロセッサ1502、メモリ1503は、バス1504に接続されている。メモリ1503は一式のプログラムを格納し、プロセッサ1502はメモリ1503に格納されたプログラムを呼び出すように構成され、その結果、スイッチ1500が本発明の実施形態2による方法を実行する。
【０１７９】
実施形態10
同じ発明概念に基づいて、図16を参照すると、本発明の実施形態10は、送受信機1601と、プロセッサ1602と、メモリ1603と、バス1604と、を含む、スイッチ1600を提供する。送受信機1601、プロセッサ1602、メモリ1603は、バス1604に接続されている。メモリ1603は一式のプログラムを格納し、プロセッサ1602はメモリ1603に格納されたプログラムを呼び出すように構成され、その結果、スイッチ1600が本発明の実施形態3による方法を実行する。
【０１８０】
要約すると、本発明の実施形態では、コントローラは、第1のスイッチによって送信されたARP要求を受信し、ARP要求に対応するARPエントリがローカルに存在しないと判定した場合、ARP要求をフラッディングするように第1のスイッチに命令するために使用される命令を第1のスイッチに送信する。このようにして、スイッチ間のメッセージ転送によりネットワーク全体にARP要求をブロードキャストできる。コントローラがpacket−outメッセージをスイッチに送信することと比較して、メッセージがスイッチ間で転送されるときに占有されるネットワーク伝送リソースがより少なくなる。従って、ARP要求をブロードキャストするために占有されるネットワーク伝送リソースを大幅に削減することができ、ARP要求をブロードキャストする効率を向上させることができる。加えて、packet−outメッセージを送信する回数が減ることから、コントローラの処理負荷が軽減され、コントローラが比較的高負荷のために処理のボトルネックになるという問題を回避することができる。
【０１８１】
当業者であれば、本発明の実施形態が、方法、システム、またはコンピュータプログラム製品として提供され得ることを理解するはずである。従って、本発明は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェアとハードウェアとの組み合わせによる実施形態の形態を使用できる。さらに、本発明は、コンピュータ使用可能プログラムコードを含む1つ以上のコンピュータ使用可能記憶媒体（限定されるものではないが、ディスクメモリ、CD−ROM、光学メモリなどを含む）上に実装されるコンピュータプログラム製品の形態を使用できる。
【０１８２】
本発明の実施形態による方法、装置（システム）、およびコンピュータプログラム製品の流れ図および／またはブロック図を参照して、本発明を説明した。コンピュータプログラム命令が、流れ図および／またはブロック図における各プロセスおよび／または各ブロック、ならびに流れ図および／またはブロック図におけるプロセスおよび／またはブロックの組み合わせを実装するために使用され得ることを理解すべきである。これらのコンピュータプログラム命令は、機械を生み出すために、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または任意の他のプログラマブルデータ処理装置のプロセッサのために提供され、その結果、コンピュータまたは任意の他のプログラマブルデータ処理装置のプロセッサによって実行される命令が、流れ図における1つ以上のプロセスおよび／またはブロック図における1つ以上のブロックにおける特定の機能を実装するための装置を生み出すのであってもよい。
【０１８３】
これらのコンピュータプログラム命令は、コンピュータまたは任意の他のプログラマブルデータ処理装置に対して特定の方式で働くように命令できるコンピュータ可読メモリに格納され、その結果、コンピュータ可読メモリに格納された命令が、命令装置を含む人工物を生み出すのであってもよい。命令装置は、流れ図における1つ以上のプロセスにおける、および／またはブロック図における1つ以上のブロックにおける、特定の機能を実装する。
【０１８４】
これらのコンピュータプログラム命令は、コンピュータまたは別のプログラマブルデータ処理装置上に読み込まれ、その結果、一連の動作およびステップがコンピュータまたは別のプログラマブルデータ処理装置上で行われ、それによって、コンピュータに実装された処理を生み出すのであってもよい。従って、コンピュータまたは別のプログラマブルデータ処理装置上で実行される命令は、流れ図における1つ以上のプロセスにおける、および／またはブロック図における1つ以上のブロックにおける、特定の機能を実装するためのステップを提供する。
【０１８５】
本発明の一部の好ましい実施形態を説明してきたが、本発明の基本的な構想を一度習得すれば、当業者であれば、これらの実施形態に変更および修正をなし得る。従って、以下の特許請求の範囲は、本発明の範囲に含まれる好ましい実施形態およびすべての変更および修正を包含するように解釈されるものとして意図されている。
【０１８６】
当然のことながら、当業者であれば、本発明の実施形態の範囲から逸脱することなしに、本発明の実施形態に対して様々な修正および変形をなし得る。本発明は、以下の特許請求の範囲およびそれらの均等技術によって定義される保護範囲内に含まれる場合に限り、これらの修正および変形を包含するように意図されている。
【符号の説明】
【０１８７】
601  コントローラ
602  スイッチ
603  ホスト
1101  受信ユニット
1102  マッピングユニット
1103  送信ユニット
1200  構成ユニット
1201  第1の受信ユニット
1202  送信ユニット
1203  第2の受信ユニット
1204  フラッディングユニット
1300  構成ユニット
1301  受信ユニット
1302  フラッディングユニット
1400  コントローラ
1401  送受信機
1402  プロセッサ
1403  メモリ
1404  バス
1500  スイッチ
1501  送受信機
1502  プロセッサ
1503  メモリ
1504  バス
1600  スイッチ
1601  送受信機
1602  プロセッサ
1603  メモリ
1604  バス
【図１】
0006627964.tif 000002
【図２】
0006627964.tif 000003
【図３】
0006627964.tif 000004
【図４】
0006627964.tif 000005
【図５】
0006627964.tif 000006
【図６】
0006627964.tif 000007
【図７】
0006627964.tif 000008
【図８ａ】
0006627964.tif 000009
【図８ｂ】
0006627964.tif 000010
【図９】
0006627964.tif 000011
【図１０】
0006627964.tif 000012
【図１１】
0006627964.tif 000013
【図１２】
0006627964.tif 000014
【図１３】
0006627964.tif 000015
【図１４】
0006627964.tif 000016
【図１５】
0006627964.tif 000017
【図１６】
0006627964.tif 000018