本願は、2016年1月18日に中国特許庁に出願された、「METHOD AND GATEWAY FOR OBTAINING ROUTE ACCORDING TO REQUIREMENT」という名称の中国特許出願第201610031655.4号の優先権を主張するものであり、参照によりその全体が本明細書に組み込まれる。
本発明は、通信分野に関し、特に、要求に基づいてルートを取得する方法及びゲートウェイに関する。
分散型ゲートウェイのネットワークアーキテクチャでは、ローカルエリアネットワーク(英語:local area network、略してLAN)は複数のゲートウェイを含む。ホストがそのゲートウェイを変更するとき、ホストのメディアアクセス制御(英語:Media Access Control、略してMAC)アドレスとインターネットプロトコル(英語:Internet Protocol、略してIP)アドレスは変更されない。分散型ゲートウェイアーキテクチャにおけるパケット転送方式は、パケットを送信するホストとパケットを受信するホストが同一のブロードキャストドメイン(英語:broadcast domain、略してBD)に位置するか否かに関わらず、送信側ホストはパケットを送信側ホストのゲートウェイに送信し、ゲートウェイはパケットの宛先IPアドレスに基づいて受信側ホストにパケットを送信する。受信側ホストは、ローカルエリアネットワーク内の別のゲートウェイを使用してネットワークにアクセスしてもよい。従って、送信側ホストのゲートウェイの転送テーブルは、ローカルエリアネットワーク内の別のゲートウェイを使用してネットワークにアクセスするすべてのホストのホストルートを含む必要がある。ローカルエリアネットワークが大量のホストを含むとき、大量のホストルートが転送テーブルの多くのストレージリソースを占有する。
本願は、要求に基づいてルートを取得する方法および装置を提供し、分散型ゲートウェイのネットワークアーキテクチャにおいて、実際のパケット転送要求に基づいてルートを取得し、それによって、転送テーブルのストレージリソースを節約することができる。
第1の態様によれば、要求に基づいてルートを取得する方法であって、
第1のゲートウェイによって、第1のパケットを受信するステップであって、第1のパケットは第1のインターネットプロトコルIPアドレスを含む、ステップと、
第1のゲートウェイによって、第1のIPアドレスの次のホップを求めて転送テーブルを検索するステップであって、該検索は失敗する、ステップと、
第1のゲートウェイによって、第2のパケットを少なくとも1つのゲートウェイに送信するステップであって、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される、ステップと、
第1のゲートウェイによって、第3のパケットを第2のゲートウェイから受信するステップであって、第2のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される、ステップと、
第1のゲートウェイによって、第2のゲートウェイのアドレスを、第1のIPアドレスの次のホップアドレスとして転送テーブルに書き込むステップと
を含む、方法が提供される。
第1のゲートウェイは、第1のパケット内のIPアドレスの次のホップを予め記憶している必要はないが、アクセスされたホストに基づく要求に基づいてルートを取得してもよい。従って、ネットワークが大量のホストを含む場合、第1のゲートウェイは、第1のゲートウェイと通信する必要のないホストのIPアドレスの次のホップを記憶している必要がなくなり、それによって、転送テーブルのストレージリソースを節約することができる。
任意選択で、第2のパケットは、第1のパケットの第1の仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送する。第1のゲートウェイによって、第2のパケットを少なくとも1つのゲートウェイに送信するステップの前に、方法は、第1のゲートウェイによって、第1のパケットの第1のVNIを判定するステップをさらに含む。
例えば、第1のゲートウェイによって、第1のVNIを判定するステップは、第1のゲートウェイによって、第1のパケットを受信するポートを判定するステップと、第1のゲートウェイによって、ポートから第1のVNIへのマッピングに基づいて、第1のVNIを判定するステップとを特に含む。第1のゲートウェイが第1のパケット内のIPアドレスの次ホップを求めて転送テーブルを検索する前に、方法は、第1のゲートウェイによって、第1のVNIから転送テーブルへのマッピングに基づいて転送テーブルを判定するステップをさらに含む。
任意選択で、方法は、第1のゲートウェイによって、第4のパケットを第3のゲートウェイから受信するステップであって、第4のパケットは、第2のIPアドレスを搬送する、ステップと、第1のゲートウェイによって、第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するステップと、第1のゲートウェイによって、第5のパケットを第3のゲートウェイに送信するステップであって、第5のパケットは、第2のIPアドレスによって識別されるホストに、第1のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される、ステップとをさらに含む。任意選択で、第4のパケットは第2のVNIをさらに搬送し、かつ第1のゲートウェイによって、第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するステップは、第1のゲートウェイによって第2のVNIによって識別されるVXLANセグメント内の第2のIPアドレスによって識別されるホストのMACアドレスを取得するよう試みるステップを含む。
任意選択で、第1のゲートウェイによって、第2のパケットを少なくとも1つのゲートウェイに送信するステップの前に、方法は、複数のVNIから複数のゲートウェイへのマッピングテーブルに基づいて、第1のゲートウェイによって、VNIに対応する少なくとも1つのゲートウェイを判定するステップをさらに含む。
任意選択で、第1のパケットは、データパケットであり、第1のIPアドレスは、第1のパケットの宛先IPアドレスであり、方法は、第1のゲートウェイによって、第1のパケットにVXLANカプセル化を実行して、第6のパケットを取得するステップと、第1のゲートウェイによって、第6のパケットを送信するステップとをさらに含み、第6のパケットのVXLANヘッダにおけるVNIフィールドの値はVNIであり、かつ第6のパケットの外部IPヘッダの宛先IPアドレスは第2のゲートウェイのIPアドレスである。
第2の態様によれば、ネットワークデバイスであって、
プロセッサと、メモリと、ネットワークインターフェースとを含み、メモリは、転送テーブルを記憶するように構成され、かつプロセッサは、
ネットワークインターフェースを使用して第1のパケットを受信し、第1のパケットは第1のインターネットプロトコルIPアドレスを含み、
第1のIPアドレスの次のホップを求めてメモリに記憶された転送テーブルを検索し、該検索は失敗し、
ネットワークインターフェースを使用して、第2のパケットを少なくとも1つのゲートウェイに送信し、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用され、
ネットワークインターフェースを使用して、第3のパケットを第1のゲートウェイから受信し、第1のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第1のゲートウェイを使用してネットワークにアクセスするよう指示するために使用され、かつ
第1のゲートウェイのアドレスを、第1のIPアドレスの次のホップアドレスとしてメモリに記憶された転送テーブルに書き込む
ように構成された、ネットワークデバイスが提供される。
この態様の技術的効果は、第1の態様のそれと同一である。
任意選択で、第2のパケットは、第1のパケットの第1の仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送し、かつプロセッサは、第2のパケットを少なくとも1つのゲートウェイに送信する前に、第1のパケットの第1のVNIを判定するようにさらに構成される。
任意選択で、プロセッサは、ネットワークインターフェースを使用して、第4のパケットを第2のゲートウェイから受信し、第4のパケットは第2のIPアドレスを搬送し、第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定し、かつネットワークインターフェースを使用して、第5のパケットを第2のゲートウェイに送信し、第5のパケットは、第2のIPアドレスによって識別されるホストに、第1のネットワークを使用してネットワークにアクセスするよう指示するために使用される、ようにさらに構成される。
任意選択で、第4のパケットは第2のVNIをさらに搬送し、かつ第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定することは、
第2のVNIによって識別されるVXLANセグメント内の第2のIPアドレスによって識別されるホストのMACアドレスを取得するよう試みることを特に含む。
第3の態様によれば、要求に基づいてルートを取得する第1のゲートウェイであって、第1の受信ユニットと、記憶ユニットと、検索ユニットと、送信ユニットと、第2の受信ユニットと、処理ユニットとを含み、
第1の受信ユニットは、第1のパケットを受信するように構成され、第1のパケットは第1のインターネットプロトコルIPアドレスを含み、
記憶ユニットは、転送テーブルを記憶するように構成され、
検索ユニットは、第1のIPアドレスの次のホップを求めて記憶ユニットに記憶された転送テーブルを検索するように構成され、
送信ユニットは、検索ユニットが第1のIPアドレスの次のホップを求めて記憶ユニットに記憶された転送テーブルを検索し、該検索が失敗した後、第2のパケットを少なくとも1つのゲートウェイに送信するように構成され、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用され、
第2の受信ユニットは、第3のパケットを第2のゲートウェイから受信するように構成され、第2のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用され、かつ
処理ユニットは、第2の受信ユニットによって受信された第3のパケットを取得し、かつ第3のパケットに基づいて第1のIPアドレスの次のホップアドレスとして、第2のゲートウェイのアドレスを、記憶ユニットに記憶された転送テーブルに書き込むように構成された、第1のゲートウェイが提供される。
この態様の技術的効果は、第1の態様のそれと同一である。
任意選択で、第2のパケットは、第1のパケットの第1の仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送し、かつ検索ユニットは、送信ユニットが第2のパケットを少なくとも1つのゲートウェイに送信する前に、第1のパケットの第1のVNIを判定するようにさらに構成される。
任意選択で、第2の受信ユニットは、第4のパケットを第3のゲートウェイから受信するようにさらに構成され、第4のパケットは第2のIPアドレスを搬送し、検索ユニットは、第2の受信ユニットによって受信された第4のパケットを取得し、かつ第4のパケットにおいて搬送された第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するようにさらに構成され、かつ送信ユニットは、第5のパケットを第3のゲートウェイに送信するようにさらに構成され、第5のパケットは、第2のIPアドレスによって識別されるホストに、第1のネットワークを使用してネットワークにアクセスするよう指示するために使用される。
任意選択で、第4のパケットは第2のVNIをさらに搬送し、かつ検索ユニットが第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するように構成されることは、第2のVNIによって識別されるVXLANセグメント内の第2のIPアドレスによって識別されるホストのMACアドレスを取得するよう試みるよう特に構成される。
第4の態様によれば、コンピュータ記憶媒体が提供される。コンピュータ記憶媒体は、前述の第1のゲートウェイによって使用されるコンピュータソフトウェア命令を記憶するように構成され、かつ命令は、前述の態様を実行するように設計されたプログラムを含む。
任意選択で、第1の態様、第2の態様、第3の態様、または第4の態様のいずれかに基づいて、第1のパケットは、アドレス解決プロトコルARPパケットであり、かつ第1のIPアドレスは、第1のパケットのターゲットIPアドレスであり、または、第1のパケットは、近隣探索プロトコルNDPパケットであり、かつIPアドレスは、第1のパケットのターゲットアドレスである。
第1のゲートウェイがARPパケットまたはNDPパケットを受信するとき、第1のパケットを送信するホストは、第1のIPアドレスによって識別されるホストと通信しようとしている可能性があることを意味する。第1のゲートウェイは、第1のパケットを受信すると別のゲートウェイに、第1のIPアドレスを取得するために使用される次のホップを送信する。このようにして、通信要求を有しないホストのIPアドレスが記憶されていないときには、通信要求を有するホストのIPアドレスの次ホップを早く取得することができ、それによって、以降のパケット転送の効率が向上する。
本願の実施形態における技術的解決策をより明確に説明するために、以下に、実施形態を説明するために必要な添付図面を簡単に説明する。明らかに、以下の説明における添付図面は、本願のいくつかの実施形態を示しており、当業者は創造的な努力なしにこれらの添付図面からさらに他の図面を導き出すことができる。
本願の実施形態によるアプリケーションシナリオの概略図である。
本願の実施形態による要求に基づいてルートを取得する方法のフローチャートである。
本願の実施形態による要求に基づいてルートを取得する方法のフローチャートである。
本願の実施形態による第1のゲートウェイの概略構成図である。
本願の実施形態による別の第1のゲートウェイの概略構成図である。
本願の実施形態において説明されるアプリケーションシナリオは、本願の実施形態の技術的解決策をより明確に説明することであるが、本願の実施形態の技術的解決方法を限定するものではない。当業者であれば、ネットワークアーキテクチャが進化し、新たなビジネスシナリオが現れるとき、本願の実施形態で提供される技術的解決策は、同様の技術的問題にも適用可能であることを理解するであろう。
図1は、本願の実施形態によるアプリケーションシナリオの概略図である。データセンターネットワーク(英語:data center network、略してDCN)は、第1のゲートウェイ101と、第2のゲートウェイ102と、第3のゲートウェイ103とを含む。
ホスト106は、第1のゲートウェイ101、第2のゲートウェイ102、または第3のゲートウェイ103のいずれか1つを使用してDCNにアクセスしてもよい。同様に、ホスト107は、第1のゲートウェイ101、第2のゲートウェイ102、または第3のゲートウェイ103のいずれか1つを使用してDCNにアクセスしてもよい。例えば、ホストは、パーソナルコンピュータ(英語:personal computer)、携帯電話(英語:cellphone)、スマートフォン(英語:smartphone)、タブレットコンピュータ(英語:tablet computer)、ウェアラブルデバイス(英語:wearable device)、パーソナルデジタルアシスタント(英語:personal digital assistant、略してPDA)、モバイルインターネット装置(英語:mobile Internet device、略してMID)、電子ブックリーダー(英語:e-book reader)などであってもよいし、または仮想マシン(英語:virtual machine、略してVM)であってもよい。ホストが仮想マシンのとき、仮想マシンはサーバ上で実行できる。
ホスト、例えばホスト106が異なるゲートウェイを使用してDCNにアクセスするとき、ホスト106のMACアドレスもIPアドレスも変更されない。例えば、ホスト106は仮想マシンである。仮想マシンが第1のゲートウェイ101に接続されたサーバから第2のゲートウェイ102に接続されたサーバに移行するとき、仮想マシンのMACアドレスもIPアドレスも変更されない。従って、同一のブロードキャストドメイン(英語:ブロードキャストドメイン、略してBD)に位置するホストは、異なるゲートウェイを使用してネットワークにアクセスしてもよい。
ブロードキャストパケットの量を減らすために、前述の分散型ゲートウェイのネットワークアーキテクチャにおけるパケット転送方式は、ホスト106がホスト107にパケットを送信するプロセスにおいて、ホスト106およびホスト107が同一のブロードキャストドメイン内にあるか否かに関わらず、ホスト106は、ホスト107に送信されたパケットのMACアドレスとして、ホスト106のゲートウェイのMACアドレスを使用する。例えば、第1のゲートウェイ101を使用してDCNにアクセスするとき、ホスト106は、パケットを第1のゲートウェイ101に送信する。パケットを受信した後、第1のゲートウェイ101は、パケットのイーサネット(登録商標)フレームヘッダ(英語:Ethernet frame header)をはがしてパケット内の宛先IPアドレスを取得し、かつパケット内の宛先IPアドレスに基づいてパケットを転送する。
前述のパケット転送方式を使用するとき、ホスト106がホスト107にパケットを送信できるようにするためには、ホスト106に接続されている第1のゲートウェイ101は、ホスト107のホストルート(英語:host route)を転送テーブルに予め記憶している必要がある。ホストルートは、ホスト107のIPアドレスと、ホスト107のIPアドレスの次のホップ(英語:next hop)とを含む。すなわち、第1のゲートウェイ101は、ネットワークにアクセスするために、ホスト107によって現在使用されているゲートウェイを予め記憶している必要がある。例えば、図1では、第1のゲートウェイ101は、第2のゲートウェイ102を使用して、または第3のゲートウェイ103を使用して、ホスト107が現在、ネットワークにアクセスしているか否かを知る必要がある。
従って、ホスト107が第2のゲートウェイ102を使用してネットワークにアクセスするとき、第2のゲートウェイ102は、ホスト107のホストルートをDCN内の別のゲートウェイに通知(英語:advertise)する必要がある。例えば、ホストルートが、第1のゲートウェイ101および第3のゲートウェイ103に通知され、かつ第1のゲートウェイ101および第3のゲートウェイ103は、第2のゲートウェイ102としてホスト107のIPアドレスの次のホップを記憶する。
第1のゲートウェイ101、第2のゲートウェイ102、および第3のゲートウェイ103が、仮想拡張可能ローカルエリアネットワーク(英語: Virtual eXtensible Local Area Network、略してVXLAN)トンネルを使用してデータパケットを転送し、かつボーダーゲートウェイプロトコル(英語:Border Gateway Protocol、略してBGP)を使用してホストルートを通知する実施例を使用して、パケットの転送およびホストルートの通知のプロセスを以下に説明する。
第1のゲートウェイ101、第2のゲートウェイ102、および第3のゲートウェイ103は、ボーダーゲートウェイプロトコル(英語:Border Gateway Protocol、略してBGP)を使用して予め相互の接続を確立する。すなわち、第1のゲートウェイ101、第2のゲートウェイ102、および第3のゲートウェイ103のいずれか2つは、互いのBGPピア(英語:BGP peer)である。
ホスト107が第2のゲートウェイ102との接続を確立するとき、第2のゲートウェイ102は、BGPパケットを使用してDCN内の第1のゲートウェイ101および第3のゲートウェイ103などの他のゲートウェイにホスト107のホストルートを通知する。第1のゲートウェイ101は、ホスト107のホストルートをルーティングテーブルに保存し、かつ第2のゲートウェイ102をホスト107の次のホップとして使用する。
第1のゲートウェイ101、第2のゲートウェイ102、および第3のゲートウェイ103はすべてVXLANトンネルエンドポイント(英語:VXLAN Tunnel End Point、略してVTEP)である。
ホスト106およびホスト107が異なるブロードキャストドメインに属し、かつホスト106がホスト107にデータパケットを送信しようとする場合、ホスト106は、ホスト107のIPアドレスをデータパケットの宛先IPアドレスとして使用し、第1のゲートウェイのMACアドレスをデータパケットの宛先MACアドレスとして使用し、かつ第1のゲートウェイ101にデータパケットを送信する。
ホスト106およびホスト107が同一のブロードキャストドメインに属する場合、ホスト106は、データパケットの宛先MACアドレスとしてホスト107のMACアドレスを使用することを意図する。従って、データパケットを送信する前に、ホスト106は、まずブロードキャストドメインにおけるホスト107のMACアドレスを要求するために使用される第2のパケットをブロードキャストする。例えば、第2のパケットは、インターネットプロトコルバージョン4(英語:Internet Protocol version 4、略してIPv4)におけるアドレス解決プロトコル(英語:address resolution protocol、略してARP)要求パケットであってもよい。例えば、インターネットプロトコルバージョン6(英語:Internet Protocol version 6、略してIPv6)では、第2のパケットは、インターネット制御メッセージプロトコル(英語:Internet Control Message Protocol、略してICMP)における近隣探索プロトコル(英語:Neighbor Discovery Protocol:略してNDP)であってもよい。第1のゲートウェイ101は、第2のパケットを受信した後、第2のパケットの応答パケットをプロキシ(英語:proxy)メカニズムを使用してホスト106に送信し、ホスト107のIPアドレスに対応するMACアドレスは第1のゲートウェイ101のMACアドレスであることをホスト106に知らせる。ホスト106は、第1ゲートウェイ101のMACアドレスを第1パケットのMACアドレスとして使用し、かつ第1のパケットを第1ゲートウェイ101に送信する。
従って、ホスト106およびホスト107が同一のブロードキャストドメインに属するか否かに関わらず、データパケットをホスト107に送信するとき、ホスト106は、第1ゲートウェイ101のMACアドレスをデータパケットのMACアドレスとして使用する。データパケットを受信した後、第1のゲートウェイ101は、データパケットを受信するポートに基づいて、データパケットのVXLANネットワーク識別子(英語:VXLAN Network Identifier、略してVNI)を判定する。VNIは、VXLANセグメント識別子(英語:VXLAN Segment ID)とも呼ばれる。第1ゲートウェイ101には、複数のVNIのそれぞれと転送テーブルとの対応が記憶されている。第1ゲートウェイ101は、第1パケットのVNIに基づいて転送テーブルを判定する。BGPプロトコルを使用して第2のゲートウェイ102によって通知されるホスト107のホストルートは、転送テーブルに予め記憶されている。ホストルートはホスト107のアドレスを含み、かつホスト107のアドレスに対応する次のホップは第2ゲートウェイ102である。第1ゲートウェイ101は、VXLANトンネルを使用して第2ゲートウェイ102にデータパケットを送信する。すなわち、第1のゲートウェイ101は、データパケットにVXLANカプセル化を実行する。特に、第1のゲートウェイ101は、VXLANヘッダ(英語:VXLAN header)、外部ユーザデータグラムプロトコル(英語:User Datagram Protocol、略してUDP)ヘッダ(英語:outer UDP header)および外部IPヘッダ(英語:outer IP header)を、データパケットの外側層に順番にカプセル化する。VXLANヘッダ内のVNIは、データパケットのVNIであり、かつ外部IPヘッダ内の宛先IPアドレスは、第2のゲートウェイ102のIPアドレスである。他のフィールドのカプセル化については、コメント要求(英語:Request for Comments、略してRFC)7348プロトコルを参照されたい。
VXLANカプセル化が実行されたデータパケットを受信した後、第2のゲートウェイ102は、パケットのVXLANヘッダ内のVNIに基づいて転送テーブルを判定する。VXLANセグメント内のホストのIPアドレスとMACアドレスと間の対応は転送テーブルに記憶されている。第2のゲートウェイ102は、転送テーブル内のホスト107のMACアドレスを発見し、かつデータパケットをホスト107に送信する。
この解決策では、第1のゲートウェイ101は、転送テーブル内に、別のゲートウェイを使用してネットワークにアクセスするすべてのホストルートを予め記憶している必要がある。DCNが大量のホストを含む場合、膨大な量のホストルートが存在する。いくつかのホストは相互に通信する必要がないことがあるため、いくつかのホストルートは、第1のゲートウェイ101によって所望されないことがある。第1のゲートウェイ101によって所望されないホストルートを記憶していることは、転送テーブルのストレージリソースを占有する。
本願の実施形態は、要求に基づいてルートを取得する方法を提供する。方法は、実際のパケット転送要求に基づいて分散型ゲートウェイのネットワークアーキテクチャにおいてルートを取得するために使用され、それによって、転送テーブルのストレージリソースを節約することができる。
図2は、本願の実施形態による要求に基づいてルートを取得する方法を示す。例えば、方法は、図1に示される分散型ゲートウェイに適用されてもよい。図2に示される方法における第1のゲートウェイは、図1に示される第1のゲートウェイ101であってもよい。図2に示される方法における第2のゲートウェイは、図1に示される第2のゲートウェイ102であってもよい。方法は以下のステップを含む。
S201: 第1のゲートウェイは、第1のパケットを受信し、第1のパケットは、第1のIPアドレスを含む。
第1のIPアドレスによって識別されるホストは、第1のパケットの送信者ではない。例えば、第1のパケットは第1のホストからのものであるが、第1のIPアドレスによって識別されるホストは第2のホストである。
例えば、第1のパケットは、図1に示される第1のゲートウェイ101にホスト106によって送信されたパケットである。
可能な実施例では、第1のパケットはデータパケットである。第1のIPアドレスは、第1のパケット内の宛先IPアドレス(英語:destination IP address)である。例えば、第1のパケットは、ホスト106によってホスト107に送信されるデータパケットである。宛先IPアドレスは、ホスト107のIPアドレスである。
別の可能な実施例では、第1のパケットはARPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットプロトコルアドレス(英語:target protocol address、略してTPA)である。例えば、ホスト106はIPv4に基づいてデータパケットをホスト107に送信することを意図しており、かつホスト106およびホスト107は同一のブロードキャストドメインに属する。データパケットをホスト107に送信する前に、ホスト106は、まず、ARPパケットをブロードキャストして、ホスト107のMACアドレスを取得する。
さらに別の可能な実施例では、第1のパケットはNDPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットアドレス(英語:target address)である。例えば、ホスト106は、IPv6に基づいてホスト107にデータパケットを送信することを意図しており、かつホスト106およびホスト107は同一のブロードキャストドメインに属する。データパケットをホスト107に送信する前に、ホスト106は、まず、NDPパケット(例えば、近隣要請(英語:Neighbor Solicitation))を送信して、ホスト107のMACアドレスを取得する。
S202: 第1のゲートウェイは、第1のIPアドレスの次のホップを求めて転送テーブルを検索し、該検索は失敗する。
本願では、複数のIPアドレスと、複数のIPアドレスのそれぞれの次のホップとが転送テーブルに記憶されている。例えば、ホストが別のゲートウェイ(例えば、第2のゲートウェイ)を使用してネットワークにアクセスするとき、転送テーブルに記憶されたIPアドレスの次のホップは、ゲートウェイ(例えば、第2のゲートウェイ)のIPアドレスを含んでもよい。すなわち、ホストのIPアドレスからゲートウェイ(たとえば、第2ゲートウェイ)のIPアドレスへのマッピングが転送テーブルに記憶されている。例えば、ホストが転送テーブルを記憶するゲートウェイ(例えば、第1のゲートウェイ)を使用してネットワークにアクセスするとき、転送テーブルに記憶されたIPアドレスの次のホップは、ホストのMACアドレスを含んでもよい。すなわち、ホストのIPアドレスからホストのMACアドレスへのマッピングが転送テーブルに記憶されている。さらに、IPアドレスの次のホップのアウトバウンドインターフェイス識別子が、転送テーブルにさらに記憶されてもよい。
例えば、転送テーブルは、ルーティング情報ベース(英語:routing information base、略してRIB)または転送情報ベース(英語:forwarding information base、略してFIB)であってもよい。
任意選択で、S201とS202との間で、第1のゲートウェイは、以下のステップ、すなわち、第1のゲートウェイが第1のパケットの第1のVNIを判定するというステップをさらに実行してもよい。
例えば、第1のゲートウェイは、第1のパケットを受信するポートを判定し、第1のゲートウェイは、ポートと仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIとの間のマッピングに基づいて、第1のパケットのVNIを判定し、かつ第1のゲートウェイは、VNIに基づいてVNIの転送テーブルを判定する。
特に、異なるVNIによって識別されるVXLANセグメント内のホストは、互いに通信できない。第1のゲートウェイは、複数の転送テーブルおよび各VNIから転送テーブルへのマッピングを記憶している。例えば、各転送テーブルは、仮想ルーティングおよび転送(英語:virtual routing and forwarding、略してVRF)インスタンス(英語:instance)である。
第1のゲートウェイは、第1のIPアドレスの次のホップを求めて転送テーブルを検索し、該検索が失敗することは、第1のゲートウェイが、転送テーブル内に、第1のパケット内のIPアドレスの次のホップを発見しないことを意味する。
S203: 第1のゲートウェイは、第2のパケットを少なくとも1つのゲートウェイに送信し、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される。
可能な実施例では、第1のゲートウェイは、第1のパケットのVNIを有するゲートウェイを求めて複数のVNIから複数のゲートウェイへのマッピングテーブルを検索してもよい。マッピングテーブルには、第1のパケットのVNIから少なくとも1つのゲートウェイへのマッピングが記憶されている。少なくとも1つのゲートウェイは、VNIによって識別されるホストがローカルエリアネットワークにおいて接続することを許可されたゲートウェイである。第1のゲートウェイは、検索の結果に従って、第1のパケットのVNIを有する少なくとも1つのゲートウェイを判定する。
別の可能な実施例では、第1のゲートウェイは、第2のパケットをローカルエリアネットワークにおけるすべてのゲートウェイに送信する。
例えば、第1のゲートウェイおよび少なくとも1つのゲートウェイは、図1におけるBGPピアであってもよい。第2のパケットは、BGPパケットであってもよい。また、第2のパケットは、BGPで定義された更新(英語:update)パケットであってもよい。第1のIPアドレスは、更新パケットのパス属性(英語:Path Attribute)フィールドに保持されてもよい。特に、タイプは、第2のパケットを識別するために、パス属性フィールドのタイプ・長さ・値(英語:Type-Length-Value、略してTLV)で定義される。第1のIPアドレスは値フィールドにおいて搬送される。
任意選択で、第2のパケットは、第1のパケットのVNIをさらに搬送する。例えば、第1のパケットのVNIおよび第1のIPアドレスは、両方とも更新パケットのパス属性フィールドで搬送される。
任意選択で、第2のパケットは、第1のIPアドレスのブロードキャストドメイン識別子をさらに搬送する。例えば、第1のゲートウェイは、複数のIPサブネットセグメントとブロードキャストドメインとの間の対応関係を記憶している。第1のゲートウェイは、第1のIPアドレスに対応するブロードキャストドメインに基づいてブロードキャストドメイン識別子を取得する。例えば、ブロードキャストドメイン識別子、第1のパケットのVNI、および第1のIPアドレスは、更新パケットのパス属性フィールドにすべて含まれる。
S301: 第2のゲートウェイは、第1のゲートウェイから第2のパケットを受信し、かつ第2のゲートウェイは、第2のパケットにおいて搬送された第1のIPアドレスによって識別されるホストのMACアドレスは取得可能であると判定する。
任意選択で、第2のパケットが第1のパケットのVNIをさらに搬送する場合、第2のゲートウェイは、第2のパケットにおいて搬送された第1のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定することは、VNIに対応するVXLANセグメント内の第2のゲートウェイによって、第1のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定することを特に含む。
例えば、第2のゲートウェイが、第2のパケットにおいて搬送された第1のIPアドレスによって識別されるホストのMACアドレスを取得することは、第2のゲートウェイによって、第1のIPアドレスに対応するMACアドレスを求めて、IPアドレスとMACアドレスとの間の複数の記憶されたマッピングテーブルを検索することを含んでもよい。例えば、第1のIPアドレスによって識別されるホストは、ホスト107であり、かつ第1のIPアドレスに対応し、かつマッピングテーブルに記憶されているMACアドレスは、ホスト107のMACアドレスである。第2のゲートウェイへの接続を確立するとき、ホスト107は、ホスト107のMACアドレスを第2のゲートウェイに送信する。第2のゲートウェイは、ホスト107のMACアドレスとIPアドレスとの間の対応関係を、IPアドレスとMACアドレスとの間の複数のマッピングテーブルに保存する。第2のパケットがさらに第1のパケットのVNIを搬送する場合、第2のゲートウェイは、VNIと、IPアドレスおよびMACアドレス間の複数のマッピングテーブルとの間の対応関係をさらに記憶している。IPアドレスとMACアドレスとの間の複数のマッピングテーブルには、VNIに対応するVXLANセグメント内のIPアドレスとMACアドレスとの間のマッピングが記憶されている。
例えば、第2のゲートウェイは、第2のパケットにおいて搬送された第1のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定することは、第2のゲートウェイによって、第2のゲートウェイを使用して、ネットワークにアクセスするホストへの要求パケットをブロードキャストすることをさらに含んでもよい。要求パケットは、ホスト107のMACアドレスを要求するために使用される。例えば、要求パケットは、図1に示されるように、IPv4プロトコルにおけるARPパケットであってもよく、または、IPv6におけるNDPパケットであってもよい。第2のゲートウェイは、要求パケットに対するホスト107の応答に基づいて、第1のIPアドレスに対応するMACアドレスを取得する。第2のパケットが第1のパケットのVNIをさらに搬送する場合、要求パケットをブロードキャストするとき、第2のゲートウェイは、VNIに基づいて、要求パケットをブロードキャストするポートを判定し、かつVNIに対応するVXLANセグメント内のホストに要求パケットをブロードキャストする。第2のパケットが、S202で第2のパケットがさらにブロードキャストドメイン識別子をさらに搬送する場合、要求パケットをブロードキャストするときに、第2のゲートウェイは、VNIおよびブロードキャストドメイン識別子の両方に従って、要求パケットをブロードキャストするポートを判定し、かつ、VNIに対応するVXLANセグメントにあり、かつブロードキャストドメインに属するホストに要求パケットをブロードキャストする。
S302: 第2のゲートウェイは、第3のパケットを第1のゲートウェイに送信し、第3のパケットは、第2のIPアドレスによって識別されるホストに、第1のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される。
例えば、第3のパケットは、BGPパケットであってもよい。特に、第3のパケットは、第2のパケットと同一のパケットフォーマットを使用してもよい。例えば、両方のパケットはBGP内の更新パケットである。第3のパケットにおいて搬送されるパス属性フィールドの値フィールドは、第2のパケットの値フィールドと同一である。タイプフィールドは、第3のパケットのタイプを識別するための識別子を定義する。
S204: 第1のゲートウェイは、第2のゲートウェイから第3のパケットを受信し、第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用され、かつ第1のゲートウェイは、第2のゲートウェイのアドレスを、第1のIPアドレスの次のホップアドレスとして転送テーブルに書き込む。
特に、第3のパケットは、第3のパケットを送信するゲートウェイのソースアドレスを搬送し、かつ第1のゲートウェイは、第3のパケット内のソースアドレスに基づいて第2のゲートウェイを判定する。
例えば、第1のパケットは、データパケットであり、かつ方法は、S205、すなわち第1のゲートウェイが、第1のパケットにVXLANカプセル化を実行して、カプセル化された第1のパケットを取得し、かつ第1のゲートウェイがカプセル化された第1のパケットを送信するというステップをさらに含む。カプセル化された第1のパケットのVXLANヘッダにおけるVNIフィールドの値は、第1のパケットのVNIであり、かつカプセル化された第1のパケットの外部IPヘッダの宛先IPアドレスは、第2のゲートウェイのIPアドレスである。
例えば、第1のパケットは、第1のゲートウェイから、第1のIPアドレスによって識別されるホストのMACアドレス、例えばARPパケットまたはNDPパケットを要求するためにホスト106によって使用されるパケットである。方法は、第1のゲートウェイによって、第1のゲートウェイのMACアドレスをホスト106に送信するステップをさらに含む。
任意選択で、IPアドレス(例えば、第2のIPアドレス)によって識別されるホストが第1のゲートウェイを使用してネットワークにアクセスするか否かを判定するための別のゲートウェイの要求に応答して、第1のゲートウェイはさらに、IPアドレスによって識別されるホストが、第1のゲートウェイを使用してネットワークにアクセスするか否かを判定してもよい。第1のゲートウェイによって、IPアドレスによって識別されるホストが第1のゲートウェイを使用してネットワークにアクセスするか否かを判定するステップは、第2のゲートウェイによって、第1のIPアドレスによって識別されるホストが第1のゲートウェイを使用してネットワークにアクセスするか否かを判定するS301およびS302と同様である。例えば、図3に示されるように、第1のゲートウェイが第3のゲートウェイからの第4のパケットであって、第1のゲートウェイに、第2のIPアドレスによって識別されるホストが第1のゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される第4のパケットを受信する場合、方法は、S401、S402、およびS403をさらに含む。
S401: 第1のゲートウェイは、第4のパケットを第3のゲートウェイから受信し、第4のパケットは第2のIPアドレスを搬送する。
S402: 第1のゲートウェイは、第2のIPアドレスに対応するMACアドレスを取得する。
S403: 第1のゲートウェイは、第5のパケットを第3のゲートウェイに送信し、第5のパケットは、第3のゲートウェイに、第2のIPアドレスの次のホップアドレスとして第1のゲートウェイのアドレスを使用するよう指示するために使用される。
S401およびS402では、第4のパケットにおいて搬送された第2のIPアドレスに基づいて第1のゲートウェイによって、第2のIPアドレスに対応するMACアドレスを取得するステップの特定の実装は、図2に示されるS301において、第2のパケットにおいて搬送された第1のIPアドレスに基づいて第2のゲートウェイによって、第1のIPアドレスに対応するMACアドレスを取得するステップの特定の実装を使用してもよい。
S403では、第1のゲートウェイによって第3のゲートウェイに第5のパケットを送信する特定の実装は、図2に示されるS302において、第2のゲートウェイによって第3のパケットを第1のゲートウェイに送信する特定の実装を使用してもよい。
図4は、本願の実施形態による第1のゲートウェイの概略構成図である。図4に示されるように、第1のゲートウェイ500は、プロセッサ501と、メモリ502と、ネットワークインターフェース503とを含む。
メモリ502は、転送テーブルを記憶するように構成される。例えば、メモリ502は、コンテンツアドレス可能メモリ(英語:content-addressable memory、略してCAM)、例えば3値コンテンツアドレス可能メモリ(英語:ternary CAM、略してTCAM)、およびランダムアクセスメモリ(英語:random-access memory、略してRAM)を含んでもよいが、これらに限定されない。
ネットワークインターフェース503は、ファイバ分散データインタフェース(英語:Fiber Distributed Data Interface、略してFDDI)またはイーサネット(登録商標)(英語:Ethernet)インタフェースなどの有線インタフェースであってもよい。あるいは、ネットワークインターフェース503は、無線インタフェース、例えば、無線ローカルエリアネットワークインタフェースであってもよい。
プロセッサ501は、中央処理装置(英語:central processing unit、略してCPU)、ネットワークプロセッサ(英語:network processor、略してNP)、特定用途向け集積回路(英語:application-specific integrated circuit、略してASIC)、またはプログラマブルロジックデバイス(英語:programmable logic device、略してPLD)の1つ以上を含んでもよいが、これらに限定されない。PLDは、複雑なプログラマブルロジックデバイス(英語:complex programmable logic device、略してCPLD)、フィールドプログラマブルゲートアレイ(英語:field-programmable gate array、略してFPGA)、ジェネリックアレイロジック(英語:generic array logic、略してGAL)、またはこれらの任意の組合せを含んでもよい。
メモリ502は、プロセッサ501に統合されてもよい。メモリ502とプロセッサ501が相互に独立したデバイスである場合、メモリ502はプロセッサ501と通信する。例えば、メモリ502は、バスを使用してプロセッサ501と通信してもよい。ネットワークインターフェース503は、バスを使用してプロセッサ501と通信してもよく、またはネットワークインターフェース503は、プロセッサ501に直接接続されてもよい。プロセッサ501は、以下の動作を実行するように構成される:
ネットワークインターフェース503を使用して第1のパケットを受信するステップであって、第1のパケットは第1のインターネットプロトコルIPアドレスを含む、ステップと、
第1のIPアドレスの次のホップを求めて、メモリ502に記憶された転送テーブルを検索するステップであって、該検索は失敗する、ステップと、
ネットワークインターフェース503を使用して、第2のパケットを少なくとも1つのゲートウェイに送信するステップであって、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される、ステップと、
ネットワークインターフェース503を使用して、第3のパケットを第2のゲートウェイから受信するステップであって、第2のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される、ステップと、
第2のゲートウェイのアドレスを、第1のIPアドレスの次のホップアドレスとしてメモリに記憶された転送テーブルに書き込むステップ。
例えば、プロセッサ501は、NPおよびCPUを含んでもよい。NPはバスを使用してCPUと通信する。NPは、転送プレーン動作を実行するように構成され、かつCPUは、制御プレーン動作を実行するように構成される。特に、NPは、ネットワークインターフェース503を使用して第1のパケットを受信し、かつ第1のパケット内のIPアドレスの次のホップを求めて、メモリ502に記憶された転送テーブルを検索する。NPが、第1のパケット内のIPアドレスの次のホップ検索し、該検索が失敗した後、NPはバスを使用してIPアドレスをCPUに送信する。特に、NPが次ホップを検索するとき、1つの可能な方法は、メモリがRAMである場合、NPはメモリ内の転送テーブルに関する情報を読み出し、かつ第1のIPアドレスの次のホップを検索してもよい。別の可能な方法は、メモリがCAMである場合、NPは第1のIPアドレスをメモリに送信し、かつ第1のIPアドレスに一致するエントリを求めて転送テーブルを検索するようメモリに指示し、ここで第1のIPアドレスの次のホップは、エントリに記憶されている。メモリは、検索結果をNPに送信する。次のホップを検索し、該検索が失敗することは、NPが、転送テーブル内に、第1のIPアドレスに一致するエントリを発見しないことを意味してもよい。次のホップを検索し、該検索が失敗することは、メモリが検索失敗の結果をNPに送信することを意味してもよい。例えば、転送テーブルは汎用エントリを含み、かつ第1のIPアドレスが転送テーブル内のエントリと一致しないとき、メモリは検索の結果としてNPに汎用エントリを送信する。CPUは、第2のパケットを生成し、かつネットワークインターフェース503を使用して、第2のパケットを少なくとも1つのゲートウェイに送信する。さらに、CPUは、ネットワークインターフェース503を使用して、第2のゲートウェイから第3のパケットを受信し、かつ第1のIPアドレスの次のホップアドレスとしての第2のゲートウェイのアドレスを使用する。CPUは、バスを使用して、第1のIPアドレスと、第1のIPアドレスの次のホップアドレスとをNPに送信する。NPは、第1のIPアドレスと、第1のIPアドレスの次のホップアドレスとをメモリ501に記憶された転送テーブルに書き込む。
任意選択で、第1のパケット内のIPアドレスの次のホップを求めてメモリ502に記憶された転送テーブルを検索するステップの前に、プロセッサ501は、以下のステップ、すなわち、第1のパケットを受信するポートを判定するステップと、ポートからVNIへのマッピングに基づいて仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIを判定するステップと、VNIから転送テーブルへのマッピングに基づいて転送テーブルを判定するステップとをさらに実行する。例えば、これらのステップは、NPによって実行されてもよい。バス504を使用してIPアドレスをCPUに送信するとき、NPはVNIをCPUにさらに送信する。
任意選択で、第2のパケットはVNIをさらに搬送する。任意選択で、プロセッサ501が、ネットワークインターフェース503を使用して、第2のパケットを少なくとも1つのゲートウェイに送信する前に、プロセッサ501は、以下のステップ、すなわち、VNIを有するゲートウェイを求めて、複数のVNIから複数のゲートウェイへのマッピングテーブルを検索するステップと、検索の結果に基づいて少なくとも1つのゲートウェイを判定するステップとをさらに実行する。例えば、これらのステップは、CPUによって実行されてもよい。複数のVNIから複数のゲートウェイへのマッピングテーブルは、CPUの内部メモリに記憶されてもよい。
第1のパケットはデータパケットであり、第1のIPアドレスは、第1のパケットの宛先IPアドレスであり、かつプロセッサは、以下のステップ、すなわち、第1のパケットにVXLANカプセル化を実行し、第3のパケットを取得するステップと、ネットワークインターフェースを使用して、第3のパケットを送信するステップとをさらに実行する。第3のパケットのVXLANヘッダにおけるVNIフィールドの値はVNIであり、かつ第3のパケットの外部IPヘッダの宛先IPアドレスは、第2のゲートウェイのIPアドレスである。例えば、これらのステップは、NPによって実行されてもよい。
任意選択で、第1のパケットは、アドレス解決プロトコルARPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットIPアドレスTPAである。あるいは、第1のパケットは、近隣探索プロトコルNDPパケットであり、かつIPアドレスは第1のパケットのターゲットアドレスTarget Addressである。
任意選択で、プロセッサ501は、以下のステップ、すなわち、ネットワークインターフェース503を使用して、第4のパケットを第3のゲートウェイから受信するステップであって、第4のパケットは第2のIPアドレスを搬送する、ステップと、第2のIPアドレスに対応するMACアドレスを取得するステップと、ネットワークインターフェースを使用して、第5のパケットを第3のゲートウェイに送信するステップであって、第5のパケットは、第3のゲートウェイに、第2のIPアドレスの次のホップアドレスとして第1のゲートウェイのアドレスを使用するよう指示するために使用される、ステップとをさらに実行する。例えば、これらのステップは、CPUによって実行されてもよい。
任意選択で、第4のパケットは、仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送する。プロセッサ501が第2のIPアドレスに対応するMACアドレスを取得することは、プロセッサ501によって、VNIに対応するVXLANセグメントにおいて、第2のIPアドレスに対応するMACアドレスを取得するステップを特に含む。例えば、このステップは、CPUによって実行されてもよい。
この実施形態に提供される第1のゲートウェイ500は、図2および図3における実施形態の方法に適用され、第1のゲートウェイの機能を実装してもよい。第1のゲートウェイによって実装され得る他の追加機能および別のゲートウェイとの相互作用プロセスについては、方法の実施形態における第1のゲートウェイに関する説明を参照されたく、詳細はここでは再度説明しない。
図5は、本願の実施形態による別の第1のゲートウェイの概略構成図である。図5に示されるように、第1のゲートウェイ600は、第1の受信ユニット601と、記憶ユニット602と、検索ユニット603と、送信ユニット604と、第2の受信ユニット605と、処理ユニット606とを含む。
第1の受信ユニット601は、第1のパケットを受信するように構成され、第1のパケットは第1のインターネットプロトコルIPアドレスを含む。
記憶ユニット602は、転送テーブルを記憶するように構成される。
検索ユニット603は、第1の受信ユニット601によって受信された第1のパケットを取得し、かつ第1のIPアドレスの次のホップを求めて、記憶ユニット602に記憶された転送テーブルを検索するように構成され、該検索は失敗する。
送信ユニット604は、検索ユニット603が第1のIPアドレスの次のホップを検索し、該検索が失敗した後、第2のパケットを少なくとも1つのゲートウェイに送信するように構成され、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される。
第2の受信ユニット605は、第3のパケットを第2のゲートウェイから受信するように構成され、第2のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される。
処理ユニットは、第2の受信ユニットによって受信された第3のパケットを取得し、かつ第3のパケットに基づいて第1のIPアドレスの次のホップアドレスとして、第2のゲートウェイのアドレスを、記憶ユニットに記憶された転送テーブルに書き込むように構成される。
任意選択で、第2のパケットは、第1のパケットの第1の仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送し、かつ検索ユニット603は、送信ユニットが第2のパケットを少なくとも1つのゲートウェイに送信する前に、第1のパケットの第1のVNIを判定するようにさらに構成される。
任意選択で、第1のパケットは、アドレス解決プロトコルARPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットIPアドレスTPAである。あるいは、第1のパケットは、近隣探索プロトコルNDPパケットであり、かつIPアドレスは第1のパケットのターゲットアドレスTarget Addressである。
任意選択で、第2の受信ユニット605は、第4のパケットを第3のゲートウェイから受信するようにさらに構成され、第4のパケットは第2のIPアドレスを搬送する。検索ユニット603は、第2の受信ユニット605によって受信された第4のパケットを取得し、かつ第4のパケットにおいて搬送された第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するようにさらに構成される。送信ユニット604は、第5のパケットを第3のゲートウェイに送信するようにさらに構成され、第5のパケットは、第2のIPアドレスによって識別されるホストに、第1のネットワークを使用してネットワークにアクセスするよう指示するために使用される。
任意選択で、第4のパケットは第2のVNIをさらに搬送する。検索ユニット603は、第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するように構成され、かつ第2のVNIによって識別されるVXLANセグメント内の第2のIPアドレスによって識別されるホストのMACアドレスを取得するよう試みるように特に構成される。
図5に示された第1のゲートウェイ600と、図4に示された第1のゲートウェイ500は、同一の装置であってもよい。例えば、両方とも図2および図3に示された方法における第1のゲートウェイである。図4は、物理的に第1のゲートウェイに含まれるコンテンツを示し、かつ図5は、論理的に第1のゲートウェイに含まれるコンテンツを示していると考えられてもよい。任意選択で、図5に示された第1の受信ユニット601と、第2の受信ユニット602と、送信ユニット604とが、図4に示されるネットワークインターフェース503を使用して、実装されてもよい。図5に示された検索ユニット603および処理ユニット606が、図4に示されたプロセッサ501を使用して実装されてもよい。図5に示された記憶ユニット602が、図4に示されたメモリ602を使用して実装されてもよい。
本明細書の実施形態はすべて、実施形態における同一または類似の部分については漸進的に記載され、これらの実施形態を参照し、かつ各実施形態は他の実施形態との差異に焦点を当てている。特に、システムの実施形態は基本的に方法の実施形態に類似しているので、簡単に説明されている。関連する部分については、方法の実施形態における部分的な説明を参照されたい。
明らかに、当業者は、本願の範囲から逸脱することなく、本願に対して様々な変更および変形を行うことができる。本願は、添付の特許請求の範囲およびそれらに相当する技術によって定義される保護の範囲内にある限り、提供される本願のこれらの変更および変形を包含することを意図している。
101 第1のゲートウェイ
102 第2のゲートウェイ
103 第3のゲートウェイ
104 ルータ
105 ルータ
106 ホスト
107 ホスト
500 第1のゲートウェイ
501 プロセッサ
502 メモリ
503 ネットワークインターフェース
600 第1のゲートウェイ
601 第1の受信ユニット
602 記憶ユニット
603 検索ユニット
604 送信ユニット
605 第2の受信ユニット
606 処理ユニット
本願は、2016年1月18日に中国特許庁に出願された、「METHOD AND GATEWAY FOR OBTAINING ROUTE ACCORDING TO REQUIREMENT」という名称の中国特許出願第201610031655.4号の優先権を主張するものであり、参照によりその全体が本明細書に組み込まれる。
本発明は、通信分野に関し、特に、要求に基づいてルートを取得する方法及びゲートウェイに関する。
分散型ゲートウェイのネットワークアーキテクチャでは、ローカルエリアネットワーク(英語:local area network、略してLAN)は複数のゲートウェイを含む。ホストがそのゲートウェイを変更するとき、ホストのメディアアクセス制御(英語:Media Access Control、略してMAC)アドレスとインターネットプロトコル(英語:Internet Protocol、略してIP)アドレスは変更されない。分散型ゲートウェイアーキテクチャにおけるパケット転送方式は、パケットを送信するホストとパケットを受信するホストが同一のブロードキャストドメイン(英語:broadcast domain、略してBD)に位置するか否かに関わらず、送信側ホストはパケットを送信側ホストのゲートウェイに送信し、ゲートウェイはパケットの宛先IPアドレスに基づいて受信側ホストにパケットを送信する。受信側ホストは、ローカルエリアネットワーク内の別のゲートウェイを使用してネットワークにアクセスしてもよい。従って、送信側ホストのゲートウェイの転送テーブルは、ローカルエリアネットワーク内の別のゲートウェイを使用してネットワークにアクセスするすべてのホストのホストルートを含む必要がある。ローカルエリアネットワークが大量のホストを含むとき、大量のホストルートが転送テーブルの多くのストレージリソースを占有する。
本願は、要求に基づいてルートを取得する方法および装置を提供し、分散型ゲートウェイのネットワークアーキテクチャにおいて、実際のパケット転送要求に基づいてルートを取得し、それによって、転送テーブルのストレージリソースを節約することができる。
第1の態様によれば、要求に基づいてルートを取得する方法であって、
第1のゲートウェイによって、第1のパケットを受信するステップであって、第1のパケットは第1のインターネットプロトコルIPアドレスを含む、ステップと、
第1のゲートウェイによって、第1のIPアドレスの次のホップを求めて転送テーブルを検索するステップであって、該検索は失敗する、ステップと、
第1のゲートウェイによって、第2のパケットを少なくとも1つのゲートウェイに送信するステップであって、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される、ステップと、
第1のゲートウェイによって、第3のパケットを第2のゲートウェイから受信するステップであって、第2のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される、ステップと、
第1のゲートウェイによって、第2のゲートウェイのアドレスを、第1のIPアドレスの次のホップアドレスとして転送テーブルに書き込むステップと
を含む、方法が提供される。
第1のゲートウェイは、第1のパケット内のIPアドレスの次のホップを予め記憶している必要はないが、アクセスするホストに基づく要求に基づいてルートを取得してもよい。従って、ネットワークが大量のホストを含む場合、第1のゲートウェイは、第1のゲートウェイと通信する必要のないホストのIPアドレスの次のホップを記憶している必要がなくなり、それによって、転送テーブルのストレージリソースを節約することができる。
任意選択で、第2のパケットは、第1のパケットの第1の仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送する。第1のゲートウェイによって、第2のパケットを少なくとも1つのゲートウェイに送信するステップの前に、方法は、第1のゲートウェイによって、第1のパケットの第1のVNIを判定するステップをさらに含む。
例えば、第1のゲートウェイによって、第1のVNIを判定するステップは、第1のゲートウェイによって、第1のパケットを受信するポートを判定するステップと、第1のゲートウェイによって、ポートから第1のVNIへのマッピングに基づいて、第1のVNIを判定するステップとを特に含む。第1のゲートウェイが第1のパケット内のIPアドレスの次ホップを求めて転送テーブルを検索する前に、方法は、第1のゲートウェイによって、第1のVNIから転送テーブルへのマッピングに基づいて転送テーブルを判定するステップをさらに含む。
任意選択で、方法は、第1のゲートウェイによって、第4のパケットを第3のゲートウェイから受信するステップであって、第4のパケットは、第2のIPアドレスを搬送する、ステップと、第1のゲートウェイによって、第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するステップと、第1のゲートウェイによって、第5のパケットを第3のゲートウェイに送信するステップであって、第5のパケットは、第2のIPアドレスによって識別されるホストに、第1のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される、ステップとをさらに含む。任意選択で、第4のパケットは第2のVNIをさらに搬送し、かつ第1のゲートウェイによって、第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するステップは、第1のゲートウェイによって第2のVNIによって識別されるVXLANセグメント内の第2のIPアドレスによって識別されるホストのMACアドレスを取得するよう試みるステップを含む。
任意選択で、第1のゲートウェイによって、第2のパケットを少なくとも1つのゲートウェイに送信するステップの前に、方法は、複数のVNIから複数のゲートウェイへのマッピングテーブルに基づいて、第1のゲートウェイによって、VNIに対応する少なくとも1つのゲートウェイを判定するステップをさらに含む。
任意選択で、第1のパケットは、データパケットであり、第1のIPアドレスは、第1のパケットの宛先IPアドレスであり、方法は、第1のゲートウェイによって、第1のパケットにVXLANカプセル化を実行して、第6のパケットを取得するステップと、第1のゲートウェイによって、第6のパケットを送信するステップとをさらに含み、第6のパケットのVXLANヘッダにおけるVNIフィールドの値はVNIであり、かつ第6のパケットの外部IPヘッダの宛先IPアドレスは第2のゲートウェイのIPアドレスである。
第2の態様によれば、ネットワークデバイスであって、
プロセッサと、メモリと、ネットワークインターフェースとを含み、メモリは、転送テーブルを記憶するように構成され、かつプロセッサは、
ネットワークインターフェースを使用して第1のパケットを受信し、第1のパケットは第1のインターネットプロトコルIPアドレスを含み、
第1のIPアドレスの次のホップを求めてメモリに記憶された転送テーブルを検索し、該検索は失敗し、
ネットワークインターフェースを使用して、第2のパケットを少なくとも1つのゲートウェイに送信し、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用され、
ネットワークインターフェースを使用して、第3のパケットを第1のゲートウェイから受信し、第1のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第1のゲートウェイを使用してネットワークにアクセスするよう指示するために使用され、かつ
第1のゲートウェイのアドレスを、第1のIPアドレスの次のホップアドレスとしてメモリに記憶された転送テーブルに書き込む
ように構成された、ネットワークデバイスが提供される。
この態様の技術的効果は、第1の態様のそれと同一である。
任意選択で、第2のパケットは、第1のパケットの第1の仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送し、かつプロセッサは、第2のパケットを少なくとも1つのゲートウェイに送信する前に、第1のパケットの第1のVNIを判定するようにさらに構成される。
任意選択で、プロセッサは、ネットワークインターフェースを使用して、第4のパケットを第2のゲートウェイから受信し、第4のパケットは第2のIPアドレスを搬送し、第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定し、かつネットワークインターフェースを使用して、第5のパケットを第2のゲートウェイに送信し、第5のパケットは、第2のIPアドレスによって識別されるホストに、第1のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される、ようにさらに構成される。
任意選択で、第4のパケットは第2のVNIをさらに搬送し、かつ第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定することは、
第2のVNIによって識別されるVXLANセグメント内の第2のIPアドレスによって識別されるホストのMACアドレスを取得するよう試みることを特に含む。
第3の態様によれば、要求に基づいてルートを取得する第1のゲートウェイであって、第1の受信ユニットと、記憶ユニットと、検索ユニットと、送信ユニットと、第2の受信ユニットと、処理ユニットとを含み、
第1の受信ユニットは、第1のパケットを受信するように構成され、第1のパケットは第1のインターネットプロトコルIPアドレスを含み、
記憶ユニットは、転送テーブルを記憶するように構成され、
検索ユニットは、第1のIPアドレスの次のホップを求めて記憶ユニットに記憶された転送テーブルを検索するように構成され、
送信ユニットは、検索ユニットが第1のIPアドレスの次のホップを求めて記憶ユニットに記憶された転送テーブルを検索し、該検索が失敗した後、第2のパケットを少なくとも1つのゲートウェイに送信するように構成され、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用され、
第2の受信ユニットは、第3のパケットを第2のゲートウェイから受信するように構成され、第2のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用され、かつ
処理ユニットは、第2の受信ユニットによって受信された第3のパケットを取得し、かつ第3のパケットに基づいて第1のIPアドレスの次のホップアドレスとして、第2のゲートウェイのアドレスを、記憶ユニットに記憶された転送テーブルに書き込むように構成された、第1のゲートウェイが提供される。
この態様の技術的効果は、第1の態様のそれと同一である。
任意選択で、第2のパケットは、第1のパケットの第1の仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送し、かつ検索ユニットは、送信ユニットが第2のパケットを少なくとも1つのゲートウェイに送信する前に、第1のパケットの第1のVNIを判定するようにさらに構成される。
任意選択で、第2の受信ユニットは、第4のパケットを第3のゲートウェイから受信するようにさらに構成され、第4のパケットは第2のIPアドレスを搬送し、検索ユニットは、第2の受信ユニットによって受信された第4のパケットを取得し、かつ第4のパケットにおいて搬送された第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するようにさらに構成され、かつ送信ユニットは、第5のパケットを第3のゲートウェイに送信するようにさらに構成され、第5のパケットは、第2のIPアドレスによって識別されるホストに、第1のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される。
任意選択で、第4のパケットは第2のVNIをさらに搬送し、かつ検索ユニットが第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するように構成されることは、第2のVNIによって識別されるVXLANセグメント内の第2のIPアドレスによって識別されるホストのMACアドレスを取得するよう試みるよう特に構成される。
第4の態様によれば、コンピュータ記憶媒体が提供される。コンピュータ記憶媒体は、前述の第1のゲートウェイによって使用されるコンピュータソフトウェア命令を記憶するように構成され、かつ命令は、前述の態様を実行するように設計されたプログラムを含む。
任意選択で、第1の態様、第2の態様、第3の態様、または第4の態様のいずれかに基づいて、第1のパケットは、アドレス解決プロトコルARPパケットであり、かつ第1のIPアドレスは、第1のパケットのターゲットIPアドレスであり、または、第1のパケットは、近隣探索プロトコルNDPパケットであり、かつ第1のIPアドレスは、第1のパケットのターゲットアドレスである。
第1のゲートウェイがARPパケットまたはNDPパケットを受信するとき、第1のパケットを送信するホストは、第1のIPアドレスによって識別されるホストと通信しようとしている可能性があることを意味する。第1のゲートウェイは、第1のパケットを受信すると別のゲートウェイに、第1のIPアドレスを取得するために使用される次のホップを送信する。このようにして、通信要求を有しないホストのIPアドレスが記憶されていないときには、通信要求を有するホストのIPアドレスの次ホップを早く取得することができ、それによって、以降のパケット転送の効率が向上する。
本願の実施形態における技術的解決策をより明確に説明するために、以下に、実施形態を説明するために必要な添付図面を簡単に説明する。明らかに、以下の説明における添付図面は、本願のいくつかの実施形態を示しており、当業者は創造的な努力なしにこれらの添付図面からさらに他の図面を導き出すことができる。
本願の実施形態によるアプリケーションシナリオの概略図である。
本願の実施形態による要求に基づいてルートを取得する方法のフローチャートである。
本願の実施形態による要求に基づいてルートを取得する方法のフローチャートである。
本願の実施形態による第1のゲートウェイの概略構成図である。
本願の実施形態による別の第1のゲートウェイの概略構成図である。
本願の実施形態において説明されるアプリケーションシナリオは、本願の実施形態の技術的解決策をより明確に説明することであるが、本願の実施形態の技術的解決方法を限定するものではない。当業者であれば、ネットワークアーキテクチャが進化し、新たなビジネスシナリオが現れるとき、本願の実施形態で提供される技術的解決策は、同様の技術的問題にも適用可能であることを理解するであろう。
図1は、本願の実施形態によるアプリケーションシナリオの概略図である。データセンターネットワーク(英語:data center network、略してDCN)は、第1のゲートウェイ101と、第2のゲートウェイ102と、第3のゲートウェイ103とを含む。
ホスト106は、第1のゲートウェイ101、第2のゲートウェイ102、または第3のゲートウェイ103のいずれか1つを使用してDCNにアクセスしてもよい。同様に、ホスト107は、第1のゲートウェイ101、第2のゲートウェイ102、または第3のゲートウェイ103のいずれか1つを使用してDCNにアクセスしてもよい。例えば、ホストは、パーソナルコンピュータ(英語:personal computer)、携帯電話(英語:cellphone)、スマートフォン(英語:smartphone)、タブレットコンピュータ(英語:tablet computer)、ウェアラブルデバイス(英語:wearable device)、パーソナルデジタルアシスタント(英語:personal digital assistant、略してPDA)、モバイルインターネット装置(英語:mobile Internet device、略してMID)、電子ブックリーダー(英語:e-book reader)などであってもよいし、または仮想マシン(英語:virtual machine、略してVM)であってもよい。ホストが仮想マシンのとき、仮想マシンはサーバ上で実行できる。
ホスト、例えばホスト106が異なるゲートウェイを使用してDCNにアクセスするとき、ホスト106のMACアドレスもIPアドレスも変更されない。例えば、ホスト106は仮想マシンである。仮想マシンが第1のゲートウェイ101に接続されたサーバから第2のゲートウェイ102に接続されたサーバに移行するとき、仮想マシンのMACアドレスもIPアドレスも変更されない。従って、同一のブロードキャストドメイン(英語:ブロードキャストドメイン、略してBD)に位置するホストは、異なるゲートウェイを使用してネットワークにアクセスしてもよい。
ブロードキャストパケットの量を減らすために、前述の分散型ゲートウェイのネットワークアーキテクチャにおけるパケット転送方式は、ホスト106がホスト107にパケットを送信するプロセスにおいて、ホスト106およびホスト107が同一のブロードキャストドメイン内にあるか否かに関わらず、ホスト106は、ホスト107に送信されたパケットのMACアドレスとして、ホスト106のゲートウェイのMACアドレスを使用する。例えば、第1のゲートウェイ101を使用してDCNにアクセスするとき、ホスト106は、パケットを第1のゲートウェイ101に送信する。パケットを受信した後、第1のゲートウェイ101は、パケットのイーサネット(登録商標)フレームヘッダ(英語:Ethernet frame header)をはがしてパケット内の宛先IPアドレスを取得し、かつパケット内の宛先IPアドレスに基づいてパケットを転送する。
前述のパケット転送方式を使用するとき、ホスト106がホスト107にパケットを送信できるようにするためには、ホスト106に接続されている第1のゲートウェイ101は、ホスト107のホストルート(英語:host route)を転送テーブルに予め記憶している必要がある。ホストルートは、ホスト107のIPアドレスと、ホスト107のIPアドレスの次のホップ(英語:next hop)とを含む。すなわち、第1のゲートウェイ101は、ネットワークにアクセスするために、ホスト107によって現在使用されているゲートウェイを予め記憶している必要がある。例えば、図1では、第1のゲートウェイ101は、第2のゲートウェイ102を使用して、または第3のゲートウェイ103を使用して、ホスト107が現在、ネットワークにアクセスしているか否かを知る必要がある。
従って、ホスト107が第2のゲートウェイ102を使用してネットワークにアクセスするとき、第2のゲートウェイ102は、ホスト107のホストルートをDCN内の別のゲートウェイに通知(英語:advertise)する必要がある。例えば、ホストルートが、第1のゲートウェイ101および第3のゲートウェイ103に通知され、かつ第1のゲートウェイ101および第3のゲートウェイ103は、第2のゲートウェイ102としてホスト107のIPアドレスの次のホップを記憶する。
第1のゲートウェイ101、第2のゲートウェイ102、および第3のゲートウェイ103が、仮想拡張可能ローカルエリアネットワーク(英語: Virtual eXtensible Local Area Network、略してVXLAN)トンネルを使用してデータパケットを転送し、かつボーダーゲートウェイプロトコル(英語:Border Gateway Protocol、略してBGP)を使用してホストルートを通知する実施例を使用して、パケットの転送およびホストルートの通知のプロセスを以下に説明する。
第1のゲートウェイ101、第2のゲートウェイ102、および第3のゲートウェイ103は、ボーダーゲートウェイプロトコル(英語:Border Gateway Protocol、略してBGP)を使用して予め相互の接続を確立する。すなわち、第1のゲートウェイ101、第2のゲートウェイ102、および第3のゲートウェイ103のいずれか2つは、互いのBGPピア(英語:BGP peer)である。
ホスト107が第2のゲートウェイ102との接続を確立するとき、第2のゲートウェイ102は、BGPパケットを使用してDCN内の第1のゲートウェイ101および第3のゲートウェイ103などの他のゲートウェイにホスト107のホストルートを通知する。第1のゲートウェイ101は、ホスト107のホストルートをルーティングテーブルに保存し、かつ第2のゲートウェイ102をホスト107の次のホップとして使用する。
第1のゲートウェイ101、第2のゲートウェイ102、および第3のゲートウェイ103はすべてVXLANトンネルエンドポイント(英語:VXLAN Tunnel End Point、略してVTEP)である。
ホスト106およびホスト107が異なるブロードキャストドメインに属し、かつホスト106がホスト107にデータパケットを送信しようとする場合、ホスト106は、ホスト107のIPアドレスをデータパケットの宛先IPアドレスとして使用し、第1のゲートウェイのMACアドレスをデータパケットの宛先MACアドレスとして使用し、かつ第1のゲートウェイ101にデータパケットを送信する。
ホスト106およびホスト107が同一のブロードキャストドメインに属する場合、ホスト106は、データパケットの宛先MACアドレスとしてホスト107のMACアドレスを使用することを意図する。従って、データパケットを送信する前に、ホスト106は、まずブロードキャストドメインにおけるホスト107のMACアドレスを要求するために使用される第2のパケットをブロードキャストする。例えば、第2のパケットは、インターネットプロトコルバージョン4(英語:Internet Protocol version 4、略してIPv4)におけるアドレス解決プロトコル(英語:address resolution protocol、略してARP)要求パケットであってもよい。例えば、インターネットプロトコルバージョン6(英語:Internet Protocol version 6、略してIPv6)では、第2のパケットは、インターネット制御メッセージプロトコル(英語:Internet Control Message Protocol、略してICMP)における近隣探索プロトコル(英語:Neighbor Discovery Protocol:略してNDP)であってもよい。第1のゲートウェイ101は、第2のパケットを受信した後、第2のパケットの応答パケットをプロキシ(英語:proxy)メカニズムを使用してホスト106に送信し、ホスト107のIPアドレスに対応するMACアドレスは第1のゲートウェイ101のMACアドレスであることをホスト106に知らせる。ホスト106は、第1ゲートウェイ101のMACアドレスを第1パケットのMACアドレスとして使用し、かつ第1のパケットを第1ゲートウェイ101に送信する。
従って、ホスト106およびホスト107が同一のブロードキャストドメインに属するか否かに関わらず、データパケットをホスト107に送信するとき、ホスト106は、第1ゲートウェイ101のMACアドレスをデータパケットのMACアドレスとして使用する。データパケットを受信した後、第1のゲートウェイ101は、データパケットを受信するポートに基づいて、データパケットのVXLANネットワーク識別子(英語:VXLAN Network Identifier、略してVNI)を判定する。VNIは、VXLANセグメント識別子(英語:VXLAN Segment ID)とも呼ばれる。第1ゲートウェイ101には、複数のVNIのそれぞれと転送テーブルとの対応が記憶されている。第1ゲートウェイ101は、第1パケットのVNIに基づいて転送テーブルを判定する。BGPプロトコルを使用して第2のゲートウェイ102によって通知されるホスト107のホストルートは、転送テーブルに予め記憶されている。ホストルートはホスト107のアドレスを含み、かつホスト107のアドレスに対応する次のホップは第2ゲートウェイ102である。第1ゲートウェイ101は、VXLANトンネルを使用して第2ゲートウェイ102にデータパケットを送信する。すなわち、第1のゲートウェイ101は、データパケットにVXLANカプセル化を実行する。特に、第1のゲートウェイ101は、VXLANヘッダ(英語:VXLAN header)、外部ユーザデータグラムプロトコル(英語:User Datagram Protocol、略してUDP)ヘッダ(英語:outer UDP header)および外部IPヘッダ(英語:outer IP header)を、データパケットの外側層に順番にカプセル化する。VXLANヘッダ内のVNIは、データパケットのVNIであり、かつ外部IPヘッダ内の宛先IPアドレスは、第2のゲートウェイ102のIPアドレスである。他のフィールドのカプセル化については、コメント要求(英語:Request for Comments、略してRFC)7348プロトコルを参照されたい。
VXLANカプセル化が実行されたデータパケットを受信した後、第2のゲートウェイ102は、パケットのVXLANヘッダ内のVNIに基づいて転送テーブルを判定する。VXLANセグメント内のホストのIPアドレスとMACアドレスと間の対応は転送テーブルに記憶されている。第2のゲートウェイ102は、転送テーブル内のホスト107のMACアドレスを発見し、かつデータパケットをホスト107に送信する。
この解決策では、第1のゲートウェイ101は、転送テーブル内に、別のゲートウェイを使用してネットワークにアクセスするすべてのホストルートを予め記憶している必要がある。DCNが大量のホストを含む場合、膨大な量のホストルートが存在する。いくつかのホストは相互に通信する必要がないことがあるため、いくつかのホストルートは、第1のゲートウェイ101によって所望されないことがある。第1のゲートウェイ101によって所望されないホストルートを記憶していることは、転送テーブルのストレージリソースを占有する。
本願の実施形態は、要求に基づいてルートを取得する方法を提供する。方法は、実際のパケット転送要求に基づいて分散型ゲートウェイのネットワークアーキテクチャにおいてルートを取得するために使用され、それによって、転送テーブルのストレージリソースを節約することができる。
図2は、本願の実施形態による要求に基づいてルートを取得する方法を示す。例えば、方法は、図1に示される分散型ゲートウェイに適用されてもよい。図2に示される方法における第1のゲートウェイは、図1に示される第1のゲートウェイ101であってもよい。図2に示される方法における第2のゲートウェイは、図1に示される第2のゲートウェイ102であってもよい。方法は以下のステップを含む。
S201: 第1のゲートウェイは、第1のパケットを受信し、第1のパケットは、第1のIPアドレスを含む。
第1のIPアドレスによって識別されるホストは、第1のパケットの送信者ではない。例えば、第1のパケットは第1のホストからのものであるが、第1のIPアドレスによって識別されるホストは第2のホストである。
例えば、第1のパケットは、図1に示される第1のゲートウェイ101にホスト106によって送信されたパケットである。
可能な実施例では、第1のパケットはデータパケットである。第1のIPアドレスは、第1のパケット内の宛先IPアドレス(英語:destination IP address)である。例えば、第1のパケットは、ホスト106によってホスト107に送信されるデータパケットである。宛先IPアドレスは、ホスト107のIPアドレスである。
別の可能な実施例では、第1のパケットはARPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットプロトコルアドレス(英語:target protocol address、略してTPA)である。例えば、ホスト106はIPv4に基づいてデータパケットをホスト107に送信することを意図しており、かつホスト106およびホスト107は同一のブロードキャストドメインに属する。データパケットをホスト107に送信する前に、ホスト106は、まず、ARPパケットをブロードキャストして、ホスト107のMACアドレスを取得する。
さらに別の可能な実施例では、第1のパケットはNDPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットアドレス(英語:target address)である。例えば、ホスト106は、IPv6に基づいてホスト107にデータパケットを送信することを意図しており、かつホスト106およびホスト107は同一のブロードキャストドメインに属する。データパケットをホスト107に送信する前に、ホスト106は、まず、NDPパケット(例えば、近隣要請(英語:Neighbor Solicitation))を送信して、ホスト107のMACアドレスを取得する。
S202: 第1のゲートウェイは、第1のIPアドレスの次のホップを求めて転送テーブルを検索し、該検索は失敗する。
本願では、複数のIPアドレスと、複数のIPアドレスのそれぞれの次のホップとが転送テーブルに記憶されている。例えば、ホストが別のゲートウェイ(例えば、第2のゲートウェイ)を使用してネットワークにアクセスするとき、転送テーブルに記憶されたIPアドレスの次のホップは、ゲートウェイ(例えば、第2のゲートウェイ)のIPアドレスを含んでもよい。すなわち、ホストのIPアドレスからゲートウェイ(たとえば、第2ゲートウェイ)のIPアドレスへのマッピングが転送テーブルに記憶されている。例えば、ホストが転送テーブルを記憶するゲートウェイ(例えば、第1のゲートウェイ)を使用してネットワークにアクセスするとき、転送テーブルに記憶されたIPアドレスの次のホップは、ホストのMACアドレスを含んでもよい。すなわち、ホストのIPアドレスからホストのMACアドレスへのマッピングが転送テーブルに記憶されている。さらに、IPアドレスの次のホップのアウトバウンドインターフェイス識別子が、転送テーブルにさらに記憶されてもよい。
例えば、転送テーブルは、ルーティング情報ベース(英語:routing information base、略してRIB)または転送情報ベース(英語:forwarding information base、略してFIB)であってもよい。
任意選択で、S201とS202との間で、第1のゲートウェイは、以下のステップ、すなわち、第1のゲートウェイが第1のパケットの第1のVNIを判定するというステップをさらに実行してもよい。
例えば、第1のゲートウェイは、第1のパケットを受信するポートを判定し、第1のゲートウェイは、ポートと仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIとの間のマッピングに基づいて、第1のパケットのVNIを判定し、かつ第1のゲートウェイは、VNIに基づいてVNIの転送テーブルを判定する。
特に、異なるVNIによって識別されるVXLANセグメント内のホストは、互いに通信できない。第1のゲートウェイは、複数の転送テーブルおよび各VNIから転送テーブルへのマッピングを記憶している。例えば、各転送テーブルは、仮想ルーティングおよび転送(英語:virtual routing and forwarding、略してVRF)インスタンス(英語:instance)である。
第1のゲートウェイは、第1のIPアドレスの次のホップを求めて転送テーブルを検索し、該検索が失敗することは、第1のゲートウェイが、転送テーブル内に、第1のパケット内のIPアドレスの次のホップを発見しないことを意味する。
S203: 第1のゲートウェイは、第2のパケットを少なくとも1つのゲートウェイに送信し、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される。
可能な実施例では、第1のゲートウェイは、第1のパケットのVNIを有するゲートウェイを求めて複数のVNIから複数のゲートウェイへのマッピングテーブルを検索してもよい。マッピングテーブルには、第1のパケットのVNIから少なくとも1つのゲートウェイへのマッピングが記憶されている。少なくとも1つのゲートウェイは、VNIによって識別されるホストがローカルエリアネットワークにおいて接続することを許可されたゲートウェイである。第1のゲートウェイは、検索の結果に従って、第1のパケットのVNIを有する少なくとも1つのゲートウェイを判定する。
別の可能な実施例では、第1のゲートウェイは、第2のパケットをローカルエリアネットワークにおけるすべてのゲートウェイに送信する。
例えば、第1のゲートウェイおよび少なくとも1つのゲートウェイは、図1におけるBGPピアであってもよい。第2のパケットは、BGPパケットであってもよい。また、第2のパケットは、BGPで定義された更新(英語:update)パケットであってもよい。第1のIPアドレスは、更新パケットのパス属性(英語:Path Attribute)フィールドに保持されてもよい。特に、タイプは、第2のパケットを識別するために、パス属性フィールドのタイプ・長さ・値(英語:Type-Length-Value、略してTLV)で定義される。第1のIPアドレスは値フィールドにおいて搬送される。
任意選択で、第2のパケットは、第1のパケットのVNIをさらに搬送する。例えば、第1のパケットのVNIおよび第1のIPアドレスは、両方とも更新パケットのパス属性フィールドで搬送される。
任意選択で、第2のパケットは、第1のIPアドレスのブロードキャストドメイン識別子をさらに搬送する。例えば、第1のゲートウェイは、複数のIPサブネットセグメントとブロードキャストドメインとの間の対応関係を記憶している。第1のゲートウェイは、第1のIPアドレスに対応するブロードキャストドメインに基づいてブロードキャストドメイン識別子を取得する。例えば、ブロードキャストドメイン識別子、第1のパケットのVNI、および第1のIPアドレスは、更新パケットのパス属性フィールドにすべて含まれる。
S301: 第2のゲートウェイは、第1のゲートウェイから第2のパケットを受信し、かつ第2のゲートウェイは、第2のパケットにおいて搬送された第1のIPアドレスによって識別されるホストのMACアドレスは取得可能であると判定する。
任意選択で、第2のパケットが第1のパケットのVNIをさらに搬送する場合、第2のゲートウェイは、第2のパケットにおいて搬送された第1のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定することは、VNIに対応するVXLANセグメント内の第2のゲートウェイによって、第1のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定することを特に含む。
例えば、第2のゲートウェイが、第2のパケットにおいて搬送された第1のIPアドレスによって識別されるホストのMACアドレスを取得することは、第2のゲートウェイによって、第1のIPアドレスに対応するMACアドレスを求めて、IPアドレスとMACアドレスとの間の複数の記憶されたマッピングテーブルを検索することを含んでもよい。例えば、第1のIPアドレスによって識別されるホストは、ホスト107であり、かつ第1のIPアドレスに対応し、かつマッピングテーブルに記憶されているMACアドレスは、ホスト107のMACアドレスである。第2のゲートウェイへの接続を確立するとき、ホスト107は、ホスト107のMACアドレスを第2のゲートウェイに送信する。第2のゲートウェイは、ホスト107のMACアドレスとIPアドレスとの間の対応関係を、IPアドレスとMACアドレスとの間の複数のマッピングテーブルに保存する。第2のパケットがさらに第1のパケットのVNIを搬送する場合、第2のゲートウェイは、VNIと、IPアドレスおよびMACアドレス間の複数のマッピングテーブルとの間の対応関係をさらに記憶している。IPアドレスとMACアドレスとの間の複数のマッピングテーブルには、VNIに対応するVXLANセグメント内のIPアドレスとMACアドレスとの間のマッピングが記憶されている。
例えば、第2のゲートウェイは、第2のパケットにおいて搬送された第1のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定することは、第2のゲートウェイによって、第2のゲートウェイを使用して、ネットワークにアクセスするホストへの要求パケットをブロードキャストすることをさらに含んでもよい。要求パケットは、ホスト107のMACアドレスを要求するために使用される。例えば、要求パケットは、図1に示されるように、IPv4プロトコルにおけるARPパケットであってもよく、または、IPv6におけるNDPパケットであってもよい。第2のゲートウェイは、要求パケットに対するホスト107の応答に基づいて、第1のIPアドレスに対応するMACアドレスを取得する。第2のパケットが第1のパケットのVNIをさらに搬送する場合、要求パケットをブロードキャストするとき、第2のゲートウェイは、VNIに基づいて、要求パケットをブロードキャストするポートを判定し、かつVNIに対応するVXLANセグメント内のホストに要求パケットをブロードキャストする。第2のパケットが、S202で第2のパケットがさらにブロードキャストドメイン識別子をさらに搬送する場合、要求パケットをブロードキャストするときに、第2のゲートウェイは、VNIおよびブロードキャストドメイン識別子の両方に従って、要求パケットをブロードキャストするポートを判定し、かつ、VNIに対応するVXLANセグメントにあり、かつブロードキャストドメインに属するホストに要求パケットをブロードキャストする。
S302: 第2のゲートウェイは、第3のパケットを第1のゲートウェイに送信し、第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される。
例えば、第3のパケットは、BGPパケットであってもよい。特に、第3のパケットは、第2のパケットと同一のパケットフォーマットを使用してもよい。例えば、両方のパケットはBGP内の更新パケットである。第3のパケットにおいて搬送されるパス属性フィールドの値フィールドは、第2のパケットの値フィールドと同一である。タイプフィールドは、第3のパケットのタイプを識別するための識別子を定義する。
S204: 第1のゲートウェイは、第2のゲートウェイから第3のパケットを受信し、第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用され、かつ第1のゲートウェイは、第2のゲートウェイのアドレスを、第1のIPアドレスの次のホップアドレスとして転送テーブルに書き込む。
特に、第3のパケットは、第3のパケットを送信するゲートウェイのソースアドレスを搬送し、かつ第1のゲートウェイは、第3のパケット内のソースアドレスに基づいて第2のゲートウェイを判定する。
例えば、第1のパケットは、データパケットであり、かつ方法は、S205、すなわち第1のゲートウェイが、第1のパケットにVXLANカプセル化を実行して、カプセル化された第1のパケットを取得し、かつ第1のゲートウェイがカプセル化された第1のパケットを送信するというステップをさらに含む。カプセル化された第1のパケットのVXLANヘッダにおけるVNIフィールドの値は、第1のパケットのVNIであり、かつカプセル化された第1のパケットの外部IPヘッダの宛先IPアドレスは、第2のゲートウェイのIPアドレスである。
例えば、第1のパケットは、第1のゲートウェイから、第1のIPアドレスによって識別されるホストのMACアドレス、例えばARPパケットまたはNDPパケットを要求するためにホスト106によって使用されるパケットである。方法は、第1のゲートウェイによって、第1のゲートウェイのMACアドレスをホスト106に送信するステップをさらに含む。
任意選択で、IPアドレス(例えば、第2のIPアドレス)によって識別されるホストが第1のゲートウェイを使用してネットワークにアクセスするか否かを判定するための別のゲートウェイの要求に応答して、第1のゲートウェイはさらに、IPアドレスによって識別されるホストが、第1のゲートウェイを使用してネットワークにアクセスするか否かを判定してもよい。第1のゲートウェイによって、IPアドレスによって識別されるホストが第1のゲートウェイを使用してネットワークにアクセスするか否かを判定するステップは、第2のゲートウェイによって、第1のIPアドレスによって識別されるホストが第1のゲートウェイを使用してネットワークにアクセスするか否かを判定するS301およびS302と同様である。例えば、図3に示されるように、第1のゲートウェイが第3のゲートウェイからの第4のパケットであって、第1のゲートウェイに、第2のIPアドレスによって識別されるホストが第1のゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される第4のパケットを受信する場合、方法は、S401、S402、およびS403をさらに含む。
S401: 第1のゲートウェイは、第4のパケットを第3のゲートウェイから受信し、第4のパケットは第2のIPアドレスを搬送する。
S402: 第1のゲートウェイは、第2のIPアドレスに対応するMACアドレスを取得する。
S403: 第1のゲートウェイは、第5のパケットを第3のゲートウェイに送信し、第5のパケットは、第3のゲートウェイに、第2のIPアドレスの次のホップアドレスとして第1のゲートウェイのアドレスを使用するよう指示するために使用される。
S401およびS402では、第4のパケットにおいて搬送された第2のIPアドレスに基づいて第1のゲートウェイによって、第2のIPアドレスに対応するMACアドレスを取得するステップの特定の実装は、図2に示されるS301において、第2のパケットにおいて搬送された第1のIPアドレスに基づいて第2のゲートウェイによって、第1のIPアドレスに対応するMACアドレスを取得するステップの特定の実装を使用してもよい。
S403では、第1のゲートウェイによって第3のゲートウェイに第5のパケットを送信する特定の実装は、図2に示されるS302において、第2のゲートウェイによって第3のパケットを第1のゲートウェイに送信する特定の実装を使用してもよい。
図4は、本願の実施形態による第1のゲートウェイ500の概略構成図である。図4に示されるように、第1のゲートウェイ500は、プロセッサ501と、メモリ502と、ネットワークインターフェース503とを含む。
メモリ502は、転送テーブルを記憶するように構成される。例えば、メモリ502は、コンテンツアドレス可能メモリ(英語:content-addressable memory、略してCAM)、例えば3値コンテンツアドレス可能メモリ(英語:ternary CAM、略してTCAM)、およびランダムアクセスメモリ(英語:random-access memory、略してRAM)を含んでもよいが、これらに限定されない。
ネットワークインターフェース503は、ファイバ分散データインタフェース(英語:Fiber Distributed Data Interface、略してFDDI)またはイーサネット(登録商標)(英語:Ethernet)インタフェースなどの有線インタフェースであってもよい。あるいは、ネットワークインターフェース503は、無線インタフェース、例えば、無線ローカルエリアネットワークインタフェースであってもよい。
プロセッサ501は、中央処理装置(英語:central processing unit、略してCPU)、ネットワークプロセッサ(英語:network processor、略してNP)、特定用途向け集積回路(英語:application-specific integrated circuit、略してASIC)、またはプログラマブルロジックデバイス(英語:programmable logic device、略してPLD)の1つ以上を含んでもよいが、これらに限定されない。PLDは、複雑なプログラマブルロジックデバイス(英語:complex programmable logic device、略してCPLD)、フィールドプログラマブルゲートアレイ(英語:field-programmable gate array、略してFPGA)、ジェネリックアレイロジック(英語:generic array logic、略してGAL)、またはこれらの任意の組合せを含んでもよい。
メモリ502は、プロセッサ501に統合されてもよい。メモリ502とプロセッサ501が相互に独立したデバイスである場合、メモリ502はプロセッサ501と通信する。例えば、メモリ502は、バスを使用してプロセッサ501と通信してもよい。ネットワークインターフェース503は、バスを使用してプロセッサ501と通信してもよく、またはネットワークインターフェース503は、プロセッサ501に直接接続されてもよい。プロセッサ501は、以下の動作を実行するように構成される:
ネットワークインターフェース503を使用して第1のパケットを受信するステップであって、第1のパケットは第1のインターネットプロトコルIPアドレスを含む、ステップと、
第1のIPアドレスの次のホップを求めて、メモリ502に記憶された転送テーブルを検索するステップであって、該検索は失敗する、ステップと、
ネットワークインターフェース503を使用して、第2のパケットを少なくとも1つのゲートウェイに送信するステップであって、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される、ステップと、
ネットワークインターフェース503を使用して、第3のパケットを第2のゲートウェイから受信するステップであって、第2のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される、ステップと、
第2のゲートウェイのアドレスを、第1のIPアドレスの次のホップアドレスとしてメモリに記憶された転送テーブルに書き込むステップ。
例えば、プロセッサ501は、NPおよびCPUを含んでもよい。NPはバスを使用してCPUと通信する。NPは、転送プレーン動作を実行するように構成され、かつCPUは、制御プレーン動作を実行するように構成される。特に、NPは、ネットワークインターフェース503を使用して第1のパケットを受信し、かつ第1のパケット内のIPアドレスの次のホップを求めて、メモリ502に記憶された転送テーブルを検索する。NPが、第1のパケット内のIPアドレスの次のホップ検索し、該検索が失敗した後、NPはバスを使用してIPアドレスをCPUに送信する。特に、NPが次ホップを検索するとき、1つの可能な方法は、メモリがRAMである場合、NPはメモリ内の転送テーブルに関する情報を読み出し、かつ第1のIPアドレスの次のホップを検索してもよい。別の可能な方法は、メモリがCAMである場合、NPは第1のIPアドレスをメモリに送信し、かつ第1のIPアドレスに一致するエントリを求めて転送テーブルを検索するようメモリに指示し、ここで第1のIPアドレスの次のホップは、エントリに記憶されている。メモリは、検索結果をNPに送信する。次のホップを検索し、該検索が失敗することは、NPが、転送テーブル内に、第1のIPアドレスに一致するエントリを発見しないことを意味してもよい。次のホップを検索し、該検索が失敗することは、メモリが検索失敗の結果をNPに送信することを意味してもよい。例えば、転送テーブルは汎用エントリを含み、かつ第1のIPアドレスが転送テーブル内のエントリと一致しないとき、メモリは検索の結果としてNPに汎用エントリを送信する。CPUは、第2のパケットを生成し、かつネットワークインターフェース503を使用して、第2のパケットを少なくとも1つのゲートウェイに送信する。さらに、CPUは、ネットワークインターフェース503を使用して、第2のゲートウェイから第3のパケットを受信し、かつ第1のIPアドレスの次のホップアドレスとしての第2のゲートウェイのアドレスを使用する。CPUは、バスを使用して、第1のIPアドレスと、第1のIPアドレスの次のホップアドレスとをNPに送信する。NPは、第1のIPアドレスと、第1のIPアドレスの次のホップアドレスとをメモリ501に記憶された転送テーブルに書き込む。
任意選択で、第1のパケット内のIPアドレスの次のホップを求めてメモリ502に記憶された転送テーブルを検索するステップの前に、プロセッサ501は、以下のステップ、すなわち、第1のパケットを受信するポートを判定するステップと、ポートからVNIへのマッピングに基づいて仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIを判定するステップと、VNIから転送テーブルへのマッピングに基づいて転送テーブルを判定するステップとをさらに実行する。例えば、これらのステップは、NPによって実行されてもよい。バスを使用してIPアドレスをCPUに送信するとき、NPはVNIをCPUにさらに送信する。
任意選択で、第2のパケットはVNIをさらに搬送する。任意選択で、プロセッサ501が、ネットワークインターフェース503を使用して、第2のパケットを少なくとも1つのゲートウェイに送信する前に、プロセッサ501は、以下のステップ、すなわち、VNIを有するゲートウェイを求めて、複数のVNIから複数のゲートウェイへのマッピングテーブルを検索するステップと、検索の結果に基づいて少なくとも1つのゲートウェイを判定するステップとをさらに実行する。例えば、これらのステップは、CPUによって実行されてもよい。複数のVNIから複数のゲートウェイへのマッピングテーブルは、CPUの内部メモリに記憶されてもよい。
第1のパケットはデータパケットであり、第1のIPアドレスは、第1のパケットの宛先IPアドレスであり、かつプロセッサは、以下のステップ、すなわち、第1のパケットにVXLANカプセル化を実行し、第3のパケットを取得するステップと、ネットワークインターフェースを使用して、第3のパケットを送信するステップとをさらに実行する。第3のパケットのVXLANヘッダにおけるVNIフィールドの値はVNIであり、かつ第3のパケットの外部IPヘッダの宛先IPアドレスは、第2のゲートウェイのIPアドレスである。例えば、これらのステップは、NPによって実行されてもよい。
任意選択で、第1のパケットは、アドレス解決プロトコルARPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットIPアドレスTPAである。あるいは、第1のパケットは、近隣探索プロトコルNDPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットアドレスである。
任意選択で、プロセッサ501は、以下のステップ、すなわち、ネットワークインターフェース503を使用して、第4のパケットを第3のゲートウェイから受信するステップであって、第4のパケットは第2のIPアドレスを搬送する、ステップと、第2のIPアドレスに対応するMACアドレスを取得するステップと、ネットワークインターフェースを使用して、第5のパケットを第3のゲートウェイに送信するステップであって、第5のパケットは、第3のゲートウェイに、第2のIPアドレスの次のホップアドレスとして第1のゲートウェイのアドレスを使用するよう指示するために使用される、ステップとをさらに実行する。例えば、これらのステップは、CPUによって実行されてもよい。
任意選択で、第4のパケットは、仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送する。プロセッサ501が第2のIPアドレスに対応するMACアドレスを取得することは、プロセッサ501によって、VNIに対応するVXLANセグメントにおいて、第2のIPアドレスに対応するMACアドレスを取得するステップを特に含む。例えば、このステップは、CPUによって実行されてもよい。
この実施形態に提供される第1のゲートウェイ500は、図2および図3における実施形態の方法に適用され、第1のゲートウェイの機能を実装してもよい。第1のゲートウェイによって実装され得る他の追加機能および別のゲートウェイとの相互作用プロセスについては、方法の実施形態における第1のゲートウェイに関する説明を参照されたく、詳細はここでは再度説明しない。
図5は、本願の実施形態による別の第1のゲートウェイの概略構成図である。図5に示されるように、第1のゲートウェイ600は、第1の受信ユニット601と、記憶ユニット602と、検索ユニット603と、送信ユニット604と、第2の受信ユニット605と、処理ユニット606とを含む。
第1の受信ユニット601は、第1のパケットを受信するように構成され、第1のパケットは第1のインターネットプロトコルIPアドレスを含む。
記憶ユニット602は、転送テーブルを記憶するように構成される。
検索ユニット603は、第1の受信ユニット601によって受信された第1のパケットを取得し、かつ第1のIPアドレスの次のホップを求めて、記憶ユニット602に記憶された転送テーブルを検索するように構成され、該検索は失敗する。
送信ユニット604は、検索ユニット603が第1のIPアドレスの次のホップを検索し、該検索が失敗した後、第2のパケットを少なくとも1つのゲートウェイに送信するように構成され、第2のパケットは第1のIPアドレスを搬送し、かつ第2のパケットは、第2のパケットを受信するゲートウェイに、第1のIPアドレスによって識別されるホストが第2のパケットを受信するゲートウェイを使用してネットワークにアクセスするか否かを判定するよう指示するために使用される。
第2の受信ユニット605は、第3のパケットを第2のゲートウェイから受信するように構成され、第2のゲートウェイは少なくとも1つのゲートウェイの1つであり、かつ第3のパケットは、第1のIPアドレスによって識別されるホストに、第2のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される。
処理ユニットは、第2の受信ユニットによって受信された第3のパケットを取得し、かつ第3のパケットに基づいて第1のIPアドレスの次のホップアドレスとして、第2のゲートウェイのアドレスを、記憶ユニットに記憶された転送テーブルに書き込むように構成される。
任意選択で、第2のパケットは、第1のパケットの第1の仮想拡張可能ローカルエリアネットワークVXLANネットワーク識別子VNIをさらに搬送し、かつ検索ユニット603は、送信ユニットが第2のパケットを少なくとも1つのゲートウェイに送信する前に、第1のパケットの第1のVNIを判定するようにさらに構成される。
任意選択で、第1のパケットは、アドレス解決プロトコルARPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットIPアドレスTPAである。あるいは、第1のパケットは、近隣探索プロトコルNDPパケットであり、かつ第1のIPアドレスは第1のパケットのターゲットアドレスである。
任意選択で、第2の受信ユニット605は、第4のパケットを第3のゲートウェイから受信するようにさらに構成され、第4のパケットは第2のIPアドレスを搬送する。検索ユニット603は、第2の受信ユニット605によって受信された第4のパケットを取得し、かつ第4のパケットにおいて搬送された第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するようにさらに構成される。送信ユニット604は、第5のパケットを第3のゲートウェイに送信するようにさらに構成され、第5のパケットは、第2のIPアドレスによって識別されるホストに、第1のゲートウェイを使用してネットワークにアクセスするよう指示するために使用される。
任意選択で、第4のパケットは第2のVNIをさらに搬送する。検索ユニット603は、第2のIPアドレスによって識別されるホストのMACアドレスが取得可能であると判定するように構成され、かつ第2のVNIによって識別されるVXLANセグメント内の第2のIPアドレスによって識別されるホストのMACアドレスを取得するよう試みるように特に構成される。
図5に示された第1のゲートウェイ600と、図4に示された第1のゲートウェイ500は、同一の装置であってもよい。例えば、両方とも図2および図3に示された方法における第1のゲートウェイである。図4は、物理的に第1のゲートウェイに含まれるコンテンツを示し、かつ図5は、論理的に第1のゲートウェイに含まれるコンテンツを示していると考えられてもよい。任意選択で、図5に示された第1の受信ユニット601と、第2の受信ユニット602と、送信ユニット604とが、図4に示されるネットワークインターフェース503を使用して、実装されてもよい。図5に示された検索ユニット603および処理ユニット606が、図4に示されたプロセッサ501を使用して実装されてもよい。図5に示された記憶ユニット602が、図4に示されたメモリ502を使用して実装されてもよい。
本明細書の実施形態はすべて、実施形態における同一または類似の部分については漸進的に記載され、これらの実施形態を参照し、かつ各実施形態は他の実施形態との差異に焦点を当てている。特に、システムの実施形態は基本的に方法の実施形態に類似しているので、簡単に説明されている。関連する部分については、方法の実施形態における部分的な説明を参照されたい。
明らかに、当業者は、本願の範囲から逸脱することなく、本願に対して様々な変更および変形を行うことができる。本願は、添付の特許請求の範囲およびそれらに相当する技術によって定義される保護の範囲内にある限り、提供される本願のこれらの変更および変形を包含することを意図している。
101 第1のゲートウェイ
102 第2のゲートウェイ
103 第3のゲートウェイ
104 ルータ
105 ルータ
106 ホスト
107 ホスト
500 第1のゲートウェイ
501 プロセッサ
502 メモリ
503 ネットワークインターフェース
600 第1のゲートウェイ
601 第1の受信ユニット
602 記憶ユニット
603 検索ユニット
604 送信ユニット
605 第2の受信ユニット
606 処理ユニット