非IP数据传输 (NIDD)
非IP数据传输 允许一个蜂窝物联网 / NB-IoT 设备与应用服务器交换小的 非IP 消息 而不需要IP地址。数据通过 NAS 信令平面(控制平面 CIoT EPS 优化)在用户设备(UE)和移动管理实体(MME)之间传输。MME 将其通过 T6a 转发给 OmniSCEF。然后 OmniSCEF 通过 T8 将其暴露给应用服务器。
NIDD 的架构和程序在 3GPP TS 23.682 §5.13 中定义;T6a Diameter 接口在 TS 29.128 中定义;T8 NIDD API 在 TS 29.122 中定义。
目录
概述
NIDD 会话有两个相关的部分:
- NIDD 配置 由应用服务器通过 T8 创建。它命名设备(通过外部标识符、MSISDN 或组)、通知回调和 NIDD 选项。
- T6a 绑定 在 MME 为该用户建立非IP连接时创建。它将 Diameter 会话和 MME 身份与用于到达 UE 的
{IMSI, EBI}绑定在一起。
OmniSCEF 通过用户身份将两者关联起来,因此上行数据能够找到正确的 AS 回调,下行数据能够找到正确的实时连接。
连接生命周期
MME 管理 T6a 连接,随着 UE 的附加和分离,应用服务器也可以通过删除其 NIDD 配置来结束连接。
当 MME 为没有 NIDD 配置的用户建立连接时,OmniSCEF 会用 DIAMETER_ERROR_USER_UNKNOWN (5001) 回应 CMR。该用户未被配置为 NIDD。
移动发起数据 (上行)
UE 发送的上行非IP数据以 T6a MO-数据请求 (ODR) 的形式到达 OmniSCEF。OmniSCEF 通过向配置的回调 POST 通知将其传递给应用服务器,并用 MO-数据应答 (ODA) 回应 MME。
如果 OmniSCEF 无法解析配置或回调失败,它会用 DIAMETER_UNABLE_TO_COMPLY (5012) 回应 ODA。
示例上行通知(POST 到回调):
{
"externalId": "device01@iot.example.org",
"data": "AQIDBA=="
}
| 字段 | 描述 |
|---|---|
externalId / msisdn | 设备身份,按配置提供。 |
data | 非IP有效负载,base64 编码。 |
rdsSourcePort / rdsDestinationPort | 当 可靠数据服务 启用时存在。 |
moExceptionDataCounter | 当上行被标记为 MO 异常数据 时存在。 |
移动终止数据 (下行)
应用服务器通过向配置的 downlink-data-deliveries 集合 POST 数据来发送下行非IP数据。OmniSCEF 将其作为 T6a MT-数据请求 (TDR) 转发给 MME,并在应用服务器可以检索的单个交付资源上记录结果(来自 MT-数据应答,TDA)。
当 UE 空闲时,MME 会缓存数���并寻呼 UE,一旦它对交付承担责任,就用成功回应 TDA。OmniSCEF 在交付的 deliveryStatus 中反映结果(见 交付状态值)。
示例下行请求:
{
"data": "SGVsbG8=",
"maximumLatency": 3600,
"priority": 5
}
| 字段 | 描述 |
|---|---|
data | 要交付的非IP有效负载,base64 编码。必填。 |
maximumLatency | 可选。最大可接受的缓存延迟,以秒为单位。 |
priority | 可选。排队交付之间的相对优先级。 |
pdnEstablishmentOption | 可选。当没有连接存在时的行为。见 PDN 建立选项。 |
rdsSourcePort / rdsDestinationPort | 可选。RDS 端口。见 可靠数据服务。 |
示例下行响应:
{
"self": "https://scef01:8443/api/3gpp-nidd/v1/as01/configurations/AbC.../downlink-data-deliveries/XyZ...",
"data": "SGVsbG8=",
"deliveryStatus": "SUCCESS"
}
组 NIDD
使用 externalGroupId 创建的 NIDD 配置(而不是单个 externalId/msisdn)表示一个 设备组 (TS 23.682 §5.13.3A)。对组配置的单个下行交付会 分发 给每个具有活动 T6a 连接的组成员。
组的成员从 组映射 中解析。交付的聚合 deliveryStatus 反映每个成员的 最差 结果,因此组交付仅在每个可达成员都被服务时报告 SUCCESS。
可靠数据服务
可靠数据服务 (RDS) 通过 端口号 在单个非IP连接上复用多个应用流,按照 TS 23.682 §4.5.14.3。通过在创建配置时设置 reliableDataService: true 来启用 RDS。
当 RDS 启用时:
- 下行:当交付指定
rdsDestinationPort和rdsSourcePort时,OmniSCEF 会在发送 TDR 之前用包含这些端口的 RDS 头帧包装非IP有效负载。 - 上行:OmniSCEF 从 ODR 有效负载中解析 RDS 头。它在上行通知中显示
rdsSourcePort和rdsDestinationPort,并将内部有效负载作为data交付。
端口范围为 0–255。当 RDS 未启用或交付省略端口时,有效负载将不带帧传输。
MO 异常数据
NB-IoT 设备可以通过 RRC 建立原因将上行传输标记为 异常报告(紧急的、非模式����),在 T6a RRC-Cause-Counter 中计数 (TS 23.682 §5.13.4)。当 OmniSCEF 在 ODR 上看到此指示时,它会在上行通知中包含 moExceptionDataCounter,以便应用服务器可以优先处理。
T8 资源参考
NiddConfiguration
通过 POST /api/3gpp-nidd/v1/{scsAsId}/configurations 创建。
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
notificationDestination | 字符串 (URI) | 是 | 应用服务器接收上行和状态通知的回调。 |
externalId | 字符串 | 可选 | 设备外部标识符 (user@domain)。 externalId、msisdn 或 externalGroupId 之一。 |
msisdn | 字符串 | 可选 | 设备 MSISDN。 |
externalGroupId | 字符串 | 可选 | 组标识符,用于 组 NIDD。 |
dnn | 字符串 | 否 | 非IP连接的数据网络名称 / APN。 |
pdnEstablishmentOption | 字符串 (枚举) | 否 | 下行时没有连接存在的行为。见 PDN 建立选项。 |
maximumPacketSize | 整数 | 否 | 非IP有效负载的最大大小,以字节为单位(默认为配置的 default_max_packet_size,255)。 |
reliableDataService | 布尔值 | 否 | 启用 可靠数据服务。 |
mtcProviderId | ��符串 | 否 | MTC 服务提供者标识符。 |
validityTime | 字符串 (日期时间) | 否 | 配置过期的时间。 |
status | 字符串 (枚举) | 只读 | 生命周期状态。见 配置状态值。 |
self | 字符串 (URI) | 只读 | 资源的自身 URI。 |
NiddDownlinkDataTransfer
通过 POST /api/3gpp-nidd/v1/{scsAsId}/configurations/{configurationId}/downlink-data-deliveries 创建。字段在 移动终止数据 下描述。deliveryStatus 和 requestedRetransmissionTime 字段为只读,并从 TDA 设置。
通知
OmniSCEF 将以下内容 POST 到配置的 notificationDestination:
| 通知 | 何时 |
|---|---|
NiddUplinkDataNotification | 上行非IP数据到达(来自 ODR)。 |
NiddDownlinkDataDeliveryStatusNotification | 先前接受的下行交付的结果发生变化(异步状态)。 |
应用服务器用 204 No Content 确认每个通知。
参考值
交付状态值
| 值 | 意义 |
|---|---|
SUCCESS | MME 已交付数据(或通过缓存/寻呼空闲 UE 承担责任)。 |
SENDING | 交付正在进行中。 |
BUFFERING | MME 为空闲 UE 缓存数据。 |
FAILURE_UE_NOT_REACHABLE | 无法到达 UE。 |
FAILURE_REMOTE_FAILURE | MME / 服务节点拒绝或失败请求。 |
FAILURE | 交付因其他原因失败。 |
PDN 建立选项
| 值 | 下行时没有连接存在的行为 |
|---|---|
WAIT_FOR_UE | 缓存直到 UE 建立连接。 |
INDICATE_ERROR | 立即拒绝交付。 |
ESTABLISH_PDN_CONNECTION | 触发 UE 建立非IP连接。 |
配置状态值
| 值 | 意义 |
|---|---|
ACTIVE | 配置已授权并可用。 |
TERMINATED_UE_NOT_AUTHORIZED | 订阅者未被授权使用 NIDD。 |
TERMINATED | 配置已过期或被移除。 |