SIP関係の情報

これはお気軽に自宅のFreeBSDとMacOS X環境でSIPベースのVOIPを実験した メモです。

■ オープンソースなSIPサーバ

サーバーはFreeBSD 6.2/amd64で動かすためにいろいろ探してみました。

Asterisk 最も有名なSIPサーバ。一般電話網へのゲートウェイ機能などもあり 超高機能。いろいろ出来るためか設定が分かりにくくて断念。
Partysip 単純なSIPサーバとして実装されているので、ソースも多くない。SIPの 処理はoSIPで行っ ている。ただメンテナンスされていないようでFreeBSD 6.2/amd64でビ ルドしたらビルドは通ったが正常に動作しないため断念。
SIP Express Route(SER) AsteriskとPartysipの中間くらいの機能および大きさのソフトウエア。 依存関係はあまりなくFreeBSD 6.2/amd64の上でgmakeでビルドできた。 データベースにMySQLを使ったり(使わなくても動作しますが)Radius を使った認証は共有ライブラリのモジュールによってサポートされて います。
SIP Express Media Server(SEMS) 純粋なSIPサーバーではなくメディアサーバですが、ビルドインでSIPモジュール が入っています。私が調べた資料はここにあります。
Kamailio (OpenSER) 元の名前がOpenSERなので、おそらくSERからの派生ではないかと思う。ただSER よりもメンテナンスされている感じはある。今のところ試していません。
The SIP Router Project SERとKamailioを統合するプロジェクトのようだが、内容の詳細は不明です。 今のところ試していません。
FreeSWITCH かなりソースコードが多く、メディアサーバとしての機能も含まれているようです。 今のところ試していません。
sipd 日本で作られたSIPサーバです。単純なSIPサーバのようですがMySQL が必要だったため、試していません。

いくつか試してみどうにかSERが使えたので、今回はSERをサーバとし て使いました。設定はGettingStartedのドキュメントの中の こちら(0.9.x用)を使い必要なモジュールの みビルドを行いました。2.xではfiloのパラメータが無くなったようです。 SERの設定ファイルに問題があった時のエラーメッセージは分かりにくいです。

SERとKamailio(OpenSER)の関係だがちょっと調べてみた。SERはドイツの フラウンホーファー研究機構(Fraunhofer Institute)のFOKUS (Fraunhofer Institute for Open Communication Systems)という部門で2001年く らいに開始されたプロジェクトのようだ。おそらく当初からオープンソースとして 0.xのバージョンを開発していたと思われる。2005年くらいに0.9.xの開発当時に 何からの軋轢でSERとは別にOpenSERのプロジェクトが始まったようだ。名前から の推測になるが、おそらくSERの開発者が、OpenSERの開発者の提案なりコードなり を採用しなかったのが原因ではないかと思われる。OpenSERは0.9.4から始まり本家 SERよりも先に2006年に1.xに移行した。SER側は0.9系をメンテナンスしながら 次期バージョン(Ottendorf)の 開発を続けて、これが2008年に2.x系となる。これに対してOpenSER系は1.x台で プロジェクト名をKamailioと変更して2010年に3.x系の開発を始めたようだ。 SERよりもKamailioの方が活発だが、SERも細々とメンテナンスが続けられている。

この混乱によりSEMSにも影響が出ているように思われる。 The SIP Router Projectは双方のメンテナンスコストを減らす事を目的にしているが、 連携アプリケーションには影響がないようにインターフェースが統一されると良いの だが。

■ MacOS Xで動作するSIPクライアント

Xmeeting オーププンソースのMacOS XのSIPとH.323のクライアントです。元々はohphoneX というH.323のクライアントを作っていたプロジェクトで現在は こちらのソフトの開発を中心にしているようです。下のX-Liteに比べると かなり軽いアプリです。CODECのサポートはG.711(a/u)だけです。 SIPのコードは Opalを使っている模様です。 動作環境は10.4以上です。
X-Lite オープンソースではありませんが、フリーなアプリケーションです。Windows 版もあります。SIPの処理はオープンソースの resiprocate を使っているようです。iBook Dual-USBにはちょっと重すぎます。
SIP Communicator JAVAで書かれた、マルチIMアカウント対応のSIPクライアントです。 iBook Dual-USB 10.4で起動して簡単に試しましたが、あまり詳しくは 調べていません。
Linphone PortAudioドライバーを使うか 私の書いたCoreAudioのコードでMac上でコマンドベースのツールが使えます。 SIPコードはoSIP, eXosip を使っています。オープンソースですがソースが公開できない商用利用 などではライセンスが必要です。
telephone 試していないですが、簡単なクライアントのようです。SIP処理には pjsipを使っています。

■ 資料など

SIPを知る

■ デバッグ方法

SIPプロトコルは通常UDPの5060ポートでデータの送受信を行うので、FreeBSD やMacOS Xで下記のコマンドを実行してデータが流れているか確認できます。

% sudo tcpdump -s 512 -X '((udp) and (port 5060))'
Network Grepというツールもあ るようです。



Copyright (C) 2007-2009 Hiroki Mori All Rights Reserved.