On Wed, Dec 20, 2023, 4:32 PM John Thacker <johnthac...@gmail.com> wrote:

> > On 6 Dec 2023, at 12:08, Ariel Burbaickij <ariel.burbaic...@gmail.com>
>> wrote:
>> >
>> > Hello all,
>> >
>> > we have a special setup here: SS7 E1 is converted to SCTP traffic with
>> the following basic schema (I cannot share capture itself, just in case):
>> > -- there are no INITs, HEARTBEATs/ACK, SACKs, just DATA chunks sent in
>> both directions as containers then for the traffic on higher layers .
>> > --each linkset, of which there are many, is represented like this:
>> >   1.1.1.1 <-> 2.2.2.2
>> >   3.3.3.3 <-> 4.4.4.4
>> >   5.5.5.5 <-> 6.6.6.6
>> >   etc.
>> > so, that one and the same IP address is never re-used for several
>> associations and <-> means bidirectional traffic. All associations use the
>> same port 2904 on both sides.
>> >
>> >
>> > vtags used per direction are last two bytes of the source IP in the
>> least significant bytes of vtag field, so for the second association it is:
>> >
>> > 0x00000303 from 3.3.3.3 to 4.4.4.4
>> > and
>> > 0x00000404 from 4.4.4.4 to 3.3.3.3
>> > etc.
>> >
>> > and TSNs are verified to be accurate too.
>> >
>> > Now, upon selecting the packet from, say  3.3.3.3 to 4.4.4.4 and
>> "Analyse this Association", we get multi-homed association reported with
>> always larger vtag reported as part of association, so as a matter of
>> example:
>> >
>> > Endpoint 1 is 1.1.1.1 and 3.3.3.3 (vtag 0x00000303)
>> > Endpoint 2 is  2.2.2.2 and 4.4.4.4 (vtag 0x00000404)
>> >
>> > so, why does analysis fail here, where it should not ?
>>
>
>
> I see you filed an issue.
> https://gitlab.com/wireshark/wireshark/-/issues/19544
>
> After fixing the issues with truncated associations, I see that the way
> the analysis is done it won't work if the same port is used on both sides,
> as you mentioned and as I see in the sample.
>
> The ports are used as keys for the association (because it accepts the
> possibility that the same association could be used on multiple IP
> addresses on one side). Also the most recently created associations are
> searched for first.
>
> In your sample file, what happens is something like:
>
> Frame 1, port 2904 vtag 0x0204 -> 2904, create association #1 with other
> side vtag unknown. (IP addresses are ignored)
> Frame 2, port 2904 vtag 0x021c -> 2904, there's an existing association
> with matching ports and an unknown vtag, assume this is the other direction
> of #1 (it is not.)
> Frame 3, port 2904 vtag 0x0202 -> 2904, doesn't match the association
> above because it matches neither of the vtags, create new association #2
> with other side vtag unknown
> Frame 4, port 2904 vtag 0x0204 -> 2904; finds association #2 first
> (searches from the end) with an empty vtag, assumes this is the other
> direction of #2, fills in other vtag as 0x204.
> ...
>
> The addresses don't come into play at all.
>
> On the second pass, Frame 1 will find association #2 before association #1
> and it will have a different association index on the second pass.
>
> The whole thing needs to be rewritten (it's quite slow anyway - it looks
> through the entire list of associations for each packet, and does so each
> dissection.)
>
> It needs to use a map for lookups, and for your case to work needs to also
> consider addresses (only decide that this is the opposite side of an
> association if an address used in the other direction matches). That can
> run into problems if the reply comes back from a different IP address than
> the original destination, as unrelatedly is allowed to happen in GTPv1,
> which causes requests and replies not to be associated. (In GTPv1 the
> Destination Address of a response has to be the Source Address of the
> request, but the Source Address of the response doesn't have to be the
> Destination Address of the Request, except for Echos, 3GPP TS 29.060
> 10.1.2.2)
>

It works better when there are INIT chunks present, but your sample file
only has DATA chunks, as you say.

John

>
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to