負荷を減らす工夫
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/03 22:09 UTC 版)
AppleTalk最大の欠点は、何よりもまずネットワークにかかる負荷であった。Bonjourではその負荷を減らすべく、様々な工夫がこらされている。 Bonjour対応の機器が新たにネットワークへ接続されると、その機器はまず自らにIPアドレスを割り当てた後、自らのアドレスとホスト名、さらに提供しているサービスの種類をネットワークにマルチキャストする。他の機器ではその情報をキャッシュし、次回のホスト名やサービスの問い合わせの際には、まずそのキャッシュされたデータを参照するようになる。 ただしそのままではネットワークから機器が取り外された場合に対応できず、動的に再構成されるネットワークには対応できなくなってしまうので、データは常に更新され続ける必要がある。このため、ネットワークに接続された機器は一定時間ごとにマルチキャストで提供可能なサービスの一覧をネットワークの全デバイスに要求する。このマルチキャストは回を重ねるごとに間隔が長くなるように設定されており、最初のマルチキャストはネットワークに接続された時に、2回目はその1秒後に、3回目はさらにその2秒後、4回目は4秒後、5回目は8秒後、6回目は16秒後と、時間は指数関数的に長くなっていく。この間隔の最大値は4096秒で固定されており、それ以上には大きくならない。 このように間隔が段々と長くなっていく理由は、ネットワークへ接続される機器は短時間で取り外されるものと長時間接続されるものの二種類に大別することができ、その中間というものがほとんど存在しないからである。例えばネットワークプリンタなども使用する時だけ電源を入れるか、あるいは朝から晩まで接続しっ放しかの二種類であり、数分ごとに接続切断を繰り返すケースはまずない。 こうしてマルチキャストされたデータは各ホストにキャッシュされる。各機器はネットワークに対して問い合わせを行う前にまずこのキャッシュされたデータを参照するようになっている。キャッシュに目的のデータがなかった場合はネットワークに対してマルチキャストで問い合わせを行うが、該当するアドレスやホスト名、サービスを提供している機器はその返答をやはりマルチキャストで行う。該当しない機器はもちろん沈黙を守るが、マルチキャストされたデータはもちろん受信しており、同様にそのデータをキャッシュに加えてデータベースを更新する。 あるホストがネットワークに対してサービスの一覧を要求した場合、問い合わせのパケットにはそのホストが「すでに知っているサービスの一覧」が含まれる。例えばネットワークにはすでに10のプリントサービスが存在し、問い合わせを行うホストがそのことを知っている場合、問い合わせのパケットにはその旨が記述される。リストに載っているプリントサービスは沈黙を守り、リストに載っていないプリントサービスのみが返答を行う仕組みである。 このようにBonjourは、データを可能な限りキャッシュし、ネットワークを探索する際にはまずそのキャッシュを参照することでネットワークへかかる負荷をギリギリまで減らしている。もちろんマルチキャストによる問い合わせが行われない場合に比較して負荷は高くなる傾向にあるものの、問題ないレベルに収まることがほとんどである。
※この「負荷を減らす工夫」の解説は、「Bonjour」の解説の一部です。
「負荷を減らす工夫」を含む「Bonjour」の記事については、「Bonjour」の概要を参照ください。
- 負荷を減らす工夫のページへのリンク