引用核心规范: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。
边缘计算(Edge Computing, EC)的核心诉求是:让UE的业务流量就近终结在距离用户最近的边缘应用服务器(EAS, Edge Application Server)上,而不是绕回中心数据中心。要做到"就近",5GC必须解决一个看似简单、实则棘手的问题——UE怎么知道该连哪一个EAS的IP地址?
在传统的Rel-15架构里,UE通过PDU会话获得一个公共DNS服务器地址,DNS解析完全在互联网DNS体系内完成。这种做法对边缘计算存在三个致命缺陷:
为彻底解决这一矛盾,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的管辖之下。其参考架构与信令关系如下:
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):
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)的差异是理解整个机制的钥匙:
EASDF的"接管"从PDU会话建立(TS 23.502 4.3.2.2)就开始了。当SMF根据UE请求中的DNN、S-NSSAI以及本地策略(如UDM/PCF下发的边缘计费与路由策略)判定该会话需要支持边缘计算时,SMF会选择一个EASDF,而不是把互联网DNS服务器地址下发给UE。
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
关键设计意图(第①步到第⑤步):
设计要点:DQHR的
dnsQueryFilter通常在会话建立时就基于运营商策略预置(例如"对所有*.mec.operator.com的查询均handle and report"),但也可以在会话过程中由SMF动态更新(如AF通过NEF注入新的EAS部署信息后)。
这是EASDF机制的灵魂流程,对应TS 23.548 Clause 6.2.3.2.2。当一个UE需要访问边缘应用(如云游戏、AR/VR、车联网本地服务器)时,它会发起一次DNS查询,整个流程从"UE问一个域名"开始,到"流量被分流到本地EAS"结束。
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感知、无需应用改造。
EASDF侧的DNS Context有清晰的生命周期状态,理解状态机有助于排错:
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)三者共用同一套位置模型。
在运营商核心网抓包(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返回前插入 |
故障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策略。
EASDF在后续版本持续增强,理解演进方向有助于前瞻设计:
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透明、零终端改造,这也是它被快速商用推广的关键优势。
本文由「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 等场景全覆盖。
