情報通信システム論b
リアルタイムアプリケーション
•	ストリーミング（映像配信）

•	IP電話
ＩＰ電話ｼｽﾃﾑの基本構成　　
発信端末（IP電話機）
コーデック（エンコード・暗号化・パケット化）
↓
VoIP（Voice over IP）サーバ
↓
発信端末（IP電話機）
コーデック（アンパケット化・復号・デコード）

・シグナリング処理(SIP)
・リアルタイム通信(RTP)
・優先制御(品質実現)

リアルタイム通信の特徴と実現方式
•	音声，映像は一部が欠けても再生が可能であるが，パケットの到着時間に対しては高い要求がある．遅れると正しく再生が出来ない
•	また，パケットは送信した順番通りには到着しない

•	従って受信側では先ず，受信したパケットを順番通りに並べ替える　（シーケンス制御）とともに，時間内に到着しないパケットを検出する（パケット損失の検出）
•	次に欠けたり，遅れたパケットは無視して，時間内に到着したパケットだけを利用して再生を行う．（ジッタの処理）

到着パケットの処理方式
・順番通り到着しない
・一定時間内に到着しない

・パケットの順序を入れ替える （シーケンス処理）
・時間内に到着したパケットのみで再生 （例：パケット2の代わりにパケット１を使う

RTPが必要な理由
•	TCPが使えない理由
－　順序制御は可能　（シーケンス番号）
－　パケット損失を検出すると再送が行われるので，完全なデータ受信されるが，パケットの到着時間は予測出来ない
•	UDPが使えない理由
   －　順序制御とパケット損失の検出が出来ない
•	従って，新しいプロトコルRTP（Real-Time　Transport　Protocol)を作る必要がある
  －　パケット再生時間に関する情報を付加する
  －　受信側では付加情報から時間関係を把握し，再生する

RTPヘッダのフォーマット
IPヘッダ｜UDPヘッダ｜RTPヘッダ｜音声または映像

V | P | X | CC | M | PT | シーケンス番号 
タイムスタンプ                     
同期送信元識別子（SSRC識別子）
寄与送信元識別子（CSRC識別子）
拡張ヘッダ
 
シーケンス番号： 順序制御とパケット損失検出
タイムスタンプ： 再生タイミングを検出
IP電話の音声品質　　
•	音声品質劣化の主な要因

－　遅延：返事が遅くなる．
　圧縮遅延，パケット化遅延，伝送遅延，揺らぎ（ジッタ）吸収遅延など　

－　パケットロス（損失）：音声が途切れる

－　揺らぎ（ジッタ：遅延のばらつき）：音声のゆがみ，音とび
ITU-Tの遅延に関する規定（G.114） 　

•	遅延(片方向) ： 規定
•	0から150ms : 大部分のユーザで受け入れ可能
•	150から400ms: ネッとワークの管理者が，品質に対する遅延の影響を把握している場合に限って，受け入れ可能
•	400ms以上: 例外を除き，受け入れは不可能

ＩＰ電話ｼｽﾃﾑの基本構成　　
発信端末（IP電話機）
コーデック（エンコード・暗号化・パケット化）
↓
VoIP（Voice over IP）サーバ
↓
発信端末（IP電話機）
コーデック（アンパケット化・復号・デコード）

・シグナリング処理(SIP)
・リアルタイム通信(RTP)
・優先制御(品質実現)

SIPとは　　　
SIP : Session　Initiation　Protocol
・　Session（セッション）とは
｢二者間のデータのやり取り｣を始め（確立し）たり、終わらせ（開放し）たりすること

・　Initiation（イニシエーション）とは
｢始める，開始する｣という意味

セッション層の機能

　

RTPとRTP
WWW |  HTTP |  TCP | IP | Layer2
メール |  SMTP |  TCP | IP | Layer2

ストリーミング | SDP | SIP | TCP/UDP | Layer2
ストリーミング |           SIP | TCP/UDP | Layer2
ストリーミング | RTCP | UDP | Layer2
ストリーミング | コーディング | RTP | UDP | Layer2

SIPを用いたIP電話の基本シーケンス　　
① INVITE →
② 180 RINGING ←
③ 200 OK ←
④ ACK →
⑤ 通話（RTP）　　双方向
⑥ BYE →
⑦ OK ←

SIPを用いた汎用的呼制御
① REGIST → SIPサーバ
② INVITE → SIPサーバ
③ 相手：INVITE ← SIPサーバ
④ 相手：アプリを起動
⑤ 相手：OK（SDP） → SIPサーバ
⑥ OK ← SIPサーバ
⑦ アプリを起動して，相手と双方向通信

SIPの特徴（サーバクライアントモデル）　　
クライアント（UAC）
サーバ（UAS）

・　サーバ，クライアントの関係は固定的なものではない
・　両者は対等（Peer to Peer）で，何れの側からも要求を出すことが出来る
・　メッセージの書き方は，HTTPをベースとしている

SIPメッセージ　
•	開始行
–	リクエストの場合
•	メソッド名、リクエストＵＲＩ，ＳＩＰバージョン
•	例） INVITE sip:kim@hogebar.jp SIP/2.0
–	レスポンスの場合
•	ＳＩＰバージョン、ステータスコード、リーズンフレーズ
•	例） SIP/2.0  200 OK
•	ヘッダ部
•	メッセージ処理に必要な様々な情報を含む．
•	複数のヘッダ行が記述される
•	例） To, From, Contact, Cseq， Call-ID
•	空行
–	ボディの有無にかかわらず必要
•	ボディ部
•	セッションの情報とメディア情報（例：ＩＰアドレス、コーデック）を含む．
•	SDP(Session Description Protocol) で記述されるが，メッセージに含まれない場合もある

主なSIPメソッド　　
メソッド（制御機能）の種類と内容
INVITE：UA間のセッションを確立する
ACK：INVITEの最終応答の受信を確認する
BYE：セッションを終了する
CANCEL：セッションの確立途中のINVITEを終了させる
OPTIONS：UAが他のUAやプロキシ・サーバーの能力を問い合わせる
REGISTER：UAが現在の位置情報を登録サーバーに登録する

上記は，RFC3261で規定されているものであり，他のRFCで規定されているものがある．　
（例：INFO, SUBSCRIBE, NOTIFY

 ＩＮＶＩＴＥリクエストメッセージの例
INVITE 　SIP:UserJ@east.net  　SIP/2.0                           ＜スタートライン＞    
Via: SIP/2.0/UDP  west.net:5060; branch=z9hG4bK776as3 
Max-Forwards: 70
From: Bob<sip:UserB@west.net>; tag=r18f061962
To: Jane <sip:UserJ@east.net>　　　　　　　　　　　　　　　＜ヘッダフィールド＞
Call-ID: 12670087@west.net
CSeq:1 INVITE
Contact: <sip:UserB@10.11.12.13>
Content-Type: application/sdp
Content-Length: 138
　　　　　　　　　　　　　　　　　　　　　　　　　　               　　　＜空白行＞
v=0
o(ｵｰ)=UserB   2890842807  2890842807 IN lP4  west.net  
s=Voice Session                                                                   ＜ボディ＞
c= IN  IP4  10.11.12.13 　　　　　
m=audio 50000 RTP/AVP 　0
a=rtpmap:0 PCMU/8000

HTTPのリクエストメッセージ例
　GET   /index.html  HTTP/1.1　　　　　　パス名，プロトコルバージョン
  User-Agent　:　Mozilla/4.0　　　　　　　 ブラウザの種類
  If-Modified-Since　:　Mon,29 Sep 2020 10:15:20 GMT
　　　　　　　更新を確認
　　　　　　　　　ｰ　更新された場合：２００，リソースをボディとして転送
　　　　　　　　　ｰ　更新がない場合：３０４

  Host　:　rsch.tuis.ac.jp　　　　　　　　　　 六エストしたホスト名

　　　　　　＜ボディ部はない＞
レスポンスの種類と内容
－ステータースコードの種類と役割－　
•	HTTPのレスポンスを拡張．６××を追加

１×× 暫定（通知応答） 
 　リクエストが受信され，そのリクエストの処理を継続中
　（例：100 Trying，180 Ringing）
２×× 成功 リクエストが成功　　（例：200 OK）
３×× リダイレクト
 　ユーザの新たな場所の情報，代わりのサービスに関する情報を与える
　（例：300 Multiple Choices）
４××  クライアントエラー   
 　リクエストに誤りが含まれているか，指定したサーバではこのリクエストを実行できない
　　（例：400 Bad Request ）
５×× サーバエラー
　サーバが実行に失敗　（例：500 Server Internal Error）
６××  グローバルエラー
　どのサーバでも実行不可　（例：600 Busy Everywhere)
180 Ringing レスポンスメッセージの例
SIP/2.0　　180  　Ringing                       　　　　　　　　　　　　　　　スタートライン
Via:  　SIP/2.0/UDP　west.net：5060；branch＝z9hG4bK776as3
From: Bob <sip:UserB＠west.net>； tag=r18f061962
To: Jane <sip:UserJ＠east.net>;　tag=C3810061　　追加
Call-ID: 30017891＠west.net　　　　　　　　　　　　　　　　　　　　　ヘッダフィールド
CSeq: 1 INVITE
contact: <sip:UserJ＠20.21.22.23>
content-Lenｇth: 0

スタートライン
SIP/2.0　　　　180　　　　Ringing
①　　　　　　　②　　　　　③

①SIPのバージョン　　　②ステータスコード　　　③ステータス・コードを表す理由フレーズ 

　ヘッダフィールド
　　ほとんどの場合，INVITEリクエストメッセージのヘッダフィールドからのコピー