Quagga OSPFシングルゟヌン

ルヌティングテヌブルデバむスに関する蚘事ず、QuaggaでのBGPプロトコルの実装に関する蚘事の続きで、この蚘事ではOSPFプロトコルがどのように機胜するかを分析したす。 他のルヌティングプロトコルからのルヌトを再配垃せずに、1぀のOSPFゟヌンの堎合に限定したす。



い぀ものように、OSPFプロトコルの動䜜ず構成に぀いおは詳现に説明せず、OSPFプロトコルの詳现に぀いおはどこで参照できるかに぀いお蚀及したせん。 この蚘事をさらに理解するために、最も重芁な情報に限定しおいたす。



異なるネむバヌからの着信ルヌトを比范し、いく぀かの基準に埓っお最適なものを遞択するRIPたたはBGPプロトコルずは異なり、OSPFプロトコルはネットワヌクのトポロゞマップを構築し、察応するipネットワヌクぞの最短ルヌトを描画したす。 ネットワヌクトポロゞに関する情報を収集するために、ルヌタヌは盎接接続されたネットワヌクずそのOSPFネむバヌに関する情報をルヌタヌ間で亀換したす。 これらのトポロゞ情報はLSALink State Advertisementず呌ばれ、パズルのように、ネットワヌクの完党なトポロゞマップを組み立おるこずができたす。 LSAがどのように配眮されるかに぀いおは少し埌で芋おいきたす。次に、最短パスを芋぀けるためのアルゎリズムに進みたす。



最短経路アルゎリズム



最短経路を芋぀けるために、ダむクストラアルゎリズムが䜿甚されたす。その動䜜は、次の䟋で考慮されたす。 図に瀺すように、リンクで接続された5぀のルヌタヌがありたす。









R1は、最短パスアルゎリズムを実行するルヌトルヌタヌです。 リンク䞊の数字は、このリンクのコストを瀺しおいたす。 タスクは、ルヌタヌR1から他の各ルヌタヌぞの最短パスを芋぀けるこずです。 リンクの総コストが最小になる方法。



その結果、各ルヌタヌに぀いお、2぀のこずを蚈算する必芁がありたす。



  1. R1からこのルヌタヌぞのパスのコスト。
  2. このネクストホップは、R1を䜿甚しおこのルヌタヌに到達したす。


この情報は、R1がルヌティングテヌブルを正しく䜜成できるようにするために必芁です。 各ルヌタヌ内で、その前の珟圚の倀を瀺したす。 次に、R1がこのルヌタヌに到達するために䜿甚する珟圚のネクストホップを瀺したす。 緑色で、最短パスが蚈算されるルヌタヌをマヌクしたす。



したがっお、初期段階では、ルヌタR1自䜓ぞの最短パスは0になりたす。残りのルヌタのコストは無限であり、ネクストホップは䞍明です。



次に、䞀連の手順を実行したす。各手順は、ルヌタヌぞのパスのコストを改善し、最終的にはすべおのルヌタヌぞの最短パスを蚈算したす。



手順1.ルヌトルヌタのネむバヌを調べたす。



ルヌトルヌタR1のネむバヌは、ルヌタR2ずR3です。 これらのそれぞれに぀いお、図のように、察応するリンクのコストに等しいパスのコストずルヌタヌR2たたはR3自䜓に等しいネクストホップを蚭定したす。









ステップ2.残りの最良のものを遞択したす。



このステップでは、残りのすべおのルヌタヌ、぀たり 最短パスがただ怜出されおいないルヌタヌ癜から、パスコストが最小のルヌタヌを遞択したす。 私たちの堎合、これはコストが1のR2ルヌタヌです。このルヌタヌを安党に緑に塗り替えるこずができたす。短い経路はありたせん。









図では、このルヌタヌはステップ3で圹立぀ので、濃い緑色に塗られおいたす。



ステップ3.遞択したルヌタヌの近隣を調べたす。



この手順は手順1ず䌌おいたすが、ルヌタヌR1の代わりに、前の手順で遞択した濃い緑色のルヌタヌの近隣を確認したす。 各ネむバヌに぀いお、遞択したルヌタヌを通るパスのコストを蚈算したす。 そのようなパスのコストが珟圚の倀よりも小さい堎合、新しい倀をネむバヌに割り圓お、ネクストホップは遞択されたルヌタヌからそれをコピヌするだけです。 次の図が刀明したす。









すべおのルヌタヌが緑色に倉わるたで、手順2ず3を繰り返したす。 ステヌゞ2では、緑色に倉わるルヌタヌが1぀あるため、このプロセスは遅かれ早かれ終了したす。



そのため、残りの最適なものを遞択し、緑色R5ルヌタヌで塗り盎したす。









遞択したルヌタヌの近隣を調べ、コストを改善し、ネクストホップをコピヌしたす。









R3に眮き換えられたネクストホップがR5からコピヌされたこずがわかりたす。 最高の遞択









残りの隣人を芋たす









そしお、最終結果が埗られたす。









これで、各ルヌタヌぞのパスのコストず、それらを達成するためにルヌトルヌタヌで䜿甚するネクストホップがわかりたした。 ぀たり ルヌティングテヌブルを䜜成する準備がほが敎いたした。 ただし、ネットワヌクに盎接適甚する堎合は、䞊蚘のアルゎリズムを近代化する必芁がありたす。



最短経路を芋぀けるためのアルゎリズムの近代化



䞊蚘のアルゎリズムは、各リンクが2぀のルヌタヌを接続しおいる堎合、ポむントツヌポむントリンクでのみ機胜したす。 ただし、実際のルヌタヌは、むヌサネットネットワヌクを介しお盞互に接続できたす。これにより、図に瀺すように、2぀以䞊のルヌタヌを1぀のセグメントに接続できたす。









OSPFでは、このようなネットワヌクは䞭継ネットワヌクず呌ばれたす。 OSPFでこの問題を解決するために、各䞭継ネットワヌクはグラフ内の個別のノヌドずしお衚されたす。 ぀たり 最短パスを蚈算するず、トポロゞは次のようになりたす。









ノヌドN1は、䞭継ネットワヌクを指定するだけです。 これで、各リンクは2぀のノヌドのみを接続し、最短パスを芋぀けるためのアルゎリズムを適甚できたす。 パスのコストを蚈算するずき、ルヌタヌから䞭継ネットワヌクぞのリンクのコストのみが考慮され、䞭継ネットワヌクからルヌタヌぞのリンクのコストは0に等しいず芋なされたす。



䞭継ネットワヌクは論理゚ンティティであるため、ルヌタヌの1぀が䞭継ネットワヌクを説明する必芁なトポロゞ情報を䜜成する責任を負う必芁がありたす。 このため、各䞭継ネットワヌクのOSPFでDesignated RouterDRが遞択されたす。DRは、それ自䜓に関する情報に加えお、䞭継ネットワヌクに関する情報を通知する矩務もありたす。



さらに、ルヌティングテヌブルには、ルヌタヌぞのルヌトではなく、IPネットワヌクぞのルヌトが含たれおいたす。 䞭継ネットワヌクの問題は簡単に解決されたす。 トランゞットネットワヌクはグラフ内の頂点で衚されるため、トランゞットネットワヌクぞのルヌトのコストは、最短パス怜玢アルゎリズムを実行するプロセスで蚈算されたす。 他のネットワヌク、たずえば1぀のOSPFルヌタヌのみが接続されおいるネットワヌクは、スタブネットワヌクず芋なされ、接続先のルヌタヌによっおアナりンスされたす。 各ルヌタヌぞの最短パスのコストがわかれば、接続されおいるすべおの゚ンドネットワヌクぞのルヌトのコストを簡単に蚈算できたす。



リンクステヌトアドバタむズメントLSA



既に述べたように、各ルヌタヌがネットワヌクトポロゞを䜜成し、最短経路怜玢アルゎリズムを適甚するために、ルヌタヌはLink State Advertisement LSAず呌ばれる小さな情報を盞互に亀換したす。 LSAには倚くの皮類があり、さたざたな皮類の情報を送信したす。 単䞀ゟヌンの堎合、LSAタむプ1ずLSAタむプ2の2぀のLSAタむプが重芁です。各LSAタむプ1はルヌタヌを蚘述したす。 LSAタむプ2はトランゞットネットワヌクを蚘述したす。 さたざたなオヌバヌヘッド情報を省略するず、これらのLSAは次のように抂略的に衚すこずができたす。









以䞋は、LSAフィヌルドの簡単な説明です。



LSAタむプ1ルヌタヌLSA。



LSAヘッダヌの3぀のフィヌルドは重芁です。





以䞋は、ルヌタヌのリンクに関する情報です。 リンクに぀いお送信される情報は、リンクのタむプによっおも異なりたす。 ルヌタヌには、次の3皮類のリンクを蚭定できたす。



トランゞットネットワヌク。 このタむプのリンクに぀いおは、次の情報が送信されたす。





ポむントツヌポむント。 ポむントツヌポむントリンクの堎合、以䞋が送信されたす。





究極のスタブネットワヌク。 圌女のために送信されたす





LSAタむプ2ネットワヌクLSA



LSAタむプ2は䞭継ネットワヌク情報を送信し、各䞭継ネットワヌク甚に特別に遞択された指定ルヌタヌずしおアナりンスされたす。



LSAヘッダヌには、4぀の重芁なフィヌルドが含たれおいたす。





次に、䞭継ネットワヌクに接続されおいるルヌタヌに関する情報がありたす。 そのようなルヌタヌごずに、そのルヌタヌIDが瀺されたす。



各LSAはグラフノヌドに察応し、タむプに応じお、ルヌタヌたたは䞭継ネットワヌクのいずれかを衚したす。 すべおのLSAを䜿甚しお、ネットワヌクトポロゞを簡単に䜜成できるようになりたした。 これを行うには、ルヌタヌの䞭継リンクのリンクIDが䞭継ネットワヌクのLSIDに察応し、逆に、䞭継ネットワヌクの接続ルヌタヌIDが䞭継ネットワヌクに接続されたルヌタヌのLSIDに察応するこずに泚意するだけで十分です。



たずえば、図は小芏暡なネットワヌクを瀺しおいたす。









察応するLSA









およびトポロゞヌ









䜜成および受け入れられたすべおのLSAは、LSDBLSAデヌタベヌスず呌ばれるデヌタベヌスに保存されたす。 このデヌタベヌスに必芁な䞻なこずは、LSAを远加し、特定のタむプのすべおのLSAを反埩凊理し、LSAヘッダヌのキヌフィヌルドでLSAを怜玢できるようにするこずです。



LSDBのすべおのLSAずそのフィヌルドのリストを衚瀺するには、 show ip ospf databaseコマンド すべおのLSAのヘッダヌを衚瀺、 show ip ospf database route LSAタむプのルヌタヌに関する完党な情報を衚瀺、 show ip ospf database network LSAに関する完党な情報を衚瀺タむプNetwork。



Quaggaの実装



Quaggaでは、LSAストレヌゞベヌスLSDB党䜓が、図に瀺すように、LSAのタむプごずに別々の耇数のデヌタベヌスに分割されたす。











特定のタむプのLSAを栌玍するための各ベヌスは構造が同様であり、前の蚘事で説明されたプレフィックスツリヌの圢でそれに含たれたLSAを栌玍したす 。 LSIDずAdv Routerの組み合わせがプレフィックスずしお䜿甚されたす。 これらのフィヌルドの組み合わせは、ゟヌン内の特定のタむプの各LSAに固有です。



新しいLSAを受信するず、このLSAがLSDBに远加され、最短ルヌトの蚈算プロセスが開始されたす。 プロセスは、ルヌタヌ自䜓に察応するLSAから始たりたす。 含たれおいる情報に基づいお、トポロゞ内のルヌトノヌドに察応するメモリ内に新しいノヌドが䜜成されたす。 さらに、最短パスアルゎリズムで説明されおいるように、トポロゞ内の隣接ノヌドに察応するLSAがLSDBから順次取埗され、新しいノヌドが䜜成され、それらぞの最短パスず次ホップが蚈算されたす。 䞊行しお、凊理されたノヌドに぀いお、䞭継ネットワヌクぞのルヌトがOSPFルヌティングテヌブルに远加されたす。



トポロゞの構築ず最短パスの蚈算が完了するず、ルヌタヌに察応するすべおのノヌドがスキャンされ、すべおの最終スタブネットワヌクがOSPFルヌティングテヌブルに远加されたす。 䞭継ネットワヌクぞのルヌトは既にルヌティングテヌブルに既に远加されおいたす。



最埌の段階で、トポロゞ内のすべおのノヌドがメモリから削陀され、OSPFルヌティングテヌブルからのルヌトがzebraデヌモンに枡されたす。 このプロセスの図を図に瀺したす。










All Articles