Wireshark-dev: Re: [Wireshark-dev] LTE MAC

From: "Martin Mathieson" <martin.r.mathieson@xxxxxxxxxxxxxx>
Date: Wed, 24 Dec 2008 08:00:45 +0000


On Wed, Dec 24, 2008 at 2:48 AM, Yuming fang <fangyuming.leo@xxxxxxxxx> wrote:


2008/12/24 Martin Mathieson <martin.r.mathieson@xxxxxxxxxxxxxx>

Hi,

I just submitted an LTE MAC dissector.  In order to decode MAC frames it needs to know at least :
- the RNTI type associated with the frame
- direction (uplink or downlink)

These and other fields that can be passed to the dissector are in epan/dissectors/packet-mac-lte.h.  I've added support for filling in this info from the DCT2000 format (see packet-catpault-dct2000.c, attach_mac_lte_info()).
 
 
 
You mean you add a LTE MAC dissector in wireshark. And you could invoke this dissector when the wireshark find there is LTE data in DCT2000-format packets. Actually the packet-catpault-dct2000.c could know the data is LTE MAC data. Is this right? Where could I find these code? Could you give me a link?
 
 

Yes, if the file is dct2000 its explicitly says that the data is LTE MAC data.  And it also has the other information (e.g. rnti, direction) that are needed in order tell the MAC dissector how to properly decode the frame.  Its more a test log format than a raw capture format.

Here is a link to the source file in subversion:
    http://anonsvn.wireshark.org/viewvc/trunk/epan/dissectors/packet-catapult-dct2000.c

 
 

I'd be happy to try to help anyone else who's working with LTE MAC to call the dissector from whatever file format or encapsulation they may be using.
 
 
I am adding the LTE MAC code into a TCP(LTEMAC) dissector(packet_tcp_lte.c). There are mainly three functions in this file.
static int dissect_tcp_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
void proto_register_tcp_lte(void);
void proto_reg_handoff_tcp_lte(void);
I am adding the LTE code into these functions. Could this solution work?
 

If the frames you were capturing had this extra information (rnti, direction, etc) inside the TCP payload before the actual MAC data, then you could write a little dissector to:
- read these values
- fill in a mac_lte_info struct with what you have
- attach that to the frame (using   p_add_proto_data)
- call the MAC dissector with the remainder of the data  (using call_dissector() or call_dissector_only())

If your don't have this minimal information available, it won't be possible.

If your format maybe uses different TCP ports for each RNTI, or RTNI type, or channel, you could try using configuration settings to associate TCP ports with those, where you had something like toward the server port was Uplink, the other way was Downlink.  Then you could look up the port and direction, fill in the struct and call the MAC dissector.

I'd guess you'll have at least some framing in your TCP format, otherwise it'll be tricky to desegment one MAC frame from another (you won't know how much padding might have been added to the end, because you won't know the size of the grant).


Hope this helps,
Martin
 
Thank you!
 
Best wishes,
Yuming
 
 

Regards,
Martin

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


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