简介:这份文档面向移动通信网络优化与核心网测试人员,聚焦LTE切换过程中S1数据转发的测试方法,帮助读者理清切换各阶段的数据流向与关键检查点。内容围绕数据流向理解、TEID与Sequence Number的作用、切换信令流程展开,并重点梳理Data Forwarding检查点,包括End Marker包的发送时机、源小区与目标小区数据传送地址及转发地址的变化,以及HANDOVER NOTIFY后数据流走向的验证方法。资源包共1个docx文件,约769KB,以文字说明与流程要点整理为主,便于对照现网抓包逐项核对。已有306人学习,适合需要掌握切换数据转发验证思路、排查转发异常的中级技术人员参考。
1. S1数据转发全景:切换过程中用户面到底走了哪几条路
很多人复习切换流程时,把注意力全放在信令上,背得滚瓜烂熟,一到用户面数据转发就卡壳。其实 S1 data forwarding 这条线并不复杂,核心就一句话:切换期间,下行数据要绕一条临时通道从源侧送到目标侧,切换完成后这条通道立刻废弃。把这句话想通,后面所有地址、隧道、End Marker 都是它的注脚。
这份小结覆盖的内容可以画成一张四层地图:最底层是数据流向(切换前、切换中、切换后三段路径),往上是 GTP 隧道标识(TEID 与 Sequence Number 的分工),再往上是切换信令主流程(测量报告到资源释放的十七步),最上层是测试检查点(End Marker 与三个数据地址的切换时机)。复习时按这四层自下而上过一遍,比死记消息名有效得多。适合正在系统学 LTE 切换、或者准备通信类笔试面试的人拿来当骨架。
2. 数据流向三段式:切换前、切换中、切换后的路径拆解
2.1 三段路径的准确描述
切换过程中的数据走向,小结里写得很直白,但初学者最容易记混的是中间那段。梳理下来会发现,它其实是一个「先回吐、再转送」的过程:
| 阶段 | 下行数据路径 | 关键动作 |
|---|---|---|
| 切换前 | SGW → source eNB → UE | 正常业务,走源小区数据传送地址 |
| 切换中 | SGW → source eNB → SGW → target eNB | 源侧把未确认数据回送 SGW,SGW 再转给目标侧 |
| 切换成功后 | SGW → target eNB → UE | 走目标小区数据传送地址,转发通道废弃 |
注意中间那段为什么不是「source eNB 直接发给 target eNB」。S1 接口上的转发是经由 SGW 间接完成的,源侧把缓冲和在途的数据包回吐给 SGW,SGW 再按目标侧提供的转发地址送过去。这个「绕一圈」的设计是 S1 转发与 X2 直接转发的本质区别,也是复习时最该分清的一点。
2.2 End Marker 的作用与时机
End Marker 是这条转发链上的「收工信号」。SGW 在把下行路径正式切到 target eNB 之前,先向 source eNB 发一个 End Marker 包,源侧收到后把它转发给 target,等于告诉对端:这是我发的最后一个数据包,你收到就可以歇着了,不用再转发业务了。
这个包的妙处在于它不携带用户数据,只承担「边界标记」的职责。源侧用户面收到并转发 End Marker 之后,转发数据包的使命就算完成,可以安心释放转发资源。复习时容易忽略的是它的方向性:End Marker 是 SGW 发给源侧的,再由源侧转给目标侧,不是目标侧发起。把方向记反,整个转发收尾逻辑就乱了。
2.3 转发通道与正常通道的并存期
切换执行期间,源小区数据传送地址、源小区转发地址、目标小区转发地址、目标小区数据传送地址会短暂并存。这不是设计冗余,而是为了保证「不丢包」:旧路径还没断,新路径已经建好,数据在两条路上交接。理解这个并存期,才能明白后面检查点为什么要盯住地址切换的精确时刻。
3. GTP 隧道标识:TEID 与 Sequence Number 的分工别搞混
3.1 TEID 标记的是隧道端点
TEID 是 GTP 隧道端点标识,作用是把一条隧道和另一条隧道区分开。切换过程中会出现多个 TEID:源侧数据传送用的、源侧转发用的、目标侧数据传送用的、目标侧转发用的。小结里提到的目标侧参数就包括目标小区数据隧道标识和目标小区数据转发隧道标识,两者不是一回事,前者承载切换后的正常业务,后者只服务转发阶段。
复习时建议把 TEID 理解成「门牌号」:同一个 UE 在不同阶段住在不同的门牌号下,数据包靠门牌号找到正确的隧道端点。测试中如果发现数据发到了错误地址,第一反应就该去核对 TEID 与地址的对应关系。
3.2 Sequence Number 管的是包序
Sequence Number 记录数据包的顺序,用于接收端正确重组。它和 TEID 的分工经常被混淆:TEID 解决「发给谁」,Sequence Number 解决「按什么顺序拼」。转发过程中数据包可能经过缓冲、回吐、再转送,顺序容易乱,Sequence Number 就是保证不乱的那把尺子。
提示:排查转发丢包时,先看 TEID 对不对,再看 Sequence Number 连不连续。前者错是「送错门」,后者错是「拼错序」,两类问题的定位方向完全不同。
3.3 两个标识在测试中的观察点
实际测试里,TEID 的变化点对应隧道重建,Sequence Number 的连续性对应数据完整性。把这两个观察点分开记录,比笼统地看「转发是否成功」更容易定位问题。很多翻车现场就是只看了总量对得上,没看序号中间断没断。
4. 切换信令主流程:从测量报告到资源释放的十七步
4.1 准备、执行、完成三段划分
整个切换流程可以按小结里的编号切成三段,这样记比线性背十七步轻松得多:
| 阶段 | 主要步骤 | 核心消息 |
|---|---|---|
| 准备 | 测量报告、切换决策、切换请求、接纳控制、切换请求确认 | Measurement Reports、HO decision、HANDOVER REQUIRED、HANDOVER REQUEST、HANDOVER REQUEST ACKNOWLEDGE |
| 执行 | 切换命令、RRC 重配置、同步、上行分配、状态转移、数据转发 | HANDOVER COMMAND、RRCConnectionReconfiguration、Synchronisation、eNB/MME Status Transfer |
| 完成 | 切换通知、上下文释放、资源释放 | HANDOVER NOTIFY、UE Context Release、Release Resources |
准备段解决「去哪儿、能不能去」,执行段解决「怎么过去、数据怎么跟过去」,完成段解决「旧资源怎么收尾」。三段各管一件事,复习时按段抓主线,细节再往里填。
4.2 接纳控制与 HANDOVER REQUEST ACKNOWLEDGE 的关键参数
目标 eNB 分配完目标侧资源后,进行切换入的承载接纳处理。如果资源满足、小区接入允许,就向 MME 回 HANDOVER REQUEST ACKNOWLEDGE。这条消息里带的参数是复习重点:目标侧分配的 eNB UE S1AP ID、接纳成功的 EPS 承载对应的目标 eNodeB 侧数据传送地址(含目标小区数据隧道标识、目标小区数据转发隧道标识)等。
源 eNB 收到 HANDOVER COMMAND 后,正是从这些信息里获知接纳成功的承载以及切换期间业务数据转发的目标侧地址。换句话说,转发地址不是源侧自己猜的,是目标侧在确认消息里给的。这条因果链要记牢:接纳成功 → 确认消息带地址 → 源侧拿到转发目标。
4.3 状态转移与数据转发的配合
执行段里 eNB Status Transfer 和 MME Status Transfer 负责把 PDCP 状态从源侧传到目标侧,数据转发则负责把实际的数据包送过去。状态转移管「序号状态」,数据转发管「包本身」,两者配合才能让目标侧无缝续上。复习时容易只记数据转发而漏掉状态转移,结果解释不了「为什么切换后序号能接上」。
5. 测试检查点:End Marker 与三个数据地址的核对方法
5.1 检查点一:End Marker 是否按时到达并转发
第一个检查点盯 End Marker。SGW 在将下行切换到 target 之前向 source 发 End Marker,源侧要把它转发给 target。测试时看两点:End Marker 是否在切换窗口内出现,源侧是否完成了转发。如果 End Marker 丢了或没转发,源侧用户面就不知道何时收工,转发资源可能迟迟不释放。
5.2 检查点二:源小区数据是否全部转发
第二个检查点核对源小区数据是否全部转给了目标小区。小结给了一组很具体的地址,正好拿来当核对基准:
| 时刻 | 数据流量走的地址 | 含义 |
|---|---|---|
| 源 eNB 发 RRCConnectionReconfiguration 之前 | 0x01001008 | 源小区数据传送地址 |
| 发 RRCConnectionReconfiguration 之后 | 源侧转发 0x0000115b,目标侧转发 0x01000a09 | 进入转发阶段 |
| 目标 eNB 发 HANDOVER NOTIFY 之后 | 0x01000a08 | 目标小区数据传送地址 |
这张表是整份小结里最有「抄作业」价值的部分。复习时把三个时刻和四个地址对应起来记:切换前一个地址,转发期两个地址,切换完成后一个地址。测试中按时刻抓包,看数据是不是在该出现的地址上出现,就能判断转发是否完整。
5.3 检查点三:HANDOVER NOTIFY 之后的路径收敛
目标侧 eNB 发送 HANDOVER NOTIFY,通知 MME 目标侧 UE 已成功接入。从这一刻起,数据流量改走目标小区数据传送地址 0x01000a08,转发通道完成历史使命。检查点三就是确认路径是否干净地收敛到新地址,旧转发地址上不应再有业务数据。这一步没盯住,容易出现「切换成功了但数据还在旧路上跑」的假象。
6. 易错点清单:这五处最容易在复习和测试中翻车
6.1 易错点一:把转发路径记成源直连目标
易漏点 → 为什么漏:X2 切换里源和目标可以直接转发,很多人把这个印象套到 S1 上。怎么补:牢记 S1 转发是 SGW → source → SGW → target 的间接路径,源侧数据先回吐 SGW 再转送,画一遍箭头就记住了。
6.2 易错点二:End Marker 方向记反
易漏点 → 为什么漏:End Marker 名字像「结束」,容易想成目标侧发起。怎么补:记住它是 SGW 发给 source、再由 source 转给 target,方向是从旧路径末端往新路径末端传。
6.3 易错点三:TEID 与 Sequence Number 职责混淆
易漏点 → 为什么漏:两者都出现在 GTP 头里,复习时一带而过。怎么补:用「门牌号 vs 页码」的类比固定分工,TEID 管端点,Sequence Number 管顺序,排查时先看前者再看后者。
6.4 易错点四:忽略 HANDOVER REQUEST ACKNOWLEDGE 里的转发地址
易漏点 → 为什么漏:只记消息名不记参数。怎么补:把「接纳成功 → 确认消息携带目标侧数据传送地址与转发地址 → 源侧据此转发」这条链背下来,参数自然跟着记住。
6.5 易错点五:只看数据总量不看序号连续性
易漏点 → 为什么漏:总量对得上就以为转发成功。怎么补:抓包时同时核对 Sequence Number 是否连续,断号说明中间有丢包,总量相等可能只是巧合。
7. 复习收口:一张自查表把 S1 转发过一遍
复习到这一步,建议别再从头翻材料,而是拿一张自查表逐项打勾。下面这张表按「概念—流程—检查点」三层组织,每一项都能在原文里找到落点,答不上来的就是你的漏洞:
| 自查项 | 能说清吗 | 对应章节 |
|---|---|---|
| 切换前、中、后三段数据路径 | 能否画出箭头 | 2.1 |
| End Marker 的方向与作用 | 谁发给谁、为何转发 | 2.2、6.2 |
| TEID 与 Sequence Number 分工 | 各解决什么问题 | 3.1、3.2 |
| 接纳控制后确认消息带哪些参数 | 能否列出地址与标识 | 4.2 |
| 三个时刻对应的四个数据地址 | 能否默写地址表 | 5.2 |
| 状态转移与数据转发的关系 | 为何两者缺一不可 | 4.3 |
填表时有个小技巧:凡是卡住的项,回到对应小节只读那一段,不要整章重读,效率高很多。地址那组数字(0x01001008、0x0000115b、0x01000a09、0x01000a08)建议单独抄在一张纸上,按时间顺序排好,考前扫一眼就能回忆整条转发链。
我自己的血泪经验是:第一次复习时觉得流程都懂了,结果一被问「转发阶段数据到底经过几个地址」就答不全。从那以后我每次复习切换类内容,都强制走一遍「画路径 → 标地址 → 对序号」这三步,哪怕时间再紧也不跳。这三步走完,S1 转发基本不会再翻车。希望帮到你。
本文还有配套的精品资源,点击获取