4.3 本研究の提案手法
4.3.2 各構成要素の機能仕様
次に,各構成要素の仕様について説明する.
1 2 3 4 5 6 7 8 9
*8 #
SIP UA HTTP-Encapsulation Server
SIP
RTP/RTCP HTTP
HTTP-Uncapsulation
Server
図 4.2: HTTP-Encapsulation Server通信仕様
HTTP-Encapsulation Server
HTTP-Encapsulation Serverは,同LAN内のSIP,RTP/RTCPのパケットをイーサネッ トフレーム (データリンク層)で受け取り,HTTPカプセリングを施して
HTTP-Uncapsulation Serverへ送る.
つまり,HTTP-Encapsulation ServerはSIPのUAからSIPやRTP/RTCPのデータを 受け取り,HTTP-Uncapsulation Serverとの間では,HTTPプロトコルのリクエストメッ セージを使ってデータをやり取りする.このHTTPプロトコルでデータをやり取りする通 信過程において,NATなどの異なるアドレス空間への変換があっても,HTTP-proxyサー バが存在して代理に通信が行なわれても,HTTP-Uncapsulation ServerとのHTTPプロ トコルによる通信が可能である限り通信は成立する.
SIPのパケットは,初期設定ではUDPのポート5060を利用したものを,RTP/RTCPの パケットはSIPメッセージ内のSDPに記述された情報からIPアドレスとポート番号を取 得し,その情報をテーブルに格納して流れてくるデータと比較し判断する.
HTTPカプセリング
本研究でHTTPカプセリングを施したデータ構造は図 4.3のようになる.
HTTP Header SIP-URI IP SIP or RTP/RTCP)
図 4.3: HTTPカプセリングデータ構造
HTTP Header
HTTPカプセリングを施す際に用いるHTTP Headerの内容は,その通信環境によって改 良もしくは,何度か再試行することによって適切なものを選択するのが理想的であるが,
本研究では基本構成を次のようにする.改行にはCRLFを使用する.
また[HTTPデータサイズ]には,HTTP Header以下の全てのデータ長つまりHTTPメッ セージボディ長を入れる.
表 4.1: HTTP Header POST /a.cgi HTTP/1.1
Host:
Connection: keep-alive
Content-Length: [HTTPデータサイズ] CR LF
SIP-URI
SIP-URIには,SIPであれば sip: username@domain で構成される宛先,RTP/RTCP
であれば RTP: IPアドレス ,それぞれに改行 (CRLF)ひとつを続けて代入する.この
情報を用いてHTTP-Uncapsulation ServerもしくはHTTP/SIP proxy Serverは,相手の UAがどこに存在するのかを判断し,UAへデータを送信またはルーティングを行なう.
SIPデータ部はカプセリングされた状態での通信ではその内容によらないため,暗号化さ れて送られてもかまわない.その際に宛先UAの情報が中に隠されてしまうと,HTTP/SIP
proxy Serverでデータをルーティングする際にどこに送ってよいのかわからなくなる.そ
のため暗号化を解く必要のないデータについても,その都度暗号化を解かなくてはならな くなる.これはリアルタイム通信としては重大な問題である遅延につながる.暗号化され たSIPデータ部の外にUAの宛先情報を記述したSIP-URIを付加しUAの宛先の情報とし て利用することによって,遅延の問題を少しでも解決することができる.
1 2 3 4 5 6 7 8 9
*8 #
SIP UA HTTP-Uncapsulation Server
SIP
RTP/RTCP HTTP
Encapsulation Server
図 4.4: HTTP-Uncapsulation Server通信仕様
HTTP-Uncapsulation Server
HTTP-Uncapsulation Serverは,HTTP-Encapsulation Serverから送られたカプセリン グされたデータを解き,SIP-URIから宛先を判断しUAまでデータを送る,若しくは宛先 の方向へデータをルーティングする.UAが同LAN内に存在するならば,
HTTP-Uncapsulation ServerはUAの宛先情報からMACアドレスを調べ,そのMACア ドレス宛にデータリンクフレームを送信する.
つまり,HTTP-Uncapsulation ServerはHTTP-Encapsulation Serverとの間でHTTPプ ロトコルのリクエストメッセージを使ってデータのやり取りを行ない,UAへはSIPや RTP/RTCPのデータを送る.MACアドレスはSIPのURIとIPアドレスと共にキャッ シュテーブルに格納する.MACアドレスを調べる時は,まずそのキャッシュテーブルを 参照して一致するものがなければarpプロトコルを使ってMACアドレスを調べる.
本研究では,HTTP-Encapsulation ServerとHTTP-Uncapsulation Serverの2つの機能 を合わせて,HTTP over SIP Tunneling Serverと呼ぶこととする.
実装と動作検証
5.1 HTTP over SIP Tunneling Server の実装
HTTP over SIP Tunneling ServerをHTTPやSIPのプロトコルスタックに忠実に実装して動 作検証を行なうとすると,プログラム量や動作検証が非常に大掛かりなものとなってしまう.そ のため本研究では,提案仕様の核となるSIPとRTP/RTCPをHTTPメッセージでカプセリン グして転送する機能のみを実装し,その動作検証を行なった.HTTPメッセージは,第 4章で 設定した基本構成に則り作成する.