本発明の一実施の形態に係るネットワーク構成などを図3を用いて説明する。本実施の形態では、メモリ容量が小さく処理能力の低いネットワーク装置(図3のルータA)とその上位にある対向装置(図3のルータB)との間にルート集約装置100を設置する。このルート集約装置100は、ルータAから伝送されるLSAに係るパケットを抽出し、当該LSAを集約し、集約した結果のLSAをルータBに送信し、同様にルータBから伝送されるLSAに係るパケットを抽出し、当該LSAを集約し、集約した結果のLSAをルータAに送信する。このようにすることで、ルート集約装置100による集約の結果削減されたLSAをネットワーク装置間で交換することになるので、メモリ容量が小さく処理能力の低いネットワーク装置でも同じエリア内のネットワーク装置として安定した動作が行われるようになる。
具体的には、「10.1.1.0/24」「10.1.2.0/24」「10.1.3.0/24」「10.1.4.0/24」「10.1.5.0/24」「10.1.6.0/24」「10.1.7.0/24」というサブネットを含むネットワークAには、ルータIDが「10.0.0.1」のルータAが接続されている。ネットワークBには、「10.1.17.0/24」「10.1.18.0/24」「10.1.19.0/24」「10.1.20.0/24」というサブネットを含むネットワークBには、ルータIDが「10.0.0.2」のルータBが接続されている。そして、ルータAとルータBとの間にルート集約装置100に接続されている。
このような場合、ルータAからは、ルータID=10.0.0.1、リンクの数「7」、接続されているサブネットのリンク情報1乃至7(LINKID及びLINKDATA)を含むLSA200が送信される。このようなLSA200を受信すると、ルート集約装置100は、「10.1.1.0/24」「10.1.2.0/24」「10.1.3.0/24」「10.1.4.0/24」「10.1.5.0/24」「10.1.6.0/24」「10.1.7.0/24」を例えば「10.1.0.0/19」に集約する。この集約の態様は一例であって、例えば「10.1.0.0/22」「10.1.4.0/23」「10.1.6.0/23」といったような集約になる場合もある。例えば前者のような集約が行われた場合には、ルータID=10.0.0.1と、リンクの数「1」と、集約リンク情報として「10.1.0.0/19」とを含むLSA210を生成し、ルータBに送信する。ルータBは、LSA210を受信し、ルータBのLSDBに登録する。これによって、前者のような集約が行われれば、データ量は1/7になる。なお、後者の場合においても、データ量は3/7になる。
また、ルータBからは、ルータID=10.0.0.2、リンクの数「4」、接続されているサブネットのリンク情報1乃至4(LINKID及びLINKDATA)を含むLSA250が送信される。このようなLSA250を受信すると、ルート集約装置100は、「10.1.17.0/24」「10.1.18.0/24」「10.1.19.0/24」「10.1.20.0/24」を例えば「10.1.16.0/19」に集約する。この集約の態様は一例であって、例えば「10.1.16.0/21」「10.1.20.0/24」というような集約になる場合もある。例えば前者のような集約が行われた場合には、ルータID=10.0.0.2と、リンクの数「1」と、集約リンク情報として「10.1.16.0/19」とを含むLSA260を生成し、ルータAに送信する。ルータAは、LSA260を受信し、ルータAのLSDBに登録する。これによって、前者のような集約が行われれば、データ量は1/4になる。なお、後者の場合においても、データ量は1/2になる。
次に、図4を用いてルート集約装置100の機能について説明する。ルート集約装置100は、パケット判別部101と、OSPFパケット判定部A及びBと、LSAテーブルA及びBと、LSA参照テーブルA及びBと、LSA集約部A及びBと、LSA集約テーブルA及びBとを有する。パケット判別部101は、ルータA及びルータBから送信されてくるパケットのヘッダを監視し、OSPFのプロトコル番号である「89」を含むパケットを検出すると当該パケットを抽出し、ルータAから受信したパケットの場合にはOSPFパケット判定部Aに出力し、ルータBから受信したパケットの場合にはOSPFパケット判定部Bに出力する。なお、OSPF以外のパケットを受信した場合には、対向装置にそのまま通過させる。
OSPFパケット判定部A及びBは、パケット判別部101から受信したOSPFパケットのOSPFヘッダによりタイプを判別する。タイプ1であるHelloパケットであれば、対向装置へ転送する。タイプ2であるDBD(DataBase Description)パケットであればDBDパケット内のLSAヘッダを送信元用のLSAテーブル(ルータAから受信した場合はLSAテーブルA)に記憶させる。このDBDパケットには例えばルータAが有している全てのLSA情報(すなわちLSDB情報)のヘッダ部分が入っている。従って、ルート集約装置100は、ルータBの代わりにLSR(Link-State Request)パケットに受信したLSAヘッダを載せて送信することによって、ルータAに対してLSA情報を要求する。この要求を受信したルータAは、自身が有する全LSA情報をLSUパケットに載せてルータB側に伝送する。なお、LSRパケットはタイプ3であり、OSPFパケット判定部A及びBは、LSRパケットを受信した場合には、対向装置のLSA集約テーブルをLSUパケットに入れて、LSRパケットの送信元に返信する。
LSUパケットはタイプ4であり、ルータAからLSUパケットを受信した場合には、OSPFパケット判定部Aは、LSAテーブルAに格納する。LSA情報が全て揃うと、OSPFパケット判定部Aは、LSA参照テーブルAに格納する。LSA参照テーブルAに格納されたデータには、LSA集約部Aにより以下で述べるような集約処理が行われ、LSA参照テーブルBに格納されたデータには、LSA集約部Bにより以下で述べような集約処理が行われる。
なお、タイプ5であるLSAckパケットの場合には、基本的にはOSPFパケット判定部A及びBが、当該LSAckパケットを破棄する。但し、以下で詳細に述べるケースの場合には、そのまま対向装置に転送する場合もある。
このようにタイプ4のLSUパケットで収集したLSA情報を集約し、集約LSA情報を対向装置からのタイプ3のLSRパケットに対する応答であるLSUパケットとして送信する。これによって、ルート集約装置100が、例えばルータB側のエリアにいるネットワーク装置に対してルータAの背後のネットワークの存在を見せずにルータAを末端のネットワーク装置として見せることができるようになる。また反対に、ルータA側のエリアにいるネットワーク装置に対してルータBの背後のネットワークの存在を見せずにルータBを末端のネットワーク装置としてみせることができるようになる。すなわち、ネットワーク装置の設定を全く変更せずにルート集約が可能となる。
なお、LSA集約部Aは、LSA参照テーブルAとLSA集約テーブルA及びBを参照して、以下で述べるような集約処理を実施し、必要な場合にはLSA集約テーブルAに集約結果を格納する。同様に、LSA集約部Bは、LSA参照テーブルBとLSA集約テーブルA及びBを参照して、以下で述べるような集約処理を実施し、必要な場合にはLSA集約テーブルBに集約結果を格納する。
次に、図5乃至図7を用いてルータA及びBとルート集約装置100の接続時の初期処理の流れを説明する。図5に示すように、まずルータA(10.0.0.1/24)は、Down状態において、Helloパケットをマルチキャストで送信する。ルート集約装置100は、ルータAからHelloパケットを受信すると、そのままルータB(10.0.0.2/24)に転送する。ルータBは、ルータAからのHelloパケットを受信すると、NeighborルータにルータAを登録する。ここでルータBは、Init状態に遷移する。
また、ルータBは、Helloパケットをマルチキャストで送信する。ルート集約装置100は、ルータBからHelloパケットを受信すると、そのままルータAに転送する。ルータAは、ルータBからのHelloパケットを受信すると、NeighborルータにルータBを登録する。ここでルータAは、Init状態に遷移する。
さらに、ルータAは、HelloパケットをユニキャストでルータBに送信する。ルート集約装置100は、ルータAからHelloパケットを受信すると、そのままルータBに転送する。ルータBは、ルータAからのHelloパケットを受信すると、Two−Way状態に遷移する。また、ルータBは、HelloパケットをユニキャストでルータAに送信する。ルート集約装置100は、ルータBからHelloパケットを受信すると、そのままルータAに転送する。ルータAは、ルータBからのHelloパケットを受信すると、Two−Way状態に遷移する。これによって、ネイバーが確立する。また、これまでのHelloパケットの交換によってDR(Designated Router)とBDR(Backup Designated Router)を周知の方法で選定する。なお、ここではルータIDなどからルータBがDRで、ルータAがBDRであるものとする。そうすると、ルータA及びルータBはExstart状態に遷移する。
さらに、ルータAは、Helloパケットをマルチキャストで送信する。ルート集約装置100は、ルータAからHelloパケットを受信すると、そのままルータBに転送する。ルータBは、ルータAからのHelloパケットを受信する。このHelloパケットは、一方的に情報交換の開始の宣言ものであるが、ここではルータBの方がルータIDが大きいなどの理由により、ルータBは、情報交換を宣言するHelloパケットをマルチキャストで送信する。ルート集約装置100は、ルータBからのHelloパケットを受信すると、そのままルータAに転送する。ルータAは、ルータBからのHelloパケットを受信する。このようにすると、ルータBがマスタで、ルータAがスレーブであるということが確定し、ルータA及びBは、共にExchange状態に遷移する。
ここまでは単にルート集約装置100はHelloパケットを転送するだけであり従来の処理フローと何ら変わりない。
図6の処理に移行して、まず、マスタのルータBは、タイプ2のDBDパケットをルータAに対して送信する。DBDパケットは、上で述べたように、ルータBのLSA情報の全ヘッダが含まれる。これに対してルート集約装置100は、IPヘッダのソースアドレスとしてルータAのアドレスがセットされたLSAckパケットを生成し、当該LSAckパケットをルータBに返信する。図6において「仮想」としているのは、ルート集約装置100がルータAの代わりに返信しているためである。ルータBは、LSAckパケットを受信すると、Loading状態に遷移する。また、ルート集約装置100は、ルータBから受信した全てのLSAヘッダを含み、IPヘッダのソースアドレスとしてルータAのアドレスをセットしたLSRパケットをルータBに送信する。
これに対してルータBは、ルータBがLSDBに保持している全てのLSAを含み且つタイプ4のLSUパケットを送信する。ルート集約装置100は、ルータBからLSUパケットを受信すると、LSUパケットに含まれるLSAをLSAテーブルAに格納すると共に、LSA参照テーブルAに格納し、以下で詳細に述べる処理を実施する。また、ルート集約装置100は、LSAckパケットをルータBに返信する。このようにしてルート集約装置100は、ルータBから全てのLSAを取得したことになる。
同様に、スレーブのルータAは、タイプ2のDBDパケットをルータBに対して送信する。DBDパケットは、上で述べたように、ルータAのLSA情報の全ヘッダが含まれる。これに対してルート集約装置100は、IPヘッダのソースアドレスとしてルータBのアドレスがセットされたLSAckパケットを生成し、当該LSAckパケットをルータAに返信する。ルータAは、LSAckパケットを受信すると、Loading状態に遷移する。また、ルート集約装置100は、ルータAから受信した全てのLSAヘッダを含み、IPヘッダのソースアドレスとしてルータBのアドレスをセットしたLSRパケットをルータAに送信する。
これに対してルータAは、ルータAがLSDBに保持している全てのLSAを含み且つタイプ4のLSUパケットを送信する。ルート集約装置100は、ルータAからLSUパケットを受信すると、LSUパケットに含まれるLSAをLSAテーブルBに格納すると共に、LSA参照テーブルBに格納し、以下で詳細に述べる処理を実施する。また、ルート集約装置100は、LSAckパケットをルータAに返信する。このようにしてルート集約装置100は、ルータAから全てのLSAを取得したことになる。
図7の処理に移行して、ルート集約装置100の例えばOSPFパケット判定部Bは、LSA集約テーブルAに保持しているLSA情報の全ヘッダが含まれるDBDパケットをルータBに対して送信する。「(集約)」は、LSA集約テーブルからのデータを含むことを表している。なお、ここでルート集約装置100は、ルータAを装っている。ルータBは、DBDパケットを受信すると、DBDパケットに含まれるLSAヘッダを格納し、LSAckパケットをルート集約装置100に返信する。さらに、ルータBは、必要なLSAヘッダを含むLSRパケットをルート集約装置100に送信する。これに対して、ルート集約装置100は、LSAckパケットをルータBから受信し、さらにLSRパケットを受信する。LSAckパケットについては転送する必要はないので、ルート集約装置100が破棄する。
LSRパケットを受信すると、ルート集約装置100のOSPFパケット判定部Bは、LSA集約テーブルAから、要求されているLSA(集約LSAとも呼ぶ)を読み出し、当該LSAを含み且つIPヘッダのソースアドレスがルータAのアドレスであるLSUパケットを生成して、ルータBに返信する。ルータBは、ルート集約装置100からLSUパケットを受信し、LSUパケットに含まれるLSAをLSDBに格納する。そして、ルータBは、LSAckパケットをルート集約装置100に返信する。ルート集約装置100は、LSAckパケットを破棄する。
同様に、ルート集約装置100の例えばOSPFパケット判定部Aは、LSA集約テーブルBに保持しているLSA情報の全ヘッダが含まれるDBDパケットをルータAに対して送信する。なお、ここでルート集約装置100は、ルータBを装っている。ルータAは、DBDパケットを受信すると、DBDパケットに含まれるLSAヘッダを格納し、LSAckパケットをルート集約装置100に返信する。さらに、ルータAは、必要なLSAヘッダを含むLSRパケットをルート集約装置100に送信する。これに対して、ルート集約装置100は、LSAckパケットをルータAから受信し、さらにLSRパケットを受信する。LSAckパケットについては転送する必要はないので、ルート集約装置100が破棄する。
LSRパケットを受信すると、ルート集約装置100のOSPFパケット判定部Aは、LSA集約テーブルBから、要求されているLSA(集約LSAとも呼ぶ)を読み出し、当該LSAを含み且つIPヘッダのソースアドレスがルータBのアドレスであるLSUパケットを生成して、ルータAに返信する。ルータAは、ルート集約装置100からLSUパケットを受信し、LSUパケットに含まれるLSAをLSDBに格納する。そして、ルータAは、LSAckパケットをルート集約装置100に返信する。ルート集約装置100は、LSAckパケットを破棄する。
以上のような処理を実施すれば、Full状態(Full State)に遷移する。すなわち、OSPFによってパケットのルーティングを行うことができる定常状態に達したことになる。
次に、ルート集約装置100の具体的な処理について図8乃至図14を用いて説明する。まず、ルート集約装置100は、パケットを受信すると(ステップS1)、パケット判別部101は、受信したパケットのIPヘッダにおけるプロトコル番号がOSPFを表す「89」であるか判断する(ステップS3)。プロトコル番号が「89」以外である場合には、対向先ルータに受信パケットをそのまま転送する(ステップS11)。そして次のパケットの処理に移行する。
一方、プロトコル番号がOSPFを表す「89」である場合には、パケット判別部101は、受信パケットを、OSPFパケット判定部A又はB(ルータAからであればAに、ルータBからであればBに)に出力し、OSPFパケット判定部A又はBは、OSPFヘッダを参照してOSPFパケットタイプTが1乃至5のいずれであるか判断する(ステップS5)。OSPFパケットタイプTが「1」(すなわちHelloパケット)であればステップS11に移行する。このように図5の処理が行われる。
またOSPFパケットタイプT=「2」(すなわちDBDパケット)である場合には、DBDパケット内のLSAヘッダをLSAテーブルA又はBに格納し(ステップS7)、IPヘッダのソースアドレスに対向側のルータのアドレスをセットしたLSAckパケットをDBDパケットの送信元ルータに返信すると共に、受信したLSAヘッダを含み且つIPヘッダのソースアドレスに対向側のルータのアドレスをセットしたLSRパケットを、DBDパケットの送信元ルータに返信する(ステップS9)。そして次のパケットの処理に移行する。このように図6の処理が行われる。
一方、OSPFパケットタイプが3乃至5である場合には、端子Aを介して図9の処理に移行する。
図9の処理の説明に移行して、OSPFパケットタイプが「3」(すなわちLSRパケット)である場合には(ステップS13)、OSPFパケット判定部A又はBは、対向側の集約LSAを対向側のLSA集約テーブルから読み出して、当該集約LSAを含み且つIPヘッダのソースアドレスに対向側ルータのアドレスをセットしたLSUパケットを生成して、送信元ルータに返信する(ステップS15)。そして端子Bを介して次のパケットの処理に移行する。このように図7におけるLSUパケット送信の処理が行われる。
一方、OSPFパケットタイプが「5」(すなわちLSAckパケット)である場合には(ステップS13)、OSPFパケット判別部A又はBは、パターンAが設定されているか判断する(ステップS17)。パターンAというのは、以下でも述べるが、矛盾したLSAが送られてきた場合に設定されるモードである。パターンAである場合には、受信したLSAckパケットをそのまま対向ルータに伝送する(ステップS19)。また、パターンAの設定を解除する(ステップS20)。そして端子Bを介して次のパケットの処理に移行する。一方、パターンAでない場合には、図6及び7で示したように代理で応答した場合に相当するので対向側ルータにLSAckパケットを伝送するのは無駄であり、LSAckパケットを破棄する(ステップS21)。そして端子Bを介して次のパケットの処理に移行する。
また、OSPFパケットタイプが「4」(すなわちLSUパケット)である場合には(ステップS13)、OSPFパケット判定部A又はBは、LSUパケットに含まれるLSAをLSAテーブルA又はBに登録すると共に、LSA参照テーブルA又はBにも格納する。そして、LSA集約部A又はBは、最初のLSUパケットであれば(ステップS23:Yesルート)、初期LSU処理を実施する(ステップS25)。この初期LSU処理については、図10乃至図12を用いて説明する。そして、初期LSU処理の後に、例えばLSA集約部A又はBは、今回集約を行った結果が格納されているLSA集約テーブルA又はBにあるLSAを基に、DBDパケットを対向側のルータに送信する(ステップS27)。ステップS27の処理は図7におけるDBDパケットの送信処理に相当する。そして端子Bを介して次のパケットの処理に移行する。
一方、最初のLSUパケットではなく、ネットワークの変更を反映するためのLSUパケットである場合には、LSA集約部A又はBは、LSU処理を実施する(ステップS29)。このLSU処理については、図13及び図14を用いて説明する。そして端子Bを介して次のパケットの処理に移行する。
次に、図10乃至図12を用いて初期LSU処理について説明する。OSPFパケット判定部A又はBは、受信したLSUパケットに含まれるLSAをLSAテーブルA又はBに格納し(ステップS31)、さらにLSAをLSA参照テーブルA又はBに格納する(ステップS35)。そして、LSA集約部A又はBは、カウンタXを1にセットし(ステップS35)、LSA参照テーブルA又はBにX番目のレコードが存在するか判断する(ステップS37)。X番目のレコードが存在しない場合には、処理が完了したことになるので、元の処理に戻る。
一方、X番目のレコードが存在する場合には、LSA集約部A又はBは、M=新規LSAサブネットマスク(X番目のレコードのLSAのサブネットマスク)−1と設定する(ステップS39)。例えば、「10.1.1.0/24」がX番目のレコードのLSAである場合には、M=23となる。そして、サブネットマスクMとしたときに、LINKID(すなわち、IPアドレス部分)が一致する他のネットワークが存在するか判断する(ステップS41)。ここで図3で示した上段の例をバイナリ表現に直すと図11のようになる。(1)乃至(7)は、「10.1.1.0/24」「10.1.2.0/24」「10.1.3.0/24」「10.1.4.0/24」「10.1.5.0/24」「10.1.6.0/24」「10.1.7.0/24」を表している。「10.1.1.0/24」を処理対象とすると、M=23ではLINKIDが一致する他のネットワークは存在しない。
そこで、LSA集約部A又はBは、M=Zであるか判断する(ステップS43)。Zは、予め定められた集約限界であり、例えば「8」以上の整数が設定される。M=Zでなければ、Mを1デクリメントし(ステップS47)、ステップS41に戻る。「10.1.1.0/24」が処理対象であれば、M=22で(2)及び(3)と一致するようになる。そうすると、LSA集約部A又はBは、LINKIDに、一致する範囲のネットワークアドレスを設定し、LINKDATAにMを設定し、LSA集約テーブルA又はBに登録する(ステップS51)。上で述べた例では、LINKID=「10.1.0.0」、LINKDATA=22となり、「10.1.0.0/22」がLSA集約テーブルA又はBに登録される。さらに、一致するネットワークについての(X+1)番目以降のレコードをLSA参照テーブルA又はBから削除する(ステップS53)。上で述べた例では、(2)及び(3)のレコードを削除する。そしてXを1インクリメントし(ステップS55)、ステップS37に戻る。
なお、M=Zになった場合には(ステップS43:Yesルート)、集約は不可能と判断し、処理に係るLSA(すなわち新規LSA)をLSA集約テーブルA又はBに登録する(ステップS49)。そしてステップS55に移行する。
上で述べた例では、(4)が次の処理対象となる。(4)が処理対象となった場合、M=23で(5)と一致することになるので、「10.1.4.0/23」がLSA集約テーブルA又はBに登録される。そして(5)が削除される。
さらに、(6)が次の処理対象となる。(6)が処理対象となった場合、M=23で(7)と一致することになるので、「10.1.6.0/23」がLSA集約テーブルA又はBに登録される。そして(7)が削除される。このようにして処理が終了する。
また、図3で示した下段の例をバイナリ表現に直すと図12のようになる。(1)を処理対象とすると、M=21になったときに(2)及び(3)と一致することになる。従って、「10.1.16.0/21」がLSA集約テーブルA又はBに登録される。(4)が処理対象になると他には集約対象がないので、「10.1.20.0/24」をLSA集約テーブルA又はBに登録する。
以上のような処理を実施するとおよそLSAを1/2に集約することができる。但し、ステップS41では1つでも他のネットワークに一致すれば「一致」と判断するが、これを例えば3つ以上他のネットワークに一致しなければ「一致」と判断しないといったような形で変形することも可能である。例えば、図11の例で、(1)を処理対象としたとき、上で述べた例ではM=22で(1)乃至(3)が一致と判断されたが、3つ以上他のネットワークに一致するという要件を課せば、M=21にしなければこの要件を満たしたことにならない。M=21にすれば、(1)乃至(7)が一致と判断されるので、「10.1.0.0/21」がLSA集約テーブルA又はBに登録される。すなわち、状況によってはより集約を進めることができるようになり、データ量を減少させることができる。
なお、図10の処理をLSA集約テーブル内のレコードについてもう一度実施するようにすれば、さらに集約が進みデータを圧縮することができるようになる。
次に、図13及び図14を用いてLSU処理の詳細について説明する。LSU処理は、初期的なLSUの集約処理が終了した後にLSUパケットを受信した場合に実施される。
まず、LSUパケットを受信すると、OSPFパケット判定部A又はBは、LSUパケットに含まれるLSAをLSAテーブルA又はBとLSA参照テーブルA又はBに格納する(ステップS61)。LSA集約部A又はBは、LSUパケットの送信元の方のLSA集約テーブル内のデータと受信LSAとを比較して、受信LSAが既登録レコードで表されるネットワーク内に含まれるか判断する(ステップS63)。例えば、図3の例でネットワークAの1つのサブネットワーク「10.1.7.0/24」が除去された場合には、残りの6つのサブネットワークに対応してリンク情報1乃至6をLSA情報として含むLSUパケットを受信することになる。このような場合には、受信LSAはLSA集約テーブルAの既登録レコードで表されるネットワーク内に含まれるので、LSA集約テーブルAを更新する必要はない。
また、LSA集約テーブルAに、「10.10.0.0/16」というレコードが存在しているところに、「10.10.10.0/24」というLSAを受信した場合にも、明らかに既登録レコードで表されるネットワークに含まれると判断される。
従って、受信LSAが既登録レコードで表されるネットワーク内に含まれる場合には、LSA集約部A又はBは、受信LSAをLSA参照テーブルA又はBから削除し(ステップS65)、例えばLSA集約部A又はB(OSPFパケット判定部A又はBの場合もある)は、LSUパケットの送信元のルータに対してLSAckを返信する(ステップS67)。そして元の処理に戻る。
一方、LSA集約テーブルAに「10.10.0.0/16」というレコードが存在しているところに、「10.20.0.0/16」というLSAを受信した場合など、受信LSAが既登録レコードで表されるネットワーク内に含まれないと判断された場合には、LSA集約部A又はBは、受信LSAが対向側のLSA集約テーブルの既登録レコードで表されるネットワーク内に含まれるか判断する(ステップS69)。これは、矛盾するようなLSA情報を受信したか判断するものである。このような、受信LSAが、対向側のLSA集約テーブルの既登録レコードで表されるネットワーク内に含まれると判断された場合には、例えばLSA集約部A又はBは、受信LSUパケットと同じものを対向側のルータに送信する(ステップS71)。また、LSA集約部A又はBは、受信LSAをLSUパケットの送信元の方のLSA集約テーブルに登録する(ステップS73)。さらに、パターンAを設定する(ステップS75)。これによってステップS19でLSAckパケットの転送が行われるようになる。処理は元の処理に戻る。
一方、受信LSAが、対向側のLSA集約テーブルの既登録レコードで表されるネットワーク内に含まれないと判断された場合には、例えばLSA集約部A又はBは、送信元ルータに対してLSAckを返信する(ステップS77)。
そして、LSA集約部A又はBは、M=新規LSAサブネットマスク(受信LSAのサブネットマスク)−1と設定する(ステップS79)。例えば、「10.1.8.0/24」が受信LSAである場合には、M=23となる。そして、サブネットマスクMとしたときに、LSA集約テーブルにLINKID(すなわち、IPアドレス部分)が一致するレコードが存在するか判断する(ステップS81)。
例えば、図14の(A)(B)(C)というレコードがLSA集約テーブルAに含まれ、図14の下段に示すような「10.1.8.0/24」というLSAを受信した場合には、M=23では、LSA集約テーブルAにLINKIDが一致するレコードは存在しない。
Mの時に受信LSAのLINKIDとLSA集約テーブルA又はBに登録されているレコードのLINKIDとが一致しない場合には、LSA集約部A又はBは、M=Zであるか判断する(ステップS83)。Zは、予め定められた集約限界であり、初期LSU処理とは異なる値を設定できる。例えば「8」以上の整数が設定される。なお、小さな値を設定すると、集約されすぎることもあるので、初期LSU処理で「8」でも、ここでは例えば「16」を設定するといったようなことを行っても良い。M=Zでなければ、Mを1デクリメントし(ステップS85)、ステップS81に戻る。
図14の例では、M=22でも一致せず、M=21でも一致せず、M=20となるとLSA集約テーブルAのレコード(A)(B)(C)と受信LSAとが一致することになる。そうすると、LSA集約部A又はBは、LINKIDに、一致する範囲のネットワークアドレスを設定し、LINKDATAにMを設定して新規集約レコードを生成し、当該新規集約レコードでLSA集約テーブルA又はBを更新する(ステップS89)。上で述べた例では、M=20で「10.1.0.0/20」に全て集約されたので、LSA集約テーブルのレコードを全て削除して、「10.1.0.0/20」のみを登録することになる。
その後、例えばLSA集約部A又はBは、新規集約レコードを含むLSUパケット生成して、対向側ルータに送信する(ステップS91)。これにてネットワークの変更を対向側ルータに通知することになる。なお、パターンAというモードではないので、対向側ルータからLSAckパケットを受信しても、OSPFパケット判定部A又はBが破棄する。そして元の処理に戻る。
一方、ステップS83でM=Zになった場合には、LSA集約部A又はBは、集約は不可能と判断し、受信LSAをLSA集約テーブルA又はBに登録する(ステップS87)。例えば「20.1.1.0/24」といったLSAを受信した場合には、ステップS87で、そのまま登録される。そして元の処理に戻る。
なお、受信LSAが複数の場合には、ステップS79乃至S91については、各LSAについて実施する。
このような処理を実施することによって、サブネットマスクについてできるだけ長いビット長で且つ可能な限り集約を行うことができるようになる。
以上本発明に実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、図4に示したルート集約装置100の機能ブロック図は一例であって、必ずしも実際のモジュール分けが図4と一致しない場合もある。また、各機能はハードウエアによって実装される場合もあれば、ソフトウエアで実装される場合もある。
また、上で述べた初期LSU処理では、Mをデクリメントするような処理を行ったが、MをZから順にインクリメントして一致するものが1つも無くなった場合にMを1つ戻してその段階で一致するもので集約するといった処理に置き換えることもできる。LSU処理でも同様な処理に変更することも可能である。
さらに、処理フローは同様の結果を得られれば、ステップの処理順番を入れ替えたり同時に実施して良い。
以上述べた実施の形態をまとめると以下のようになる。OSPF(Open Shortest Path Fast)によるルーティングを実施する複数のネットワーク装置間に接続するためのルート集約装置は、OSPFに係るパケットを抽出する手段と、OSPFに係るパケットからLSU(Link-State Update)パケットを抽出する手段と、抽出されたLSUパケットに含まれるLSA(Link-State Advertisement)情報を集約して、LSA集約テーブルに登録する集約手段と、LSA集約テーブルに登録されている情報を用いてLSUパケットを生成し、LSUパケットの送信元ネットワーク装置に対向するネットワーク装置に対して送信する手段とを有する。
このようなルート集約装置を採用することによって、ルート集約装置に接続されるネットワーク装置には、それぞれ対向側のネットワークのデータが集約された形で提示されるので、LSDBに保持すべきデータ量が削減され、それらのネットワーク装置の能力が低い場合においても安定的に動作するようになる。
また、LSA集約テーブルが一度生成された後にLSUパケットを受信した場合には、上で述べた集約手段が、受信したLSUパケットに含まれるLSA情報と、LSA集約テーブルに登録されている情報との集約を行い、LSA集約テーブルを更新するようにしてもよい。このようにすれば、ネットワーク装置起動時だけではなく、その後のネットワーク構成の変更に対しても、LSDBに保持すべきデータ量が削減される。
また、上で述べたLSA集約テーブルが、第1のネットワーク装置用のLSA集約テーブルと、ルート集約装置を挟んで第1のネットワーク装置と対向する第2のネットワーク装置用のLSA集約テーブルとを含むようにしてもよい。その場合、LSA集約テーブルが一度生成された後にLSUパケットを受信した場合には、上で述べた集約手段が、受信したLSUパケットの送信元のネットワーク装置に対向する対向ネットワーク装置用のLSA集約テーブルに登録されている情報と、受信したLSUパケットに含まれるLSA情報とを比較し、当該LSA情報が対向ネットワーク装置用のLSA集約テーブルに登録されている情報に包含されるものであれば、受信したLSUパケットを、対向ネットワーク装置に送信するようにしてもよい。通常では受信LSA情報が対向ネットワーク装置用のLSA集約テーブルに登録されている情報に包含されるということはないので、上で述べたケースは矛盾したLSA情報を受信したことになる。このような矛盾についてはルート集約装置では解決できないので、集約手段で集約処理を実施することなく、対向するネットワーク装置に送信するものである。
また、上で述べた集約手段が、サブネットマスクを順に例えばビット長を長くする方向又は短くする方向に変更し、変更後のサブネットマスクの状態でアドレス部分が一致するLSA情報を、当該一致するアドレス部分と変更後のサブネットマスクとで集約するようにしてもよい。このようにすれば適切にLSA情報を集約することができるようになる。なお、「一致」については同じものが2つで「一致」と判断することも可能であるが、3つ以上同じものがある場合に「一致」と判断するようにして、データ削減割合を増加させるようにしても良い。
なお、上記装置を実現するためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
(付記1)
OSPF(Open Shortest Path Fast)によるルーティングを実施する複数のネットワーク装置間に接続するためのルート集約装置であって、
OSPFに係るパケットを抽出する手段と、
前記OSPFに係るパケットからLSU(Link-State Update)パケットを抽出する手段と、
抽出された前記LSUパケットに含まれるLSA(Link-State Advertisement)情報を集約して、LSA集約テーブルに登録する集約手段と、
前記LSA集約テーブルに登録されている情報を用いてLSUパケットを生成し、前記LSUパケットの送信元ネットワーク装置に対向するネットワーク装置に対して送信する手段と、
を有するルート集約装置。
(付記2)
前記LSA集約テーブルが一度生成された後に前記LSUパケットを受信した場合には、前記集約手段が、受信した前記LSUパケットに含まれるLSA情報と、前記LSA集約テーブルに登録されている情報との集約を行い、前記LSA集約テーブルを更新する
付記1記載のルート集約装置。
(付記3)
前記LSA集約テーブルが、第1のネットワーク装置用のLSA集約テーブルと、第2のネットワーク装置用のLSA集約テーブルとを含み、
前記LSA集約テーブルが一度生成された後に前記LSUパケットを受信した場合には、前記集約手段が、受信した前記LSUパケットの送信元のネットワーク装置に対向する対向ネットワーク装置用のLSA集約テーブルに登録されている情報と、受信した前記LSUパケットに含まれるLSA情報とを比較し、当該LSA情報が前記対向ネットワーク装置用のLSA集約テーブルに登録されている情報に包含されるものであれば、受信した前記LSUパケットを、前記対向ネットワーク装置に送信する
付記1記載のルート集約装置。
(付記4)
前記集約手段が、
サブネットマスクを順に変更し、変更後のサブネットマスクの状態でアドレス部分が一致するLSA情報を、当該一致するアドレス部分と前記変更後のサブネットマスクとで集約する
付記1記載のルート集約装置。
(付記5)
OSPF(Open Shortest Path Fast)によるルーティングを実施する複数のネットワーク装置間に接続するためのルート集約装置に、
OSPFに係るパケットを抽出するステップと、
前記OSPFに係るパケットからLSU(Link-State Update)パケットを抽出するステップと、
抽出された前記LSUパケットに含まれるLSA(Link-State Advertisement)情報を集約して、LSA集約テーブルに登録する集約ステップと、
前記LSA集約テーブルに登録されている情報を用いてLSUパケットを生成し、前記LSUパケットの送信元ネットワーク装置に対向するネットワーク装置に対して送信するステップと、
を実行させるプログラム。
(付記6)
OSPF(Open Shortest Path Fast)によるルーティングを実施する複数のネットワーク装置間に接続するためのルート集約装置により実行される集約処理方法であって、
OSPFに係るパケットを抽出するステップと、
前記OSPFに係るパケットからLSU(Link-State Update)パケットを抽出するステップと、
抽出された前記LSUパケットに含まれるLSA(Link-State Advertisement)情報を集約して、LSA集約テーブルに登録する集約ステップと、
前記LSA集約テーブルに登録されている情報を用いてLSUパケットを生成し、前記LSUパケットの送信元ネットワーク装置に対向するネットワーク装置に対して送信するステップと、
を含む集約処理方法。