当前位置: 代码迷 >> 移动开发 >> 某通讯公司 SNDCP LOG 分析
  详细解决方案

某通讯公司 SNDCP LOG 分析

热度:3408   发布时间:2013-02-26 00:00:00.0
某通信公司 SNDCP LOG 分析

1.     缩略语

1)SNDCP:SubnetworkDependence Converage Protocol,子网相关汇聚协议

2)NSAPI:Network Layer Service Access Point Identifier,网络层服务接入点标识,其实就是在使用SNDCP层的服务的PDP的PDP上下文的一个索引,SNDCP向上层提供的服务访问点;

3)SAPI: LLC 向上层提供的服务访问点

3)Qos:quality ofservice

4)BSS:Base StationSystem

5)SGSN:Service GPRSSupport Node

6)PDP:Packet DataProtocol

2.     SNDCP功能

1)PDP的多路复用, 如图一,将不同协议的数据复用成 LLC PDU;

2)用户数据的压缩和解压缩;

3)协议控制信息的压缩和解压缩;

4)将网络协议数据单元(N-PDU)的分片层逻辑链路控制协议(LLC)的数据单元(LL_PDU),以及将逻辑链路控制协议的数据单元(LL_PDU)重组成网络协议数据单元(N-PDU);

 

图一 SNDCP 多路复用

 

§   SNDCP作用就为了让LLC不用管N-PDU是来自哪种网络协议,即复用;

§   SNDCP可以将网络数据进行分段或者重组,还有压缩或者解压缩等作用,其中有是否进行分段标识符 segment,因为LLC对数据包有限制;

§   BSSGP使用TLLI来区别不同的LLC,即区别不同的用户;

§   LLC中的user-data的SAPI必须与SNDCP中的NSAPI一一对应,因此NSAPI受限于SAPI数目;

 

SNDCP 向上层提供服务访问点 NSAPI,上层协议通过 NSAPI发送 N-PDU给SNDCP 实体,SNDCP 将数据根据配置压缩、分段后SN-PDU,通过 SAPI 发给 LLC 实体。N-PDU 对应 SPRD 协议栈中的SN_DATA_REQ (reliability_class=1 or 2) 和 SN_UNITDATA_REQ (reliability_class=3or 4),对应关系如表一,图二 SNDCP 上下层关系,图三 LLC 承载 SNDCP 已经其他协议数据;

 

表一 NSAPI 与SAPI 对应关系

SAPI

MESSAGE

RELIABILITY CLASS

3

SN_DATA_REQ

1

5

SN_DATA_REQ

2

9

SN_UNITDATA_REQ

3

11

SN_UNITDATA_REQ

4

1

GMM移动性管理

 

7

短消息

 

 

图二 SNDCP 上下层关系

 

图三 LLC 承载上层数据

3.     SNDCP 逻辑结构

SNDCP 逻辑结构如图三,网络侧有对等待逻辑实体,上层是 TCP/UDP等应用层协议,下层是 LLC 协议;

图四 SNDCP 逻辑结构

 

SNDCP SPRD 实现结构如图四,所有配置信息都来自 SM,信令面只与SM有关系,数据面上层是TCP/IP,下层是LLC。

图五 SPRD SNDCP 实现结构

 

4.     SPRD SNDCP 消息

4.1 SNSM_ACTIVATE_IND

pdp_accept 后 SM 通知 SNDCP相关参数,激活(配置)SNDCP实体;

4.2  SNSM_DEACTIVATE_IND

PDP DEACTIVATE IND 后或者PS 域 DETACH 后,SM 通知 SNDCP;

 

4.3  SNSM_MODIFY_IND

SM实体使用该原语来触发某个NSAPI的Qos配置的改变和要使用的SAPI。SGSN的SM实体用它来通知SNDCP实体必须以一个重新协商的Qos配置和分配的SAPI创建一个NSAPI,移动台的SM实体还可以用它来指示RLC/MAC使用的射频优先级。在收到SNSM_MODIFY_IND原语时,SNDCP如果必要,必须为指定SAPI建立确认方式点对点LLC操作,并释放原来分配SAPI

 

4.2 SN_XID_REQ

SNDCP用户使用该原语来传递请求的XID(exchangeidentity)参数给对等实体。

4.4  LL_SNDC_XID_IND

SNDCP实体用该原语传递请求的XID参数列表给SNDCP用户。

TlliAssigned_HandleSndcLlXidReq

 

4.5  LL_SNDC_XID_CNF

SNDCP实体使用该原语来确认SN_XID_REQ,这个确认应该是在SNDCP收到LLC-XID.cnf之后(也就是已经收到对端的确认)。

4.6  SNSM_SEQUENCE_IND

在SGSN路由区切换的时候使用,并且只用于确认方式点对点LLC操作。当MS收到该原语时,接收到的N-PDU数值参数指示了在SGSN接收到了N-PDU数值,如果缓冲中的N-PDU被对端SNDCP已经收到的N-PDU数值确认,该N-PDU必须从buffer中删除。另外,SNDCP层在收到该原语后,将继续那个NSAPI的SN-PDU传输,且所有的缓冲N-PDU(比如那些未经确认或者未发的)必须从最老的N-PDU开始传输。如果这个NSAPI使用的SAPI并未建立,缓冲N-PDU只能在收到LL_ESTABLISH_IND或者LL_ESTABLISH_CNF原语之后才能使用。SNSM_SEQUENCE_RSP是对SNSM_SEQUENCE_IND的响应。移动台在接收到SNSM_SEQUENCE_IND后可以发送该原语来返回接收到的N-PDU数值给SGSN。

 

4.7  SN_UNITDATA_REQ

该原语被SNDCP用来进行非确认模式(unacknowledged)的N-PDU的传输.该原语包含了用来标识PDP的NSAPI

4.8  SN_DATA_REQ

该原语主要给SNDCP user使用,用于确认模式(acknowledged)的N-PDU的传输,SN-PDU的成功传输将由LLC层进行确认。该原语的参数包括N-PDU,NSAPI和N-PDU号码.

4.9  LL_SNDC_ESTABLISH_IND

LLC层使用该原语来通知SNDCP层某个SAPI的确认模式点对点操作的建立或者重建.所请求的XID用来传递请求的SNDCP XID参数给SNDCP层.在重建的情况下,映射到受影响的SAPI的所有NSAPI必须进入recovery状态,所有缓冲的N-PDUs(比如那些完全接收没有得到确认的,以及那些尚未被传输的)当连接重建后必须以最老的N-PDU开始被传输.并且所有的在这个SAPI上使用确认模式的点对点LLC操作的压缩实体被重置.

 

4.10          LL_SNDC_ESTABLISH_CNF

LLC层使用该原语来告知SNDCP层某个SAPI的确认模式点对点操作的成功发起,XID参数用来传递协商过的SNDCP XID参数.在重建的情况下,映射到受影响的SAPI的所有NSAPI将进入recovery状态,所有的缓冲的N-PDU(比如那些完全接收还未得到确认,或者那些还未传输的)在连接重建的时候将以最老的N-PDU开始被传输.并且所有在这个SAPI上使用确认模式点对点LLC操作的压缩实体将重置.

4.11          LL_SNDC_RELEASE_IND

SNDCP层使用LL_RELEASE_REQ来释放确认方式的点对点操作,LL_RELEASE_CNF被LLC层用来进行对LL_RELEASE_REQ的确认。LL_RELEASE_IND则被LLC层用来通知SNDCP层某个SAPI的确认方式点对点操作的终止,该indication的cause参数用来表示终止的原因。SNDCP层在收到LL_RELEASE_IND或者LL_RELEASE_CNF以后,受影响的SAPI的压缩N-PDU队列将从SNDCP层中被删除,在这个SAPI上使用确认的点对点操作的压缩实体将被重置.

4.12          LL_SNDC_RELEASE_CNF

参加 4.9

4.13          LL_SNDC_RESET_IND

SGSN的LLC层使用该原语来指示SNDCP层重置的XID参数已经被传输,移动台的LLC层使用该原语来指示SNDCP层收到重置的XID参数.

在收到LL_RESET_IND时, SNDCP层必须

§   将所有未完成的SNDCP<---->LLC请求类型原语视为没有发送

§   重置所有的SNDCPXID参数为默认值

§   在移动台,对每个使用非确认模式的点对点操作的NSAPI,设置发送的N-PDU号码(非确认的)为0,并且

§   对每个使用确认模式的点对点操作的NSAPI,进入recovery状态,挂起所有的N-PDU的传输,直到收到针

对于该NSAPI的SNSM-SEQUENCE_IND原语.在SGSN,SNDCP层必须为LLC层中受影响的SAPIs重建确认模式点对点操作

 

4.14          LL_SNDC_SUSPENDSENDDATA

用于流量控制?该消息有 LLC 上报给 SNDCP,具体功能未知,可能是用于流控。

4.15          LL_SNDC_RESUMESENDDATA

用于流量控制?该消息有 LLC 上报给 SNDCP,具体功能未知,可能是用于流控。

4.16          LL_SNDC_UNITDATA_IND

非确认模式数据传输涉及的两个原语。在LL_UNIDATA_REQ中,SGSN的QoS参数优先级级别,延迟级别,可靠性级别和最高吞吐量。移动台的Qos参数包括最高吞吐量和可靠性级别。可靠性级别指示了指示了携带SN-PDU的LLC祯是否以保护模式传输,以及RLC/MAC是使用确认模式还是非确认模式。射频优先级仅在移动台中包括,指示了RLC/MAC使用的无线优先级级别。

 

4.17          LL_SNDC_DATA_IND

确认模式下进行SN-PDU的传输涉及到的3个LLC层的原语。sndcp层使用LL_DATA_REQ来请求数据传输,并为每个请求关联一个参考参数,在SGSN的Qos参数中包括优先级级别,延迟级别和最大吞吐量。在移动台的Qos参数中包括最大吞吐量,Qos参数是3GPP TS04.08中定义的服务信息元素的质量。射频优先级只包括在移动台中,指定了RLC/MAC使用的射频优先级别。在LL_DATA_REQ使用前,必须先用LL_ESTABLISH建立SAPI的确认方式点对点操作。LL_DATA_CNF被LLC层用来告知sndcp SN-PDU的成功传输,该原语包含了一个参考参数,通过该参数可以标识与之相应的LL_DATA_REQ,那些收到完全接收的confirm的缓冲N-PDU将被删除.

 

4.18          LL_SNDC_DATA_CNF

见 4.14

 

4.19          SNSM_TLLI_IND

SM 通知 SNDCP TLLI。

4.20          LL_SNDC_DEACTIVED_IND

LLC Entity 发给 SNDCP的消息,去激活指示?不确定。

 

4.21          LL_SNDC_ACTIVED_IND

4.22          LL_SNDC_ESTABLISH_IND

4.23          LL_SNDC_XID_IND

4.24          LL_SNDC_DATA_IND

4.25          SN_DATA_REQ

4.26          LL_SNDC_ESTABLISH_CNF

4.27          LL_SNDC_XID_CNF

4.28          gprs_disable_LL_SNDC_UNITDATA_IND

 

5.     SNDCP数据传输实例

5.1 具体功能

§   将SN-DATA原语映射到LL_DATA原语

§   将SN-UNIDATA原语映射到LL_UNIDATA原语

§   复用一个到多个的网络层实体的N-PDU到恰当的LLC连接建立,重建和释放确认方式的点对点LLC操作

§   确认方式点对点LLC操作中,通过缓冲和重传机制来使LLC层实现了数据的完整性

§   独立为每个NSAPI管理投递系列号

§   在传输端对冗长的协议控制信息进行压缩,在接收端进行解压缩。压缩方法特定用于在使用的网络层和传输层。

§   在传输端对冗长的数据信息进行压缩,在接收端进行解压缩。对每个SAPI,数据压缩独立执行,也可能对每个PDP上下文独立执行。压缩参数可以在MS和SGGN间进行协商

§   分片和重组。压缩功能的输出是分片为LL_PDU的最大长度。这个程序同在使用的特定网络层协议无关。

§   在对等SNDCP实体间协商XID参数。

 

图六 SNDCP在发送端的数据流程

 

5.2 N-PDU的多路复用

网络层使用的协议由动态分配的NSAPI来标识(该NSAPI应该是在PDP激活时在SM层生成的,然后通过SNSM-ACTIVE_IND传递给SNDCP层的,其实相当于在此建立了网络层协议和NSAPI之间的对应关系)。SNDCP在收到N-PDU后,在发向下层之前会插入该NSAPI,对等实体收到底层数据后,会根据NSAPI来确定所使用的网络协议。

 

5.3 确认方式点对点LLC操作的建立和释放

1)建立准则

§   收到SNSM-ACTIVE.ind,该NSAPI的Qos配置要求使用acknowledgedpeer-to-peer LLC operation,但是对应的SAPI还未建立acknowledged peer-to-peer LLC operation(Qos中的Reliabilityclass参数)

§   收到SNSM-MODIFY.ind(dlmu2001:此时Qos profile发生了变化,此时可能从unacknowledged模式改变成acknowledged模式,或者从一个老的SAPI更新到一个新的SAPI上)

 

2)重建准则

§   V.42数据压缩算法检测到错误

§   分片重组时候,处于Receivefirst segment 状态,收到F位置0的SN-DATA PDU(此时该PDU将被丢弃,LLC operation进行重建)

§   分片重组时,处于Receivesubsequent segment状态,收到F位置1的SN-DATA PDU,且DCOMP,PCOMP或  者N-PDU number同第一个分片不同(此时属于同一个N-PDU的之前的分片将被丢弃,对应的SAPI的 LLC operation将重建)

 

3)SNDCP发起的建立/重建流程

 

 

说明:

§   LL_ESTAB.req中可以包含XID参数,如果包含该参数

§   可能的结果:成功;失败;发生冲突后成功解决

§   收到LL_ESTAB.cnf表示建立成功;收到LL_RELEASE.ind表示建立失败,根据失败的原因,SNDCP层需要作出恰  当的动作(比如通知SM子层)

§   如果SNDCP实体在发出LL_ESTAB.req或者LL_XID.req之后收到LL_ESTAB.ind或者LL_XID.req,此时即发生冲突,这种情况下,SNDCP实体就当做没有发过LL_ESTAB.req,正常处理接收到的LL_ESTAB.ind或者LL_ XID.req,如果之前发出的LL_ESTAB.req或者LL_XID.req包含一个或者多个XID参数,或者在XID参数中包含了一个或者多个压缩字段,或者在一个压缩字段中包含了一个或者多个参数,而这些参数没有在LL_ESTAB.ind或者LL_XID.ind中协商,则sndcp实体此时再LL_XID.req进行协商。

 

4)acknowledged peer-to-peer LLC operation的释放

§   释放准则:收到SNSM-DEACTIVE.ind或者SNSM-MODIFY.ind且对应的SAPI不再有使用acknowledgedpeer-to-peer的NSAPI。

§   过程:调用LL_RELEASE.req,收到LL_RELEASE.cnf表示释放成功

 

5.4 N-PDU缓冲

§   N-PDU在压缩成分片并传输到LLC层之前,必须缓冲.这个缓冲使用哪一层的buffer比较好?网络层?

§   收到SNSM-DEACTIVE.ind会删除相关的NSAPI的对应缓冲

§   对于acknowledged方式的数据传输,缓冲必须被确认后才能删除(LL_DATA.cnf和SNSM.SEQUENCE可以完成该确认)

§   对于unacknowledged方式的数据传输,传输完成就删除

5.5.投递顺序管理

SNDCP层负责维护对等实体间每个NSAPI的N-PDU的投递顺序.


  相关解决方案