[[開発/設計/議論]] *議論の目的 [#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] ※現在、議論中です。