已解决问题
Handover 时 data forward 及end marker 问题  (进入论坛模式)
提问者:雨下路人   |  提问时间:2013-4-23 21:54
术语定义:SeNB:原基站;TeNB:目标基站
暂时以S1接口的切换为例。当UE接入TeNB后(reconfiguration complete 或者 Reestablishment complete),TeNB 会向EPC发送 Handover Notify,这时EPC会向SeNB的正常数据GTP 隧道发送一个 endMarker,那么此时SeNB是不是得要在 UE 上下行数据的转发隧道上向EPC主动发两个endMarker,分别代表UE的上下行数据都 Data Forward 完毕? 我们领导非得说eNB不应该主动发endMarker,我想证明他错了……
另外,SeNB可能收不到EPC的end marker ,因为GTP承载于UDP协议,可能丢包。此时SeNB要不要开启一个等待end marker 的定时器,超时时还没收到end marker就自己generate 两个end marker 发往 TeNB?
不知有没有朋友了解过切换这方面,协议上对数据面是怎么定义的
关闭所有答案回应     最佳答案
net666 的答案    ( 采纳时间:2014-10-10 11:05 )
当UE接入TeNB后(reconfiguration complete 或者 Reestablishment complete),TeNB 会向EPC发送 Handover Notify,这时EPC会向SeNB的正常数据GTP 隧道发送一个endMarker-------23.401协议里没有这样写啊!而且此时,TENB只建立了UE的上行承载和转发承载,下行承载还未建立,从PDN下来的数据流还是会下发到SENB啊 ,EPC此时怎么会向SENB发送ENDMARKER(此时下行数据转发途径是:PGW---S-SGW---SENB---S-SGW---T-SGW---TENB---UE)?
END MARKER是可以多个发送的,可以避免单个消息丢失造成的问题。你领导说的是对的,SENB不应该主动发endMarker。因为SENB不能决定数据流何时由转发承载切换到目标承载。对于上行数据,TENB早早为UE准备好了上行承载,UE一切换过来就可以直接发送上行数据流;对于下行数据流,是由PGW或SGW决定何时由转发承载切换到目标下行承载。
另外,还要搞清end marker的作用是干嘛的?由协议handover一节,我们可以知道它是用来帮助TENB对数据包排序的。“If the Serving GW does not change, the Serving GW shall send one or more "end marker" packets on the old path immediately after switching the path in order to assist the reordering function in the target eNodeB.”
所以我们可以看到,23.401协议中关于S1口HANDOVER的流程说明中,仅在SGW不变的情况下,提到了SGW会向老的路径发送END MARKER。因为对于SGW变化的场景,下发数据的转发承载(SGW-TENB这段)和新下行承载是不同的,TENB可以根据承载的不同将数据包区分开,不需END MARKER。只有在SGW不变的情况下,下发数据的转发承载和新下行承载是相同的,所以此时需要end marker进行区分。
 |  回应该答案 (2)  |  回答时间:2013-4-27 17:07
该答案得到 2 个回应   我要回应
雨下路人  |  2014-10-10 11:00
If the Serving GW does not change, the Serving GW shall send one or more "end marker" packets on the old path immediately after switching the path in order to assist the reordering function in the target eNodeB.
目标站要想实现重排序就需要一个endMarker,这个endMarker哪儿来的,就是SeNB发的。  因为TeNB必须确保所有倒换数据发完了才能发新数据,怎么确保就是在转发隧道上来一个endMarker。
雨下路人  |  2014-10-10 11:05
不完全赞同~
其他答案 ( 4 条 )
可以根据数据流向理解,比如切换前,数据走向 sgw---->source eNb,过程中sgw---->source eNb ---> target eNb,切换成功后是 sgw-----> target eNb。因为发end mark目的是告诉对方的这是我发的最后一个数据包,你收到后就可以歇着了,不用转发业务了,因此SGW在将下行切换到target之前,向source发送end Marker 包,source将此数据包转发给target,这样source的up面,就完成转发数据包的使命了。
至于第二个问题,由控制面来解决,会释放source。以上问题,可以参考,23401,29274,36413
 |  回应该答案 (0)  |  回答者:celloc   |  2013-4-25 18:53
study it
 |  回应该答案 (0)  |  回答者:gochai   |  2013-4-25 18:56
“SGW在将下行切换到target之前,向source发送end Marker 包,source将此数据包转发给target,这样source的up面,就完成转发数据包的使命了”

2楼说的正确。
对于第二个问题,如果end marker丢掉了,会导致目标enb上用户面不通,虽然信令面切换完成了,call也没有释放。
 |  回应该答案 (0)  |  回答者:npfc   |  2013-4-26 13:19
对于end mark丢失问题,实际end mark 走的是s1-u 用户面接口,但是该通道是sgw与mme的s11接口以及mme与eNb s1口来维护的,cp面切换完成后,target对source的释放是有信令交互决定的,并不是由用户面收没受到end mark来决定的,因此我的理解,丢失了end mark,会导致一些丢包,或者短暂断流(),但up面是好的。 当然如果断流太久,对于tcp/ftp类数据因需要等ack,会导致up异常,这个是另一个问题
 |  回应该答案 (0)  |  回答者:celloc   |  2013-4-26 13:57