SIPとVoIP

SIPとVoIP
NTTPC Communications,Inc. 波多 浩昭
JANOG12 Jul.2003
SIPを使った簡単な通話(とりあえず試してみよう)
SIPを使った簡単な通話(とりあえず試してみよう)
相手IPアドレスがわかっており、
ネットワークに接続されているとき
INVITE sip:hata@nttpc.co.jp
200 OK
SIP端末
(MSN Messenger)
JANOG12 Jul.2003
SIP端末
(YAMAHAルータ)
SIPアドレス
sip : hata@nttpc.co.jp
SIPリクエストメッセージ
SIPリクエストメッセージ
ファーストラインメソッドとあて先
INVITE sip:1003@nttpc.ne.jp SIP/2.0
CallCall-ID:238bcID:238bc-25adc25adc-1532b5@192.168.0.32
From:1001<sip:1001@nttpc.ne.jp>;tag=176866
To:sip:1003@nttpc.ne.jp
CSeq:100 INVITE
ヘッダ部 SIPで規定
Via:SIP/2.0/UDP 192.168.0.32
Contact:1001<sip:1001@192.168.0.32>
ContentContent-Type:application/sdp
Type:application/sdp
ContentContent
-Length:110
空行をあけてヘッダと本体を区切る
v=0..o=1001 0 0 IN IP4 192.168.0.32
s=s=
-
SDP
c=IN IP4 192.168.0.32
t=0 0
m=audio 8002 RTP/AVP 0
a=ptime
ptime:30
a=
ptime
:30
JANOG12 Jul.2003
192.168.0.32のポート8002で
RTPの上のG.711を受信できますよ
パケットは30ミリ秒ごとにでます
SIPリクエストメッセージ
SIPリクエストメッセージ
200 OK
リザルトコード
Via: SIP/2.0/UDP 192.168.0.1:5060;branch=z9hG4bK135
Via: SIP/2.0/UDP 192.168.0.32:5060
From: <sip:1001@nttpc.ne.jp>;tag=176866
To: <sip:1003@nttpc.ne.jp>;tag=b8b9ba94<sip:1003@nttpc.ne.jp>;tag=b8b9ba94-ea53ea53-4ed24ed2-84b984b9-6e9d730c605d
CallCall-ID: 238bc238bc-25adc25adc-1532b5@192.168.0.32
CSeq: 100 INVITE
RecordRecord-Route: <sip:NTTPC135@192.168.0.1:5060>
Contact: <sip:192.168.0.10:9063>
UserUser-Agent: Windows RTC/1.0
ContentContent-Type: application/sdp
application/sdp
ContentContent-Length: 154
v=0
o=hata
o=hata 0 0 IN IP4 192.168.0.10
s=s=c=IN IP4 192.168.0.10
b=CT:1000
t=0 0
m=audio 41794 RTP/AVP 0
a=rtpmap
a=rtpmap:0
rtpmap:0 PCMU/8000
JANOG12 Jul.2003
SDP
192.168.0.10のポート41794で
RTPの上のG.711を受信でOKです
代表的なヘッダ
代表的なヘッダ
To
: あて先のSIP-URL
From
: 発信元のSIP-URL
Call-ID
: 1回Registerしてから解除するまでの一連のセッションを識別
CSeq
: 同一Call-IDで何個目のリクエストかを表示
Via
: 本リクエストに対するレスポンスはここへ送ってほしい旨通知
Contact : 以後、自分に対するリクエストはここへ送ってほしい旨通知
Content-Type : メッセージボティのMIMEタイプ
(例)
INVITE
application/SDP
NOTIFY
application/xpidftxml
application/cpim-pidftxml
MESSAGE text/plain
JANOG12 Jul.2003
SIPサーバ(P2PのSIPじゃあつまらない)
SIPサーバ(P2PのSIPじゃあつまらない)
nttpc.co.jpサーバ
①
REGISTER
From : eri@nttpc.co.jp
Contact : 10.10.10.1:5060
INVITE
To : eri@nttpc.co.jp
From : natsumi@nttpc.co.jp
eri
②
10.10.10.1:5060
③
INVITE
To : eri@nttpc.co.jp
From : natsumi@nttpc.co.jp
sip : natsumi@nttpc.co.jp
IPアドレス
アドレス : 10.10.10.2:5060
JANOG12 Jul.2003
sip : eri@nttpc.co.jp
IPアドレス
アドレス : 10.10.10.1:5060
代表的なシーケンス(音声通話)
代表的なシーケンス(音声通話)
Natsumi
発信
Eri
INVITE
0 Trying
100 180 Ringing
200 OK
リングバック
ACK
音声信号 RTP/ UDP
受話器を置く
BYE
200 OK
JANOG12 Jul.2003
ベル鳴動
受話器をとる
代表的なシーケンス(インスタントメッセージ IM)
代表的なシーケンス(インスタントメッセージ IM)
Natsumi
キー入力
メッセージ作成
Eri
INFORM
200 OK
Natsumi が
入力中です
入力中です
きぼー
きぼーん
送信
MESSAGE
200 OK
JANOG12 Jul.2003
Natsumi からの
メッセージです
メッセージです
「きぼー
きぼーん」
代表的なシーケンス(プレゼンス)
代表的なシーケンス(プレゼンス)
SIPサーバ
Natsumi
REGISTER
:Eri
From:E
Eri
オンライン
200 OK
オンライン
REGISTER
From:Nats
umi
200 OK
JANOG12 Jul.2003
SUBSCRIBE
To:Natsumi
200 OK
NOTIFY
From:Nats
umi
200 OK
Natsumi がオン
ラインになりました
ラインになりました
SIPサーバアーキテクチャと設計概要
SIPサーバアーキテクチャと設計概要
こんなかんじでやれば、
こんなかんじでやれば、動くんじゃないかな?
くんじゃないかな?
SIPサーバ
リクエストメッセージ
レスポンスメッセージ
リクエストメッセージ
レスポンスメッセージ
RDBMS
メッセージ分析
状態遷移管理
SIPサーバとはなにか?
何かメッセージを受信してそれを入力とする。
入力を分析し、適切な出力をメッセージとして送信する。
---------------------------------
メッセージ分析モジュール
メッセージを受けて、それが何を意味しているのか解釈する。
返送メッセージを適切なメッセージフォーマットに整形し、ネットワークに送出する
状態遷移管理モジュール
受け取った入力から、誰に何を返すべきかを決定する判断エンジン
RDBMSモジュール
現在どのような状態にあるのか(誰が、オンライン中で誰が通話中か)を保持する
というわけでつくって動
というわけでつくって動かしてみました。
かしてみました。
クライアントは
メッセンジャーです
クライアントは只でもらえるmsnメッセンジャー
でもらえる
メッセンジャーです
JANOG12 Jul.2003
デモ環境
デモ環境
10BASE-T
HUB
DHCPサーバ
SIPサーバ
Open BlockSS/Linux1号機
IP電話
MSNメッセンジャー
MSNメッセンジャー
JANOG12 Jul.2003
IP電話機のインタフェース
IP電話機
SIPサーバ
JANOG12 Jul.2003
品質
品質
パケットロス
„ビットエラーによるパケット廃棄(ランダムエラー)
„輻輳によるパケット廃棄(バーストエラー、ジッタをともなう)
遅延
„音声おくれ
ジッタ(含パケット逆転)
„音声とぎれ
„パケットロスに似ている
JANOG12 Jul.2003
ルーティング
ルーティング
UA
PROXY
INVITE
UA
INVITE
INVITEだけ転送するので
あとは勝手にやって頂戴
200 OK
ACK
PROXY
UA
INVITE
200 OK
ACK
JANOG12 Jul.2003
UA
INVITE
200 OK
ACK
通過するパケットはプロキシ
に転送してくださいね。
・Viaスタック
・Record-Route
シミュレーション
シミュレーション
~網品質をどこまで保証すればよいのだろう~
~網品質をどこまで保証すればよいのだろう~
LANシミュレータ
Ethernet
Ethernet
20ms毎に200バイトの
パケットを送りつづける
受信パケットの間隔を測定
分散値σ’を算出
パケットごとに正規分布
N(μ, σ)秒の遅れを挿入する
ある率%でパケット廃棄
UDP送信
シミュレータ
LANシミュレータ
σとσ’の対応表をつくる
UDP受信
シミュレータ
μ
N(μ, σ)の遅れを挿入する
IPフォン
IPフォン
良好
あれ?変だな
こりゃまずい
使えない
JANOG12 Jul.2003
LANシミュレータの
エラーパラメータ
ネットワークの
推定値
µ, σ,%
µ, σ,%
デモ環境2
デモ環境2
10BASE-T
HUB
DHCPサーバ
SIPサーバ
ネットワーク
シミュレータ
Open BlockSS/Linux2号機
Open BlockSS/Linux1号機
パソコンから見れば
単なるHUB
遅延とパケットロスを発生
JANOG12 Jul.2003
本セッションで利用した機材・ソフト・ドキュメント類
本セッションで利用した機材・ソフト・ドキュメント類
SIPサーバ
サーバ
http://www.hata.cc/hata/sipd20030707.tar.gz
イーサネットシミュレータ
http://www.hata.cc/hata/linee.tar.gz
イーサネットシミュレータの
イーサネットシミュレータの詳細解説 詳細解説 (PC-View)
http://www.pc-view.net/Column/030110/index.html
揺らぎ測定
らぎ測定ツール
測定ツール
http://www.hata.cc/hata/netest.tar.gz
MSNメッセンジャー
メッセンジャー
Version4
4.6もしくは4
対応
もしくは4.7だけがSIP対応
だけが
IP電話機
電話機
東亜通信工業股分有限公司
日本弁事処 日本弁事処 045-474-3222
JANOG12 Jul.2003
ネットワークシミュレータの動作
ネットワークシミュレータの動作
基本動作
イーサポートに現れたフレームはMACアドレスやIPアドレスが何であろうと
もう一方のインタフェースに送出する
オプション動作
フレーム毎にキューに滞留する時間をランダム、正規分布、固定のいずれか
で指定できる
たまにフレームを廃棄する(他方のインタフェースに送らない)。バースト的に廃棄
するか、ランダムに廃棄するかの指定ができる
JANOG12 Jul.2003