PR

「Hello」と「Heartbeat」は何が違うの?

(イラスト・アニメーション:岸本 ムサシ)

  今回の回答者:
ネットワンシステムズ
ビジネス推進グループ
ビジネス推進本部 第1製品技術部
井上 直也
角田 玄司

 「Hello(ハロー)」や「Heartbeat(ハートビート)」は、ネットワーク機器やサーバーなどが「自身の状態」を知らせるためのメッセージです。どちらの呼び名を使うかは、「どんな機器がどんな目的で状態を知らせるか」によって異なります。

 Helloは一般的に、ネットワーク機器やサーバーなどが自身の存在を周囲に知らせるためのメッセージを指します。例えばOSPFというルーティングプロトコルでは、ルーター同士が一定時間ごとにHelloパケットを発して、近隣のルーターに自身の存在を通知しています。Helloで通知することで、ネットワークのトポロジーを算出できるようにしているのです。また、暗号化通信に使うプロトコルであるSSLでは、通信相手との最初のネゴシエーションの際にHelloを相互に送ります。どちらも文字通り、周囲や相手に「あいさつ」することで、自身の存在や、通信可能であることを知ってもらう役割を果たしています。

 一方のHeartbeatは一般的に、互いの存在を確認しあった機器がその後も互いの状態を確認し続けるためのメッセージを指します。いわゆる死活監視のことです。例えば、多重化したサーバー間ではHeartbeatを交換しています。相手が発するHeartbeatを受信できなくなったときは相手のシステムに異常が起こったとみなし、予備系のシステムに切り替える――といった用途に使うのです。

 Linuxサーバーを多重化するためのモジュールとして、ずばり「Heartbeat」という名前のソフトウエアがあります。Heartbeatはこのソフトウエアを指す固有名詞でもあり、互いの状態を確認し続けるための機能を指す一般名詞でもあるといえます。

 ちなみにレイヤー3スイッチやロードバランサー、ファイアウォールなどのネットワーク機器では、Heartbeatと同種の機能を「keepalive(キープアライブ)」などと呼ぶケースもあります。どちらの呼び名を使うかは、機器メーカーによって異なります。