• 追加された行はこの色です。
  • 削除された行はこの色です。
[[開発/設計/議論]]


*議論の目的 [#af9bb3f7]
パケットをどのようにNormalize化するかを議論します。


*メッセージ変換部の位置付け [#bfb51e95]
ここでは、下記の機能を提供します。
-メッセージのNormalize化
-メッセージのテンプレートによる出力
-トランスポート層(API含む)の制御


**メッセージのNormalize化 [#f14bcc0e]
メッセージ変換部 から スクリプト へ 送信される「FlatSIP」メッセージとな
り、パケットを抽象化したメッセージに変換することを想定しているものです。
~
ただし、コントロールメッセージも必要になると思いますので、[[トランスポ
ート層の制御>]]と合わせて、ご覧ください。


具体的な内容としては、パケットとして構成されるべきであろう最小公倍数的に
ヘッダーなどを定義します。~
対象としては、下記のようなものとなります。
-IP、TCP、UDPのヘッダー
-SIPのヘッダー
-SDPなど上記Bodyとして使用されるもの

例えば、下記のようなSIPメッセージがあった場合
 UDP x.x.x.x y.y.y.y
 INVITE yyy@yyy SIP/2.0\r\n
 To: xxx@xxx;tag=xxx
 From: yyy@yyy

メッセージ変換部のメッセージのNormalize化処理を行うと
 proto:UDP
 srcIP:x.x.x.x
 dstIP:y.y.y.y
 METHOD:INVITE
 FROM:xxx@xxx
 TO:yyy@yyy

というようなものになります。~

※SIPropの現バージョンにおいては、SIPのみの対応となるため、Stringを渡す
のみという単純な構造とすることも検討しても良いかと思います。~
これをどうするかを議論したいと思います。


***より柔軟性を持たせるために [#q345fb71]
パケットの層構造に合わせて、数層構造に分けて、Normalize化処理をすること
も視野に入れていますが、今回の実装では見送るかもしれません。~
上記の例で言えば、IP層NormalizerとSIP層Normalizerを作成して、2段階でNormalize化処理を行うことを想定しています。



**メッセージのテンプレートによる出力 [#q06ad5d3]
上記のNormalize化されたメッセージを、具体的なパケット(SIP)に変換するもの
となります。~
ただし、コントロールメッセージも必要になると思いますので、[[トランスポ
ート層の制御>]]と合わせて、ご覧ください。~

上記のNormalize化されたメッセージに対して、下記のようなものを用意してお
くと
-出力テンプレート
 INVITE {dstIP} SIP/2.0\r\n
 From: {FROM}
 To: {TO};tag=xxx

↓のように出力されるものとなります
-出力イメージ
 INVITE y.y.y.y SIP/2.0\r\n
 From: xxx.@xxx
 To: yyy@yyy;tag=yyy

※Velocityを使用する場合は、もっと違う形となりますので、そのVelocityのテ
ンプレートの形を議論したいと思います。



**トランスポート層(API含む)の制御 [#n54c0bcd]
外界との接続部分と通信をさせるためにコントロールするための部分となります。
~
具体的には、TCP/UDPを生成したりする部分となり、それをメッセージ内にある
パラメータのみで制御させることを目的としています。~
ここに関しては、まだ、具体的に考慮していない部分です。すみません。

※この制御用のメッセージの種類を議論したいと思います。



*議論の論点 [#b8556349]
**「FlatSIP」メッセージ(Normalizeメッセージ)の内容 [#l83cf72e]

**出力テンプレートの内容 [#zfb61e24]

**トランスポート層(API含む)の制御種類 [#d1588c05]


*結論 [#y451a6c2]

※現在、議論中です。