<!-- title: 5G边缘EASDF发现信令拆解 -->
<!-- domain: slicing-mec -->

# 5G边缘计算EASDF发现机制与DNS Query处理信令全链拆解

> 引用核心规范：3GPP TS 23.548 V19.4.0《5G System Enhancements for Edge Computing; Stage 2》、TS 29.556《5G System; Edge Application Server Discovery Services; Stage 3》、TS 23.501/23.502。

## 一、为什么5G核心网需要一个"DNS解析器"——EASDF的设计起点

边缘计算（Edge Computing, EC）的核心诉求是：让UE的业务流量就近终结在距离用户最近的边缘应用服务器（EAS, Edge Application Server）上，而不是绕回中心数据中心。要做到"就近"，5GC必须解决一个看似简单、实则棘手的问题——**UE怎么知道该连哪一个EAS的IP地址？**

在传统的Rel-15架构里，UE通过PDU会话获得一个公共DNS服务器地址，DNS解析完全在互联网DNS体系内完成。这种做法对边缘计算存在三个致命缺陷：

1. **运营商对DNS解析过程"不可见"**：SMF无法获知UE查询了哪个FQDN，也就无法据此判断需要为UE插入UL CL（Uplink Classifier）做本地分流。
2. **运营商对DNS响应"不可控"**：互联网DNS返回的EAS IP可能是远端中心机房的地址，流量无法被牵引到本地EAS。
3. **缺少与DNAI（Data Network Access Identifier，数据网络接入标识）的联动**：DNAI是标识EAS部署位置的逻辑锚点，但传统DNS与DNAI选择没有任何耦合。

为彻底解决这一矛盾，3GPP在**Rel-17**（TS 23.548）引入了一个全新的网络功能——**EASDF（Edge Application Server Discovery Function，边缘应用服务器发现功能）**。EASDF本质上是一个被SMF"接管"的DNS解析器：UE把EASDF当作自己的DNS服务器，所有DNS查询先到EASDF；EASDF根据SMF下发的**DNS Query Handling Rule（DQHR，DNS查询处理规则）**，决定是"解析+上报"、"转发到本地DNS"、"携带EDNS Client Subnet option"还是"丢弃"，从而把DNS解析这一动作变成了**触发边缘流量重定向（UL CL/PSA插入）的控制信令**。

这就是EASDF最本质的设计哲学：**把被动的DNS解析，改造成主动的边缘发现与流量转向触发器**。

## 二、参考架构与三种连接模型

EASDF并非孤立存在，它工作在SMF的管辖之下。其参考架构与信令关系如下：

```mermaid
flowchart TD
    UE[UE] -->|DNS Query/Response| EASDF[EASDF<br/>边缘DNS解析器]
    SMF[SMF] -->|Nneasdf_DNSContext<br/>Create/Update/Delete<br/>下发DQHR| EASDF
    EASDF -->|DNS Query Report<br/>上报FQDN| SMF
    SMF -->|N4 PFCP<br/>插入UL CL/PSA| UPF[(UPF<br/>UL CL+PSA)]
    UPF -->|本地分流| EAS[EAS<br/>边缘应用服务器]
    SMF -.->|查询EAS部署信息| NEFUDR[NEF/UDR]
    AF[AF] -.->|EAS Deployment Info| NEFUDR
    EASDF -.->|Forward+EDNS CS option| LDNS[本地DNS服务器<br/>Local DN]
```

TS 23.548 Clause 4 定义了EAS部署的两种连接模型（Connectivity Model），EASDF在这两种模型中都扮演EAS发现的角色：

| 连接模型 | 说明 | 锚点特征 | EASDF作用 |
|---------|------|---------|----------|
| **Distributed Anchor（分布锚点，6.2.2）** | 一个PDU会话可同时存在多个PSA UPF，每个PSA对应一个DNAI | 多锚点并存，UL CL在源PSA与目标PSA之间切换 | 触发PSA迁移，配合EAS重发现 |
| **Session Breakout（会话分流，6.2.3）** | 单一PSA UPF作为主锚点，UL CL作为分支点把本地流量"分流"到本地DN | 单锚点+UL CL分支 | 触发UL CL分支点插入 |

本文重点拆解的是**Session Breakout模型下的EAS Discovery Procedure（Clause 6.2.3.2.2）**，这是EASDF机制最典型、最完整的信令流程。

## 三、核心概念与关键IE

在深入信令流之前，必须厘清几个贯穿全流程的核心概念与信息单元（IE）：

```mermaid
graph TD
    DC[DNS Context<br/>DNS上下文] --> DQHR[DnsQueryHandlingRule<br/>DQHR查询处理规则]
    DC --> UEIP[UE IP Address]
    DC --> PDUSESS[PDU Session ID]
    DC --> DNAI_REL[关联的DNAI列表]
    DC --> CBURI[SMF Notification/Callback URI]
    DQHR --> FILTER[dnsQueryFilter<br/>FQDN匹配模式]
    DQHR --> ACTION[dnsQueryHandlingInfo<br/>处理动作]
    DQHR --> DNSTYPE[dnsQueryType<br/>A/AAAA/等]
    DQHR --> EDF[EDNS信息<br/>ECS option构建参数]
    ACTION --> A1[handle and report]
    ACTION --> A2[handle and forward]
    ACTION --> A3[handle without report]
    ACTION --> A4[drop]
```

**DnsQueryHandlingRule（DQHR）的关键参数说明：**

| IE字段 | 含义 | 取值/示例 |
|--------|------|----------|
| `dnsQueryFilter` | FQDN匹配模式，支持通配符 | `*.edge.operator.com`、`app.mec.example` |
| `dnsQueryHandlingInfo` | 命中后EASDF的处理动作 | handle and report / handle and forward / handle without report / drop |
| `dnsQueryType` | 限定DNS查询类型 | A（IPv4）、AAAA（IPv6）、ANY等 |
| `ednsConfig` | EDNS Client Subnet option构建信息 | UE IP或子网，供本地DNS拓扑就近解析 |
| `dnsServerAddress` | 当动作为forward时，指定的DNS服务器地址 | 本地DN内的Local DNS server地址 |
| `resolvedAddressType` | 期望返回的EAS地址类型 | IPv4 / IPv6 |

四种处理动作（TS 29.556）的差异是理解整个机制的钥匙：

- **handle and report**：EASDF本地处理（缓存/解析）该DNS查询，并**把命中的FQDN上报给SMF**。这是触发SMF做DNAI选择与UL CL插入的核心动作。
- **handle and forward**：EASDF把DNS查询**转发到指定的DNS服务器地址**（通常是本地DN内的Local DNS server）并同时上报FQDN，由本地DNS完成就近解析。
- **handle without report**：EASDF处理但不通知SMF，用于无需流量转向的场景。
- **drop**：直接丢弃，用于屏蔽某些FQDN。

## 四、PDU会话建立阶段：EASDF的选择与DNS Context创建

EASDF的"接管"从PDU会话建立（TS 23.502 4.3.2.2）就开始了。当SMF根据UE请求中的DNN、S-NSSAI以及本地策略（如UDM/PCF下发的边缘计费与路由策略）判定该会话需要支持边缘计算时，SMF会**选择一个EASDF**，而不是把互联网DNS服务器地址下发给UE。

```mermaid
sequenceDiagram
    autonumber
    participant UE
    participant RAN
    participant AMF
    participant SMF
    participant EASDF
    participant UDM
    participant UPF

    UE->>AMF: NAS PDU Session Establishment Request<br/>(DNN, S-NSSAI)
    AMF->>SMF: Nsmf_PDUSession_CreateSMContext
    SMF->>UDM: Nudm_SDM_Get (订阅数据/边缘策略)
    SMF->>SMF: 选择EASDF + 计算DQHR
    SMF->>EASDF: Nneasdf_DNSContext_Create<br/>(UE IP, PDU Session ID, DQHR列表, Notification URI)
    EASDF-->>SMF: 200 OK (DNS Context ID)
    SMF->>UPF: N4 Session Establishment (主PSA)
    SMF-->>AMF: N1N2MessageTransfer<br/>(N2 SM Info + N1 SM Accept)
    AMF->>RAN: N2 PDU Session Resource Setup
    RAN->>UE: RRC Reconfiguration<br/>(含EASDF IP地址作为DNS Server, 经PCO)
    Note over UE,EASDF: UE此后将所有DNS查询发往EASDF
```

**关键设计意图（第①步到第⑤步）：**

- **第4步选择EASDF**：SMF并不把公网DNS地址写入PCO（Protocol Configuration Options），而是把**EASDF的IP地址**作为UE的DNS服务器下发给UE。这样，从UE的视角看，它只是在用一个"运营商提供的DNS服务器"，完全无感——这是EASDF设计的"透明性"原则。
- **第5步DNS Context创建**：SMF通过**Nneasdf_DNSContext_Create**（TS 29.556）在EASDF上建立一个**DNS上下文（DNS Context）**，把为该PDU会话预先计算好的DQHR列表、UE IP、PDU Session ID以及一个**Notification URI（回调地址）**一并发给EASDF。DNS Context是这个会话内所有DNS交互的"容器"，后续的查询处理、上报、更新都围绕这个Context展开。

> 设计要点：DQHR的`dnsQueryFilter`通常在会话建立时就基于运营商策略预置（例如"对所有 `*.mec.operator.com` 的查询均handle and report"），但也可以在会话过程中由SMF动态更新（如AF通过NEF注入新的EAS部署信息后）。

## 五、核心信令流：DNS查询处理与EAS发现（Session Breakout）

这是EASDF机制的灵魂流程，对应TS 23.548 Clause 6.2.3.2.2。当一个UE需要访问边缘应用（如云游戏、AR/VR、车联网本地服务器）时，它会发起一次DNS查询，整个流程从"UE问一个域名"开始，到"流量被分流到本地EAS"结束。

```mermaid
sequenceDiagram
    autonumber
    participant UE
    participant EASDF
    participant SMF
    participant NEFUDR as NEF/UDR
    participant UPF as UPF (UL CL+PSA)
    participant LDNS as Local DNS Server
    participant EAS

    UE->>EASDF: DNS Query: app.edge.operator.com (Type A)
    EASDF->>EASDF: 匹配DQHR → 命中 handle and report
    EASDF->>SMF: DNS Query Report<br/>(FQDN, UE IP, PDU Session ID, Context ID)
    SMF->>NEFUDR: 查询EAS Deployment Info<br/>(FQDN + UE Location)
    SMF->>SMF: DNAI选择 → 确定本地边缘位置
    SMF->>UPF: N4 Session Modification<br/>(插入UL CL分支点 + 本地PSA)
    SMF->>EASDF: Nneasdf_DNSContext_Update<br/>(动作:forward到Local DNS + EDNS CS option)
    EASDF->>LDNS: 转发DNS Query<br/>(携带EDNS Client Subnet option)
    LDNS-->>EASDF: DNS Response (本地EAS IP = 10.2.3.4)
    EASDF-->>UE: DNS Response (EAS IP = 10.2.3.4)
    UE->>UPF: 业务流量 → 10.2.3.4
    UPF->>EAS: UL CL本地分流至边缘EAS
```

**逐消息IE解析：**

**消息1：UE → EASDF，DNS Query**
UE发起标准DNS查询，目标FQDN如 `app.edge.operator.com`，查询类型A（IPv4）。关键IE：Query Name（FQDN）、Query Type。注意此查询发往的地址是**EASDF的IP**，而非公网DNS。

**消息2：EASDF内部匹配DQHR**
EASDF用收到的FQDN逐条匹配DNS Context中已安装的DQHR的`dnsQueryFilter`。命中后，根据`dnsQueryHandlingInfo`决定动作。本例命中**handle and report**。

**消息3：EASDF → SMF，DNS Query Report（关键控制信令）**
EASDF通过SMF在创建DNS Context时提供的**Notification URI**，向SMF上报DNS查询。该报告至少携带：**命中的FQDN、UE IP Address、PDU Session ID、DNS Context ID、DNS Query Type**。这一步是整个机制的控制枢纽——**SMF正是通过这个FQDN"看懂"了UE想访问哪个边缘应用**，从而具备了做边缘流量转向的前提。

**消息4：SMF → NEF/UDR，查询EAS Deployment Info**
SMF根据FQDN结合UE当前位置（TA/Cell），向NEF/UDR查询AF预先注入的**EAS部署信息（EAS Deployment Information）**——即该FQDN对应的EAS部署在哪些DNAI、各DNAI的拓扑位置。TS 23.548 Clause 6.2.3.4定义了AF通过NEF向UDR写入EAS Deployment Info的流程。

**消息5：SMF内部DNAI选择**
SMF综合FQDN、UE位置、EAS部署信息、运营商策略，**选择最优DNAI**（即确定目标边缘数据中心）。这是边缘"就近"决策的核心算法点。

**消息6：SMF → UPF，N4 Session Modification（插入UL CL分支点）**
SMF通过PFCP（N4接口）向UPF下发会话修改，**插入UL CL分支点和一个本地PSA**，把去往该EAS IP前缀的流量分流到本地DN。这一步真正完成了"流量转向"。

**消息7：SMF → EASDF，Nneasdf_DNSContext_Update（下发处理指示）**
SMF更新DNS Context，告诉EASDF后续如何处理该（及同类）DNS查询：**动作改为forward，并提供本地DN内Local DNS Server的地址，以及用于构建EDNS Client Subnet option的信息**。

**消息8-9：EASDF转发DNS查询到本地DNS并获取响应**
EASDF把DNS查询转发到Local DNS Server，**携带EDNS Client Subnet（ECS）option**。ECS option让本地DNS能基于UE的拓扑位置返回**就近的EAS IP**（如 `10.2.3.4`），而非远端地址。

**消息10：EASDF → UE，DNS Response**
EASDF把解析得到的本地EAS IP返回给UE。UE对此过程完全透明。

**消息11-12：UE发起业务连接，UL CL本地分流**
UE与 `10.2.3.4` 建立业务连接，由于SMF已在消息6插入了UL CL分支点，流量在UPF被**本地分流到边缘EAS**，完成整个边缘计算闭环。

> **设计精髓**：消息3（DNS Query Report）与消息6（UL CL插入）的顺序耦合是EASDF机制的全部价值所在——DNS查询本身被"劫持"为流量转向的触发器，使得**EAS发现与流量转向在同一个信令回路内完成**，无需UE感知、无需应用改造。

## 六、DNS Context状态机：生命周期管理

EASDF侧的DNS Context有清晰的生命周期状态，理解状态机有助于排错：

```mermaid
stateDiagram-v2
    [*] --> Created: Nneasdf_DNSContext_Create
    Created: 已创建<br/>(DQHR已下发, UE IP已绑定)
    Created --> Reporting: UE DNS Query 命中<br/>handle and report
    Reporting: 上报中<br/>(已向SMF发Query Report)
    Reporting --> Created: SMF返回<br/>handle指示(update)
    Created --> Updated: Nneasdf_DNSContext_Update<br/>(动态修改DQHR/EDNS信息)
    Updated --> Created: 等待下次查询
    Created --> Deleted: PDU会话释放/去注册
    Updated --> Deleted: PDU会话释放
    Deleted --> [*]
```

**状态说明与排错对应：**

| 状态 | 触发条件 | 异常征兆 |
|------|---------|---------|
| Created | PDU会话建立成功 | 若UE DNS仍走公网，说明SMF未选EASDF |
| Reporting | FQDN命中DQHR | 若长期不进入此状态，多为`dnsQueryFilter`不匹配 |
| Updated | SMF注入新EAS部署/切换DNAI | 切换后若仍返回旧EAS IP，多为Update未生效 |
| Deleted | 会话释放 | 会话释放后EASDF仍处理查询，说明Context未删除（泄漏） |

## 七、为何如此设计：四个深层设计意图

**1. 用DNS做"应用层探针"，而非新增UE-5GC接口。**
3GPP没有为EAS发现设计一个新的UE↔网络协议，而是复用了UE天然就会做的DNS查询。这带来零终端改造成本——任何能做DNS的UE都能享受边缘计算，是EASDF被快速商用化的根本原因。

**2. EASDF是SMF的"DNS前置探针"，把网络层控制点前移到解析阶段。**
传统方案中，SMF只能在流量到达UPF后通过包检测（PDR匹配目的IP）才知道用户访问了什么。EASDF把这个感知点**前移到了DNS解析阶段**，使得UL CL可以在第一个业务包发出前就插入完成，避免首包绕行。

**3. EDNS Client Subnet option：让"就近"落到DNS协议本身。**
TS 23.548明确要求EASDF在forward时构建EDNCS Client Subnet option。ECS是IETF RFC 7871定义的标准DNS扩展，运营商把UE的拓扑位置（而非精确IP，保护隐私）编码进DNS查询，使权威DNS能返回拓扑最近的EAS。这是3GPP"不重复造轮子、复用IETF标准"的设计哲学。

**4. DNAI作为EAS位置的统一逻辑锚点。**
无论是Session Breakout还是Distributed Anchor，DNAI都是唯一标识"边缘数据中心"的逻辑对象。EASDF的DNS Report最终都收敛到**DNAI选择**这一决策，使EAS发现、流量转向、会话迁移（EAS rediscovery）三者共用同一套位置模型。

## 八、抓包识别与故障排查实战

### 8.1 抓包中如何识别EASDF流程

在运营商核心网抓包（SBI接口走HTTP/2 over TLS，N4走PFCP），EASDF相关流程可按以下特征识别：

| 接口/协议 | 抓包特征 | 判读要点 |
|-----------|---------|---------|
| **UE→EASDF DNS**（N6/用户面） | DNS查询目的IP=EASDF地址，而非公网DNS | 确认SMF是否成功把EASDF作为DNS Server下发 |
| **Nneasdf SBI**（HTTP/2） | `POST /neasdf-dns-context`、`PUT /neasdf-dns-context/{id}` | 检查请求体中的`dnsQueryFilter`与`dnsQueryHandlingInfo` |
| **DNS Query Report** | EASDF→SMF的HTTP POST，body含`fqdn`字段 | 确认FQDN是否被正确上报、Context ID是否对应 |
| **N4 PFCP** | `PFCP Session Modification Request`，含`Create UPLink CL` IE | 确认UL CL分支点是否在DNS Response返回前插入 |

### 8.2 常见故障点与排错思路

**故障1：UE访问边缘应用，流量仍绕回中心机房。**
- 根因排查：先看UE的DNS查询目的IP是否为EASDF。若是公网DNS，说明PDU会话建立时SMF未选EASDF（检查SMF边缘策略、UDM订阅数据）。
- 若DNS确实到EASDF，但无UL CL插入：检查EASDF是否发出DNS Query Report（消息3）、SMF是否收到、SMF是否做了DNAI选择、N4是否成功插入UL CL。常见断点在**DQHR的`dnsQueryFilter`不匹配FQDN**（如通配符写错）。

**故障2：UE拿到了EAS IP，但连接的还是远端EAS。**
- 根因排查：EDNCS Client Subnet option未正确携带或携带的子网错误，导致Local DNS返回了远端EAS IP。检查SMF→EASDF的Update中`ednsConfig`字段。

**故障3：UE移动后未做EAS rediscovery，仍连旧EAS。**
- 根因排查：UE跨DNAI移动后，SMF应触发EAS rediscovery（Clause 6.2.2.3），更新DNS Context。若未触发，检查SMF的移动性事件与EAS rediscovery策略。
## 九、Rel-18/R19演进方向

EASDF在后续版本持续增强，理解演进方向有助于前瞻设计：

- **Rel-18（TS 23.548）**：增强对**Home-Routed漫游（HR-SL）场景**下边缘计算的支持，定义漫游场景EASDF的选择与DNS处理；增强EAS rediscovery机制，降低移动性场景下的边缘业务中断；完善EDNCS Client Subnet option处理与隐私保护。
- **Rel-19**：进一步优化边缘业务连续性（含与ATSSS多路径、卫星接入结合的边缘场景），细化EAS部署信息的动态更新与跨PLMN协同。

## 常见问题

**Q1：EASDF和普通DNS服务器（如运营商DNS或公网8.8.8.8）到底有什么区别？**
A：普通DNS只做"域名→IP"的纯解析，运营商无法感知也无法干预。EASDF是**被SMF控制的DNS解析器**，它能（1）把UE查询的FQDN上报给SMF，触发DNAI选择和UL CL插入；（2）按SMF指示转发到指定本地DNS并携带EDNCS CS option；（3）丢弃特定查询。本质上EASDF把DNS解析变成了边缘流量转向的控制信令触发器。

**Q2：handle and report 和 handle and forward 这两个动作怎么选？**
A：当运营商自身DNS体系（Local DN内Local DNS Server）能解析该FQDN、且需要拓扑就近时，用**handle and forward**（转发+携带ECS option）。当运营商希望EASDF直接处理（如缓存命中）且仅需通知SMF做流量转向决策时，用**handle and report**。前者更常见于第三方EAS部署，后者更常见于运营商自营边缘应用。

**Q3：为什么不在PDU会话建立时就直接插入UL CL，而要等DNS查询？**
A：因为会话建立时UE还**不知道要访问哪个应用**（FQDN未确定），SMF无法判断该为哪类业务做分流。EASDF的"DNS Query Report"恰恰提供了这一"业务意图信号"——只有当UE明确查询某边缘应用FQDN时，才针对性地插入UL CL，避免对所有流量盲目分流，节省UPF资源。

**Q4：Distributed Anchor和Session Breakout两种模型在EASDF机制上有何不同？**
A：Session Breakout（会话分流）是单PSA锚点+UL CL分支点，EASDF触发的是**分支点插入**，原会话锚点不变；Distributed Anchor（分布锚点）是**多PSA并存**，EASDF触发的是PSA间的**锚点迁移**与EAS rediscovery。前者实现简单、适合固定边缘接入，后者适合移动性强的连续边缘业务。

**Q5：EASDF机制对UE有没有额外要求？**
A：几乎没有。UE只需像使用普通DNS服务器一样使用运营商下发的DNS地址（即EASDF地址）即可。EASDF机制的设计目标之一就是**对UE透明、零终端改造**，这也是它被快速商用推广的关键优势。

## 参考来源

1. [3GPP TS 23.548 V19.4.0 — 5G System Enhancements for Edge Computing; Stage 2](https://www.3gpp.org/dynareport/23548.htm) — Clause 6.2.3.2.2 EAS Discovery Procedure with EASDF, Clause 6.2.2/6.2.3 连接模型, Clause 6.2.3.4 EAS Deployment Info
2. [3GPP TS 29.556 — 5G System; Edge Application Server Discovery Services; Stage 3](https://www.etsi.org/deliver/etsi_ts/129500_129599/129556/) — Nneasdf_DNSContext 服务操作与DnsQueryHandlingRule IE定义
3. [3GPP Edge Computing in CT Protocols（官方技术页）](https://www.3gpp.org/technologies/edge-ct-protocols) — Rel-17 EASDF协议支持概述
4. [TS 23.548 Section 6.2.3.2.2 — EAS Discovery Procedure with EASDF (iTecSpec)](https://itecspec.com/3gpp/23.548/s/6.2.3.2.2) — 信令流程逐步解读参考
5. [On Using the EASDF to Enforce Edge Computing (EURECOM/IEEE)](https://www.eurecom.edu/publication/7625/download/comsys-publi-7625.pdf) — EASDF机制的安全与执行分析

---
> 本文由「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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
