INDEX(Topページ) | News & Topics | Glossary | Column List | GuestBook | Link & Profile

第13回 TCP/IP環境に革新もたらすZeroConfネットワーク「Bonjour」〜概要と仕組等〜

「Mac OS X 10.2 Jaguar」リリース時における目玉機能の一つとして多大な期待を集めながら、現時点でもそのメリットが見えづらい存在となっているZeroConfネットワーク「Bonjour」(リリース当初は「Rendezvous(ランデブー)」と称されていたが、商標上の問題にて「Mac OS X 10.4 Tiger」より名称変更)について、その概要や基本的な仕組等を紹介したいと思います。


●ZeroConfをベースとして設定不要なネットワーク構築を実現

今回紹介しているインスタントネットワーキングテクノロジ「Bonjour」は、一般的にMac OS Xを利用しているユーザにとっては耳にする機会が少ない機能の一つではないかと思われますが、基本的にはEthernetやWireless LAN(IEEE802.11)、或いはBluetoothやFireWier、USB等で利用可能なプロトコルの1つと解釈して頂ければ良いかと思います。Appleは2002年9月にはBonjourを「APSL(Apple Public Source License)準拠のオープンソースソフトウェアとして一般公開しており、独自規格ではなくスタンダードな標準技術としての普及に業界の先導役として尽力。ベースとなっているのはWeb標準やOSPF、NETCONF等の策定にも関与しているIETF(Internet Engineering Task Force)の中の分科会の一つで標準化されている「ZeroConf(Zero Configuration Networking)」と称される技術で、このZeroConfとはTCP/IPをベースとしたLAN内に接続されたクライアントPCや周辺機器(プロトコルとしての理想はAV機器の制御までをも含む)、或いはそれらの上で稼働している種々のアプリケーション等といった一連のノード(ハード、ソフト不問)を設定不要にてネットワークに参加させる事を可能とした技術となっており、Sun Microsystemsの「Jini」や、Microsoftらが推進する「UPnP」等と競合する技術となっています。Bonjour自体はZeroConfを実装して具体化した業界初の技術としても注目を集めており、IPアドレスやDNSサーバの設定をする事なくデバイスの相互検出がオートマチックに行われ、旧Mac OS時代から永きに渡って利用されてきた「AppleTalk」がLAN上で提供していた利便性を、TCP/IP環境にて実現させた技術といった認識が近いのではないかと思われます。

そしてBonjourを紹介しようとする際に、欠かす事のできないのが前述のZeroConfという技術になりますが、これは基本的に、

の3つの構成要素から成り立っており、それぞれには以下のような特徴が挙げられます。

Addressing(Auto-IP、アドレス割り当て)

Addressingとは、任意のノードが参加しているネットワーク内においてIPアドレスを取得するための機能を指している。IPv4が利用されている環境下において、同一ネットワーク内にDHCP (Dynamic Host Configuration Protoco)サーバが存在する場合には、該当ノードは自動でIPアドレスを取得する事が可能であるが、DHCPサーバが存在しない環境下ではIPアドレスを取得する事ができない。この際にZeroconfでは、Auto-IP技術を用いて「169.254/16」(169.254.0.0〜169.254.255.255)のアドレス空間から未使用アドレスを探索し、そこから任意のアドレスを自身のアドレスとして割り当てるようになる。また、IPv6環境下においては機能(IPv6)によって自動的に割り振られる「リンクローカルアドレス(注1)」が利用される事となる。尚、BonjourにおいてZeroConfが機能するのは、基本的にLAN内における同一サブネット内のみとされているが、DHCP、Dynamic DNS、グローバルIP等を備えた環境であればルータ越えも可能(注2)となっている。

Naming(Multicast DNS、名前割り当て)

Namingとは通信時における利便性の確保等を目的とした各ノードに対する名前割り当ての機能を指しており、インターネット上等で標準的に利用されている名前解決のためのDNS(Domain Name System)は必要としない。代わりにBonjourでは、Multicast DNS(mDNS、Dynamic DNS)と称される仕組みを用いて各ノード(ホスト)自身の名称を決定しており、Namingにおける基本形は、「ノード名+サービス名+プロトコル名+ドメイン名(example._service._tcp.local)」と表記される。Mac OS XにおけるBonjourでは、IPアドレスと共にネットワーク上における一意な名称も自動で割り振られる仕組みとなっているが、その際には基本的に(例外もあるが)「コンピュータ名.local」という名称が付与され「システム環境設定」>「共有」において確認可能となっている。そしてMac OS X 10.3以降では、末尾に「.local」が付加しているホスト名は「ネットワーク」環境設定における「DNS サーバ」エントリを使用せず、Bonjourホストとしてのみ扱われる事になる。サービス名にはIANA(Internet Assigned Numbers Authority)によって割り当てられている「Well-Known Port Numbers」にて定義されているキーワードが使用される事となり、Well-Known Port Numbersに名前の挙がっているプロトコルであればFTPやHTTPも含めて対応可能となっている。名前割り当ての際には、各ノードが自身に割り当てられるべき名称が既に使用済でないかを確認した上で使用される仕組みとなっており、通信時における各ノード名の探索はネットワークに接続された全機器に対して問い合わせを行い、問い合わせに一致したノードに対して接続を行うような仕組みとなっている。

↑「システム環境設定」>「共有」におけるコンピュータ名の設定画面。右下の「編集」ボタンにて任意の名称に設定可能。その際「.local」は自動で付加されるので入力する必要はない

そして、ここで設定された各ノードの名称は、TCP/IP環境で利用されるIPアドレスの代用として用いる事が可能となっており、例えばサーバを中心とした各ホストへの接続時や、pingコマンド使用時等にも利用可能となっている。

↑Bonjouを利用して「Terminal(ターミナル、/Aplication/Utilities/Terminal.app)」からpingコマンド(3行目)を実行した画面。ホスト名の末尾に付く「.local.」という文字列は「システム環境設定」>「ネットワーク」>「TCP/IP」上の「検索ドメイン」欄に「local」を指定すれば省略可能

Browsing(DNS Service Discovery、ブラウズ)

Browsingとはネットワーク上から目的のサービスを提供するノードを探索すための機能を指しており(サービス検索)、任意のノードから発せられたサービス要求に対して、該当ノードから応答が返される仕組となっている。そしてこの機能では「DNS Service Discovery(DNS-SD)」と称される機能が使用されており、Namingでも利用されているMulticast DNSの「DNS resource records」に各ノードのサービス情報を登録。前述のWell-Known Port Numbersのキーワードを用いてDNS Queryを行うことにより、任意のサービスを提供しているノードの検索を可能としている。また、通常と異なるポート番号にてサービスが提供されている場合や複数のサーバでサービス提供が行われているトラフィックを利用する際には、RFC2782で規定されている「SRV」レコードを使用する事により、各々に対応した情報が取得可能となっている。尚、これらで発生する一連の応答にはマルチキャスト(注3)が利用されており、ブロードキャスト(注4)を利用しているAppleTalkと比較した場合に、ネットワーク上における負荷を最小限に抑える事が可能となっている一方、イベント情報のコントロールを前述のmDNSやDynamic DNSに頼らざるを得ないため、制御可能な情報は「サービスの開始/終了」程度に止まっている。


●AppleTalkとの比較

前述までのように、Classic Mac OSからのユーザにBonjourを紹介しようとする際には、標準プロトコルとして採用されてきたAppleTalkとの比較が最も身近ではないかと考えられ、実際に「Naming」によって決定される各ノードの名称は、AppleTalkにおけるNBP(Name Binding Protocol)に類似した規則性が用いられています(ノード名が「NBP Name」、サービス、プロトコル名が「NBP Type」、ドメイン名が「NBP Zone」に相当する)。では、AppleTalkとTCP/IPとではどのような違いが存在していたのか、Bonjourから少し離れて考えてみる事とします。

AppleTalk

設定に関する特別な知識や管理は不要であるが、通信の際にネットワーク上の不特定多数のノードにパケットを送信しようとする(ブロードキャスト)事があるため、ネットワーク上における負荷を高めてしまう傾向にある。規格自体も非常に古く(EtherTalkが普及する以前は、LocalTaik上でも使われていた)クライアントにおける様々なレスポンスに影響を及ぼす事がある。

TCP/IP

通信自体はIPアドレスを元に一意の相手と送受信を行う事ができる(ユニキャスト(注5))ため、効率的な通信が可能だが、設定に際しIPアドレスやサブネットマスクの設定等、一定の知識を要する事となる。DHCPを導入すればアドレス割当は不要となるが、それとて一般家庭のエンドユーザには決して敷居の低いものではない。複数の人数が参加するネットワークにおいては管理者が必要となる。

等といった特徴がありましたが、両者のメリットを抽出し、パーソナルユーザにおける手軽なIPネットワークのメリットの享受を実現した事がBonjourの大きな特徴として挙げられるでしょう。そしてAppleTalkのデメリットの一つとして挙げられていた、ネットワークにおける負荷の増大に対してBonjourでは、サービス検索のフレームワークにDNSを利用する事によって、任意のノードが他のマシンから受けたデータ(Queryへの返答、新サービスの開始通知等)を極力キャッシュする事を実現。ネットワークへQueryを出す事を極力抑えるようにした上で、サービス一覧の問い合わせ間隔を指数関数的に増やす(1秒後→2秒後→4秒後→8秒後→…)事によって、ネットワーク(LAN)上に流れるトラフィックを極力減少させるような工夫が施されています。

次回は、身近に見られるBonjourの活用事例を幾つか紹介したいと思います。


●本文訳注

(注1)リンクローカルアドレス

同一ネットワーク(サブネット)上におけるホスト同士の通信にのみ利用可能なアドレスで「1111 11110 10」というビットパターンで始まる(16進表記では「fe80:://10」)。尚、IPv6ホストは各インタフェースに少なくとも1つのリンクローカルアドレスを持っており、同一リンク上のホスト間におけるアドレスの自動設定や、レイヤ2アドレスのアドレス解決を行う事等が可能となっている。

(注2)DHCP、Dynamic DNS、Global IP等を備えた環境であればルータ越えも可能

Bonjourにて利用されているDNS-SD(DNS Service Discovery)がmDNSとは独立した機能となっているため、通常のユニキャストによるDNS Queryを使用する事によって、ルータを越えた形でのDNS-SDが利用可能となっている。

(注3)マルチキャスト

特定の送信ノードから複数の受信ノード(特定多数)に対して、同一内容のパケットを送信する際に利用される通信方式。TCP/IPにおいては、複数の受信ノードをグループ化し(グループ化するために「マルチキャストIPアドレス」を利用)、マルチキャストIPアドレスに対して一度パケットを送信すれば、通信経路上の適切なルータが宛先に応じて自動的にデータを複製する仕組となっているので、回線を圧迫する事のない効率的なデータ転送が可能となっている。尚、マルチキャストを利用するには、マルチキャスト経路制御(Multicast Routing)と呼ばれる通信プロトコルを導入する必要がある。

(注4)ブロードキャスト

ネットワーク上に存在する全てのノードに対して任意のパケットを送信する通信方式で、一斉同報通信とも呼ばれている。ネットワーク全体を意味するブロードキャストアドレスを指定する事によって通信が行われ、ブロードキャストパケットがスイッチに到達すると、スイッチはこのブロードキャストパケットを全てのポートに転送(フラッディング)する。ブロードキャストアドレスにはIPアドレスの場合(IPブロードキャストアドレス)は「255.255.255.255」、MACアドレスの場合(MACブロードキャストアドレス)は「FF:FF:FF:FF:FF:FF」、或いはホスト部のビットを全て1にしたアドレスが使用される事となる。

(注5)ユニキャスト

ネットワーク内において、単一のノードを指定して特定の相手にデータを送信する通信方式。通常最も頻繁に利用されている通信方式で、ブロードキャストの対比として理解される場合が多い。


御意見、御感想はこちらまで
Topページへ


Created Date : 06/06/15
Modified Date :