忍者ブログ

FreePBXと050 Freeで月額50円以下でビジネス用レベルの最強IP電話を実現する話

このブログは、Linux系OSを使ったことのない人でも敷居が低いFreePBXおよび、IP電話最安値の050 Freeを一緒に使うことで低コストで法人向けレベルのサービスを享受するためのブログである。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

このブログについて(出来れば初めにお読みください)

このブログについて


このブログは、そもそも、私がMVNOと契約するにあたり、音声通話を契約せず、
音声通話の代替としてIP電話サービスおよびFreePBXを使うようになり、
これからIP電話サービスおよびFreePBXを使おうと思っている人を奨励し、
およびわかりやすくその導入方法について解説しようと思い作った次第である。
そのため、このブログは「携帯電話の代替としてのIP電話」を使いたい人を主なターゲットとしている。

なぜ節約をするか?


人によって理由は様々あると思うが、自分の場合、安価に必要な機能を手に入れるため、
および貯蓄をすることで多くのものに備えるためである。
節約をすることは決して自分のしたいことを我慢してまでするのではなく、
うまく同じ機能を工夫することによってするべきであるというのが私の考えである。

なぜAsteriskではなくFreePBXを使うのか?


Asteriskは確かにシンプルではあるが、私としては、Linuxを使ったことのない人でも、
インストールさえしてしまえば後はGUIでほとんどの操作ができてしまい、
設定ファイルの記述についての知識が無くても迷わず、
セキュリティに関するモジュールも無料でついているFreePBXをお勧めしたい。
Raspberry PiやEeePC 4G(追加ストレージ無し)でも動くぐらいなので、FreePBXのほうがリソースを食うといってもそこまでの問題ではないだろう。
PR

IP電話トラブルシューティング

NAT越え等の設定がうまくいかず、悩んでいる人のためのチェック項目を以下に用意する。
参考にしていただければ幸いである。

そもそもレジストにすら失敗する場合
・サーバーのアドレス、ポート、ID、パスワードは正しいか?
・二重ルーターになってないか?(例えば、ルーター配下の無線LAN親機のルーター機能がオン等)

通話しようとしたら撥ねられた場合
・コーデックはそもそも正しいか?(サーバーが非対応のコーデックは使えない)

うまく着信しない場合
・呼制御(signalling)のrport(return port)の使用のオン/オフはしたか?
・STUNの利用のオン/オフおよび別のSTUNサーバーを試したか?
・ソフトフォンのバックグラウンド動作をオンにしているか?
・携帯端末の省電力機能をオフにしているか?(特に通信に関する部分)
・(050Freeで純正クライアント以外を使う場合)050Freeのプッシュ通知をオフにしたか?

相手の声が聞こえないor相手に声を届けられない場合
・二重ルーターになってないか?
・ルーターのUPnPは有効か?
・RTP(media)のrport(return port)の使用のオン/オフはしたか?


自分でAsterisk,FreePBXサーバーを立てることでNAT超えのための手段が増えるため、何やっても解決しない場合にやってみるのも手かもしれない。
また、それ以外にも、省電力なTCPを使用できる、狭帯域で威力を発揮するSpeex等のコーデックを独自に使うことができるため、サーバーを立てることをお勧めしたい。(そもそもこのブログはIP電話サーバーを立てる人を支援する目的で作っている。)

自分の場合、二重ルーター配下からブラステルのサーバーにはレジストできなかったが、自宅サーバーにはレジストできるので重宝している。

SIPとRTPとIAX

SIPはSession Initiation Protocolのことで、セッションを開始・終了・変更を司る。
つまり、レジスト・着信・発信・通話の開始・通話の終了等の呼制御の部分を担当する。
良くある勘違いとして、SIPをTCPにすると通話品質が変わるというのがあるが、
SIPをTCPなりTLSにしたところで、セッションの開始・終了等に失敗しない限り何も変わらないはずである。


RTPとは、Realtime Transport Protocolのことで、こちらは実際に通話の部分に関係する。
これはUDPを使用する。こちらが通話品質に密接に関わる。
こちらの送受信に失敗すると、通話はできたものの相手に声が届かないといったようなことが起きる。
SRTPを使うとセキュアなRTPで通話が可能であるが、これは一部のIP電話プロバイダーしか提供していない。端末-自前のサーバー 間のみはできるが・・・


IAXは、Inter Asterisk eXchangeのことである。通常はIAXと書かれていても、IAX2のことである。
UDPを使用する。IAXは呼制御も通話も両方とも担う。また、使用する帯域幅が少し少なく済む。
これは、(特に、低速な)携帯電話回線には嬉しいメリットではある。
ただし、自分は携帯電話で使うと、電池消費がSIP(UDP)よりも激しかったので、発信のみに使うことにした。

ソフトフォンについて(Android)

ソフトフォンについて。(Android)

Cloud Softphone

(050free,Fusion純正もこれにあたる)

Cloud Softphoneの特徴

音質そこまで良くない、プッシュ通知がある

050Free,Fusionの純正ソフトウェアとしても使われているCloud softphone。
音質はそこまで良くないが、プッシュ着信が可能なことが最大の特徴である。
これにより、他の常駐しているようなソフトフォンとは違い、超低消費電力を実現できる。
問題は端末によってはプッシュ着信が上手く働かないことである。
PNF(Push Notifications Fixer)を使うことでプッシュ着信の精度が向上することがあるので、
プッシュ着信に問題がある人は是非試してほしい。
電池消費が増えるという話があるが、それはわずかなので普通はほとんど気にならないだろう。

当然のことだが、オフライン状態ではプッシュ着信は受けられない。
ブラステルユーザーは特に注意が必要である。

尚、これの有料版であるAcrobits Softphoneは独自の不在着信が使えるので、ブラステルユーザーはこれで不在着信だけでも補うと良いかもしれない。(無論、自宅サーバー等を立てられる場合はその必要はないが)


Zoiper

Zoiperの特徴

音質が良い、遅延が少ない、IAXが使用可能、常駐型にしては低消費電力

良く某掲示板等でお勧めされているソフトフォンがZoiperである。
音質が良く、遅延が少なく、消費電力も少ないほうである。また、NAT越えが簡単で使用帯域幅の少ないIAXが使用可能なのが大きな特徴である。IAXを使いたい場合はZoiper一択と言って良いだろう。(ただし、IP電話プロバイダーは基本的にSIPのみ提供しており、IAXを使うには自分でサーバーを建てるなりしないといけない)
ただし、無料版では高音質なコーデックの使用ができない。

尚、2016/08/23現在、ZoiperBetaはAndroid4.0.3以上対応になっている。
将来的に正式版も4.0.3以上対応になる可能性がある。


Mizudroid

Mizudroidの特徴

音質が良い、遅延がとても少ない、設定項目が豊富

音質が良く、遅延がとても少ないソフトフォンである。設定項目がCSipSimpleと同じかそれ以上に豊富で、いろいろチューンできるのも楽しいところである。
ただし、プツプツ音が少し気になる(これは自分の環境が問題かもしれないが)、タスクがKillされないようにある程度CPU負荷をかけると少し電池消費が大きいのが問題である。
また、少し複数アカウントを使用する際に入る場所がわかりづらいという話もある。


Sipdroid

Sipdroidの特徴

GSMの音質が良い

Sipdroidはあまり話題に上がらないが、GSMの音質が固定電話並に良いので、自分としてはこのソフトフォンを少し推したい。(GSM-EFR使用?)
しかし、2アカウントまでしか対応していないことと、アカウントの設定を少し変える毎に毎回レジストする、そしてアカウントを止めることができないのが惜しいところ。
また、新しいコーデックに対応していない。


CSipSimple

CSipSimpleの特徴

Android1.6以上対応(古くても使える)、設定項目が豊富、様々なコーデックに対応する

CSipSimpleは設定項目が豊富である。また、Android1.6以上対応なので、古いスマートフォンでも使える。
とても古いスマートフォンを使っている場合や、マイナーなコーデックを使う場合には役に立つだろう。

各コーデックについて

VoIPに使われる音声コーデックはいろいろある。
尚、コーディックという言い方がされることがあるが、これはデスクトップをディスクトップと言うのに似ている気がする。

説明を読むのが面倒な人へ

有線,(安定した)Wi-Fi経由でサーバーと繋げられるならG.711

それ以外はiLBC>Speex>GSM

音質

G711>iLBC≒Speex Narrow>GSM

パケット破損・損失耐性

iLBC>Speex>GSM>G.711

演算量(低いほうが良い,良いほうが左)

G.711<<GSM<Speex≒iLBC


G.711

通信量:84kb/s
IAXでは:80kb/s

G.711は固定電話に使われているコーデックである。
G.711には、μ-lawとA-lawの2種類がある。(μは特殊な記号なので、u-lawと書かれることもある。)
日本・北米がu-lawでヨーロッパがA-lawである。国際電話時に、違う形式が使われている場合はA-lawが使われる。
どうせA-lawに合わせる必要があるなら統一しろよ

GSM

通信量:33kb/s
IAXでは:30kb/s

GSMは携帯電話で使われるコーデックである。(日本の携帯だとAMRだけど)
GSMは元々特許があって面倒だったが、今は特許が切れたのでVoIPではほとんどの事業者は対応しているはず。
(本当はGSMってのは携帯電話での通信規格であって音声の規格の名前ではないんだけどね。別名2Gってやつ。海外だと未だに主流。だから本当は音声に限って言えばGMSK。ただ、GSMで使われている音声規格ではあるからそこまでの誤用ではないのかも?)
GSMには3種類あり、GSM-FR,GSM-HR,GSM-EFRがある。
FRはフルレート、HRはハーフレート、EFRはエンハンスドフルレートの略である。
VoIPでは通常GSM-FRが使われる。
GSM-EFRは、Wikipedia曰く、「典型的な通信エラーの条件や背景雑音のある環境でも有線の電話回線と同じ音質を維持できる」
「符号化に必要な演算量はハーフレートコーデックの GSM-HR より低い。」
何故EFRが使われないのか。

Speex

通信量:可変

VoIP向けに開発された、オープンソースのコーデックである。
固定ビットレート、可変ビットレートが選べる。自分は音声部分11kbpsで使っている。
GSM-FRよりも音質が良い。
パケットロスへの耐性があるが、主観としては、iLBCのほうがパケットロスに強い気がする。
音楽には向かない。

iLBC

通信量:27kb/s
IAXでは:25kb/s
(どちらもiLBC30)

iLBCは、パケットごとに完全に独立して音声が入っているためにパケットロス・破損への耐性が高いコーデックである。
Speexと同じくらいの音質。(私の主観)
ただし、FreePBX(Asterisk)でこのコーデックを使うとエラーが発生する。iLBCは30msごとにパケットを送るが、外線(トランク)は20ms単位でパケットを送るかららしい。
音楽には向かない。

G729

特許とかいろいろあって面倒なコーデック。
なーに、iLBCやSpeexが使えればこんなもんいらんわい。

Opus


Speexと同じ開発元が作ったコーデック。こちらのほうが新しい。低遅延。 音楽に使える超高音質から音声に特化した音質まで幅広く使える。 しかし、新しい故に対応している事業者は2016/11/28現在、いないようだ。
また、他のコーデックよりもCPUへの負荷が大きく、特にトランスコード時の負荷は大きかった。
ただし、音楽を聞くこともできるほどの音質なので、潤沢なリソースがあるならばこれ一択だろう。

プロフィール

HN:
zzz
性別:
非公開
自己紹介:
MVNOを契約し、最も安い050IP電話サービスである050 Freeを契約し、
その機能を補うべくAsteriskに手をだそうとしたが、失敗し、FreePBXに手を出し、ようやく安定してきた。

カウンター




P R

Copyright ©  -- FreePBXと050 Freeで月額50円以下でビジネス用レベルの最強IP電話を実現する話 --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]