IPテレフォニー:銅線からデジタル信号処理まで





ある日、VoIP(voice over IP)とは何か、これらのワイルドな略語が何を意味するのかを整理する必要がある場合、このマニュアルが役立つことを願っています。 ここでは、追加の種類のテレフォニーサービス(通話転送、ボイスメール、電話会議など)の構成の問題が考慮されていないことにすぐに気付きます。









したがって、カットの下で対処するもの:

  1. テレフォニーの基本概念:デバイスの種類、接続スキーム
  2. SIP / SDP / RTPプロトコルバンドル:仕組み
  3. 押されたボタンに関する情報の送信方法
  4. 音声とファックスの送信方法
  5. IPテレフォニーにおけるデジタル信号処理と音質保証




1.テレフォニーの基本概念



一般的に、ローカル加入者を通常の電話回線を介して電話プロバイダーに接続するためのスキームは次のとおりです。











FXS(Foreign eXchange Subscriber)ポートを備えた電話モジュールは、プロバイダー側​​(PBX)にインストールされます。 自宅またはオフィスでは、電話またはFAXがFXOポート(Foreign eXchange Office)とダイヤラーモジュールとともにインストールされます。













外観上、FXSポートとFXOポートは同じで、通常の6ピンRJ11コネクタです。 ただし、電圧計を使用してそれらを区別するのは非常に簡単です。FXSポートには常に何らかの電圧があります。ハンドセットがオンのときは48/60 V、通話中は6〜15 Vです。 FXOでは、回線に接続されていない場合、電圧は常に0です。













プロバイダー側​​の電話回線を介してデータを転送するには、SLICモジュール(加入者回線インターフェイス回路)およびDAAモジュール(ダイレクトアクセスアレンジメント)を使用して加入者側に実装できる追加のロジックが必要です。













ワイヤレスDECT電話(ヨーロッパのデジタルコードレステレコミュニケーション)は現在非常に人気があります。 このデバイスは従来の電話機に似ています。FXOポートとダイヤラモジュールも備えていますが、1.9 GHzの周波数のステーションとハンドセットのワイヤレスモジュールも追加されています。













加入者はPSTNネットワーク(公衆交換電話網)-公衆電話網に接続されます。これはPSTN、PSTNでもあります。 PSTNネットワークは、ISDN、光学、POTS、イーサネットなどのさまざまなテクノロジーを使用して編成できます。 従来のアナログ/銅線を使用する場合のPSTNの特殊なケース-POTS(Plain Old Telephone Service)は、単純な古い電話システムです。













インターネットの発展に伴い、電話は新しいレベルに移行しました。 固定電話は、主にビジネスニーズのために、ますます使用されていません。 DECT電話はもう少し便利ですが、家の周辺に限られています。 GSM電話はさらに便利ですが、国の境界によって制限されます(ローミングは高価です)。 しかし、IP電話の場合、それらはソフトフォン(SoftPhone)であり、インターネットへのアクセス以外の制限はありません。













Skypeは、ソフトフォンの最も有名な例です。 それは多くのことをすることができますが、2つの重要な欠点があります:クローズドアーキテクチャと盗聴はどの当局によって知られています。 最初の理由により、独自の電話マイクロネットワークを作成する方法はありません。 また、2番目の理由により、特に個人的および商業的な会話で、彼らがあなたをスパイすることはあまり楽しくありません。













幸いなことに、通信ネットワークを作成するためのオープンなプロトコルがあります-これらはSIPとH.323です。 SIPプロトコルには、H.323よりもやや多くのソフトフォンがあります。これは、比較的単純で柔軟性があることで説明できます。 しかし、この柔軟性により、大きなスティックをホイールに挿入できる場合があります。 SIPとH.323はどちらもRTPプロトコルを使用してメディアを送信します。













2人のサブスクライバがどのように接続するかを理解するには、SIPプロトコルの基本原則を考慮してください。













2. SIP / SDP / RTPプロトコルバンドルの説明



SIP(セッション開始プロトコル)-セッション確立プロトコル(電話だけでなく)-UDP上のテキストプロトコルです。 SIP over TCPを使用することもできますが、これらはまれなケースです。













SDP(セッション記述プロトコル)-送信されるデータのタイプをネゴシエートするためのプロトコル(オーディオとビデオの場合、これらはコーデックとそのフォーマット、FAX、送信速度、エラー訂正)と宛先アドレス(IPとポート)をネゴシエートします。 また、テキストプロトコルです。 SDPパラメータは、SIPパケットの本体で送信されます。













RTP(リアルタイム転送プロトコル)-オーディオ/ビデオデータを送信するためのプロトコル。 これはUDP上のバイナリプロトコルです。













SIPパケットの一般的な構造:









次に、1つの一般的な手順であるコールセットアップ用の2つのSIPパケットの例を示します。













SIP INVITEパケットの内容は左側に表示され、それに対する答えは右側にSIP 200 OKです。









主なフィールドの概要は次のとおりです。









SDPメッセージは、FIELD = VALUEのペアを含む行で構成されます。 主なフィールドから次のことに注意できます。









RTPパケットには、特定の形式でエンコードされたオーディオ/ビデオデータが含まれます。 この形式は、PT(ペイロードタイプ)フィールドに示されています。 このフィールドの値と特定の形式との対応表は、 https :// jaで提供されます ウィキペディア org / wiki / RTP _ オーディオ _ ビデオ _ プロフィール













また、RTPパケットでは、一意のSSRC識別子(RTPストリームのソースを定義)とタイムスタンプ(タイムスタンプ、サウンドまたはビデオを均等に再生するために使用)が示されます。













SIPサーバー(アスタリスク)を介した2人のSIPサブスクライバーの対話の例:













SIP電話機が起動するとすぐに、最初に登録するのはリモートサーバー(SIP Registar)で、SIP REGISTERメッセージを送信します。







加入者が電話をかけると、SIP INVITEメッセージが送信され、その本文にSDPメッセージが埋め込まれ、そこにオーディオ/ビデオ送信パラメーターが示されます(どのコーデックがサポートされているか、どのIPとポートがサウンドを送信するかなど)。







リモートサブスクライバーが電話をピックアップすると、SDP 200 OKメッセージも受信します。これには、リモートサブスクライバーのみが含まれます。 送受信されたSDPパラメータを使用して、オーディオ/ビデオ伝送のRTPセッションまたはFAX伝送のT.38セッションを設定できます。













受信したSDPパラメータが私たちに合わなかった場合、または中間SIPサーバーがRTPトラフィックを自身に通過させないことにした場合、SDP調整手順、いわゆるREINVITEが実行されます。 ちなみに、この手順のために、無料のSIPプロキシサーバーには1つの欠点があります。両方のサブスクライバーが同じローカルネットワークにあり、プロキシサーバーがNATの背後にある場合、RTPトラフィックをリダイレクトした後、サブスクライバーのいずれも別の声を聞きます。









会話が終了すると、電話を切った加入者はSIP BYEメッセージを送信します。







3.押されたボタンに関する情報の送信



セッションを確立した後、会話中に、追加の種類のサービス(DVO)へのアクセスが必要な場合があります-通話保持、転送、ボイスメールなど -押されたボタンの特定の組み合わせに応答します。













したがって、通常の電話回線では、番号をダイヤルするには2つの方法があります。









会話中、パルス方式は、押されたボタンを送信するには不便です。 したがって、「0」を送信するには、約1秒(100ミリ秒の10パルス:60ミリ秒-改行、40ミリ秒-回線閉鎖)に加えて、桁間の休止に200ミリ秒が必要です。 さらに、パルスダイヤル中に特徴的なクリック音が頻繁に聞こえます。 したがって、従来の電話では、DVOへのアクセスのトーンモードのみが使用されます。













VoIPテレフォニーでは、押されたボタンに関する情報を次の3つの方法で送信できます。







  1. DTMFインバンド-サウンドトーンを生成し、オーディオデータ(現在のRTPチャネル)内で送信することは、一般的なトーンセットです。
  2. RFC2833-押されたキー、音量、持続時間に関する情報を含む特別な電話イベントRTPパケットが生成されます。 DTMF RFC2833パケットが送信されるRTP形式の番号は、SDPメッセージの本文に示されています。 例:a = rtpmap:98 telephone-event / 8000。
  3. SIP INFO-押されたキー、ボリューム、および持続時間に関する情報を含むSIP INFOパケットが生成されます。


オーディオデータ(インバンド)内のDTMF送信にはいくつかの欠点があります-トーンの生成/埋め込み時およびトーンの検出時のオーバーヘッド、DTMFコードを歪める可能性のある一部のコーデックの制限、および送信信頼性の低下(一部のパケットが失われた場合、検出が発生する可能性があります)同じキーをダブルクリックします)。













DTMF RFC2833とSIP INFOの主な違い:サーバー自体をバイパスするサブスクライバー間でRTPを直接転送する機能がSIPプロキシサーバーで有効になっている場合(たとえば、アスタリスクのcanreinvite = yes)、サーバーはDVOサービスが利用できなくなるため、RFC2833パケットに気付きません。 SIPパケットは常にSIPプロキシを介して送信されるため、VTRは常に機能します。







4.音声およびファックス送信



すでに述べたように、RTPプロトコルはメディアの送信に使用されます。 RTPパケットでは、送信データ(コーデック)の形式が常に示されます。













音声伝送の場合、ビットレート/品質/複雑さのさまざまな比率を持つさまざまなコーデックがあり、オープンとクローズがあります。 どのソフトフォンでも、G.711 alaw / ulawコーデックのサポートは常にあり、その実装は非常に簡単で、音質は悪くありませんが、64 kbpsの帯域幅が必要です。 たとえば、G.729コーデックは8 kbit / sのみを必要としますが、プロセッサに非常に多くの負荷をかけます。さらに、無料ではありません。













通常、G.711コーデックまたはT.38プロトコルのいずれかがFAX送信に使用されます。 G.711コーデックを使用したファックス送信は、T.30プロトコルを使用したファックス送信に対応します。まるでファックスが通常の電話回線を介して送信されますが、回線からのアナログ信号はalaw / ulaw法に従ってデジタル化されます。 これは、インバンドT.30ファックス送信とも呼ばれます。













T.30プロトコルに従ったファックスは、パラメータの調整を実行します:伝送速度、データグラムのサイズ、エラー訂正のタイプ。 T.38プロトコルはT.30プロトコルに基づいていますが、インバンド送信とは異なり、生成および受信されたT.30コマンドが分析されます。 この方法では、生データは送信されませんが、ファックス制御コマンドが認識されます。













T.38コマンドの送信にはUDPTLプロトコルが使用されます。これはUDPベースのプロトコルであり、T.38にのみ使用されます。 TCPおよびRTPプロトコルを使用してT.38コマンドを転送することもできますが、使用頻度ははるかに低くなります。













T.38の主な利点は、インバンドファックス送信と比較してネットワーク負荷が軽減され、信頼性が高いことです。













T.38モードでのファックス送信手順は次のとおりです。







  1. 通常の音声接続は、コーデックを使用して確立されます。
  2. 送信FAXに用紙がセットされると、T.30信号CNG(呼び出しトーン)が定期的に送信されます。これは、FAXを送信する準備ができたことを意味します。
  3. 受信側では、T.30 CED(着信端末識別)信号が生成されます-これは、ファックスを受信する意思です。 この信号は、[ファックスの受信]ボタンを押すか、ファックスが自動的に送信した後に送信されます。
  4. 送信側では、CED信号が検出され、SIP REINVITE手順が実行され、T.38タイプがSDPメッセージで示されます。m= image 39164 udptl t38。


T.38では、インターネット経由のファックスが推奨されています。 オフィス内または接続が安定しているオブジェクト間でFAXを送信する必要がある場合は、インバンドT.30 FAX送信を使用できます。 この場合、FAXを送信する前に、エコーキャンセル手順をオフにして、追加の歪みが発生しないようにする必要があります。













FAX送信に関する非常に詳細な情報は、David HanesとGonzalo Salgueiroの著書「Fax、Modem、and Text for IP Telephony」に記載されています。













5.デジタル信号処理(DSP)。 IPテレフォニーの音質保証、テスト例



会話セッション(SIP / SDP)を確立するプロトコルと、RTPチャネルを介して音声を送信する方法により、私たちは理解しました。 1つの重要な問題が残っています-音質です。 一方では、音質は選択したコーデックによって決まります。 しかし、一方で、追加のDSP(DSP-デジタル信号処理)手順が依然として必要です。 これらの手順では、VoIPテレフォニーの機能を考慮します。高品質のヘッドセットが常に使用されるとは限らず、インターネット上でパケットが失われたり、パケットが不均等に入ったり、ネットワーク帯域幅もゴムではありません。













音質を改善する基本手順:













VAD (音声アクティビティ検出器)-音声(アクティブな音声フレーム)または無音(非アクティブな音声フレーム)を含むフレームを決定する手順。 この分離により、無音に関する情報の送信に必要なデータがはるかに少なくなるため、ネットワークの負荷を大幅に削減できます(ノイズレベルを送信するか、何も送信しないので十分です)。







一部のコーデックにはすでにVADプロシージャ(GSM、G.729)が含まれていますが、他のコーデック(G.711、G.722、G.726)には実装が必要です。













VADがノイズレベルに関する情報を送信するように設定されている場合、13m RTPフォーマットCN(Comfort Noise)の特別なSIDパケット(無音挿入記述子)が送信されます。













SIDパケットはSIPプロキシによってドロップされる可能性があるため、検証のためにSIPサーバーを通過するRTPトラフィックの送信を構成することをお勧めします。

















CNG (comfort noise generation)-SIDパケットからの情報に基づいて快適なノイズを生成する手順。 したがって、VADとCNGは連動して動作しますが、CNGの動作は、特に少量でCNGの動作に常に気付くことができるとは限らないため、需要がはるかに少なくなります。









PLC (パケット損失隠蔽)-パケット損失中にオーディオストリームを復元する手順。 50%のパケット損失があっても、優れたPLCアルゴリズムは許容可能な音声品質を実現できます。 もちろん、歪みがありますが、言葉を出すことができます。













(Linuxで)パケット損失をエミュレートする最も簡単な方法は、 netemモジュールでiprouteパッケージのtcユーティリティを使用することです 。 発信トラフィックのみをシェーピングします。













パケットの50%の損失でネットワークエミュレーションを開始する例:





tc qdisc change dev eth1 root netem loss 50%
      
      





エミュレーションを無効にする:





 tc qdisc del dev eth1 root
      
      













ジッタバッファは、受信パケット間の間隔が大きく変動し、最悪の場合は受信パケットの順序が正しくない場合に、ジッタ効果を取り除くための手順です。 また、この効果は音声の中断につながります。 ジッタ効果を排除するには、受信側で、指定された間隔で元のパケット送信順序を復元するのに十分なサイズのパケットバッファを実装する必要があります。













tcユーティリティを使用してジッタ効果をエミュレートすることもできます(パケットの予想到着時間と実際の到着時間の間隔は500ミリ秒に達する可能性があります)。







 tc qdisc add dev eth1 root netem delay 500ms reorder 99%
      
      







LEC (Line Echo Canceller)-リモート加入者が自分の声を聞き始めたときにローカルエコーを除去する手順。 その本質は、特定の係数を使用して送信信号から受信信号を減算することです。

















エコーはいくつかの理由で発生する可能性があります。









理由(音響エコーまたは電気エコー)を見つけることは難しくありません。エコーが生成されている側のサブスクライバーは、マイクを切断する必要があります。 それでもエコーが発生する場合は、電気的です。







VoIPおよびDSP手順の詳細については、「VoIP音声およびFAX信号処理」を参照してください。 Googleブックスでプレビューできます。













これで、VoIPの表面理論の概要は終わりです。 興味がある場合は、次の記事で実際のハードウェアプラットフォームでのPBXの実用的な実装例を検討できます。













[!?]質問やコメントを歓迎します。 Promwad Electronics Design CenterのソフトウェアエンジニアであるDmitry Valentoの記事の著者が回答します。








All Articles