在 5G MEC(多接入边缘计算)部署中,一个核心难题长期悬而未决:UE 如何知道离自己最近的那台边缘应用服务器(EAS,Edge Application Server)的 IP 地址?
在传统 DNS 体系里,UE 把应用 FQDN(如 app.example.com)发给运营商默认 DNS 服务器,服务器返回一个 IP。但这个 IP 往往是部署在远端数据中心的服务器地址——因为 DNS 服务器根本看不到 UE 在 5G 网络里的精确位置(UE IP 是 SMF 分配的 NAT 地址,对 DNS 毫无地理意义),于是流量被"吸"到远端,MEC 的低时延优势荡然无存。
Release 16 之前,5GC 用 UL CL(Uplink Classifier)+ 本地 PSA 做会话分流(Session Breakout),但分流检测依赖 UPF 上的五元组/PFD 规则,前提是 SMF 已经知道"该把哪个目的 IP 的流量本地卸载"。这就形成了鸡生蛋问题:要本地分流就必须先知道 EAS IP,而要知道 EAS IP 又得先能做地理相关的 DNS 解析。
Release 17 在 TS 23.548《5G System Enhancements for Edge Computing》 中引入了一个全新的网络功能——EASDF(Edge Application Server Discovery Function),把"DNS 解析"这件事从 DN(数据网络)搬进 5GC,让 SMF 在解析过程中获得 UE 位置/DNAI 的上下文,从而动态决定分流锚点。本文聚焦 TS 23.548 Section 6.2.3.2.2 定义的 EAS Discovery Procedure with EASDF,逐条拆解这条贯穿 UE–SMF–EASDF–DNS Server 的完整信令链。
EASDF 不是 DNS 服务器,而是一个由 SMF 控制的 DNS 代理/解析编排器。它对外表现为 UE 的 DNS 服务器(PDU 会话建立时 SMF 把 EASDF 的 IP 作为 DNS Server 地址下发给 UE),对内则通过 Nneasdf 服务接口接受 SMF 下发的"DNS 消息处理规则(DNS message handling rule)",按规则对 DNS Query/Response 做匹配、转发、改写、上报和缓冲。
TS 23.548 定义了两种边缘连通模型(clause 6.2.2 / 6.2.3):
下图展示 EASDF 与 SMF、UPF、DN 的关系:
graph TD
UE[UE / EDC功能]
UPF_R[UL CL/BP + PSA UPF<br/>R-PSA 远端锚点]
UPF_L[L-PSA 本地锚点<br/>连接 L-DN]
SMF[SMF<br/>编排 EASDF 规则]
EASDF[EASDF<br/>DNS 代理 + 规则引擎]
CDNS[C-DNS / 中央 DNS Server]
LDNS[Local DNS Server<br/>L-DN 内]
RDN[远端 DN 应用]
LDN[本地 DN / EAS<br/>边缘应用服务器]
UE -->|DNS Query / 业务流量| UPF_R
UPF_R -->|默认上行业务| RDN
UPF_R -->|命中EAS IP: UL CL本地分流| UPF_L
UPF_L --> LDN
UPF_R -.->|DNS Query 转发| EASDF
EASDF -->|Option A: 加 ECS| CDNS
EASDF -->|Option B: 去ECS 转发| LDNS
SMF -->|Nneasdf_DNSContext_*| EASDF
SMF -->|N4 规则| UPF_R
SMF -->|N4 规则| UPF_L
关键点:UE 的 DNS 流量必须先经过 UPF 再到 EASDF。这是 TS 23.548 NOTE 13 强调的安全约束——EASDF 的 DNS Query 接收地址只允许 UE IP 经由 UPF 访问,目的是阻止外部对 SMF/EASDF 的 DoS 攻击。
DNAI 是 5GC 标识"到某个数据网络/边缘站点的接入点"的逻辑标识(TS 23.501 clause 5.6.8 / 5.8.2)。它不代表具体 IP,而是代表"靠近某个 UPF N6 出口的那一片边缘区域"。SMF 选择 DNAI = 选择把流量卸到哪个边缘站点的 UPF。
由 AF 经 NEF 提供给 UDR(TS 23.548 clause 6.2.3.4),描述"哪些 FQDN / IP 范围对应哪些 DNAI"。SMF 在创建 DNS 处理规则时用它来决定 FQDN↔DNAI 映射、以及哪些 FQDN 命中时该上报。它是会话无关的,可应用于某个 DNN/S-NSSAI/内部组标识下的所有 PDU 会话。
ECS 是 DNS 协议的扩展,让递归 DNS 服务器能基于"客户端子网"返回地理就近的结果。EASDF 在 Option A 中把 UE 的 ECS 替换成 L-PSA 的 N6 IP 段(NOTE 8/9),既让 DNS 服务器能算出正确的就近 EAS IP,又保护了 UE 真实 IP 的隐私(对外暴露的是边缘 UPF 的地址而非 UE 内部地址)。
UE 侧的一个 3GPP 功能,确保 DNS 请求被送到 SMF 指定的 EASDF/DNS Resolver。SMF 在 PDU 会话建立时可指示 EDC 的使用是"允许"还是"必需",防止 UE 绕过 5GC 提供的 DNS(clause C.6 还定义了对"UE 未使用 5GC DNS"的检测)。
下图严格对应 TS 23.548 clause 6.2.3.2.2 Figure 6.2.3.2.2-1 的 19 个步骤,分为三个阶段:建链(步骤 1–6)→ DNS Query 处理与上报(步骤 7–13)→ DNS Response 上报与边缘分流插入(步骤 14–19)。
sequenceDiagram
autonumber
participant UE as UE(EDC)
participant SMF as SMF
participant EASDF as EASDF
participant DNS as C-DNS/Local DNS
Note over UE,SMF: 阶段一:PDU会话建立 & EASDF DNS上下文创建
UE->>SMF: 1. PDU Session Establishment Request
SMF->>SMF: 2. 选EASDF(UE位置/DNN/S-NSSAI)<br/>查UE是否有EASDF发现授权
SMF->>EASDF: 3. Nneasdf_DNSContext_Create<br/>(UE IP, DNN, Notify端点, DNS消息处理规则)
EASDF->>SMF: 4. Create Response(EASDF DNS安全信息)
SMF->>UE: 5. PDU Session Estab Accept<br/>含EASDF IP作为DNS Server(或DHCP下发)
SMF->>EASDF: 6. Nneasdf_DNSContext_Update(规则)<br/>(移动/PCC触发)
EASDF-->>SMF: Update Response
Note over UE,EASDF: 阶段二:DNS Query 匹配与上报
UE->>EASDF: 7. DNS Query(FQDN)
EASDF->>SMF: 8. Nneasdf_DNSContext_Notify<br/>(FQDN, DNS消息标识) [命中上报规则]
SMF-->>EASDF: 9. Notify Response
SMF->>EASDF: 10. Update(ECS信息/Local DNS IP, 携DNS消息标识)<br/>Option A 或 Option B
EASDF-->>SMF: 11. Update Response
EASDF->>DNS: 12. 转发DNS Query<br/>Opt A:加/换ECS→C-DNS; Opt B:去ECS→Local DNS
Note over SMF,DNS: 阶段三:响应处理、DNAI选择、UL CL插入
DNS-->>EASDF: 13. DNS Response(EAS IP)
EASDF->>SMF: 14. Notify(EAS IP/FQDN/ECS, 缓冲) [命中上报条件]
SMF-->>EASDF: 15. Notify Response
SMF->>SMF: 16. 基于EAS信息选DNAI<br/>插入 UL CL/BP + L-PSA(N4)
SMF->>EASDF: 17. Update(控制动作:下发缓冲的DNS Response)
EASDF-->>SMF: 18. Update Response
EASDF->>UE: 19. DNS Response(EAS IP)<br/>之后UE业务流量经UL CL本地分流到EAS
| 步骤 | 关键 IE / 参数 | 来源与作用 |
|---|---|---|
| 1 | DNN, S-NSSAI, PDU Session ID, Request Type | TS 23.502 4.3.2.2.1 step1;触发整个会话 |
| 2 | UE 订阅中的 EASDF 发现授权指示(可选) | TS 23.548 clause 6.3 选 EASDF;未授权则终止后续步骤 |
| 3 | Nneasdf_DNSContext_Create:UE IP、DNN、Notification endpoint、DNS 消息处理规则 |
TS 29.556;EASDF 创建 DNS Context 并存 UE IP 与 Notify 端点 |
| 4 | EASDF DNS 安全信息 | 用于后续 DNS 传输安全(如 DNS over TLS/HTTPS) |
| 5 | PCO/DHCP 中携带 EASDF IP 作为 DNS Server | UE 据此把该 PDU 会话所有 DNS 请求发给 EASDF |
| 8 / 14 | Nneasdf_DNSContext_Notify:FQDN、EAS IP(如有)、ECS、DNS 消息标识(DNS message Identifier) |
EASDF 生成,唯一标识一条 DNS 消息,供 SMF 把后续 Update 规则精确关联到该消息 |
| 10 / 17 | Nneasdf_DNSContext_Update:携带 DNS 消息标识的处理规则 + 控制动作 |
SMF 把"针对这条 DNS 消息"的 ECS 信息或"下发缓冲响应"指令回送给 EASDF |
这是整个机制最核心的数据结构,也是 SMF 与 EASDF 之间的"控制契约"。规则由 SMF 下发、EASDF 执行,包含检测条件与关联动作两部分。
graph LR
RULE["DNS 消息处理规则<br/>Handling Rule Identity + Precedence"]
RULE --> DET["检测: Baseline检测模板ID<br/>或 DNS消息检测模板"]
RULE --> ACT["动作: 至少一个"]
DET --> D1["DNS消息类型<br/>Query / Response"]
DET --> D2["源IP(UE IP)"]
DET --> D3["FQDN范围数组<br/>(Query时)"]
DET --> D4["FQDN范围 / EAS IP范围<br/>(Response时)"]
ACT --> A1["Reporting 上报动作<br/>可选 reporting-once"]
ACT --> A2["Forwarding 转发动作<br/>A: 加/换ECS→C-DNS<br/>B: →Local DNS Server<br/>C: 直接响应"]
ACT --> A3["Control 控制动作<br/>构造响应/缓冲/下发/丢弃/构造Query"]
三类动作的工程含义:
reporting-once 时只上报一次——防止海量 UE 重复上报同一个 FQDN 淹没 SMF(NOTE 6)。SMF 创建规则时综合使用的信息(clause 6.2.3.2.2 NOTE):本地配置(DNN/S-NSSAI/Internal Group)、AF 提供的 EAS Deployment Information、UE 位置推导的候选 L-PSA、当前 PDU 会话的 L-PSA/ULCL、N6 时延测量结果(clause 5.8.2.23 of TS 23.501)、UDM 订阅里的 Internal Group Identifier、以及从 UDR/PCF 缓存或取回的 common EAS/common DNAI。
| 选项 | 转发目标 | ECS 处理 | 适用场景 | 局限 |
|---|---|---|---|---|
| Option A | C-DNS(中央/默认 DNS 服务器) | 添加或替换为 L-PSA 的 N6 IP 段(RFC 7871) | DNS 服务器支持 ECS、需要基于客户端子网就近解析 | DNS 服务器必须理解并信任 ECS |
| Option B | Local DNS Server(L-DN 内) | 移除 UE 的 ECS | 边缘站点有自己的 Local DNS,能独立解析 | EASDF 必须能直达 Local DNS;PSA 转发场景不支持(NOTE 10) |
| Option C | 不转发,直接响应 | — | SMF 已知 EAS IP(如 common EAS),无需外部解析 | SMF 必须在规则中直接给出 EAS IP |
每条 PDU 会话对应一个 EASDF 上的 DNS Context(由 EASDF Context ID 标识)。规则可随时 Update,但整体生命周期严格跟随会话。
stateDiagram-v2
[*] --> Created: DNSContext_Create<br/>(PDU会话建立)
Created --> Provisioned: SMF下发初始处理规则
Provisioned --> Provisioned: Update<br/>(移动/PCC/上报触发)
Provisioned --> Reporting: UE DNS Query命中上报规则
Reporting --> Resolving: SMF回送ECS/Local DNS规则<br/>(Opt A/B)
Resolving --> Buffered: DNS Response到达EASDF<br/>命中上报条件→缓冲
Buffered --> Released2UE: SMF回送Control动作<br/>下发缓冲响应
Released2UE --> Provisioned: UE已获EAS IP<br/>UL CL分流激活
Provisioned --> Deleted: DNSContext_Delete<br/>(PDU会话释放)
Deleted --> [*]
几个关键状态过渡的工程含义:
EASDF 是无状态地处理海量并发 DNS 消息的。当 SMF 在步骤 10/17 回送 Update 规则时,必须精确告诉 EASDF"这条规则只作用于你刚刚上报的那条 DNS 消息"。EASDF 生成 DNS 消息标识并在 Notify 里携带,SMF 把它塞进 Update 的规则里,EASDF 据此做精确匹配(NOTE 5)。若 EASDF 没生成该标识,SMF 退而用"消息类型 + 目标 FQDN"组合来标识(步骤 10/17)。这是一种典型的异步消息关联机制。
一旦某个 FQDN 命中、SMF 完成对应 DNAI 的 UL CL 插入,后续同一 EAS IP 范围的 DNS Response 再上报就是冗余的。SMF 下发带 reporting-once 的规则(NOTE 6),让 EASDF 对同一检测模板只上报一次;当 UE 移出该 DNAI、SMF 拆除 UL CL 后再"复位 reporting-once",重新允许上报以便插入新的本地锚点。此外 clause NOTE 11 明确可叠加 TS 29.500 clause 6.4 的 SBI 过载控制机制,从协议层兜底防止 EASDF 报文洪泛打垮 SMF。
UE 内部 IP 对外部 DNS 毫无地理意义且暴露隐私。EASDF 用 L-PSA 的 N6 IP 段替换 UE ECS(NOTE 8/9),DNS 服务器据此算出靠近该边缘站点的 EAS IP,同时 UE 真实 IP 不外泄。这是 5G 把 DNS"搬进"核心网才能实现的精细化控制。
若 SMF 按本地配置决定 EASDF↔DNS Server 的交互必须经过某个 UPF(NOTE 14),SMF 会给该 UPF 下 N4 规则,用 IP-in-IP 隧道透明转发 DNS 信令。这条 N4 会话与具体 PDU 会话无关,服务于多 UE 共享的 DNS 转发——这是 SMF 编排能力的延伸。
在 5GC 内部抓包(Wireshark/tshark),可按接口分层识别:
Apply Action 与 PDR/FAR/URR——分流规则的目的 IP 段就是 EAS IP 范围。POST /neasdf-dns-context/v1/dns-contexts/{contextId} 族的 JSON 报文。Create/Update/Delete/Notify 即对应四类服务操作。重点看 dnsMsgHandlingRules 数组里的 dnsMsgDetectionTemplate 与 actions。| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| UE 拿到 EAS IP 但业务走远端 | UL CL 未及时插入 / TDR 未命中 EAS IP 段 | 查 SMF 是否收到 step14 Notify、N4 是否下发分流 FAR;比对 PDR 的 IP 范围与 EAS Deployment Information |
| DNS Query 到 EASDF 后无 Response | 规则配成"转发"但 Option B 的 Local DNS 不可达(NOTE 10) | 确认 EASDF 到 Local DNS 连通性;改用 Option A 经 C-DNS |
| SMF 被 DNS 上报打爆 | 未设 reporting-once 或检测模板过宽 | 缩小 FQDN/EAS IP 范围、启用 reporting-once、叠加 TS 29.500 过载控制 |
| 解析出的 EAS 不是最近 | EASDF 用了 UE 的 ECS 而非 L-PSA IP | 检查 step10/17 规则是否正确下发 L-PSA N6 IP 段作 ECS |
| UE 跳过 EASDF 自行解析 | EDC 未启用 / UE 用硬编码 DNS | clause C.6 的检测机制;URSP/PCO 强制 DNS Server |
| ## 九、与既有方案的对比 |
| 维度 | 传统 DNS(无 EASDF) | EASDF(Rel-17) | UL CL + 本地 PSA(纯五元组分流) |
|---|---|---|---|
| UE 位置感知 | 无 | 通过 DNAI/候选 L-PSA 感知 | 间接(靠 IP 范围) |
| 解析就近性 | 差(远端 DNS 不知 UE 位置) | 好(ECS 注入 L-PSA IP) | 不参与解析 |
| 触发分流时机 | 无法 | DNS 解析时即触发 SMF 插 UL CL | 依赖预配置/PCC 规则 |
| 隐私保护 | 无 | ECS 替换保护 UE IP | N/A |
| 信令开销 | 小 | 多轮 Nneasdf 交互 | 小 |
| 适用 Release | R15+ | R17+ | R15+ |
EASDF 的本质,是把"DNS 解析"从一个纯 DN 内的动作,改造成一个 SMF 可观测、可干预、可触发会话重配的信令事件。
Q1: EASDF 和普通 DNS 服务器到底什么区别?
A: 普通 DNS 只做 FQDN→IP 的递归解析,对 5G 内部毫无感知;EASDF 是 5GC 内的 DNS 代理,由 SMF 通过 Nneasdf 下发处理规则,能在解析过程中基于 UE 位置/DNAI 改写 ECS、决定转发目标(C-DNS/Local DNS/直接响应)、把解析结果上报 SMF 以触发 UL CL 分流。它不替代 DNS 服务器,而是编排 DNS 解析。
Q2: Option A 和 Option B 怎么选? A: 看 DNS 基础设施。若中央 DNS 支持 RFC 7871 ECS,选 Option A——EASDF 注入 L-PSA 的 N6 IP 段,让 C-DNS 算出就近 EAS,且保护 UE IP 隐私。若边缘站点有独立 Local DNS 且 EASDF 能直达,选 Option B——去掉 UE ECS 直接问 Local DNS。Option B 不支持 PSA 转发 DNS 的场景(NOTE 10)。
Q3: 为什么 DNS Response 要先缓冲在 EASDF,等 SMF 回信才发给 UE? A: 这是步骤 14–19 的"缓冲-插入-下发"同步。如果 UE 一拿到 EAS IP 立刻发起业务,而此时 UL CL/BP + L-PSA 尚未插入,流量会冲到远端锚点,违背 MEC 就近卸载初衷。缓冲确保 UE 收到 IP 的瞬间,本地分流路径已就绪。
Q4: reporting-once 机制解决什么问题? A: 防止海量 UE 对同一 FQDN 重复上报 DNS Response 把 SMF 淹没。SMF 在对应 EAS IP 范围的检测模板上设 reporting-once,EASDF 对该范围只上报一次;UE 移出该 DNAI、SMF 拆除 UL CL 后复位该指示,重新允许上报以插入新锚点。
Q5: EASDF 是 Rel-17 才有的,和已经讲过的 UL CL 分流是什么关系? A: UL CL + 本地 PSA 是 R15 就有的会话分流机制(Session Breakout 模型),但它需要事先知道"分流哪些 IP"。EASDF 在 R17 引入,正是为了在 DNS 解析阶段动态发现 EAS IP,从而触发/精细化 UL CL 的插入。两者是"发现"与"分流"的配合关系——EASDF 解决"发现谁",UL CL 解决"怎么卸"。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
