2009年4月29日水曜日

UEMCLIP(mU-law EMbedded Coder for Low-delay IP communication)

G.711との相互運用性を考慮しつつ、より高音質な通信にも利用できることを目的に作られた音声コーデック。ITU-TのG.711.1[RFC5391]に準拠している。G.711で扱える音域が300Hz~3.4kHzなのに対し、UEMCLIPでは最大で50Hz~7kHzという広い音域を扱うことができるため、より高音質な音声表現が可能となる。

概要

UEMCLIPの策定背景は、現在の電話の音声コーデックとして広く普及しているG.711との互換性を保ちつつ、より高音質な通信を可能にしたい、という思想に由来します。例えば高音質なコーデックと言えばG.722がありますが、G.711とG.722は互換性がありませんので、相互に運用しようとすると、それぞれをトランスコーダがいちいちエンコード/デコードする(=トランスコードする)必要があり、それがトランスコーダへの大きな負荷となります。一方UEMCLIPはG.711のデータを内包していますので、トランスコーダではそのデータを取り出すだけでG.711にしか対応していない端末とも通信できます。トランスコーダの負荷も小さくなります。

上記の仕組みはITU-TのG.711.1で提唱されていて、UEMCLIPはそれに準拠するようにNTT(と他5社)が提案したコーデックです。以下のサイトが詳しいのでそちらを参照してください。

UEMCLIP

UEMCLIP(ユーエムクリップ)とは"mU-law EMbedded Coder for Low-delay IP communication"の略称です。ITU-T G.711として広く利用されている電話音声符号化の標準方式を拡張し、高音質な広帯域音声での通信を可能にする符号化方式で、VoIP等の音声通信アプリケーションや多地点での音声会議用途を目的として、NTT研究所で開発された技術です。

UEMCLIPには複数のmodeが定義されていて、サポートするサンプリング周波数やビットストリームによって使い分けます。また、複数のmodeを動的に切り替えることもできます。サポートするmodeはSDPの中で指定します(下記の「使い方」参照)。

使い方

上記のページの「Download」のところに「RTP payload format」があるんですが、見事にリンク切れしています(2009/5/17現在)。以下のページにVersion06がありますのでそちらを参照してください。この仕様は定期的に更新されているようです。

UEMCLIPのパラメータ
パラメータ名説明
メディアタイプaudio
メディアサブタイプUEMCLIP
必須パラメータ
Rateサンプリングレートは8000、16000のどちらかを指定します[MUST]。以下の表「UEMCLIPのmode一覧」にmode毎の指定可能サンプリング周波数を掲載しています。なお、a行のrtpmapで指定したサンプリング周波数よりも大きい周波数にしか対応していないmodeは指定できません。「Section 6.2.1 Mode specification」参照。
オプションパラメータ
ptime20の倍数でなければなりません[MUST]。デフォルトは20(ms)です。
maxptimeフレーム長(20ms)の倍数(RFC4566の定義より)
modeビットストリームの形式を指定します。modeは0~5の数字で定義されていますが、2と5は将来のために予約されているので、実際には0,1,3,4が指定可能です。詳しくは以下の表「UEMCLIPのmode一覧」に示しています。「Section 2 Media Format Background」を参照。
UEMCLIPのmode一覧
modeサンプリング周波数G.711低帯域拡張部広帯域拡張部
08kHz/16kHz
18kHz/
2将来32kHzに対応したときのために予約
38kHz/16kHz
416kHz
5将来32kHzに対応したときのために予約

使用例

サンプリング周波数16000に対応する全mode(0, 1, 3, 4)をオファーする場合、modeは優先順位の高い順に並べる。
v=0
o=john 51050101 51050101 IN IP4 offhost.example.com
s=-
c=IN IP4 offhost.example.com
t=0 0
m=audio 5004 RTP/AVP 96
a=rtpmap:96 UEMCLIP/16000/1
a=fmtp:96 mode=4,1,3,0
上記のオファーに対して、mode=0,1のみをセッション内で切り替えるアンサーを出す場合。なお、もしmode=0とした場合は、1に切り替えることはできません。
v=0
o=lena 549947322 549947322 IN IP4 anshost.example.org
s=-
c=IN IP4 anshost.example.org
t=0 0
m=audio 5004 RTP/AVP 96
a=rtpmap:96 UEMCLIP/16000/1
a=fmtp:96 mode=1,0
オファーが、mode=4と0を許容できることをアンサー側に示したいが、動的に切り替えたくはない場合。この場合、アンサーにはUEMCLIPペイロードを1つだけ含めることが推奨されています(RECOMMENDED)
v=0
o=john 51050101 51050101 IN IP4 offhost.example.com
s=-
c=IN IP4 offhost.example.com
t=0 0
m=audio 5004 RTP/AVP 96 97
a=rtpmap:96 UEMCLIP/16000/1
a=fmtp:96 mode=4
a=rtpmap:97 UEMCLIP/16000/1
a=fmtp:97 mode=1

通信用語を覚えよう: MG(Media Gateway)

Media Gateway(MG)とは、PSTN→IPの相互接続や、G.711→UEMCLIPのコーデック変換などを担うゲートウェイです。これによって、既存網からIP電話に電話しても、音声を適切に変換して通話できるようになります。

MGとは何か、ということをしっかり書いている日本語サイトが見つからなかったため、英語のWikipediaから全文引用します。

Wikipedia: Media gateway

原文

A Media gateway is a translation device or service that converts digital media streams between disparate telecommunications networks such as PSTN, SS7, Next Generation Networks (2G, 2.5G and 3G radio access networks) or PBX. Media gateways enable multimedia communications across Next Generation Networks over multiple transport protocols such as Asynchronous Transfer Mode (ATM) and Internet Protocol (IP).

Because the media gateway connects different types of networks, one of its main functions is to convert between different transmission and coding techniques (see also Transcode). Media streaming functions such as echo cancellation, DTMF, and tone sender are also located in the media gateway.

Media gateways are often controlled by a separate Media Gateway Controller which provides the call control and signaling functionality. Communication between media gateways and Call Agents is achieved by means of protocols such as MGCP or Megaco(H.248) or Session Initiation Protocol (SIP). Modern media gateways used with SIP are often stand-alone units with their own call and signaling control integrated and can function as independent, intelligent SIP end-points.

Voice over Internet Protocol (VoIP) media gateways perform the conversion between TDM voice to a media streaming protocol (usually Real Time Protocol, RTP), as well as a signaling protocol used in the VoIP system.

Mobile access Media Gateways connect the radio access networks of a public land mobile network PLMN to a Next Generation Core Network. 3GPP standards define the functionality of CS-MGW and IMS-MGW for UTRAN and GERAN based PLMNs.

拙訳

Media Gateway(MG)とは、異なる通信網の間に流れるデジタルメディアを変換する装置もしくはサービスのことです。ここでいう異なる通信網とは、PSTN、SS7、次世代ネットワーク(2G、2.5G、3G等の無線網を含む)、PBXなどのことです。MGは、(ATMとIPの相互通信のような)複数の転送プロトコルを用いる次世代ネットワークのマルチメディア通信を可能にします。
(訳注: ここでの「次世代ネットワーク(Next Generation Networks)」とは一般的な次世代ネットワークのことであり、NTTが謳うNGNを指しているわけではありません。)

MGは異なるタイプの網を接続するため、異なる伝送方式あるいは符号化方式の網同士でも変換できる機能を備えています。MGには、エコーキャンセラ、DTMF、トーン送信のようなメディアのストリーミングに関する機能も含まれています。

MGは一般に、Media Gateway Controller(MGC)という、MGとは機能的に分離された、呼制御機能、信号伝達機能を持った装置(機能)から操作されることが多いです。MGとCall Agent(CA)間の通信は、MGCPやMegaco(H.248)またはSIPのような通信プロトコルを用いて成立させます。最近のSIPと共に用いられるMGは、呼制御機能を持ったスタンドアロン装置で、SIPのエンドポイントとして独立的に機能することが多いです。

VoIPで用いられるMGは、TDMの音声をメディアストリーミング用プロトコル(RTP)へと変換します。共通線信号をVoIPシステムが扱う信号伝達プロトコルにするのと同じです。

移動体からアクセスするMGは、PLMNの無線網から次世代ネットワークへとを接続します。3GPP規格はPLMNsをベースにしたUTRANとGERAN向けのCS-MGWとIMS-MGWの機能を定義しています。
(訳注: 移動体には詳しくないので、この一文は何を言っているのかさっぱりです!)

2009年4月25日土曜日

謎の用語を解明しよう: Latch(とRelatch)

仕事で飛び交っている謎の言葉、Latch。アクセスライン側からエッジルータへパケットを投げるときに、「Latchする」みたいな使い方をしています。先輩に聞いてみましたが、言葉の定義がいまいちはっきりしません。「飛んできたパケットのソースIPアドレスを覚えること」というようなものだと説明は受けましたが、ルータやセキュリティの話には耳をふさいできた私には、とても理解できませんでした。。。:(

調べてみると、NAPT機能を実現するときに、MGCMGに対して投げる命令の様です。

しかし情報がないですねー。ググってみると、LatchとはH.248.37で定義されているMegacoのipnapt packageのパラメータの様です。仕様書はITU-T H-series RecommendationsからPDF形式でダウンロードできます。

H.248.37の概要には以下の様に書いてあります。

H.248.37 Abstract
Gateway Control Protocol: IP NAPT Traversal Package

原文

Session Border Controllers (SBCs) are becoming an important part of the Internet infrastructure. Some of these Session Border Controllers are being split into Media Gateway Controller (MGC) and Media Gateway (MG) components. One important function of a SBC is to perform Network and Address and Port Translation (NAPT). H.248.37 allows the MGC to instruct a MG to latch to an address provided by an incoming Internet Protocol (IP) application data stream rather than the address provided by the call/bearer control. This enables the MG to open a pinhole for data flow.

拙訳

SBCはインターネットインフラにおいて重要部分になってきている。これらのSBCの中にはMGCとMG機能を分けているものがある。SBCの1つの大事な機能はNAPTを実現することである。H.248.37では、MGCがMGにIPアドレスを指定する方法として、Call Bearer Controlのものを提供するのではなく、流れてくるIPアプリケーションデータからIPアドレスをLatchできるようにすることを定義している。

いやー「Latchする」とかさらっと言われても分かりませんね :s 英語が分かる人はイメージが伝わるのでしょうか。CiscoのASR 1000のページに幾分説明が載っていました。

Latch and Relatch Support

When the LATCH value is set, the DBE ignores the addresses received in the RemoteDescriptor. Instead, the DBE uses the source address and source port from the incoming media streams to be the destination address and destination port of the outgoing streams.

要するにLatchというのは、MGがストリームの通信先を決める方法の1つで、普通は発信者が指定したアドレス+ポートをMGCがMGに設定するのだけど、MGCが「Latchしろ」と言った時はその設定を無視し、最初にパケットが飛んできたときに、そのパケットのソースアドレス+ポートを「Latchし」、通信先として動的に認識する方法のこと、らしいです(英語的に、Latch onto ~は「~を理解する」「手に入れる」という意味)。

もっと具体的に言うと、普通、発信者は自分がメディアを受け取りたいアドレス+ポートをINVITEのSDPのc行に載せ、それをMGCがMGにAddするときにRemoteDescriptorに記述するんだけど、そのときにipnapt/latch{ napt=LATCH,stream=1 }みたいに指定されると、RemoteDescriptorに記述された発信者のアドレス+ポート設定をMGは無視する。その代り、LocalDescriptorに記述されたアドレス+ポート(=MGがメディアを通したいアドレス+ポート)に最初に飛んできたパケットのソースアドレス+ポートを通信先として認識する、ということを「Latchする」というようです。文字だけで書くとややこしいですね。

上記は音声通話を開始するまでの流れを(かなり簡略化して)図示したものです。図中にオレンジの●が2つありますが、これが音声を流すポート番号です。この番号をお互いが認識しあえれば、音声通話を開始できます。Latch指定がされない場合、図中の数字の箇所では以下の動作をします。

  1. 発信者から着信先に対してINVITEを出す(このときに発信者側の音声を送受信用のポート番号をSDPに載せる)
  2. MGCからMGへ、発信者のポート番号を載せたAddを出す
  3. MGがMG側の音声送受信用ポートを決定し、Add Replyを出す(ここでMGはRemoteとLocal両方のポート番号を決定)
  4. Add Replyの情報を発信者に伝える。また、着信者側へも同様の操作を行うためにINVITEを転送する
  5. MG側のポート番号が分かったため、音声を流せるようになる

一方Latch指定された場合は以下の様になります。

  1. 発信者から着信先に対してINVITEを出す(このときに発信者側の音声を送受信用のポート番号をSDPに載せる)
  2. MGCからMGへ、発信者のポート番号を載せたAdd(Latch指定付)を出す。
  3. MGがMG側の音声送受信用ポートを決定しAdd Replyを出すが、Latch指定されているため、MGCが指定した発信者のポート番号を無視し、MG側音声送受信用ポートに入ってくるパケットを待つ
  4. Add Replyの情報を発信者に伝える。また、着信者側へも同様の操作を行うためにINVITEを転送する
  5. MG側のポート番号が分かったため、音声を流せるようになる
  6. (図中にはないけど)MGは最初に飛んできたパケットのソースアドレスとポートを発信者のアドレス+ポート番号として認識し、通信できるようになる

また、RELATCHが指定された時は以下の様な動作をします。

  1. 現在LatchされているIPアドレスとポート番号で通信を行う
  2. 通信中に、発信者のソースポートが変わった場合、それを検出して新しいソースポート番号をRelatchし、通信先のポート番号として再設定する
  3. Relatch後に、元のソースポート番号からパケットが飛んできても、そのパケットは不許可パケットとして弾く

ものすごい適当な説明ですが、これで伝わったでしょうか。。?実際にはLatch/Relatchを指定するときはgm/rsamでIPアドレスを絞ります(きっと)。そうしないとRELATCHを指定したときに流れパケットを通してしまいますから。

ゼロから学ぶSIP: 第01回 SIPの基本概要

SIPとはSession Initiation Protocol(セッション開始プロトコル)の略です。

SIPはIPネットワ―ク上で使われるプロトコルです。転送プロトコルにはUDPやTCPが使われるのが一般的です。通信時のセキュリティを気にする場合はTLSを使うこともあります。

SIPとは、通信するための条件を伝播する仕組みと、通信者同士で交渉し合う動作を定義したものと言えます。

SIPを使うと以下の様なことができます。

  • 通信(セッション)を開始するための条件を揃えることができます。
  • 通信条件を変更することができます。
  • 通信を終了することができます。

しかし、SIPでは、実際に通信を行うための動作は定義されていません。そのためSIPは、RTPのような、他の通信をするためのプロトコルと一緒に使われることが一般的です。

SIPは他のプロトコルと一緒に使われますが、他のプロトコルを拡張はしませんし、SIP自体が何かのプロトコルに特化しているわけではありません。

SIPを使った情報のやりとりは、必要な情報をテキスト形式で記述して交換し合うことで進められます。やりとりするSIP情報を書いたテキストのことをSIPメッセ―ジと呼びます。SIPメッセ―ジはその内容によって、リクエスト(要求)とレスポンス(応答)の2種類に分類されます。

SIPは、通信元がリクエストを出し、通信先がそれに対するレスポンスを返す、という動作を繰り返すことで、通信するための条件を決定したり、通信条件の変更をしたりしていきます。リクエストを出し、レスポンスをもらうという動作1回分をトランザクションと言います。これはデータベースの世界で使われるトランザクションと大体同意です。

SIPは現在はRFC3261(和訳)で定義されています。