以下、発明を実施するための形態を、図面に基づいて説明する。
(1)通信システムの構成
図1を参照して、本実施形態の通信システム1の構成について説明する。図1は、本実施形態の通信システム1の構成の一例を示すブロック図である。
図1に示すように、本実施形態の通信システム1は、DHCP(Dynamic Host Configuration Protocol)サーバ10と、複数のルータ20と、HGW(Home Gate Way)30とを備えている。尚、以下の説明では、本実施形態の通信システム1がIPv6(Internet Protocol version 6)に準拠している例について説明を進める。但し、本実施形態の通信システム1がIPv6以外のその他のプロトコル又は規格(例えば、IPv4(Internet Protocol version 4)等)に準拠していてもよい。
DHCPサーバ10は、HGW30からのアドレス割り当ての要求に応じて、HGW30に対してアドレスを割り当てる。本実施形態では、DHCPサーバ10は、HGW30に対して、IPv6のプレフィックス(IPv6-Prefixであり、いわゆる、ネットワークアドレス)を割り当てる。
複数のルータ20の夫々は、レイヤ3ネットワーク間でのパケットの転送(つまり、ルーティング)を行う機器である。本実施形態では、複数のルータ20は、冗長構成を採用している。具体的には、複数のルータ20の夫々は、VRRP(Virtual Router Redundancy Protocol)機能を実装している。VRRP機能により、複数のルータ20の夫々は、一つの仮想的なMAC(Media Access Control)アドレス及び一つの仮想的なIPv6アドレスを共有する。また、VRRP機能により、複数のルータ20の夫々は、管理者等によって予め設定された優先度又は複数のルータ20の夫々の装置ID等に応じて定まる優先度に従って、マスタとして動作するか又はバックアップとして動作するかを決定する。その結果、複数のルータ20のうちのいずれか一つが、実際にルーティングを行うマスタとなる。複数のルータ20のうちのその他のルータ20は、実際にルーティングを行わないバックアップとなる。従って、DHCPサーバ10とHGW30との間の通信は、複数のルータ20のうちのマスタとなる1つのルータ20を介して行われる。以降、マスタとなるルータ20を、適宜“マスタルータ20”と称する。同様に、バックアップとなるルータ20を、適宜“バックアップルータ20”と称する。
本実施形態では、複数のルータ20のうちのマスタルータ20は、HGW30とDHCPサーバ10との間でやりとりされるDHCPメッセージをリレーする。つまり、マスタルータ20は、DHCPリレーを行う。具体的には、マスタルータ20は、HGW30から送信されるDHCPメッセージ(例えば、後述のSolicitメッセージや、Requestメッセージ)を受信する。マスタルータ20は、受信したDHCPメッセージを新たなIPv6パケットにカプセリングすることで得られる新たなDHCPメッセージ(例えば、後述のRelay−Forwardメッセージ)を、DHCPサーバ10に送信する。同様に、マスタルータ20は、DHCPサーバ10から送信されるDHCPメッセージ(例えば、後述のRelay−Replyメッセージ)を受信する。マスタルータ20は、受信したDHCPメッセージにカプセリングされたDHCPメッセージ(例えば、後述のAdvertiseメッセージや、Replyメッセージ)をデカプセリングした後、当該デカプセリングしたDHCPメッセージを、HGW30に送信する。
尚、複数のルータ20の夫々とDHCPサーバ10(或いは、DHCPサーバ10が接続されているレイヤ3ネットワーク)との間の通信経路上には、他のルータ40が配置さされていてもよい。或いは、複数のルータ20の夫々とDHCPサーバ10(或いは、DHCPサーバ10が接続されているレイヤ3ネットワーク)との間の通信経路上には、他のルータ40が配置されていなくともよい。つまり、複数のルータ20の夫々とDHCPサーバ10とが同一のレイヤ3ネットワーク上に配置されていてもよい。この場合、複数のルータ20の夫々とDHCPサーバ10とは、例えばスイッチングハブ等のレイヤ2スイッチを介して接続される。また、複数のルータ20の夫々は、スイッチングハブ50を介してHGW30と接続されている。
HGW30は、WAN(Wide Area Network)側に接続されたスイッチングハブ50及び複数のルータ20(より具体的には、マスタルータ20)を介して、DHCPサーバ10に対して、IPv6のプレフィックスの割り当てを要求する。HGW30は、要求の結果、DHCPサーバ10から割り当てられたIPv6のプレフィックス(つまり、ネットワークアドレス)を取得する。HGW30は、HGW30の配下に存在する(具体的には、HGW30のLAN(Local Area Network)側に接続されているレイヤ2ネットワーク上に存在する)クライアントに対して、DHCPサーバ10から割り当てられたプレフィックスに属するIPv6アドレスを割り当てる。
尚、本実施形態の通信システム1は、VLAN(Virtual LAN)構成を採用していてもよい。例えば、HGW30とDHCPサーバ10との間には、複数のVLANが設定されていてもよい。この場合、複数のVLANの夫々毎に、複数のルータ20の夫々の優先度が変えられていてもよいし、同一にされていてもよい。例えば、HGW30とDHCPサーバ10との間には、3つのVLAN(VLAN#1からVLAN#3)が設定されていてもよい。VLAN#1では、例えば、初期状態では、複数のルータ20のうち図1中の最も左側に図示されているルータ20がマスタとして動作し且つその他のルータ20がバックアップとして動作するように優先度が設定されていてもよい。VLAN#2では、例えば、初期状態では、複数のルータ20のうち図1中の真ん中に図示されているルータ20がマスタとして動作し且つその他のルータ20がバックアップとして動作するように優先度が設定されていてもよい。VLAN#3では、例えば、初期状態では、複数のルータ20のうち図1中の一番右側に図示されているルータ20がマスタとして動作し且つその他のルータ20がバックアップとして動作するように優先度が設定されていてもよい。
(2)DHCPサーバの構成
図2を参照して、本実施形態のDHCPサーバ10の構成について説明する。図2は、本実施形態のDHCPサーバ10の構成を示すブロック図である。
図2に示すように、DHCPサーバ10は、CPU(Central Processing Unit)11と、メモリ12と、記憶装置13と、回線インタフェース部14と、データバス15とを備えている。
CPU11は、所定のファームウェア等に基づいて動作する制御回路であって、DHCPサーバ10全体の動作を制御する。
CPU11は、その内部に実現される物理的な、論理的な又は機能的な処理ブロックとして、DHCPプロトコル処理部111と、冗長ルータアドレスオプション処理部112とを備える。
DHCPプロトコル処理部111は、HGW30に対するIPv6のプレフィックスの割り当てを行う。尚、本実施形態では、DHCPプロトコル処理部111は、DHCP−PD(Dynamic Host Configuration Protocol Prefix Delegation)に従って、HGW30との間でDHCPメッセージの送受信を行うことで、HGW30に対するIPv6アドレスのプレフィックスの割り当てを行う。但し、DHCPプロトコル処理部111は、その他のプロトコルに従って、HGW30に対する任意のアドレスの割り当てを行ってもよい。
冗長ルータアドレスオプション処理部112は、マスタルータ20からDHCPサーバ10に対して送信される、バックアップルータ20のアドレス(より具体的には、DHCPリレーを行うときに使用される送信元アドレス)を示す冗長ルータアドレスオプションを処理する。尚、本実施形態では、後に詳述するように、冗長ルータアドレスオプションは、DHCPメッセージのうちのRequestメッセージをマスタルータ20がDHCPサーバ10に送信する(言い換えれば、中継する)際に、合わせて送信される。冗長ルータアドレスオプション処理部112は、受信した冗長ルータアドレスオプションに含まれるバックアップルータ20のアドレスを、冗長ルータアドレステーブル122としてメモリ12内で管理する。
メモリ12は、DHCPサーバ10内部で使用する情報を一時的に格納したり、DHCPサーバ10としての動作を行うためのプログラム(即ち、ファームウェア)を格納したりする。
メモリ12は、その内部に、IPv6プレフィックスプールテーブル121と、冗長ルータアドレステーブル122とを備える。
IPv6プレフィックスプールテーブル121は、DHCPサーバ10が割り当てを管理している(つまり、DHCPサーバ10が割り当てることが可能な)プレフィックスを示すと共に、その割り当て状況を管理するためのテーブルである。尚、IPv6プレフィックステーブル121のデータ構造の詳細については後の詳細に説明するため、ここでの説明は省略する(図11参照)。
冗長ルータアドレステーブル122は、冗長ルータアドレスオプションに含まれるアドレス(例えば、バックアップルータ20のアドレス)を管理するためのテーブルである。尚、冗長ルータアドレステーブル122のデータ構造の詳細については後の詳細に説明するため、ここでの説明は省略する(図10参照)。
記憶装置13は、DHCPサーバ10が使用する各種情報を格納する記録媒体である。記憶装置13として、例えば、HDD(Hard Disk Drive)や、フラッシュメモリ等の半導体メモリや、CD及びDVD等の光ディスク等が一例としてあげられる。或いは、DHCPサーバ10は、記憶装置13を備えていなくともよい。
回線インタフェース部14は、DHCPサーバ10の外部の装置(例えば、ルータ20や、HGW30や、他のルータ40等)との間の情報の送受信を制御する。
データバス15は、CPU11と、メモリ12と、記憶装置13と、回線インタフェース部14との間の情報の伝送を行う。
(3)ルータの構成
図3を参照して、本実施形態のルータ20の構成について説明する。図3は、本実施形態のルータ20の構成を示すブロック図である。
図3に示すように、複数のルータ20の夫々は、CPU21と、メモリ22と、TCAM(Ternary Content Addressable Memory)23と、複数の回線インタフェース部24と、データバス25と、転送エンジン26とを備えている。
CPU21は、所定のファームウェア等に基づいて動作する制御回路であって、ルータ20全体の動作を制御する。
CPU21は、その内部に実現される物理的な、論理的な又は機能的な処理ブロックとして、DHCPリレー処理部211と、VRRP制御部212とを備える。
DHCPリレー処理部211は、DHCPサーバ10とHGW30との間のDHCPメッセージの送受信をリレーする。
本実施形態では、DHCPリレー処理部211は、ルータ20がマスタとして動作している場合には、バックアップとして動作している他のルータ20のアドレスを、冗長アドレスオプションとして、DHCPサーバ10に通知する。バックアップとして動作している他のルータ20のアドレスの通知は、DHCPリレー処理部211の内部に実現される物理的な、論理的な又は機能的な処理ブロックとしての冗長ルータアドレス制御部2111によって行われる。
本実施形態では、DHCPリレー処理部211は、DHCPサーバ10とHGW30との間で送受信されるDHCPメッセージ(つまり、DHCP処理部211がリレーしているDHCPメッセージ)の内部を読み取ることで、HGW30に割り当てられるプレフィックスを認識する。認識されたプレフィックスは、DHCPリレー処理部211の内部に実現される物理的な、論理的な又は機能的な処理ブロックとしてのルート登録部2112によって、メモリ22内のルーティングテーブル221に、HGW30に対応するスタティックルートとして登録される。
VRRP制御部212は、ルータ20の冗長構成を管理及び制御する。例えば、VRRP制御部212は、冗長構成を有する複数のルータ20が共有する仮想的なIPアドレスと仮想的なMACアドレスを管理する。本実施形態の通信システム1がVLAN構成を採用している場合には、VRRP制御部212は、冗長構成を有する複数のルータ20が共有する仮想的なIPアドレスと仮想的なMACアドレスを、VLAN毎に管理してもよい。
メモリ22は、ルータ20内部で使用する情報を一時的に格納したり、ルータ20としての動作を行うためのプログラム(即ち、ファームウェア)を格納したりする。
メモリ22は、その内部に、ルーティングテーブル221と、冗長ルータソースアドレステーブル222とを備える。
ルーティングテーブル221は、ルータ20がルーティング処理を行う際に参照するべきルーティング情報を格納するテーブルである。ルーティングテーブル221内には、DHCPリレー処理部211がDHCPメッセージの内部を読み取ることで認識するHGW30のプレフィックスが、スタティックルートとして格納される。
冗長ルータソースアドレステーブル222は、VRRP構成を有する他のルータ20のアドレスを格納するテーブルである。言い換えれば、冗長ルータソースアドレステーブル222は、当該冗長ルータソースアドレステーブル222を備えるルータ20自身がマスタルータ20となる場合にバックアップルータ20となる他のルータ20のアドレスを格納するテーブルである。上述した冗長ルータアドレス制御部2111は、冗長ルータソースアドレステーブル222を参照することで、バックアップルータ20のアドレスを、冗長ルータアドレスオプションとして、DHCPサーバ10に通知する。尚、冗長ルータソースアドレステーブル222のデータ構造の詳細については後の詳細に説明するため、ここでの説明は省略する(図8参照)。
TCAM23は、ルーティングテーブル221に格納されているルーティング情報が、ルータ20による実際のルーティング時に読みだされるメモリである。従って、ルータ20は、ルーティングを行う際には、TCAM23に読みだされているルーティング情報を検索することで、実際のルーティング先を決定する。
回線インタフェース部24は、ルータ20の外部の装置(例えば、DHCPサーバ10や、HGW30や、他のルータ40や、スイッチングハブ50等)との間の情報の送受信を制御する。
データバス25は、CPU21と、メモリ22と、TCAM23と、回線インタフェース部24と、転送エンジン26との間の情報の伝送を行う。
転送エンジン26は、ある回線インタフェース部24から入力してくるデータ(例えば、パケット)を、TCAM23に読みだされているルーティング情報を検索することで決定されるルーティング先に対応する他の回線インタフェース部24に対して転送する。その結果、転送されたデータは、他の回線インタフェース部24からルーティング先に向かって出力される。尚、データの転送動作は、転送エンジン26の内部に実現される物理的な、論理的な又は機能的な処理ブロックとしてのパケット転送処理部261によって行われる。
(4)HGWの構成
図4を参照して、本実施形態のHGW30の構成について説明する。図4は、本実施形態のHGW30の構成を示すブロック図である。
図4に示すように、HGW30は、CPU31と、メモリ32と、LAN側回線インタフェース部34_1と、WAN側回線インタフェース部34_2と、転送エンジン36とを備えている。
CPU31は、所定のファームウェア等に基づいて動作する制御回路であって、HGW30全体の動作を制御する。
CPU31は、その内部に実現される物理的な、論理的な又は機能的な処理ブロックとして、DHCPプロトコル処理部311を備える。
DHCPプロトコル処理部311は、DHCPサーバ10に対して、IPv6のプレフィックスの割り当てを要求する。尚、本実施形態では、DHCPプロトコル処理部311は、DHCP−PDに従って、DHCPサーバ10との間でDHCPメッセージの送受信を行うことで、DHCPサーバ10に対して、プレフィックスの割り当てを要求する。
メモリ32は、HGW30内部で使用する情報を一時的に格納したり、HGW30としての動作を行うためのプログラム(即ち、ファームウェア)を格納したりする。
メモリ32は、その内部に、IPv6プレフィックス格納部321を備える。
IPv6プレフィックス格納部321は、DHCPサーバ10から割り当てられたIPv6のプレフィックスを格納すると共に、その使用状況(つまり、HGW30の配下のクライアントへのアドレスの割り当て状況)を管理するテーブルである。
LAN側回線インタフェース部34_1は、HGW30のLAN側に位置するクライアント(つまり、HGW30の配下のクライアント)との間の情報の送受信を制御する。
WAN側回線インタフェース部34_2は、HGW30のWAN側に位置する複数のルータ20(或いは、DHCPサーバ10や他のルータ40)との間の情報の送受信を制御する。
データバス35は、CPU31と、メモリ32と、LAN側回線インタフェース部34_1と、WAN側回線インタフェース部34_2と、転送エンジン36との間の情報の伝送を行う。
転送エンジン36は、LAN側回線インタフェース部34_1から入力してくるデータ(例えば、パケット)を、WAN側回線インタフェース部34_2に対して転送する。或いは、転送エンジン36は、WAN側回線インタフェース部34_2から入力してくるデータ(例えば、パケット)を、LAN側回線インタフェース部34_1に対して転送する。或いは、転送エンジン36は、LAN側回線インタフェース部34_1から入力してくるデータ(例えば、パケット)を、LAN側回線インタフェース部34_1に対して転送する。尚、データの転送動作は、転送エンジン36の内部に実現される物理的な、論理的な又は機能的な処理ブロックとしてのパケット転送処理部361によって行われる。
(5)通信システムで行われる処理
図5及び図6を参照して、本実施形態の通信システム1における処理の流れについて説明する。図5は、本実施形態の通信システム1における処理の流れの一部を示すフローチャートである。図6は、本実施形態の通信システム1における処理の流れの他の一部を示すフローチャートである。
図5に示すように、マスタルータ20が備えるVRRP制御部212は、自身のアドレス(具体的には、DHCPリレーを行う際に使用される送信元アドレス)を、冗長構成を有する他のルータ20(つまり、バックアップルータ20)に対して通知する(ステップS201)。マスタルータ20のVRRP制御部212は、ルータ広告(RA:Router Advertisement)メッセージを他のルータ20に向けて送信することで、自身のアドレスを通知してもよい。或いは、マスタルータ20のVRRP制御部212は、その他の何らかのメッセージないしは制御信号を他のルータ20に向けて送信することで、自身のアドレスを通知してもよい。
図7を参照して、アドレスを通知するために用いられるルータ広告メッセージについて説明する。図7は、ルータ広告メッセージのフォーマットを示すデータ構造図である。
図7に示すように、ルータ広告メッセージは、IPv6ヘッダと、VRRPペイロードとを含む。VRRPペイロードは、バージョンを示すバージョンフィールドと、タイプを示すタイプフィールドと、冗長構成のIDを示すVRIDフィールドと、冗長構成における各ルータ20の優先度を示す優先度フィールドと、冗長構成で使用している仮想アドレスの数(図7では、n:但し、nは1以上の整数)を示す仮想アドレス数フィールドと、将来の拡張用のリザーブドフィールドと、ルータ広告メッセージの送信間隔を示す広告間隔フィールドと、ルータ広告メッセージのチェックサムを示すチェックサムフィールドと、使用している仮想アドレス#1から#nを示す仮想アドレスフィールドと、通知している他のルータ20のアドレスの数(図7では、m:但し、mは1以上の整数)を示す冗長ルータアドレス数フィールドと、通知している他のルータ20のアドレス#1から#mを示す冗長ルータアドレスフィールドとを含む。
再び図5において、その結果、バックアップルータ20が備えるVRRP制御部212は、マスタルータ20から送信されるルータ広告メッセージを受信する。その後、バックアップルータ20が備えるVRRP制御部212は、受信したルータ広告メッセージ中の冗長ルータアドレスフィールドを参照することで、マスタルータ20のアドレスを取得する。バックアップルータ20が備えるVRRP制御部212は、取得したマスタルータ20のアドレスを、バックアップルータ20が備える冗長ルータソースアドレステーブル222に登録する(ステップS252)。
図8を参照して、冗長ルータソースアドレステーブル222について説明する。図8は、冗長ルータソースアドレステーブル222のデータ構造を示すテーブル図である。
図8(a)に示すように、あるルータ20が備える冗長ルータソースアドレステーブル222は、VRRP構成を有する他のルータ20のアドレスを格納する。図8(a)に示す冗長ルータソースアドレステーブル222の例は、あるルータ20と共に冗長構成を有する他のルータ20が5つ存在し、且つそれらのアドレスが、「1111:2222::1」、「1111:3333::1」、「1111:4444::1」、「1111:5555::1」、及び「1111:6666::1」である例を示している。
尚、上述したように、本実施形態の通信システム1は、VLAN(Virtual LAN)構成を採用していてもよい。VLAN構成を採用する場合には、冗長ルータソースアドレステーブル222の形式を変えてもよい。
例えば、図8(b)に示すように、あるルータ20に複数のVLANが設定されている場合には、当該ルータ20が備える冗長ルータソースアドレステーブル222は、設定されたVLAN毎に、VRRP構成を有する他のルータ20のアドレスを格納してもよい。図8(b)に示す冗長ルータソースアドレステーブル222の例は、VLAN#1が設定されているあるルータ20と共にVLAN#1上で冗長構成を有する他のルータ20が5つ存在し、且つそれらのアドレスが、「1111:2222::1」、「1111:3333::1」、「1111:4444::1」、「1111:5555::1」、及び「1111:6666::1」である例を示している。同様に、図8(b)に示す冗長ルータソースアドレステーブル222の例は、VLAN#2が設定されているあるルータ20と共にVLAN#2上で冗長構成を有する他のルータ20が2つ存在し、且つそれらのアドレスが、「2222:2222::1」及び「2222:3333::1」である例を示している。同様に、図8(b)に示す冗長ルータソースアドレステーブル222の例は、VLAN#3が設定されているあるルータ20と共にVLAN#3上で冗長構成を有する他のルータ20が2つ存在し、且つそれらのアドレスが、「3333:2222::1」及び「3333:3333::1」である例を示している。
或いは、例えば、図8(c)に示すように、あるルータ20に複数のVLANが設定されている場合には、当該ルータ20が備える冗長ルータソースアドレステーブル222は、VRRP構成を有する他のルータ20のアドレスを、設定されているVLANに対する使用可否を示す情報と共に格納してもよい。図8(c)に示す冗長ルータソースアドレステーブル222の例は、VLAN#1からVLAN#4が設定されているあるルータ20と共にいずれかのVLAN上で冗長構成を有する他のルータ20が5つ存在し、且つそれらのアドレスが、「1111:2222::1」、「1111:3333::1」、「1111:4444::1」、「1111:5555::1」、及び「1111:6666::1」である例を示している。加えて、図8(c)に示す冗長ルータソースアドレステーブル222の例は、「1111:2222::1」というアドレスを有する他のルータ20は、VLAN#1、VLAN#2、VLAN#3及びVLAN#4上で、あるルータ20と冗長構成を有する例を示している。加えて、図8(c)に示す冗長ルータソースアドレステーブル222の例は、「1111:3333::1」というアドレスを有する他のルータ20は、VLAN#1、VLAN#2及びVLAN#3上で、あるルータ20と冗長構成を有する例を示している。加えて、図8(c)に示す冗長ルータソースアドレステーブル222の例は、「1111:4444::1」というアドレスを有する他のルータ20は、VLAN#1、VLAN#2及びVLAN#4上で、あるルータ20と冗長構成を有する例を示している。加えて、図8(c)に示す冗長ルータソースアドレステーブル222の例は、「1111:5555::1」というアドレスを有する他のルータ20は、VLAN#1及びVLAN#2上で、あるルータ20と冗長構成を有する例を示している。加えて、図8(c)に示す冗長ルータソースアドレステーブル222の例は、「1111:5555::1」というアドレスを有する他のルータ20は、VLAN#1及びVLAN#2上で、あるルータ20と冗長構成を有する例を示している。
尚、図8(a)から図8(c)に示す冗長ルータソースアドレステーブル222は一例であって、冗長ルータソースアドレステーブル222のデータ構造が図8(a)から図8(c)に示す例に限定されることはない。冗長ルータソースアドレステーブル222は、少なくとも冗長構成を有する他のルータ20のアドレスを何らかの形式で認識可能な形式であればよい。
再び図5において、マスタルータ20と同様に、バックアップルータ20が備えるVRRP制御部212もまた、自身のアドレスを、冗長構成を有する他のルータ20(つまり、マスタルータ20及び他のバックアップルータ20)に対して通知する(ステップS251)。バックアップルータ20のVRRP制御部212もまた、RAメッセージを他のルータ20に向けて送信することで、自身のアドレスを通知する。
その結果、マスタルータ20及び他のバックアップルータ20の夫々が備えるVRRP制御部212は、バックアップルータ20のアドレスを取得する。マスタルータ20及び他のバックアップルータ20が備えるVRRP制御部212は、取得したバックアップルータ20のアドレスを、マスタルータ20及び他のバックアップルータ20が備える冗長ルータソースアドレステーブル222に登録する(ステップS202及びステップS252)。
尚、上述の説明では、ルータ広告メッセージを送受信することで、あるルータ20のアドレスを、当該あるルータ20と共に冗長構成を有する他のルータ20に通知する動作について説明している。しかしながら、ルータ広告メッセージの送受信に加えて又は代えて、他の手法によって、あるルータ20のアドレスを、当該あるルータ20と共に冗長構成を有する他のルータ20に通知してもよい。或いは、ルータ広告メッセージの送受信に加えて又は代えて、他の手法によって、あるルータ20の冗長ルータソースアドレステーブル222に、当該あるルータ20と共に冗長構成を有する他のルータ20のアドレスを登録してもよい。例えば、ルータ20のオペレータが入力するコマンドによって(言い換えれば、オペレータの手作業によって)、あるルータ20の冗長ルータソースアドレステーブル222に、当該あるルータ20と共に冗長構成を有する他のルータ20のアドレスを登録してもよい。尚、オペレータは、例えば冗長構成を実現するVRRPの設定(例えば、ループバックインタフェースアドレスの使用可否の設定や、優先度の設定等)のためのコマンドを入力することで、複数のルータ20の冗長構成を設定している。このため、オペレータが冗長ルータソースアドレステーブル222への登録をオペレータが行ったとしても、作業負荷が大幅に増えることは殆ど又は全くない。
続いて、HGW30が備えるDHCPプロトコル処理部311は、プレフィックスの割り当てをDHCPサーバ10に対して要求するためのDHCPメッセージの一例であるSolicitメッセージを、VRRP構成を有する複数のルータ20に対して送信する(ステップS301)。ステップS301の動作は、例えばHGW30の電源がオンになったタイミング(或いは、HGW30が起動したタイミング)で行われる。尚、HGW30が備えるDHCPプロトコル処理部311は、例えば、リンクローカルマルチキャストアドレス(例えば、FF02::1:2)を宛先に指定した上で、Solicitメッセージを送信する。
続いて、マスタルータ20が備えるDHCPリレー処理部211は、HGW30から送信されたSolicitメッセージを受信する(ステップS203)。尚、バックアップルータ20は、Solicitメッセージを受信しなくともよいし、受信したとしても以下の処理を行わなくともよい。マスタルータ20が備えるDHCPリレー処理部211は、受信したSolicitメッセージを、DHCPメッセージの一例であるRelay−Forward(Solicit)メッセージにカプセリングする。マスタルータ20が備えるDHCPリレー処理部211は、SolicitメッセージがカプセリングされたRelay−Forward(Solicit)メッセージを、DHCPサーバ10に対して送信する(ステップS204)。
続いて、DHCPサーバ10が備えるDHCPプロトコル処理部111は、マスタルータ20から送信されるRelay−Forward(Solicit)メッセージを受信する(ステップS101)。DHCPサーバ10が備えるDHCPプロトコル処理部111は、Relay−Forward(Solicit)メッセージをデカプセリングすることで、HGW30から送信されたSolicitメッセージを取得する。DHCPサーバ10が備えるDHCPプロトコル処理部111は、Solicitメッセージに対する応答として、DHCPメッセージの一例であるAdvertiseメッセージがカプセリングされた、DHCPメッセージの一例であるRelay−Reply(Advertise)メッセージを生成する。DHCPサーバ10が備えるDHCPプロトコル処理部111は、生成したRelay−Reply(Advertise)メッセージを、マスタルータ20に対して送信する(ステップS102)。
続いて、マスタルータ20が備えるDHCPリレー処理部211は、DHCPサーバ10から送信されたRelay−Reply(Advertise)メッセージを受信する(ステップS205)。マスタルータ20が備えるDHCPリレー処理部211は、受信したRelay−Reply(Advertise)メッセージをデカプセリングすることで、Advertisementメッセージを取得する。マスタルータ20が備えるDHCPリレー処理部211は、取得したAdvertiseメッセージを、HGW30に対して送信する(ステップS206)。
続いて、HGW30が備えるDHCPプロトコル処理部311は、マスタルータ20から送信されるAdvertiseメッセージを受信する(ステップS302)。HGW30が備えるDHCPプロトコル処理部311は、プレフィックスの割り当てをDHCPサーバ10に対して要求するための更なるDHCPメッセージの一例であるRequestメッセージを、VRRP構成を有する複数のルータ20に対して送信する(ステップS303)。
続いて、マスタルータ20が備えるDHCPリレー処理部211は、HGW30から送信されたRequestメッセージを受信する(ステップS207)。尚、バックアップルータ20は、Requestメッセージを受信しなくともよいし、受信したとしても以下の処理を行わなくともよい。
その後、マスタルータ20が備える冗長ルータアドレス制御部2111は、冗長ルータソースアドレステーブル222に他のルータ20(例えば、バックアップルータ20)のアドレスが登録されているか否かを判定する(ステップS208)。
ステップS208における判定の結果、冗長ルータソースアドレステーブル222に他のルータ20のアドレスが登録されていると判定される場合には(ステップS208:Yes)、マスタルータ20が備える冗長ルータアドレス制御部2111は、冗長ルータソースアドレステーブル222に登録されている他のルータ20のアドレスを、冗長ルータアドレスオプションとして付加するようにDHCPリレー処理部211の動作を制御する(ステップS208)。その結果、マスタルータ20が備えるDHCPリレー処理部211は、受信したRequestメッセージを、DHCPメッセージの一例であるRelay−Forward(Request)メッセージにカプセリングする。加えて、マスタルータ20が備えるDHCPリレー処理部211は、Relay−Forward(Request)メッセージ中に確保される冗長ルータアドレスオプションフィールドに、冗長ルータソースアドレステーブル222に登録されている他のルータ20のアドレス(つまり、冗長ルータアドレスオプション)を格納する。但し、マスタルータ20が備えるDHCPリレー処理部211は、Relay−Forward(Request)メッセージ中の任意のフィールドに、冗長ルータソースアドレステーブル222に登録されている他のルータ20のアドレスを格納してもよい。その結果、Requestメッセージがカプセリングされると共に冗長ルータソースアドレステーブル222に登録されている他のルータ20のアドレスが格納されたRelay−Forward(Request)メッセージが生成される。
図9を参照して、冗長ルータソースアドレステーブル222に登録されている他のルータ20のアドレスが冗長ルータアドレスオプションフィールドに格納されるReply−Forward(Request)メッセージのフォーマットについて説明する。図9は、Reply−Forward(Request)メッセージのフォーマットを示すデータ構造図である。
図9に示すように、Reply−Forward(Request)メッセージは、IPv6ヘッダと、宛先ポート及び送信元ポートを識別する情報を含むUDP(User Datagram Protocol)ヘッダと、DHCPv6ペイロードとを含んでいる。
DHCPv6ペイロードは、メッセージのタイプを示すメッセージタイプフィールドと、当該メッセージでリレーするべきRequestメッセージを格納するリレーメッセージフィールドと、当該メッセージが送信されるインタフェースを識別するインタフェースIDフィールドと、冗長ルータソースアドレステーブル222に登録されている他のルータ20のアドレスを示す冗長ルータアドレスオプションフィールドをと含んでいる。
尚、Reply−Forward(Request)メッセージのみならず、Reply−Forward(Solicit)メッセージや、Reply−Reply(Advertise)もまた、図9に示すReply−Forward(Request)メッセージと同様の又は類似のフォーマットを有していてもよい。
再び図5において、他方で、ステップS208における判定の結果、冗長ルータソースアドレステーブル222に他のルータ20のアドレスが登録されていないと判定される場合には(ステップS208:No)、マスタルータ20が備えるDHCPリレー処理部211は、受信したRequestメッセージを、Relay−Forward(Request)メッセージにカプセリングする。このとき、マスタルータ20が備えるDHCPリレー処理部211は、Relay−Forward(Request)メッセージ中に確保される冗長ルータアドレスオプションフィールドに何も格納しなくともよい。
その後、図6に示すように、マスタルータ20が備えるDHCPリレー処理部211は、RequestメッセージがカプセリングされたRelay−Forward(Request)メッセージを、DHCPサーバ10に対して送信する(ステップS210)。
続いて、DHCPサーバ10が備えるDHCPプロトコル処理部111は、マスタルータ20から送信されるRelay−Forward(Request)メッセージを受信する(ステップS103)。
その後、DHCPサーバ10が備える冗長ルータアドレスオプション処理部112は、Relay−Forward(Request)メッセージ中に、有効な冗長ルータアドレスオプションが存在するか否かを判定する(ステップS104)。言い換えれば、DHCPサーバ10が備える冗長ルータアドレスオプション処理部112は、Relay−Forward(Request)メッセージ中の冗長ルータアドレスオプションフィールドに、アドレスが格納されているかを判定する。冗長ルータアドレスオプションフィールドにアドレスが格納されている場合には、有効な冗長ルータアドレスオプションが存在すると判定されてもよい。他方で、冗長ルータアドレスオプションフィールドにアドレスが格納されていない場合には、有効な冗長ルータアドレスオプションが存在しないと判定されてもよい。
ステップS104における判定の結果、有効な冗長ルータアドレスオプションが存在すると判定される場合には(ステップS104:Yes)、DHCPサーバ10が備える冗長ルータアドレスオプション処理部112は、冗長ルータアドレスオプションフィールドに格納されているアドレスを、冗長ルータアドレステーブル122に格納する(ステップS105)。
図10を参照して、冗長ルータアドレステーブル122のデータ構造について説明する。図10は、冗長ルータアドレステーブル122のデータ構造を示すテーブル図である。
図10に示すように、冗長ルータアドレステーブル122は、シリアル番号と、ポインタと、冗長ルータアドレスとを含むレコードを一又は複数備えている。
シリアル番号は、各レコードを識別するための識別情報である。
ポインタは、後述するIPv6プレフィックスプールテーブル121内のレコードとの対応付けを示すポインタである。つまり、ポインタは、後述するIPv6プレフィックスプールテーブル121内の特定のプレフィックスと冗長ルータアドレスの対応付けを示すポインタである。更に言い換えれば、ポインタは、冗長ルータアドレステーブル122に格納された冗長ルータアドレスと、当該冗長ルータアドレスを含むRelay−Forward(Request)メッセージに応答して割り当てられるプレフィックスとの対応付けを示すポインタである。
冗長ルータアドレスは、Relay−Forward(Request)メッセージ中の冗長ルータアドレスオプションフィールドに格納されているアドレスを示す。
図10に示す冗長ルータアドレステーブル122の例は、シリアル番号が「1」であり、ポインタが「1」であり、且つ冗長ルータアドレスが「1111:2222::1」、「1111:3333::1」、「1111:4444::1」、「1111:5555::1」、及び「1111:6666::1」となるレコードを含んでいる。同様に、図10に示す冗長ルータアドレステーブル122の例は、シリアル番号が「2」であり、ポインタが「2」であり、且つ冗長ルータアドレスが「2222:2222::1」及び「2222:3333::1」となるレコードを含んでいる。同様に、図10に示す冗長ルータアドレステーブル122の例は、シリアル番号が「3」であり、ポインタが「3」であり、且つ冗長ルータアドレスが「3333:2222::1」及び「2222:3333::1」となるレコードを含んでいる。
再び図6において、他方で、ステップS104における判定の結果、有効な冗長ルータアドレスオプションが存在しないと判定される場合には(ステップS104:Yes)、DHCPサーバ10が備える冗長ルータアドレスオプション処理部112は、ステップS105の処理を行わなくともよい。
その後、DHCPサーバ10が備えるDHCPプロトコル処理部111は、Relay−Forward(Request)メッセージをデカプセリングすることで、HGW30から送信されたRequestメッセージを取得する。DHCPサーバ10が備えるDHCPプロトコル処理部111は、Requestメッセージに対する応答として、割り当てるプレフィックスを指定するDHCPメッセージの一例であるReplyメッセージがカプセリングされた、DHCPメッセージの一例であるRelay−Reply(Reply)メッセージを生成する。DHCPプロトコル処理部111は、IPv6プレフィックスプールテーブル121を参照することで、HGW30に割り当てるプレフィックスを決定してもよい。より具体的には、例えば、DHCPプロトコル処理部111は、IPv6プレフィックスプールテーブル121を参照することで、自身が管理しているプレフィックスのうち未割り当てのプレフィックスを特定すると共に、特定した未割り当てのプレフィックスのうちの少なくとも一つを、HGW30に割り当てるプレフィックスとして決定してもよい。
図11を参照して、HGW30に割り当てるプレフィックスを決定する際に参照されるIPv6プレフィックスプールテーブル121のデータ構造について説明する。図11は、IPv6プレフィックスプールテーブル121のデータ構造を示すテーブル図である。
図11に示すように、IPv6プレフィックステーブル121は、シリアル番号と、IPv6プレフィックスプールと、割当状況と、送信元アドレスと、インタフェースIDと、ポインタとを含むレコードを一又は複数備えている。
シリアル番号は、各レコードを識別するための識別情報である。
IPv6プレフィックスプールは、DHCPサーバ10が割り当てを管理しているIPv6のプレフィックスを示す。
割当状況は、IPv6プレフィックスプールが示す各プレフィックスが割り当て済みのプレフィックスであるのか又は未割り当てのプレフィックスであるのかを示す。
送信元アドレスは、割り当て済みのプレフィックス毎に、当該プレフィックスの割り当てを要求してきた(つまり、Relay−Forward(Request)メッセージを送信してきた)ルータ20のアドレスを示す。
インタフェースIDは、割り当て済みのプレフィックス毎に、当該プレフィックスの割り当てを要求してきた(つまり、Relay−Forward(Request)メッセージを送信してきた)ルータ20の回線インタフェース部24を示す。
ポインタは、上述する冗長ルータアドレステーブル122内のレコードとの対応付けを示すポインタである。
図11に示すIPv6プレフィックスプールテーブル121の例は、シリアル番号が「1」であり、IPv6プレフィックスが「9999:0:0:1::/64」であり、割当状況が「割り当て済み」であり、送信元アドレスが「1111:1111::1」であり、インタフェースIDが「GE_1/1.10」であり、且つポインタが「1」であるレコードを含んでいる。同様に、図11に示すIPv6プレフィックスプールテーブル122の例は、シリアル番号が「2」であり、IPv6プレフィックスが「9999:0:0:2::/64」であり、割当状況が「割り当て済み」であり、送信元アドレスが「1111:1111::1」であり、インタフェースIDが「GE_1/1.20」であり、且つポインタが「2」であるレコードを含んでいる。同様に、図11に示すIPv6プレフィックスプールテーブル122の例は、シリアル番号が「3」であり、IPv6プレフィックスが「9999:0:0:3::/64」であり、割当状況が「割り当て済み」であり、送信元アドレスが「2222:1111::1」であり、インタフェースIDが「GE_1/1.10」であり、且つポインタが「3」であるレコードを含んでいる。
再び図6において、DHCPサーバ10が備えるDHCPプロトコル処理部111は、生成したRelay−Reply(Reply)メッセージを、マスタルータ20に対して送信する(ステップS106)。つまり、DHCPサーバ10が備えるDHCPプロトコル処理部111は、生成したRelay−Reply(Reply)メッセージを、マスタルータ20のアドレスを宛先に指定して送信する(ステップS108)。
その結果、マスタルータ20が備えるDHCPリレー処理部211は、DHCPサーバ10から送信されたRelay−Reply(Reply)メッセージを受信する(ステップS211)。マスタルータ20が備えるルート登録部212は、ステップS211で受信したRelay−Reply(Reply)メッセージを解析することで、DHCPサーバ10からHGW30に割り当てられたプレフィックスを認識する。その後、マスタルータ20が備えるルート登録部212は、認識したプレフィックスを、HGW30までの経路を示すスタティックルートとして、ルーティングテーブル221に登録する(ステップS212)。より具体的には、マスタルータ20が備えるルート登録部212は、認識したプレフィックスのネクストホップをHGW30に指定するスタティックルートを、ルーティングテーブル221に登録する(ステップS212)。
また、マスタルータ20が備えるDHCPリレー処理部211は、受信したRelay−Reply(Reply)メッセージをデカプセリングすることで、Replyメッセージを取得する。マスタルータ20が備えるDHCPリレー処理部211は、取得したReplyメッセージを、HGW30に対して送信する(ステップS213)。
その結果、HGW30が備えるDHCPプロトコル処理部311は、マスタルータ20から送信されるReplyメッセージを受信する(ステップS304)。その後、HGW30が備えるDHCPプロトコル処理部311は、Replyメッセージが示すプレフィックスを、LAN側回線インタフェース部34_1に割り当てる(ステップS305)。
一方で、本実施形態では更に、DHCPサーバ10が備える冗長ルータアドレスオプション処理部112は、冗長ルータアドレステーブル122にアドレスが格納されているか否かを判定する(ステップS107)。より具体的には、今回の一連の処理で割り当てた(つまり、ステップS106で送信したReplyメッセージによって割り当てた)プレフィックスに対してポインタによって相互に対応付けられた冗長ルータアドレスが、冗長ルータアドレステーブル122に含まれているか否かを判定する。
ステップS107における判定の結果、冗長ルータアドレステーブル122にアドレスが格納されていないと判定される場合には(ステップS107:No)、DHCPサーバ10は、動作を終了してもよい。
他方で、ステップS107における判定の結果、冗長ルータアドレステーブル122にアドレスが格納されていると判定される場合には(ステップS107:Yes)、DHCPサーバ10が備えるDHCPプロトコル処理部111は、生成したRelay−Reply(Reply)メッセージを、冗長ルータアドレステーブル122に格納されているアドレスを有するルータ20に対して送信する(ステップS108)。つまり、DHCPサーバ10が備えるDHCPプロトコル処理部111は、生成したRelay−Reply(Reply)メッセージを、冗長ルータアドレステーブル122に格納されているアドレスを宛先に指定して送信する。従って、DHCPサーバ10が備えるDHCPプロトコル処理部111は、生成したRelay−Reply(Reply)メッセージを、マスタルータ20のみならず、バックアップルータ20に対して送信する。
その結果、バックアップルータ20が備えるDHCPリレー処理部211は、DHCPサーバ10から送信されたRelay−Reply(Reply)メッセージを受信する(ステップS253)。バックアップルータ20が備えるルート登録部212は、受信したRelay−Reply(Reply)メッセージを解析することで、DHCPサーバ10からHGW30に割り当てられたプレフィックスを認識する。その後、バックアップルータ20が備えるルート登録部212は、認識したプレフィックスを、HGW30までの経路を示すスタティックルートとして、ルーティングテーブル221に登録する(ステップS254)。
以上説明したように、本実施形態の通信システム1によれば、HGW30に対して割り当てられるプレフィックスは、DHCPサーバ10から、DHCPリレーを行っているマスタルータ20のみならず、DHCPリレーを行っていないバックアップルータ20に対しても通知される。このため、マスタルータ20及びバックアップルータ20の双方は、HGW30までの経路を示す同一のスタティックルートを夫々のルーティングテーブル221に登録することができる。従って、マスタルータ20のルーティングテーブル221に登録されるスタティックルートと、バックアップルータ20のルーティングテーブル221に登録されるスタティックルートとの間の同期を好適に図ることができる。このため、バックアップルータ20が新たにマスタルータ20として動作を開始する場合であっても、バックアップルータ20は、好適に同期が図られたルーティングテーブル221を有しているため、その動作の継続性が妨げられることは殆ど又は全くない。
尚、仮にHGW30に対して割り当てられるプレフィックスがバックアップルータ20に対して通知されなければ、バックアップルータ20は、HGW30に対応するスタティックルートを登録することができない。このような状態でバックアップルータ20が新たにマスタルータ20として動作を開始する場合には、新たなマスタルータ20にHGW30に対応するスタティックルートが登録されていないがゆえに、HGW30との間の通信が断絶してしまいかねない。このため、HGW30に向けての通信が断絶するため、利用しているサービス(例えば、音声通話サービス等)によっては影響が大きいものとなりかねない。この場合には、新たなマスタルータ20を介してDHCPメッセージの送受信が新たに行われれば、新たなマスタルータ20は、HGW30に対応するスタティックルートを登録することができる。しかしながら、DHCPメッセージの送受信が新たに行われる間はHGW30に向けての通信が断絶するため、利用しているサービス(例えば、音声通話サービス等)によっては影響が大きいものとなりかねない。
しかるに、本実施形態によれば、上述したとおりHGW30に対して割り当てられるプレフィックスがバックアップルータ20に対しても通知されるため、HGW30に向けての通信が断絶する悪影響を好適に抑制することができる。
尚、上述の説明では、Relay−Forward(Request)メッセージを用いて、バックアップルータ20のアドレスがDHCPサーバ10に通知される例が説明されている。しかしながら、Relay−Forward(Request)メッセージ以外のその他のメッセージ(例えば、Relay−Forward(Solicit)メッセージ等)を用いて、バックアップルータ20のアドレスがDHCPサーバ10に通知されてもよい。或いは、DHCPメッセージ以外の任意のメッセージを用いて、DHCPメッセージの送受信の前に又はDHCPメッセージの送受信と並行して、バックアップルータ20のアドレスがDHCPサーバ10に通知されてもよい。いずれの構成を採用するにせよ、バックアップルータ20のアドレスがDHCPサーバ10に通知されることで、上述した各種効果を好適に享受することができる。
DHCPサーバ10は、HGW30に割り当てるプレフィックスを通知するためのRelay−Reply(Reply)メッセージを、マスタルータ20及びバックアップルータ20の夫々を宛先に指定して送信することができる。従って。DHCPサーバ10は、HGW30に割り当てるプレフィックスを、マスタルータ20及びバックアップルータ20の夫々に対して好適に通知することができる。
以上説明した実施形態に関して、更に以下の付記を開示する。
(付記1)
冗長構成を有する第1ルータ及び第2ルータを介して端末と当該端末にアドレスを割り当てるサーバとが接続されている通信システムにおける通信方法であって、
前記第2ルータを特定するための特定情報、前記端末と前記サーバとの間の通信を中継する前記第1ルータから前記サーバに送信する第1送信工程と、
前記サーバから、前記特定情報を送信した前記第1ルータ及び前記特定情報によって特定される前記第2ルータの双方に対して、前記端末に割り当てる前記アドレスを通知する通知工程と、
前記第1及び第2ルータの双方に通知される前記アドレスに基づく前記端末への経路を、前記第1及び第2ルータの双方に登録する登録工程と
を備えることを特徴とする通信方法。
(付記2)
前記端末への前記アドレスの割り当てを要求する要求メッセージを、前記端末から前記第1ルータに送信する第2送信工程を更に備え、
前記第1送信工程は、前記特定情報を、前記第2送信工程において送信された前記要求メッセージと共に、前記第1ルータから前記サーバに送信し、
前記通知工程は、前記サーバから、前記要求メッセージと共に前記特定情報を送信した前記第1ルータ及び前記特定情報によって特定される前記第2ルータの双方に対して、前記端末に割り当てる前記アドレスを通知する
ことを特徴とする付記1に記載の通信方法。
(付記3)
前記通知工程は、(i)前記サーバから、前記特定情報を送信した前記第1ルータに対して、前記端末に割り当てる前記アドレスを、当該アドレスの通知先を前記第1ルータに指定して通知し、且つ、(ii)前記サーバから、前記特定情報によって特定される前記第2ルータに対して、前記端末に割り当てるアドレスを、当該アドレスの通知先を前記第2ルータに指定して通知する
ことを特徴とする付記1又は2に記載の通信方法。
(付記4)
前記第2ルータを特定するための前記特定情報を前記第2ルータから前記第1ルータに送信する第3送信工程を更に備え、
前記第1送信工程は、前記第3送信工程において前記第2ルータから送信された前記特定情報を、前記第1ルータから前記サーバに送信する
ことを特徴とする付記1から3のいずれか一項に記載の通信方法。
(付記5)
冗長構成を有する第1及び第2ルータと、
端末と、
前記第1及び第2ルータを介して前記端末と接続され、且つ前記端末にアドレスを割り当てるサーバと
を備える通信システムであって、
前記端末と前記サーバとの間の通信を中継する前記第1ルータは、前記第2ルータを特定するための特定情報を、前記サーバに送信する送信部を備え、
前記サーバは、前記特定情報を送信した前記第1ルータ及び前記特定情報によって特定される前記第2ルータの双方に対して、前記端末に割り当てる前記アドレスを通知する通知部を備え、
前記第1ルータは、前記第1ルータに通知される前記アドレスに基づく前記端末への経路を、前記第1ルータに登録する第1登録部を備え
前記第2ルータは、前記第2ルータに通知される前記アドレスに基づく前記端末への経路を、前記第2ルータに登録する第2登録部を備える
ことを特徴とする通信システム。
(付記6)
端末と当該端末にアドレスを割り当てるサーバとを接続すると共に、他のルータと共に冗長構成を有するルータであって、
前記他のルータを特定するための特定情報を、前記サーバに送信する送信部と、
前記特定情報を送信した前記ルータ及び前記特定情報によって特定される前記他のルータの双方に対して前記サーバから通知される、前記端末に割り当てる前記アドレスに基づく前記端末への経路を、前記ルータ内部に登録する登録部と
備えることを特徴とするルータ。
(付記7)
冗長構成を有する第1及び第2ルータを介して端末と接続され、且つ前記端末にアドレスを割り当てるサーバであって、
前記端末と前記サーバとの間の通信を中継する前記第1ルータから、前記第2ルータを特定するための特定情報を受信する受信部と、
前記特定情報を送信した前記第1ルータ及び前記特定情報によって特定される前記第2ルータの双方に対して、前記端末に割り当てる前記アドレスを通知する通知部と
を備えることを特徴とするサーバ。
本発明は、上述した実施形態に限られるものではなく、請求の範囲及び明細書全体から読み取れる発明の要旨或いは思想に反しない範囲で適宜変更可能であり、そのような変更を伴う通信方法、並びに通信システム、ルータ及びサーバもまた本発明の技術的範囲に含まれるものである。