RANAP协议解析设计 - 图文(2)

2019-08-31 11:50

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

解码SCTP层数据的目的是提取M3ua协议层。由于SCTP的data chunks 由多个chunk组成。所以在解码时需要循环解码。具体设计思路如下:

第一、做一个SCTP Common Header的结构体,该结构体要包含Common Header的所有字段和一个指向data chunks的结构指针。这个结构体用于保存Common Header的字段值以备后用。

第二、做一个Chunk的结构体,该结构体包含Chunk Field Descriptions的所有字段和一个chunk value的指针,这个指针就指向了要提取的chunk value数据。

第三、根据天元程序“protocolanalyser”中结构体RAW_PACKET的成员packetlength (包总长度)和reportLength(当前解析长度)进行解码控制。

第四、做一个Chunk Value的结构体,包含Chunk Type 为data 类型的所有字段和一个指向数据的指针,该指针指向M3ua数据。如果Chunk Value结构体的Payload Protocol Identifier字段不是M3ua则不进行解析。 第五、在解析函数

static int get_packet_pasered_ip(RAW_PACKET* packet)中调用static int get_packet_pasered_sctp(RAW_PACKET* packet)来解析SCTP协议。

Chunk Type

ID Value Chunk Type ----- ----------

0 - Payload Data (DATA) 1 - Initiation (INIT)

2 - Initiation Acknowledgement (INIT ACK) 3 - Selective Acknowledgement (SACK) 4 - Heartbeat Request (HEARTBEAT)

5 - Heartbeat Acknowledgement (HEARTBEAT ACK) 6 - Abort (ABORT) 7 - Shutdown (SHUTDOWN)

8 - Shutdown Acknowledgement (SHUTDOWN ACK) 9 - Operation Error (ERROR) 10 - State Cookie (COOKIE ECHO)

11 - Cookie Acknowledgement (COOKIE ACK)

12 - Reserved for Explicit Congestion Notification Echo (ECNE) 13 - Reserved for Congestion Window Reduced (CWR) 14 - Shutdown Complete (SHUTDOWN COMPLETE) 15 to 62 - available

63 - reserved for IETF-defined Chunk Extensions 64 to 126 - available

127 - reserved for IETF-defined Chunk Extensions 128 to 190 - available

191 - reserved for IETF-defined Chunk Extensions 192 to 254 - available

255 - reserved for IETF-defined Chunk Extensions

目前,只用到了DATA 和SACK。RANAP协议用到的是DATA。但这里需要过滤SACK包。 Chunk Length

This value represents the size of the chunk in bytes, including the Chunk Type, Chunk Flags, Chunk Length, and Chunk Value fields. Therefore, if the Chunk Value field is zero-length, the Length field will be set to 4. The Chunk Length field does not count any chunk padding.

Chunk Value

The Chunk Value field contains the actual information to be transferred in the chunk. The usage and format of this field is dependent on the Chunk Type. Chunk数据块内容包含了真实的传输信息,Chunk数据的用法和格式依赖于Chunk Type的取值。

Chunk Type为 Data时Chunk value的格式

Payload Data (DATA) (0) The following format MUST be used for the DATA chunk:

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 0 | Reserved|U|B|E| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TSN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Stream Identifier S | Stream Sequence Number n | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Protocol Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \\ \\ / User Data (seq n of Stream S) / \\ \\ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Chunk Type为SACK时Chunk value的格式

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 3 | Chunk Flags | Chunk Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cumulative TSN Ack | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertised Receiver Window Credit (a_rwnd) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Number of Gap Ack Blocks = N | Number of Duplicate TSNs = X |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Gap Ack Block #1 Start | Gap Ack Block #1 End | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / \\ ... \\ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Gap Ack Block #N Start | Gap Ack Block #N End | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Duplicate TSN 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / \\ ... \\ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Duplicate TSN X | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4. MTP第三级用户的适配层协议(MTP 3 User Adaptation Layer)

M3ua协议消息格式包含一个消息头和多个由消息类型决定的可变长度的参数组成。下图是消息头字段定义。

M3UA messages consist of a Common Header followed by zero or more variable-length parameters, as defined by the message type. Common Message Header

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version | Reserved |Message Class | Message Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Message Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \\ \\ / /

Version

1 Release 1.0 Reserved

The Reserved field SHOULD be set to all '0's and ignored by the receiver. Message Class and Message Type

The following list contains the valid Message Type Classes: 0 Management (MGMT) Messages 1 Transfer Messages

2 SS7 Signalling Network Management (SSNM) Messages 3 ASP State Maintenance (ASPSM) Messages 4 ASP Traffic Maintenance (ASPTM) Messages

5 Reserved for Other SIGTRAN Adaptation Layers 6 Reserved for Other SIGTRAN Adaptation Layers 7 Reserved for Other SIGTRAN Adaptation Layers 8 Reserved for Other SIGTRAN Adaptation Layers 9 Routing Key Management (RKM) Messages 10 to 127 Reserved by the IETF

128 to 255 Reserved for IETF-Defined Message Class extensions

由于RANAP协议只涉及到Transfer Messages消息类型类,所有这里只列出Transfer消息的消息类型。

Transfer Messages 0 Reserved

1 Payload Data (DATA) 2 to 127 Reserved by the IETF

128 to 255 Reserved for IETF-Defined Transfer extensions

Message Length

The Message Length defines the length of the message in octets, including the Common Header.


RANAP协议解析设计 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:10汽修《汽车故障》授课计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: