Bonjour(ボンジュール)とは
Bonjourは、
Appleが開発したゼロコンフィギュレーションネットワーキング技術の
実装です。主にLAN環境において、特別な設定をすることなく機器をネットワークに接続し、使用できるようにする技術です。元々は「Rendezvous(ランデブー)」という名称で、Mac OS X v10.2から標準搭載されましたが、Mac OS X v10.4で「Bonjour」に名称変更されました。Windows環境向けにも「Bonjour for Windows」が提供されています。
概要
Bonjourは、IETFで検討されていた「Zeroconf」という技術をベースにしています。
Appleはこれを独自に発展させ、
仕様を公開することで、現在では「Zero Configuration Networking」としてIETFによって標準化されています。
「ゼロコンフィギュレーション」とは、ネットワーク機器を接続する際に、ユーザーが
IPアドレスやホスト名などの設定を一切行わずに、すぐに利用できるようにする技術のことです。
Appleは以前、ゼロコンフィギュレーション技術として
AppleTalkというプロトコルを使用していました。
AppleTalkでは、LANに接続された機器に自動的にアドレスと名前が割り振られ、ユーザーは設定なしで機器にアクセスできました。しかし、ネットワークに接続された機器が常に新しい機器の有無を探索し続けるため、ネットワーク負荷が高くなるという課題がありました。
LANの主流がTCP/IPベースの
イントラネットへ移行するにつれて、
AppleTalkとTCP/IPを混在させるための技術(MacIP、IPTalk、EtherTalkなど)が登場し、ユーザーや管理者は複雑な設定を強いられるようになりました。その後、
Appleは
AppleTalkを段階的に廃止し、TCP/IP上でのファイル共有(AFP over TCP)やサービス発見(SLP)を導入しましたが、設定の複雑さは解消されませんでした。
こうした背景から、
Appleは
AppleTalkおよびSLPを置き換える技術としてBonjourを開発しました。BonjourはTCP/IP上で動作し、
AppleTalkと同様の使いやすさを持ちながら、ネットワーク負荷を大幅に低減します。
「何の設定も行わずに機器を使用可能にする」という点では、
サン・マイクロシステムズのJiniや
マイクロソフトのUPnPと共通しています。
Bonjourは
フランス語で「こんにちは」という意味です。旧称のRendezvousは「待ち合わせ」を意味します。
機能
Bonjourの主な機能は、
IPアドレスとホスト名の自動割り当て、そしてサービスの自動探索です。Bonjourネットワークでは、DHCPサーバーやDNSサーバーなどの設定を必要としません。機器がネットワークに接続すると、
IPアドレスが自動で割り当てられ、各機器に設定されたホスト名と提供可能なサービスがネットワークに通知されます。
IPアドレスの割り当てには、AutoIPの技術が利用されています。
IPv4ネットワークでは、Bonjour対応機器は169.254.0.0/16のアドレス範囲から空いているアドレスを自動的に取得します。
IPv6ネットワークでは、LANインターフェースに自動的に割り当てられるリンクローカルアドレスが利用されます。
ホスト名は、各機器が名乗る名前を使用し、「マシン名+サービス名+プロトコル名+ドメイン名」という形式で構成されます。マシン名はユーザーが設定した名前、サービス名はその機器が提供するサービス、プロトコル名はTCP/IPの場合「._tcp」、ドメイン名は「.local」となります。
ホスト名の探索には、マルチキャストDNS(UDPポート5353)が使用されます。ホスト名を問い合わせる際には、ネットワークに接続されたすべての機器に対してホスト名を問い合わせ、一致した機器と接続を行います。ネットワーク負荷を軽減するため、ホスト名をキャッシュするなどの工夫がされています。
提供可能なサービスの一覧は、マルチキャストDNSを利用してDNS resource recordsに格納され、通知されます。このサービスには、プリンターなどの
ハードウェアが提供するサービスだけでなく、音楽や画像の配信、
インスタントメッセージングなどの
ソフトウェアが提供するサービスも含まれます。
Bonjourの最大の特徴は、デバイスではなくサービスを中心に考えている点です。特定のデバイスが提供するサービスを問い合わせるのではなく、目的のサービスを提供しているデバイスを探索します。例えば、あるサーバーが
Webサーバーとしても、FTPサーバーとしても機能する場合があります。Bonjourでは、デバイスではなくサービスを重視することで、より柔軟なネットワーク利用が可能になります。
Bonjourでは、ホスト名を解決して特定のデバイスの
IPアドレスを特定してからサービスを問い合わせるのではなく、直接、目的とするサービスを提供しているデバイスを探します。ネットワーク全体に「FTPサービスを提供しているサーバーはどれ?」と問い合わせれば、該当するデバイスが応答し、そのデバイスにアクセスを試みます。
負荷を減らす工夫
AppleTalkの最大の課題であったネットワーク負荷を低減するため、Bonjourには様々な工夫がされています。
Bonjour対応機器がネットワークに接続されると、まず
IPアドレスを割り当て、次に自身のアドレス、ホスト名、提供しているサービスの種類をネットワークにマルチキャストします。他の機器はこれらの情報をキャッシュし、次回以降のホスト名やサービスの問い合わせの際には、まずキャッシュされたデータを参照します。
ただし、キャッシュされたデータだけでは、ネットワークからの機器の取り外しや動的な構成変更に対応できないため、データは常に更新される必要があります。このため、ネットワークに接続された機器は一定時間ごとにマルチキャストで、提供可能なサービスの一覧をネットワーク全体に要求します。このマルチキャストの間隔は、指数関数的に長くなるように設定されています。
例えば、最初のマルチキャストはネットワーク接続時、2回目は1秒後、3回目はさらに2秒後、というように間隔が広がります。最大間隔は4096秒で固定されています。これは、ネットワークに接続される機器が短時間で取り外されるものと長時間接続されるものに大別でき、中間的な使用頻度の機器は少ないという特性を考慮した設計です。
各ホストはマルチキャストされたデータをキャッシュし、問い合わせの前にまずキャッシュを参照します。キャッシュにない場合は、ネットワーク全体に問い合わせをマルチキャストします。該当するアドレスやホスト名、サービスを提供している機器はマルチキャストで応答し、応答しない機器もマルチキャストされた情報を受信してキャッシュを更新します。
あるホストがサービス一覧を要求する場合、問い合わせパケットには「すでに知っているサービス一覧」が含まれます。これにより、既知のサービスは応答を控え、新規のサービスのみが応答することで、ネットワーク負荷をさらに軽減します。
このように、Bonjourは、可能な限りデータをキャッシュし、ネットワーク探索の際にはまずキャッシュを参照することで、ネットワーク負荷を最小限に抑える工夫がされています。
欠点と制限
Bonjourには、以下のような欠点や制限があります。
- - LAN内限定: 原則としてルーターを越えて使用することはできません。ただし、DHCPとダイナミックドメインネームシステム(DDNS)を組み合わせればルーター越えも可能になります。IPv6の場合はこの限りではありません。
- - イベント制御の弱さ: UPnPと比較して、イベント制御の機能が限定的です。Bonjourでは、マルチキャストDNSやDDNSを用いてイベント制御を行うため、きめ細かな制御は難しいです。
- - 対応機器の少なさ: UPnPに比べると、Bonjourに対応した機器はまだ少ないです。AppleはAirTunesなどを搭載した製品をリリースしていますが、サードパーティー製の対応機器はまだ少ない状況です。
- - オープンソース: UPnPと同様に仕様が公開されているため、Bonjourのオープンソース性が目立った優位性にはなっていません。
脚注
(注釈)
(出典)
関連項目
外部リンク