跳到主要内容

非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 确认每个通知。

参考值​

交付状态值​

值意义
SUCCESSMME 已交付数据(或通过缓存/寻呼空闲 UE 承担责任)。
SENDING交付正在进行中。
BUFFERINGMME 为空闲 UE 缓存数据。
FAILURE_UE_NOT_REACHABLE无法到达 UE。
FAILURE_REMOTE_FAILUREMME / 服务节点拒绝或失败请求。
FAILURE交付因其他原因失败。

PDN 建立选项​

值下行时没有连接存在的行为
WAIT_FOR_UE缓存直到 UE 建立连接。
INDICATE_ERROR立即拒绝交付。
ESTABLISH_PDN_CONNECTION触发 UE 建立非IP连接。

配置状态值​

值意义
ACTIVE配置已授权并可用。
TERMINATED_UE_NOT_AUTHORIZED订阅者未被授权使用 NIDD。
TERMINATED配置已过期或被移除。