内容紹介
上級SEを対象にしたAsterisk(アスタリスク)の技術解説書登場!
Asterisk(アスタリスク)は、Linux上で動作するIP-PBXオープンソフト。これを利用して安価に構内電話システムを構築することができる。本書はVoIPについて勉強をしたい上級SEを対象にした、アスタリスクの技術解説書で、実際にシステム構築を行う際に必要となる、カスタマイズの具体的なノウハウを解説する。
このような方におすすめ
アスタリスクおよびVoIPシステム開発に関わるプログラマー・SE
設計、プログラム開発、テスト、インテグレーション業務に関係する、より深い情報を必要とするユーザー
目次
主要目次
第1部 アーキテクチャ編
第1章 Asteriskとは
第2章 Asteriskの基本構造
第3章 Asteriskの設定
第4章 各機能のシーケンスとAPI
第5章 コア
第6章 モジュール
第7章 拡張機能
第2部 環境構築編
第8章 要求されるハードウェアスペック
第9章 Asterisk基本環境の構築
第10章 データベース設定
第3部 カスタマイズ編
第11章 カスタムビルド
第12章 デバッグ
第13章 試験
第14章 運用のための設定
第15章モジュール機能拡張
第4部 Appendix
A GUI設定
B 設定ファイル・コメント和訳
C 設定の構造体
D コア部の変数と関数
E 用語集
参考サイト・RFC
索引
詳細目次
第1部 アーキテクチャ編
第1章 Asteriskとは
1.1 IP-PBXとは
1.1.1 IP-PBXシステムの概要
1.1.2 PBXの機能
1.1.3 IP-PBX
1.1.4 UnPBX
1.2 Asteriskの特徴
1.2.1 なりたち
1.2.2 Asteriskの特徴
1.2.3 Asteriskの基本機能
1.2.4 AsteriskとLinuxとオープンソースコミュニティ
1.2.5 Asteriskを適用できる分野
1.2.6 Asteriskを適用しにくいケース
1.2.7 普及の背景
1.2.8 米国におけるIP-PBX
1.3 日本におけるAsterisk
1.3.1 固定電話神話
1.3.2 ラインキー文化
1.3.3 小規模オフィス向け
1.4 バージョンによる違い
1.4.1 バージョン1.0以前(ベータ版)
1.4.2 バージョン1.0
1.4.3 バージョン1.2
1.4.4 バージョン1.4
1.5 主要なVoIP呼制御プロトコル
1.5.1 H.323
1.5.2 SIP
1.5.3 IAX/IAX2
1.5.4 MGCP
1.6 主要なVoIPコーデック
1.6.1 G.711
1.6.2 G.722
1.6.3 G.726
1.6.4 G.729
1.6.5 GSM
1.6.6 iLBC
1.6.7 Speex
1.6.8 LPC10
第2章 Asteriskの基本構造
2.1 Asteriskの動作
2.1.1 起動
2.1.2 Asteriskの機能ブロック
2.1.3 通話の流れ
2.1.4 管理インターフェース
2.1.5 詳細な機能ブロック
2.2 Asteriskの基本的な構造
2.2.1 コアとモジュール
2.2.2 階層構造
2.3 Asteriskのソースの構成
2.4 コアの概要
2.5 APIの概要
2.5.1 アプリケーションAPI
2.5.2 チャネルAPI
2.5.3 コーデック変換API
2.5.4 ファイルフォーマットAPI
第3章 Asteriskの設定
3.1 設定の概要
3.1.1 設定ファイルの書式
3.1.2 データベースからの設定読み込み
3.1.3 静的設定の読み込み
3.1.4 リアルタイムアーキテクチャ
3.2 設定ファイルの概要
第4章 各機能のシーケンスとAPI
4.1 ダイヤルプランの基本概念
4.1.1 extensions.conf、extensions.aelの補足
4.2 着呼と発呼
4.2.1 着呼時のAsteriskの動作
4.2.2 発呼時のAsteriskの動作
4.2.3 切断機能
4.3 転送
4.3.1 話中機能の実現方法
4.3.2 ブラインド転送
4.3.3 取り次ぎ転送
4.4 保留とパーク保留
4.4.1 保留
4.4.2 保留音の開始
4.4.3 保留音の終了
4.4.4 パーク保留
4.5 ダイヤルプランの補足
4.5.1 context
4.5.2 exten
4.5.3 prio
第5章 コア
5.1 コアが提供する機能
5.1.1 初期化
5.1.2 設定情報の管理
5.1.3 動的モジュールの管理
5.1.4 PBX制御
5.1.5 システム管理
5.1.6 管理インターフェース
5.1.7 アプリケーションの管理・起動
5.1.8 チャネル管理
5.1.9 ソフトウェアDSP
5.1.10 コーデック変換、ファイルフォーマット変換
5.1.11 CDR API
5.2 起動時の処理
5.3 発着信時のスレッド、イベント制御
5.4 モジュール
5.4.1 モジュールの構造について
5.4.2 起動時のモジュールのロード
5.4.3 モジュールのロード処理の詳細
5.4.4 モジュールのアンロード処理
第6章 モジュール
6.1 アプリケーションモジュール
6.1.1 アプリケーションAPI
6.1.2 アプリケーションモジュール一覧
6.1.3 Voice Mail
6.1.4 MeetMe
6.2 チャネルモジュール
6.2.1 チャネルAPI
6.2.2 チャネルモジュール一覧
6.2.3 IAX2
6.2.4 SIP
6.3 コーデック変換モジュール
6.3.1 コーデック変換API
6.3.2 コーデック変換モジュール一覧
6.4 ファイルフォーマットモジュール
6.4.1 ファイルフォーマットAPI
6.4.2 ファイルフォーマットモジュール一覧
6.5 CDRモジュール
6.5.1 CDR API
6.5.2 CDRモジュール一覧
6.6 リソースモジュール
第7章 拡張機能
7.1 Asterisk Extension Language (AEL)
7.1.1 AEL2の使い方
7.1.2 構文
7.2 Asterisk Gateway Interface (AGI)
7.2.1 AGIの種類
7.2.2 AGIの設定
7.2.3 AGIのコマンド
7.3 Asterisk Manager API
7.3.1 設定ファイルmanager.conf
7.3.2 コマンド実行権限
7.3.3 ログイン
7.3.4 アクション
7.3.5 イベント
第2部 環境構築編
第8章 要求されるハードウェアスペック
8.1 サポートされるプラットフォーム
8.1.1 Asteriskが動作するCPUとOS
8.1.2 Windows版について
8.2 CPU負荷
8.2.1 同時通話数の負荷
8.2.2 呼の発生頻度
8.2.3 コーデック変換の負荷
8.2.4 AGIコマンドによる負荷
8.2.5 データベース処理
8.2.6 AMIの同時接続数
8.3 ネットワーク負荷
8.3.1 同時接続チャネル数
8.3.2 QoS
8.4 PSTNインターフェースカード
8.4.1 JATEの認定を受けていない製品について
8.4.2 Diva Server
8.4.3 OpenVox
8.4.4 Digium社製品
8.5 PSTNインターフェース機器
8.5.1 VE-IG1
8.5.2 VE-AG1
8.5.3 RT58i
8.5.4 SR-5200VoIP
8.5.5 VTL-TA02X
8.6 その他のハードウェア
第9章 Asterisk基本環境の構築
9.1 ビルドとインストール
9.1.1 ソースコードの取得
9.1.2 Zaptelドライバのインストール
9.1.3 Asteriskソースツリーの展開とパッチの適用
9.1.4 Asteriskのビルド用設定ファイルの作成
9.1.5 モジュール選択画面
9.1.6 Asteriskの起動と終了
第10章 データベース設定
10.1 Asteriskデータベース(astdb)の設定
10.1.1 Asteriskデータベース(astdb)
10.1.2 Asteriskデータベースの使用例
10.2 設定のリレーショナルDB化
10.2.1 unixODBCの設定
10.2.2 CDRのデータベース化
10.2.3 リアルタイム設定(静的設定)
10.2.4 リアルタイム設定(動的設定)
第3部 カスタマイズ編
第11章 カスタムビルド
11.1 カスタマイズ時に考慮すべき項目
11.1.1 ビルドオプション
11.1.2 menuselect
11.1.3 FreeBSDでAsterisk1.4をインストールする場合の注意点
11.1.4 RPMパッケージからのインストール方法
11.2 パッチ
11.2.1 パッチの適用
11.2.2 ローカルパッチの作成方法
11.2.3 subversionを使ったソースコードの取得
11.2.4 subversionによるパッチの作成
第12章 デバッグ
12.1 デバッグ環境の構築
12.2 デバッグログ
12.2.1 ログ出力レベルの設定
12.2.2 ログ出力内容の設定
12.2.3 起動オプション
12.2.4 個別のデバッグオプション
12.2.5 IAX2のデバッグログ
12.2.6 SIPのデバッグログ
12.2.7 コアダンプとバックトレース
12.3 パケット解析
12.3.1 Wireshark
12.3.2 キャプチャ環境の構築
12.3.3 WiresharkによるSIPの解析例
12.3.4 IAX2の解析例
第13章 試験
13.1 試験の概念
13.2 試験ツール(SIPp)
13.3 試験前の準備
13.3.1 条件の設定
13.3.2 疑似端末の仕組み
13.3.3 疑似端末の設定
13.3.4 疑似端末の動作確認
13.3.5 性能の評価項目
13.3.6 音声評価手段
13.3.7 パラメータのチューニング
13.3.8 登録タイミング
13.3.9 ファイルディスクリプタ
13.4 試験の実施手順
13.4.1 試験の流れ
13.4.2 コンソール、ログ設定
13.4.3 Asteriskの起動と終了
13.4.4 SIP端末登録
13.4.5 通話品質のランク分け
13.4.6 試験結果の記録
13.5 試験の実例
第14章 運用のための設定
14.1 ネットワークセキュリティへの対応
14.1.1 Asteriskが利用するポートの設定
14.1.2 NATへの対応
14.1.3 Linux Firewall (iptables)との関係性
14.2 SNMP
14.2.1 SNMPエージェント機能を有効にする
14.2.2 NET-SNMPの設定
14.2.3 SNMPモジュールの設定
14.3 優先制御
14.3.1 SIP
14.3.2 IAX2
14.3.3 H.323
第15章モジュール機能拡張
15.1 SIPモジュールへの機能追加
15.1.1 セッションタイマーとは
15.1.2 Asteriskとセッションタイマー
15.1.3 対応方法
15.2 アプリケーションコマンドの追加
15.2.1 アプリケーションコマンドとは
15.2.2 アプリケーションコマンドの作成手順
15.2.3 ディスプレイネームの変更
15.2.4 実装
15.2.5 実行例
15.3 ダイジェスト認証に関する改善
15.3.1 概要
15.3.2 実装方法
15.3.3 実装
15.4 端末の画面にパーク番号を表示
15.4.1 概要
15.4.2 実装
第4部 Appendix
A GUI設定
A.1 日本の商用GUI設定環境
A.1.1 BIZTEL PROとBIZTELウェブ電話PRO
A.1.2 InfiniTalk
A.2 その他のGUI設定環境
A.2.1 AsteriskNOW
A.2.2 FreePBX
A.2.3 astGUIclient
A.2.4 DialplanPro
B 設定ファイル・コメント和訳
B.1 sip.conf
B.2 extensions.conf
C 設定の構造体
C.1 設定情報に関する構造体
C.1.1 ast_config_engine
C.1.2 ast_config
C.1.3 ast_category
C.1.4 ast_variable
C.1.5 リアルタイムアーキテクチャ用API
C.2 ダイヤルプランの構造体
C.2.1 ast_context
C.2.2 ast_exten
C.3 チャネルの構造体
C.3.1 ast_channel_tech
C.3.2 ast_channel
C.4 コーデック関連の構造体
C.4.1 ast_format_list
C.4.2 ast_translator
C.5 その他の構造
D コア部の変数と関数
D.1 PBX処理部
D.1.1 変数
D.1.2 システム制御、スレッド制御
D.1.3 変数操作
D.1.4 アプリケーション操作
D.1.5 ダイヤルプランスイッチ操作
D.1.6 ダイヤルプラン関数操作
D.1.7 context操作
D.1.8 extension操作
D.2 非同期処理
D.2.1 スケジューラ
D.2.2 I/Oマネージャ
D.3 管理インターフェース
D.3.1 CLI API
D.3.2 AMI API
D.3.3 HTTPサーバAPI
D.4 音声処理部
D.4.1 DSP処理部
D.4.2 RTP処理部
D.4.3 読み上げ機能
D.5 CDR処理部
D.6 ログ処理
D.6.1 ログレベル
D.6.2 ログ出力API
D.6.3 出力レベル
D.7 その他の関数群
D.7.1 フラグ操作関数
D.7.2 テキスト操作関数
D.7.3 演算処理関数
D.7.4 ネットワーク関数
D.7.5 メモリ管理関数
E 用語集
参考サイト・RFC
索引
続きを見る