見出し画像

返事をしないで混乱を回避する方法があった!ループ回避「スプリットホライズン」

「いつだって返事をすることが親切だ!なんて誰がいった?」

はい、こんにちは!松井真也です。シリーズ「基礎から分かる!ルーティング大全」第16回でございます。

前回は、MPLS(Multi-Protocol Label Switching)です。通例のIPパケットによるルーティングではなく、IPパケットに「ラベル」を追加して、そのラベルに基づいて「ラベルスイッチング」して高速に転送する技術でした!

さて、今回は、ルーティングプロトコルの一つ「RIP」に戻りましょう。RIPを含めたディスタンスベクトル型プロトコルには、ループを回避する仕組みがあります。その技術の名前がちょっとカッコよく、中二病をこじらせ気味の私を刺激するのでございますw。

中二病をこじらせた方も、ただ技術を知りたい方も早速見てみましょう!

経路情報がループする?

以前、イーサネットのループ回避技術(STPなど)について、解説しましたね。ここでは、ネットワーク層でのループについてお話ししますよ。

ただし、パケットが経路をループするというよりは、ルータが持つ経路情報が循環してしまうことに対する対策です。

RIP(Routing Information Protocol)などのディスタンスベクトル型ルーティングプロトコルを使っているネットワークで、この経路ループが起こってしまうのです。

RIPは、「ホップ数」をメトリックとして使用していましたね。

ところが、隣接ルータで同じ経路の情報を繰り返し渡しあうと、ホップ数のメトリックがどんどん増えてしまう現象が起こることがあります。

ただ、ホップ数が16を超えると、ルータは経路情報を「到達不可能」と判断し、その経路情報を破棄するので、無限に増える心配はないのですが、そもそも無限カウントが起こらないようにする仕組みがあります。

具体的に見ていきましょう!

同じ経路情報は送り返さない:スプリットホライズン

では、このような経路ループをどのようにして防ぐことができるのでしょうか?その答えの一つが「スプリットホライズン」です。直訳は「分かたれた地平線」でしょうか?なんか必殺技っぽい名前ですねw。

これは非常にシンプルな原理に基づいています。あるルータが隣接ルータから受け取ったルート情報を、その情報を送ってきたルータには送り返さない、というものです。絵にしますか。

スプリットホライズン

ルータAのメッセージを受け取ったルータBは、

「そうか!ルータAを通じれば、ルータAからホップ3でネットワークYに到達できるんだな!じゃあ、僕BからルータAを通じたらネットワークYにホップ4で到達できるんだな!Yへの迂回路(左方向)が分かったぞ!」

と思います。しかし、ルータBは、

「よし!ルータAさんに、『僕BからルータA方向にホップ4でネットワークYに到達できる』ことを教えてあげよう!」という親切な気持ちをぐっとこらえて黙りますw。

もしBが黙らなかったらどうなりますか?今度はルータAが、Bの発言をもとに「ルータB方向にホップ5でYにたどり着けるよ」と、さらに送り返してしまいます。ホップ数が増えちゃってますがなw。

かくして、ホップ数が増えることを繰り返し、16に達したところで到達不可能と判断し、経路情報の破棄に至るわけです。漫才かw!?

この方法により、経路ループの発生を抑制します。しかし、スプリットホライズンはネットワークの構成が複雑になると、その効果が限定的になることがあります。

さらなる対策は、ポイズンリバースです!これは次回に譲ります。


はい、本日はここまで!今回はRIPを使ったルーティングにおける、経路情報のループを避ける手法「スプリットホライズン」についてお話ししました。

次回は、一歩進んでループ回避手法、「ポイズンリバーズ」をご紹介します!これも必殺技っぽいでしょ!?

では。

この記事が気に入ったらサポートをしてみませんか?