1

直径サーバーとして seagull を使用しています。次のような IMS 3GPP Cx トラフィック シナリオをシミュレートしようとしています: >MAR、SAR、

注-1: ">" は受信を示し、"<" は送信を示します。注 2: MAR と SAR では、Session-Id が異なります。

このために、次のようなシナリオ ファイル構造を用意しています。

<traffic>
<receive channel="channel-1">
<command name="MAR">
....
</receive>
<send channel="channel-1">
<command name="MAA">
....
</send>

<receive channel="channel-1">
<command name="SAR">
....
</receive>
<send channel="channel-1">
<command name="SAA">
....
</send>
</traffic>

Seagull は、受信した MAR に MAA で応答します。ただし、SAR を受信すると、以下のエラーがスローされます。おそらく、セッション ID が一致していないためです。

2009-04-07.13:57:33.001|E|Unexpexted message that doesn't match the    scenario.
2009-04-07.13:57:33.001|T|Unexpected (no scenario found) call with session-id [ 30 30 30 31 2d 61 61 61 6d 67 72 2e 73 74 31 36 2e 73 74 61 72 65 6e 74 6e 65 74 77 6f 72 6b 73 2e 63 6f 6d 3b 32 30 30 30 33 3b 31 33 35 38 38 34 30 38 33 33 3b 66 64 65 38 30 31 ] 2009-04-07.13:57:33.001|T|Unexpected message received [ [SAR

とにかくこれからありますか。相関 ID の使用方法を確認しましたが、上記のシナリオでの使用方法がわかりませんでした。どんな提案でも大いに役立ちます。

ありがとう

4

3 に答える 3

1

実際には、複数の直径のリクエストと応答を実装する方法を見つけていましたが、カモメが上記の複数の直径のリクエストと応答で上記のエラーを送信していました。

しかし後で、複数の直径のリクエストとレスポンスを記述する方法を見つけました。scenario.xml ファイルの下の個別の<default>...セクションに各要求と応答を配置するだけです。</default>

お気に入り..

<default>

    <receive channel="channel-1" >
        <command name="AAR">
        </command>
        <action>
            <store name="HbH" entity="HbH-id"></store>
            <store name="E2E" entity="EtE-id"></store>
            <store name="sid" entity="Session-Id"></store>
        </action>
    </receive>
    <send channel="channel-1" >
        <action>
            <restore name="HbH" entity="HbH-id"></restore>
            <restore name="E2E" entity="EtE-id"></restore>
            <restore name="sid" entity="Session-Id"></restore>
        </action>
        <command name="AAA">
            <avp name="Session-Id" value="$(sid)" type="string"></avp>
            <avp name="Result-Code" value="2001" type="number"></avp>
            <avp name="Reply-Message" value="Success" type="string"></avp>

        </command>
    </send>
</default>

<default>

    <receive channel="channel-1" >
        <command name="PUR">
        </command>
        <action>
            <store name="HbH" entity="HbH-id"></store>
            <store name="E2E" entity="EtE-id"></store>
            <store name="sid" entity="Session-Id"></store>
        </action>
    </receive>
    <send channel="channel-1" >
        <action>
            <restore name="HbH" entity="HbH-id"></restore>
            <restore name="E2E" entity="EtE-id"></restore>
            <restore name="sid" entity="Session-Id"></restore>
        </action>
        <command name="PUA">
            <avp name="Session-Id" value="$(sid)" type="string"></avp>
            <avp name="Result-Code" value="2001" type="number"></avp>
            <avp name="Reply-Message" value="Success" type="string"></avp>

        </command>
    </send>
</default>
于 2015-12-31T12:13:22.427 に答える
1

質問で具体的に使用されたパケットに精通していませんが、一般的に、seagull はこのように機能すると思います。メッセージが拒否される原因は 3 つあります ( seagull で受信した予期しないメッセージとしてマークされています)。

  1. 拒否されたメッセージは、受信されなかった別のメッセージ (受信セクションの場合) またはタイムアウト (通常は送信セクションの場合) の後に定義されます。たとえば、あなたの場合、seagull がサーバーとして機能し、MAR最初に受信しない場合 (init セクションも定義する場合は、init のセクションを最初に満たす必要があります)、到着する SAR によってこのエラーが発生します。
  2. 拒否されたメッセージには、Session-Id受け入れられない があります。out-of-session-idこのメッセージのフィールドを定義しなかった場合、seagull はSession-Id他のメッセージと同じであると想定します。これは、seagull がシナリオ トラフィック セクションのすべてのメッセージ遷移を同じセッションとして扱うためです。つまり、SAR には以前の MAR にあるセッション ID が必要です。コアドキュメント:

メッセージを受信すると、Seagull は既知のセッション ID のリストからセッション ID を見つけようとします。session-id (ディクショナリに示されている) に対応するパラメータが見つからない場合、Seagull はディクショナリの「out-of-session-id」パラメータで示されるパラメータを調べます。

あなたの場合、次の手順が機能するはずです。

パケット

  1. ディクショナリのコマンド セクションは、パケットのセクションと同じである必要があります。フラグ、コマンド コード、アプリケーション ID など。

最後に、デフォルトのセクションを使用すると、実際にエラーが解決されたようunrecognized received packetsに見えますが、デフォルトは、out-of-session-idフィールドがより適切でシステムロジックに一致するソリューションであると想定されているため、お勧めしません。

于 2018-04-13T05:20:44.550 に答える