1、?参考资料
TS 29.060 V17.1.0-GPRS Tunnelling Protocol (GTP)
TS 29.281 V17.1.0-GPRS Tunnelling Protocol User Plane (GTPv1-U)
2、GTP协议
GTP(GPRS隧道协议(GPRSTunnelingProtocol)),可以分解成三种独立的协议,GTP-C、GTP-U及GTP'。GTP-U用于在GPRS核心网内,无线接入网与核心网之间传送用户数据。?GTP可以用在UDP或TCP上,GTP v1仅用于UDP上,UDP的2123端口是为GTP-C登记的端口号, 2152端口是为GTP-U登记的端口号。
GTP-U协议使用的GTP头是变长度的。GTP头的最小长度是8个字节。
GTP-U消息格式:
???
?
?
必选字段:
- 版本号(Ver):用于确定GTP协议的版本,转换成10进制表示。
- 协议类型(PT):用于区分GTP(置’1’)和GTP’(置’0’)协议。
- 扩展头标志(e):置’1’表示有下一个扩展头字段。置’0’表示没有下一个扩展头字段,或有但不必解释。
- 序号标志(s):置’1’表示有序号字段。置’0’表示要么没有序号字段,要么有但不必做出解释。在GTP-C消息中s标志应置’1’。
- N-PDU编号标志(Pn):置’1’表示有N-PDU编号字段。置’0’表示要么没有N-PDU编号字段,要么有但不必做出解释。这个标志仅对GTP-U有意义。所以,GTP-C不使用这个标志。
- 消息类型:这个字段指出GTP消息的类型。
- 长度:这个字段指出以字节为单位的净荷长度,即分组中除了GTP头的必选部分外剩余部分的长度(即除去前面的8个字节)。
- 隧道端点标识符(TEID):这个字段清楚地标识了对端的GTP-U或GTP-C协议实体中的隧道端点。
可选字段:
- 序号:这个字段在GTP-U中是可选的。对GTP-C控制面消息,序号用于事务标识。通过GTP-U隧道传输时,如果必须保护传输顺序,用该字段对T-PDU进行编号,且每传输一个T-PDU就增加序号值。
- N-PDU标号:这个字段在SGSN间的路由区更新过程中和某些系统间切换过程(如2G和3G无线接入网间切换)中使用。当MS和SGSN间的通讯工作在确认模式下时,使用这个字段协调它们间的数据传输。这个字段的确切意义取决于使用场合。如GSM/GPRS到GSM/GRPS,这个字段就是SNDCP N-PDU编号。
- 下一个扩展头类型:这个字段定义在G-PDU中紧接着这个字段的扩展头的类型。
3、GTP-U消息类型
消息类型占?1Byte,共256种。其中GTP-U用到如下7种:
Message Type value | Message | Reference | 1 | Echo Request | 3GPP TS 29.060 | 2 | Echo Response | 3GPP TS 29.060 | 26 | Error Indication | 3GPP TS?29.281?[41] | 31 | Supported Extension Headers Notification | 3GPP?TS 29.060 | 253 | Tunnel Status | 3GPP TS?29.281?[41] | 254 | End Marker | 3GPP TS?29.281?[41] | 255 | G-PDU | 3GPP TS?29.281?[41] |
4、GTP-U扩展头
??? 4.1 扩展头格式
Octets ?????1 ???????????????????????????????????? | | Extension Header Length | 2 – m | | Extension Header Content | m+1 | | Next Extension Header Type |
??? 4.2 扩展头类型
Next Extension Header Field Value | Type of Extension Header | 0000 0000 | No more extension headers | 0000 0001 | Reserved - Control Plane only. | 0000 0010 | Reserved - Control Plane only. | 0000 0011-0x03 | Long PDCP PDU Number. | 0010 0000-0x20 | Service Class Indicator | 0100 0000-0x40 | UDP Port. Provides the UDP Source Port of the triggering message. | 1000 0001-0x81 | RAN Container | 1000 0010-0x82 | Long PDCP PDU Number. | 1000 0011-0x83 | Xw RAN Container | 1000 0100-0x84 | NR RAN Container | 1000 0101-0x85 | PDU Session Container. | 1100 0000-0xC0 | PDCP PDU Number?[4]-[5]. | 1100 0001 | Reserved - Control Plane only. | 1100 0010 | Reserved - Control Plane only. |
????4.3扩展头详细格式说明
Type?Value | Description | Format | 0x40 | UDP Port |
| | | Bits | | Octets | | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | | 0x01 | | | 2-3 | | UDP Port number | | 4 | | Next Extension Header Type (note) |
| 0xC0 | PDCP PDU Number |
| | | Bits | | Octets | | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | | 0x01 | | | 2 | | PDCP PDU number | | 3 | | PDCP PDU number. | | 4 | | Next Extension Header Type (Note 3) |
| 0x03/0x82 | Long PDCP PDU Number |
| | | Bits | | Octets | | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | | 0x02 | | | 2 | | Spare | PDCP PDU number | | 3 | | PDCP PDU number | | 4 | | PDCP PDU number | | 5 | | Spare | | 6 | | Spare | | 7 | | Spare | | 8 | | Next Extension Header Type (Note 1) |
| 0x20 | Service Class Indicator |
| | | Bits | | Octets | | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | | 0x01 | | | 2 | | Service Class Indicator | | 3 | | Spare | | 4 | | Next Extension Header Type (note) |
| 0x81 | RAN Container |
| | | Bits | | Octets | | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | | 0xn | | | 2-(4n -1) | | RAN Container | | 4n | | Next Extension Header Type (NOTE) |
| 0x83 | Xw RAN Container |
| | | Bits | | Octets | | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | | 0xn | | | 2-(4n -1) | | Xw RAN Container | | 4n | | Next Extension Header Type (NOTE) |
| 0x84 | NR RAN Container |
| | | Bits | | Octets | | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | | 0xn | | | 2-(4n -1) | | NR RAN Container | | 4n | | Next Extension Header Type (NOTE) |
| 0x85 | PDU Session Container |
| | | Bits | | Octets | | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | | 0xn | | | 2-(4n -1) | | PDU Session Container | | 4n | | Next Extension Header Type (NOTE) |
|
4.3扩展头报文格式
UDP Port:
?
?
PDCP PDU Number:
?
?
?
????????
5故障处理
5.1协议故障
协议故障即是指带有不认识的、未预见到的或内容错误的信息。术语’’默默地丢弃”意思是实现时丢弃这个消息而不作进一步的处理,在事件日志中记录这个错误消息,并将该故障记录在统计计数器中。
消息定义的”是否要求”列如果是”必选项”,这个IE必须在消息中出现。
消息定义的”是否要求”列如果是”有条件的”,这个条件有如下的结果:
- 必须出现;
- 可选出现;
- 必不出现;
消息中遗漏了必须出现的IE看成是数据丢失;出现了必不出现的IE看成是意外数据。
5.1.1不同的GTP版本
如果接收节点接收到一个它不支持的版本的GTP控制面信息,则发回GTP版本不支持消息,且在GTP头的版本字段中指出节点支持的最新GTP版本。丢弃接收到的G-PDU。
仅支持GTPv0版本的GSN可能不会监听2123端口,因此它不能给请求方发回版本不支持消息。同时支持GTPv1版本和GTPv0版本的GSN试图使用v1版本跟对等实体联系失败时,应退回到GTPv0版本。
实现选项:保留一个最近联系过的仅支持GTPv0版本的GSN列表,以及发回’版本不支持’消息的节点支持的版本。
5.1.2 GTP消息太短
当接收到一个消息太短而没有完整的包含该消息声明的GTP版本所应有的消息头时,应默默地丢弃这个G-PDU消息。
5.1.3 不认识的GTP控制面消息
当接收到一个消息的消息类型值未知时,应默默地丢弃。
5.1.4 意外的GTP控制面消息
当收到一个意外的GTP控制面消息时,如接收到的响应消息没有相应的未决的请求消息或GTP控制面消息在错误的方向发送,应默默地丢弃。
5.1.5 缺少必须有的IE
当接收到丢失了必须有的IE的请求消息时,将默默地丢弃并在错误日志中登记。应发送一个响应消息,且原因值设成’必选IE丢失’。当接收到丢失了必须出现的IE的响应消息时,经通知上层协议并在错误日志中登记。
5.1.6 无效的长度
在接收到的GTP控制面请求消息中,强制TLV(类型、长度、值)格式的IE的长度可能与消息声明的版本定义的长度不一致,则应默默地丢弃,并在错误日志中登记,响应消息的原因值应设成’必选IE不正确’。
在接收到的GTP控制面响应消息中,假如强制TLV(类型、长度、值)格式的IE的长度可能与消息声明的版本定义的长度不一致,请求实体把这个GTP控制面过程看作失败。
5.1.7 无效的必选IE
在接收到的GTP控制面请求消息中,必选IE的值超出了这个IE值的定义范围则应丢弃这个请求、在错误日志中登记,把响应消息的原因值设成’比选IE不正确’。
在接收到的GTP控制面响应消息中,必选IE的值超出了这个IE值的定义范围则应通知上层协议,并在错误日志中登记。
假如GSN接收到的IE值是保留值,则应看成IE值超出了定义范围。
注释:接收者不检查IE字段的内容就定义为空。
5.1.8 无效的可选IE
在接收到的GTP控制面消息中,可选IE的值超出了IE值的定义范围则应丢弃这个IE、在错误日志中登记、当成这个IE没有出现来处理消息的剩余部分。
假如GSN收到的IE的值是保留值,把它当成IE值超出范围处理。
注释:接收者不检查IE字段内容就定义为空。
5.1.9 不认识的IE
如果IE的类型值不认识接收者应忽略。如果是TLV格式的IE,就根据长度值跳过去,如果是TV格式的IE,就丢弃消息的剩余部分。
如果接收节点由于忽略了IE而不能解释剩余部分,接收节点应丢弃这个消息并在错误日志中登记,此外如果消息是请求消息,还应把响应消息的原因值设成’无效的消息格式’。
5.1.10 IE乱序
如果消息中两个或更多的IE乱序,接收节点将丢弃这个消息,并在错误日志中登记,此外如果消息是请求消息,还应把响应消息的原因值设成’无效的消息格式’。
5.1.11 意外的IE
如果IE的类型在GTP中有定义,但是不应出现在接收到的消息中,就跳过这个IE,其余按正常情况处理。
5.1.12 重复
如果在一个GTP控制面信息中出现未规定的重复的IE时,则应只处理第一次出现的IE的内容,并应忽略此后出现的所有重复的IE。当规定了重复的IE时,应只处理所规定的重复IE的内容。
5.1.13 可选IE不正确
在GTP控制面消息中所有错误的可选IE应视为未在该消息中出现。但是,如果接收方的GSN因这一可选IE错误而不能正确处理该消息,则接收方的GSN应在错误日志中登记,并把响应消息的原因值设成’可选IE不正确’。
5.2路径失败
每当在某路径上接收到一个响应的时候都应复位路径计数器,并且对该路径上发送的任何消息,当T3-RESPONSE定时器超时时,就增加计数器值。如果计数器值超出N3-REQUESTS定义的值,则认为路径down掉了。在这种情况下GSN或RNC可以通知OMC网络元素。GTP也应通知上层协议路径失败,以便删除与该路径关联的PDP上下文。
5.3 MS分离
当MS分离时,所有与MS相关的正在进行的GTP控制面过程都应中断。SGSN应针对所有激活的PDP上下文给对等的GGSN发删除PDP上下文请求消息。
5.4重启和恢复
所有GSN应在非易失性存储器中保存具有本地意义的重启计数器值。在重启过程完成后,GSN应立即更新重启计数器值。计数器值按模256递增。
所有GSN也应在易失性存储器中保存与之联系的每个GSN的重启计数器值。在重启过程完成后,保存的与之联系的所有GSN的重启计数器值将被清除。
5.5 报文格式
?
在请求中,Cause Value表示请求的原因。原因应包含在请求消息中。
在响应中,Cause Value表示接受或拒绝相应的请求。此外,Cause Value可以指示对应请求的原因。Cause值应包含在响应消息中。
Table 5.1: Cause Values
| Cause | | Value (Decimal) | | | Request IMSI | 0 | | | Request IMEI | 1 | | request | Request IMSI and IMEI | 2 | | | No identity needed | 3 | | | MS Refuses | 4 | | | MS is not GPRS Responding | 5 | | | Reactivation Requested | 6 | | | PDP address inactivity timer expires | 7 | | | Network Failure | 8 | | | QoS parameter mismatch | 9 | | | For future use | 10-48 | | | Cause values reserved for GPRS charging protocol use (see GTP' in 3GPP TS?32.295?[33]) | 49-63 | For future use | | | 64-127 | | acc | Request accepted | 128 | | | New PDP?type due to network preference | 129 | | | New PDP?type due to single address bearer only | 130 | | | For future use | 131-176 | | | Cause values reserved for GPRS charging protocol use (see GTP' in 3GPP TS?32.295?[33]) | 177-191 | | | Non-existent | 192 | | | Invalid message format | 193 | response | rej | IMSI/IMEI?not known | 194 | | | MS is GPRS Detached | 195 | | | MS is not GPRS Responding | 196 | | | MS Refuses | 197 | | | Version not supported | 198 | | | No resources available | 199 | | | Service not supported | 200 | | | Mandatory IE incorrect | 201 | | | Mandatory IE missing | 202 | | | Optional IE incorrect | 203 | | | System failure | 204 | | | Roaming restriction | 205 | | | P-TMSI Signature mismatch | 206 | | | GPRS connection suspended | 207 | | | Authentication failure | 208 | | | User authentication failed | 209 | | | Context not found | 210 | | | All dynamic PDP addresses are occupied | 211 | | | No memory is available | 212 | | | Relocation failure | 213 | | | Unknown mandatory extension header | 214 | | | Semantic error in the TFT operation | 215 | | | Syntactic error in the TFT operation | 216 | | | Semantic errors in packet filter(s) | 217 | | | Syntactic errors in packet filter(s) | 218 | | | Missing or unknown APN | 219 | | | Unknown PDP address or PDP type | 220 | | | PDP context without TFT already activated | 221 | | | APN access denied – no subscription | 222 | | | APN Restriction type incompatibility with currently active PDP Contexts | 223 | | | MS MBMS Capabilities Insufficient | 224 | | | Invalid Correlation-ID | 225 | | | MBMS Bearer Context Superseded | 226 | | | Bearer Control Mode violation | 227 | | | Collision with network initiated request | 228 | | | APN Congestion | 229 | | | Bearer handling not supported | 230 | | | "Target access restricted for the subscriber" | 231 | | | UE is temporarily not reachable due to power saving | 232 | | | Relocation failure due to NAS message redirection | 233 | | | For future use | 234-240 | | | Cause values reserved for GPRS charging protocol use (see GTP' in 3GPP TS?32.295?[33]) | 241-255 | NOTE: With this coding, bits 8 and 7 of the Cause Value respectively indicate whether the message was a request or a response, and whether the request was accepted or rejected. |
Table 5.2: Use of the Cause Values
Cause 8 | value bits 7 | Result | 0 | 0 | Request | 0 | 1 | For future use (note) | 1 | 0 | Acceptance | 1 | 1 | Rejection |
例如:Optional IE incorrect
?
|