知識ベース

FreeSWITCH

FreeSWITCHは、リアルタイム通信、WebRTC、通信、ビデオ、およびボイスオーバーインターネットプロトコル(VoIP)用の無料のオープンソースアプリケーションサーバーです。マルチプラットフォーム、Linux、Windows、macOS、FreeBSDで動作します。 PBXシステム、IVRサービス、チャットおよび画面共有を使用したビデオ会議、ホールセール最小コストルーティング、セッションボーダーコントローラー(SBC)、組み込み通信機器の構築に使用されます。暗号化、ZRTP、DTLS、SIPSを完全にサポートしています。 PSTN、SIP、WebRTC、および他の多くの通信プロトコル間のゲートウェイとして機能できます。そのコアライブラリであるlibfreeswitchは、他のプロジェクトに埋め込むことができます。これは、Mozilla Public License(MPL)、フリーソフトウェアライセンスの下でライセンスされています。

歴史

FreeSWITCHプロジェクトは、2006年1月にO'Reilly MediaのETEL Conferenceで初めて発表されました。 2007年6月、FreeSWITCHはTruphoneによって使用に選ばれ、2007年8月、Gaboogieは会議プラットフォームとしてFreeSWITCHを選択したことを発表しました。

FreeSWITCHの最初の公式1.0.0リリース(Phoenix)は2008年5月26日でした。2008年7月24日にマイナー1.0.1パッチがリリースされました。ClueCon2012で、Anthony MinessaleはFreeSWITCHバージョン1.2.0開発チームは、個別の安定版(バージョン1.2)と開発(バージョン1.3)ブランチを採用していました。

2014年初めにリリースされたFreeSWITCH 1.4は、WebsocketおよびWebRTCを介したSIPをサポートする最初のバージョンです。

FreeSWITCH 1.6は、ビデオトランスコーディングとビデオ会議、WebRTCのVertoプロトコル、およびすべてのWebRTCコーデックと標準のサポートを追加しました。

FreeSWITCH 1.8は、2018年にClueConでリリースされ、プロジェクトのさらなる更新と安定性の改善が行われました。

SignalWire Incは、弾力性のあるFreeSWITCHコアを利用した商用クラウドテレコミュニケーションサービスを提供するために2018年に設立され、FreeSWITCHの創設者によって管理されたオープンソースプロジェクトの永続的な商用スポンサーを提供します。その後、FreeSWITCH Solutionsを買収しました。

設計

リードデザイナーのAnthony Minessaleによると、FreeSWITCHは、ステートマシンによって駆動されるソリッドコアの上に構築されるソフトスイッチになることを目的としています。プロジェクトの目標には、安定性、スケーラビリティ、抽象化が含まれます。

複雑さを軽減するために、FreeSWITCHは必要な機能を実行する自由に利用可能なソフトウェアライブラリを使用します。いくつかの依存関係は次のとおりです。

  • Apache Portable Runtime(APRおよびAPR-Util)
  • SQLite – SQLエンジンの軽量な実装
  • PCRE – Perl互換の正規表現
  • Sofia-SIP –オープンソースのSIPユーザーエージェントライブラリ
  • libspeex – Speex DSPライブラリ(バージョン1.0.3からlibresampleに置き換えられました)
  • T.38 FAXゲートウェイまたはパススルーのmod_spandsp
  • libSRTP – Secure Real-time Transport Protocolのオープンソース実装

これらのソフトウェア依存関係のすべてが、コアfreeswitchアプリケーションの構築に必要なわけではありませんが、コーデックなどのさまざまな外部モジュールの依存関係です。 FreeSWITCHはモジュール化されたアプリケーションで、モジュールは機能を拡張できますが、抽象化レイヤーはモジュール間の依存関係を防ぎます。目標は、あるモジュールが別のモジュールをロードする必要がないようにすることです。

特徴

FreeSWITCHには、会議、ライブコールのXML-RPC制御、対話型音声応答(IVR)、音声合成および音声認識、アナログおよびデジタル回線用の公衆交換電話網(PSTN)インターフェイスなど、多くのテレフォニーアプリケーションを提供する多くのモジュールが含まれますSession Initiation Protocol(SIP)、Verto、Skinny Client Control Protocol(SCCP)、H.323、Extensible Messaging and Presence Protocol(XMPP)、GoogleTalk、T.38などを含むover IPプロトコル

FreeSWITCHは、コール制御とIVR機能のプリミティブを公開するアプリケーションプログラミングインターフェイスを提供します。アプリケーションは、MicrosoftのCLRまたはMonoを介して、C言語、C ++、Python、Perl、Lua、JavaScript、Java、およびMicrosoft .NETで記述できます。

コール制御アプリケーションは、イベントソケットを使用できます。イベントソケットは、言語に依存しないインターフェイスを提供するFreeSWITCH内のインターネットソケットベースの通信機能です。イベントソケットライブラリ(ESL)および「ESLラッパー」は、Erlang、JavaScript、Lua、Perl、PHP、Python、およびRubyで使用できます。

FreeSWITCHバージョン1.4では、WebRTCのサポートが存在します。

FreeSWITCH 1.6では、ビデオ多重化と完全なWebRTC、wss、dtls、SIP.js、Verto.js、Opus 48kHz〜8kHzのサポートが追加され、最大40%のパケット損失を回復します。

FreeSWITCH 1.6の主な機能:

  • WebRTCサポート
  • 集中ユーザー/ドメインディレクトリ(directory.xml)
  • ナノ秒CDR粒度
  • 通話録音(ステレオ発信者/着信者の左/右)
  • 高性能マルチスレッドコアエンジン
  • HTTPサーバーへのcURLを介した構成(mod_xml_curl)。
  • 簡単な解析のためのXML構成ファイル。
  • プロトコルに依存しない
  • 透過的なRTPベースのキー交換と暗号化のZRTPサポート
  • 設定可能なRFC 2833ペイロードタイプ
  • インバンドDTMFの生成と検出。
  • ソフトウェアベースの会議(ハードウェア要件なし)
  • ワイドバンド会議
  • メディア/メディアなしモード
  • 適切なENUM / ISNダイヤルが組み込まれています
  • XMLの詳細なCDR
  • 半径のCDR
  • サブスクリプションサーバー
  • 共有回線の外観
  • ブリッジラインの外観
  • エンタープライズ/キャリアグレードのイベントエンジン。 (XMLイベント、名前値イベント、マルチキャストイベント)
  • ロード可能なファイル形式とストリーミング
  • ShoutcastとIcecastでストリーミング再生
  • 多言語音声フレーズインターフェイス
  • ASR / TTSサポート(ネイティブおよびMRCP経由)
  • 基本的なIP / PBX機能
  • 自動受付
  • カスタムリングバックトーン(アーリーメディア)
  • XML-RPCサポート
  • 複数の形式のCDRがサポートされています
  • SQL Engineはセッションの永続性を提供します
  • スレッド分離
  • パラレルハンティング
  • シリアルハンティング

WebRTCサポート

  • FreeSWITCHはWebRTCゲートウェイであり、ブラウザから暗号化されたメディアを受け入れ、変換し、異なるコーデックと暗号化を使用する他の通信ネットワークと交換できます。例:PSTN、モバイルキャリア、レガシーシステムなど。FreeSWITCHはデスクトップ、タブレット、およびスマートフォン上のSIPネットワークおよびアプリケーションとブラウザー。
  • FreeSWITCHはWebRTCアプリケーションサーバーであり、ゲートウェイやサードパーティを使用せずに、ビデオ会議、IVR、コールセンターなどのブラウザにネイティブサービスを直接提供できます。 FreeSWITCHは、セキュアWebSocket(WSS)、SRTP、およびネイティブWebRTCプロトコルであるDTLSを介してサービスを直接提供できます。
  • FreeSWITCHは、ブラウザが音声通話またはビデオ通話を最も簡単な方法で開始または受信でき、チャット、画面の共有、バックエンドアプリケーションへのリアルタイムのデータの送受信ができるため、追加のシグナリングプレーンを使用可能にします。 Vertoは、JavascriptのXMPPまたはSIPの代替です。 FreeSWITCHは、SIPおよびVertoでシグナリングを使用するクライアントに、同じアプリケーションを並行して同時に提供できます。

ビデオ会議のサポート

FreeSWITCHは、何年も前に非常にスケーラブルな音声会議ブリッジとして始まった会議の強力なプラットフォームでした。イリノイ州シカゴで開催されたClueCon 2015のブレークスルーで、FreeSWITCHのクリエーターであるAnthony Minessale IIは、ビデオトランスコーディング、ミキシング、操作、およびマルチポイントコントロールユニット(MCU)機能のサポートを発表しました。 FreeSWITCHには、最も高度で成熟したビデオ会議機能が搭載されています。

  • 複数のビデオコーデックのサポートとトランスコーディング
  • 複数のビデオレイアウト
  • 画面分割
  • ピクチャインピクチャ
  • 画面共有
  • ビデオの重ね合わせ(キャプション、ロゴなど)
  • ビデオミキシング
  • ビデオエフェクトとリアルタイム操作
  • クロマキー(背景をミックスしたビデオ)
  • SIP、WebRTC、VERTO、PSTN参加者

コーデックのサポート

FreeSWITCHは、さまざまなオーディオおよびビデオコーデックをサポートしています。

  • PCMU – G.711 µ-law
  • PCMA – G.711 A-law
  • G.722
  • G.722.1
  • G.722.1c
  • G.726
  • AAL2梱包のG.726
  • G.729(パススルー)
  • G.729(ライセンス済み)
  • GSM
  • CELTおよびOpus
  • iLBC
  • DVI4(IMA ADPCM)
  • BroadVoice
  • シルク
  • RFC 5574 FMTPをサポートするSpeex(狭帯域および広帯域)
  • コーデック2
  • LPC-10
  • AMR
  • AMR-WB
  • iSAC
  • OPUS RFC 6716、RFC 7587
  • VP8
  • VP9

G.723.1、H263、およびH264は、パススルーモードでサポートされています。生の圧縮データは、処理を行わずに発信者間で受け渡されるため、特許やその他のライセンスの問題により無料で提供できないコーデックをサポートできます。

このソフトウェアは、Sangomaが作成したハードウェアトランスコーディングカードをサポートしています。これらはハードウェアにコーデックを実装し、サーバーのCPU使用量を削減します。これらのコーデックの一部は完全にライセンスされており、上記のパススルーオプションに代わるものを提供します。

プロトコルのサポート

  • mod_sofiaを使用したSIP
    • SIPに完全に準拠するUDP、TCP、SCTPおよびTLSトランスポート。
    • WebRTCに完全に準拠するxiWSおよびWSSトランスポート。
    • SIP v.2.0(RF​​C 3261)
    • IPv6サポート
    • SIPセッションタイマー
    • RTPタイマー
    • RFC 3263(SRVおよびNAPTR)
    • RFC 3325
    • RFC 4694
    • SDESを介したSRTP(Polycom、Snom、Linksys、Grandstreamと連携)
    • ブラインドSIP登録
    • STUNサポート
    • ジッタバッファ
    • NATサポート
    • 分散SIP登録
    • 遅いコーデックネゴシエーション
    • ユーザーアカウントごとに複数のSIP登録。
    • マルチテナンシー-複数のSIP UA
    • SIP Reinvites。
    • SBC(セッションボーダーコントローラー)として機能できます
    • プレゼンスを管理する
    • SIP / SIMPLE(他のチャットプロトコルへのゲートウェイが可能)
    • LinksysおよびSnomのSIPマルチキャストページングのサポート
    • インターコム/自動応答のサポート。
    • 通話保留(再招待)、ブラインド転送(REFER)、自動転送(302)などの通話機能
  • mod_skinny-スキニーコール制御プロトコル(SCCP)
  • mod_verto-VERTO WebRTCシグナリングプロトコル

アプリケーションのサポート

  • ボイスメール
    • マルチテナンシー-エンタープライズ/キャリア構成
    • 時刻挨拶
    • 緊急メッセージのタグ付け
    • メール配信
    • 配信前にメッセージを再生および再録音します。
    • キーはテンプレートであるため、ニーズに合わせて再配置できます。
    • 内部ボイスメールからのコールバックサポート。
    • ボイスメールのポッドキャスト(RSS)
    • メッセージ受信インジケータ(MWI)
  • キューのサポート(mod_fifoまたはmod_callcenter経由)
  • 駐車場(mod_fifo経由)
  • 会議
    • ハードウェア要件のないソフトウェアベースの会議。
    • ワイドバンド会議。
    • 入場/退場のアナウンスを伴う複数のオンデマンドまたはスケジュールされた会議
    • 会議または単一のメンバーにファイルを再生します。
    • 関係
    • TTS統合
    • 乗り換え
    • 発信通話
    • 構成可能なキーレイ
    • 通話ごとの音量、ゲイン、エネルギーレベル。
    • ブリッジから会議への移行
    • マルチパーティアウトバウンドダイヤリング。
    • UAのRFC 4579 SIP CC会議
    • 自動またはオンデマンド録画
  • RSSリーダー
  • FAXエンドポイント、ゲートウェイ、およびパススルーモード。
    • T.30(G.711)音声ファックス(mod_spandsp経由)以前はmod_faxとして知られていました。
    • T.38 FAX(ゲートウェイ、エンドポイント、およびパススルー)

暗号化サポート

  • WSS
  • HTTPS
  • SRTP
  • ZRTP
  • TLS
  • SIPS
  • SSL
  • SDES
  • DTLS

テキスト読み上げと自動音声認識のサポート

  • ケプストラル
  • フライト
  • PocketSphinx
  • MRCP

オペレーティングシステムとビルドシステムのサポート

  • Debian Linuxは、ライセンスの制約を受けずにFreeSWITCHを実行するために必要なライブラリで最も幅広いサポートを提供するため、推奨されるオペレーティングシステムです。
  • RHELやCentOSなどの他のLinuxシステム
  • Solaris 10 UNIX(Solaris Studio)
  • FreeBSD(gmake)
  • macOS(gmake)
  • Windows(ネイティブ)

他の電話ソフトウェアとの比較

FreeSWITCHは、KamailioやOpenSIPSなどの通話をルーティングするだけの純粋なスイッチと、アスタリスクやその派生物などの主にPBXまたはIVR機能を提供する純粋なスイッチの間のスペースを占有します。 FreeSWITCHは、PBX、ボイスメールシステム、会議システム、コーリングカードなどのアプリケーションを、サポートされている言語のいずれかを使用して構築できるビルディングブロックを提供します。

派生製品

FreeSWITCHは、多くのPBXの商用製品とオープンソースプロジェクトのコアコンポーネントです。商用製品の一部はハードウェアとソフトウェアのバンドルであり、メーカーはソフトウェアをオープンソースとしてサポートおよびリリースしています。