見出し画像

HSRPの基礎


この記事で学べる事

  • 冗長化について理解できる

  • デフォルトゲートウェイの冗長化について理解できる

  • HSRPの仕組みが理解できる

冗長化とは

聞きなれない冗長化という言葉ですが、つまりは予備設備を用意しておくことを指します。

高度情報社会とも呼ばれる現代において、通信障害は一種の災害と呼べるほど暮らしに悪影響を与えます。以下は2023年5月に発表された総務省によるレポート。

相次ぐ電気通信事故への対応について

引用元:2023年 5⽉総務省 総合通信基盤局電気通信事業部 電気通信技術システム課安全・信頼性対策室

上図の通りNTTドコモ・KDDI・楽天モバイルにおいて1年の間に重大な通信事故が何度も起きており、総務省から行政指導が行われる等、通信障害の対策についていかに重要な課題であるのか分かります。

このような通信事故を少しでも軽減するための方法のひとつとして設備の冗長化が存在します。

ネットワークの冗長化技術

ネットワークエンジニアはさまざまな通信設備のうち、ネットワーク機器における冗長化を設計します。

ネットワークの冗長化では予備機を用意しておいて障害が発生した場合に人の手で機器を交換するコールドスタンバイと呼ばれる手法と、障害時に自動的に予備機に切り替わるようなホットスタンバイと呼ばれる手法が存在します。

後者のホットスタンバイ方式を採用する場合には、機器に対して特別な設定が必要になります。これがネットワークの冗長化技術です。

主なネットワーク冗長化の技術

下図のような、帯域・筐体・リンク・デフォルトゲートウェイ等の冗長はどのような設計においても採用されています。本記事ではこのうちの、デフォルトゲートウェイの冗長化技術について解説します。

デフォルトゲートウェイの冗長化にはHSRP(Hot Standby Router Protocol)という技術がよく使われます。

また、デフォルトゲートウェイを冗長化する一番の目的はインターネット回線を冗長化することにあります。そのため、例外を除き、基本的には『デフォルトゲートウェイの冗長化=回線の冗長化=HSRPの利用』と考えて良いです。

回線の冗長化とHSRPの関係性

回線で障害が発生した場合にも継続してインターネットに接続できるように、回線は2つ用意することが一般的です。具体的な方法として、ISPは2社と契約します。A社で障害が発生しても、B社では通信できる状態を作り出すためです。

▲予備回線を用意することで通信が継続できる

また、回線を冗長化する場合にはルータを2台用意する必要があります。回線が2経路用意されていたとしても、ルータ自体が故障してしまった場合には回線は2つともダウンして冗長性が働かないためです。

回線を2本、ルータを2台用意すること高い冗長性を確保できるわけですが、ここでひとつの問題が発生します。

デフォルトゲートウェイが2つ存在してしまう問題

デフォルトゲートウェイとはインターネットの出入り口の役割をしており、PC等の端末に設定するルーティング機器のIPアドレスを指します。

PCは自身が所属するネットワークとは異なるネットワーク向けの通信が発生した場合に、デフォルトゲートウェイとして設定したIPアドレスを宛先IPアドレスとして通信を処理します。

この動作があることで、異なるネットワーク向けの通信がルーティング機器(ルータ等)に渡されて宛先へルーティングされます。

インターネット回線を冗長化するためには回線を2経路、そしてルータを2台用意する必要があることを述べましたが、この場合、ひとつのネットワークの中にデフォルトゲートウェイが2つ存在してしまいます。

回線を2つ用意すると、ゲートウェイが2つになる

上図のようにデフォルトゲートウェイが2つ存在する場合、PCに設定するデフォルトゲートウェイは、ゲートウェイ①とゲートウェイ②のどちらを設定すればよいのでしょうか。

仮にゲートウェイ①を設定した場合、問題なくインターネットへ接続できますが、ゲートウェイ①のルータが故障した場合はどうでしょう。PCはゲートウェイ①が故障したことは検知できないので、ゲートウェイ①のルータへ疎通し続けます。従ってインターネットへ接続できなくなります。

PCのデフォルトゲートウェイを①に設定した場合の問題点

インターネットへ接続できないことが判明してから、PCのデフォルトゲートウェイの設定をゲートウェイ②へ変更すれば、PCはゲートウェイ②のルータに疎通を試み、再びインターネットへ接続できます。

ですがこれは現実的ではありません。変更する手間がかかりますし、企業のネットワークであればインターネットへ接続できない間の時間は大きな業務損失になります。

HSRPはゲートウェイをひとつにまとめられる

そこでHSRPを使います。HSRPでは仮想的なゲートウェイにIPアドレスを設定することができます。この機能によってPCから見たゲートウェイはひとつになります。

仮想ゲートウェイにIPアドレスを設定することで、PCから見たゲートウェイはひとつになる

実際にはどちらか片方の物理ルータが仮想IPアドレスを持っており、インターネット向けのパケットを引き受けていますが、障害によってルータが切り替わる際には、予備機のルータは仮想IPアドレスも引き継ぎます。この機能によってNWには2台のルータが存在するにも関わらず、ゲートウェイはひとつだけという状態を作りだすことができるわけです。

さて、ここで『ルータの切り替わり』というワードが登場しました。HSRPはゲートウェイをひとつにまとめる機能以外にも、複数のルータを相互に監視して、ルータが故障した際に正常なルータの方へパケットを導くような機能を持ちます。この機能について次章から解説します。

HSRPの仕組み

冗長構成の場合、主に通信を担当する機器を主系と呼びます。主系で障害が発生した際に、主系の役割を引き継ぎ、新たなる主系として働く予備機を副系と呼びます。

HSRPでは主系機器を「Active」、副系機器を「Standby」と呼称します。この構成を「Active/Standby構成」と言います。

同じHSRPグループになった機器はHSRPのプライオリティ値が大きい機器をActiveとして認識します。プライオリティ値はネットワーク管理者が設定できますし、設定しない場合にはMACアドレスの値が大きい機器がActiveになります。

さて、ここまでにHSRPでは「Active/Standby構成」を用いて通信が途切れない仕組みを実現していることが分かりました。では、HSRPグループ内の複数のルータはお互いにどのようにルータの生死を監視しているのでしょうか。

次に解説します。

副系機器がActiveに昇格する仕組み

主系機器の障害発生を検知し、副系機器がActiveに昇格する仕組みは、Helloパケットによって実現されています。

こんにちはパケットと呼ばれたりします。ご近所さんと挨拶しているイメージ。

主系機器と副系機器は、定期的にHelloパケットという監視用のパケットをお互いに送り合っています。副系機器は、主系機器から一定時間Helloパケットを受け取らなかったとき、主系機器に障害が発生したと判断します。

ご近所さんが挨拶してこなくなったら心配になりますよね。

そして、副系機器はActiveとして切り替わり、以降の通信を行います。

スイッチがActive機を認識する方法

HSRPグループ内のルータは、相互のHelloパケットによって障害を検知しますが、HSRPグループ外のネットワーク機器、例えばL2スイッチ等はどのようにHSRPのActive機を判断しているのでしょうか。

まず前提として、IPアドレスを認識しないL2機器はMACアドレスを使用し通信をしています。そのため、L2機器はHSRPによって用意された仮想ゲートウェイのIPアドレスを認識していません。

普通に考えると、L2機器はActive/Standbyの切り替わりを認識できずに故障機に対してフレームを転送してしまうのではないか、という疑問が湧きます。

実際にはHSRPは仮想IPアドレスの他にも仮想MACアドレスを使うことで、L2機器が混在するネットワークにおいても通信を成立させることが出来ています。

もう少し詳しく解説しましょう。

通常、L2機器内部にはMACアドレステーブルが存在し、MACアドレス(対向機器)と紐づくインターフェースが整理されています。

L2機器はフレームを受信すると、宛先MACアドレスとMACアドレステーブルのエントリーを確認し、どのインターフェースにフレームを転送すべきか判断します。仮にテーブルにエントリーが無い場合にはフレームをブロードキャストします。

MACアドレステーブルを参照しフレームを送信

同じようにActive機を判断する場合にもMACアドレスを使用していますが、使用するMACアドレスはActive機のMACアドレスではなく、仮想のデフォルトゲートウェイの仮想のMACアドレスです。仮想MACアドレスは動的に生成されます。

L2機器はActive機から「仮想MACアドレスはこちらにあるよ」というGARPを受け取り、MACアドレステーブルに書き込みます。障害時には、今までStandbyだった機器がActiveとなり、その機器からGARPを受け取りますので、送信先を変更することができます。

このようにHSRPは仮想IPアドレスや仮想MACアドレスを用いて、ネットワーク内の通信に矛盾が発生しないようにActive/Standbyの切り替わりを実現しているわけです。

最後に2つ、HSRPでよく使われる機能について紹介します。

【よく使われる機能①】プリエンプトの設定

プリエンプトとはプライオリティ値の高い機器を常にActiveとする機能です。

・有効の場合の動作
主系機器で障害発生した場合、副系機器がActiveに昇格しルーティングを行います。その後、障害が発生した旧主系機器が復旧した場合に、再び旧主系機器がActiveに復帰し、以降の通信を担当します。
運用上、主系がActiveであるほうが管理しやすい場合もあります。

・無効の場合の動作
主系機器で障害発生した場合、副系機器がActiveに昇格しルーティングを行います。その後、障害が発生した旧主系機器が復旧した場合にも、引き続き副系機器がActiveとして継続して通信を担当します。
主系機器を再びActiveに戻すということは、切り替わりに伴う通信の瞬断が発生する可能性がありますので、そのリスクを排除するために無効とする場合もあります。

プリエンプトの有効/無効は冗長化設計において必ず決めておくポイントになります。基本設計書に記載されることになります。

【よく使われる機能②】トラッキングの設定

HSRPを有効にしているLAN側のインターフェースでは、Helloパケットで障害の発生を検知したり、MACアドレスで検知できます。しかし、HSRPを有効にしてないWAN側のインターフェースでの障害は検知できず、副系機器がActiveに昇格できず、ルーティングの機能が切り替わらない可能性があります。

そこで任意のトラッキングを設定します。インターフェースのリンクアップ状況を監視したり、Pingの到達性を監視したり、様々な種類があります。

これらのトラッキングの機能を使うことでWAN側のインターフェース障害を検知しています。

まとめ

  • 企業のネットワークは、障害リスクに備えて冗長構成となっている。その中でも回線は必ず冗長されており、ゲートウェイも冗長化されている。

  • HSRPはHelloパケットによって、Active、Standbyを認識している。また仮想ゲートウェイは仮想MACアドレスを持っており、L2レイヤの機器は仮想MACアドレスをもとに、Activeを認識している。

  • 企業のネットワーク方針に沿って、プリエンプト機能を使用する。

  • WAN側の障害を検知するには、トラッキングを設定する。

以上です。ここまで読んでいただきありがとうございました。
参考になりましたら幸いです。

最後に宣伝 /インフラエンジニア募集中★

筆者が所属する株式会社CAIRN(ケルン)はインフラエンジニアに特化した高還元SES企業です。

・ 契約単価に連動した報酬体系なので評価基準が明確です。
・ITインフラに強い営業網で豊富な案件からプロジェクトを選べます。
・ 独自の研修制が多数あり、学びなおしが出来ます。
・厚生労働省認定のホワイト企業です。

▲給与テーブルの抜粋
▲厚生労働省 安全衛生優良企業認定ホワイトマークを取得

インフラエンジニアにとって良い環境を整えています。ご応募お待ちしております。

株式会社CAIRNの採用ページへジャンプ

▼CAIRNについてさらに詳しく知りたい方はこちら

【Instagram】
ケルンの日常を発信♪
https://www.instagram.com/cairn_recruit/

【代表川嵜のブログ】
インフラエンジニアのキャリアについて週1で発信♪
https://note.com/joyous_cairn1015/
   
【技術ブログ】
月1で発信♪
https://t.co/iInlgn3cfw

【代表川嵜のX】
代表の日常、SES業界について発信♪DM歓迎です!
https://twitter.com/cairndk

【人事花田のX】
人事花田の日常、労務関連について発信♪DM歓迎です!
https://twitter.com/HanadaCAIRN_SES