本案例基于华为SGSN来实现。
一 问题:
联通用户APN设置为mobile three com hk,SGSN未能进行APN纠错,激活PDP失败。
失败的信令流程如下:
图一 失败的信令流程 激活PDP请求携带的APN为:mobile three com hk,如图二所示:
图二 用户请求的APN DNS查询的APN为mobile.three.com.hk.mnc001.mcc460.gprs,如图三所示: 图三 DNS查询的APN DNS查询APN的结果为空:如图四所示: 图四 DNS查询的结果为空 激活PDP请求被拒绝,原因是未知APN:如图五所示: 图五 PDP激活被拒 With CC27
二 分析:
华为SGSN APN纠错功能一共有5个开关控制:
1 SINGLESUB:单签约数据匹配功能。该开关用于当用户激活请求中的数据发生错误,无法匹配到唯一的签约数据时,如果用户仅签约了一组签约数据,是否允许用户使用该签约数据进行激活。
2 CORRMAPNSUB:签约多APN的用户使用签约数据激活。当用户激活请求中的数据发生错误,无法匹配到唯一的签约数据时,如果用户签约了多组签约数据,但未签约wildcardAPN,SGSN将系统默认的APN和签约数据进行比较,如果系统默认的APN是签约数据中的其中一个,那么就使用系统默认的APN进行激活,否则用户使用PDP context ID小的那个APN进行激活。
3 CORRAPNWILDSUB:签约指定APN和wildcardAPN的用户使用签约数据激活。当用户激活请求中的数据发生错误,无法匹配到唯一的签约数据时,如果用户签约了包含wildcardAPN在内多组签约数据,SGSN将系统默认的APN和签约数据进行比较,如果系统默认的APN是签约数据中的其中一个,那么就使用系统默认的APN进行激活,否则用户使用PDP context ID小的那个APN进行激活。
4 WILDCARD:是否签约wildcard用户只能用公共APN开关。签约wildcard的用户只能使用默认的APN(例如internet)进行激活。
5 CORRAPN:是否纠正激活请求带错误APN。这个开关用于以上四个开关都没有打开或者匹配不上正确的场景时,再用默认APN纠正一次。
SZ SGSN1目前的APN纠错开关设置如下:
- 单签约数据匹配功能 = 是
- 是否纠正激活请求带错误APN = 是
- 签约多APN的用户使用签约数据激活 = 是
- 签约指定APN和wildcardAPN的用户使用签约数据激活 = 否
- 是否签约wildcard用户只能用公共APN = 否
根据失败用户的IMSI 460018858216396,查询HLR签约数据包含wildcardAPN:
图六 WildcardAPN 三 结论: 由于涉及wildcard APN纠错的第4、5开关都未打开,所以用户上报错误的APN( mobile three com hk),SGSN不会纠错,错误APN不能解析出GGSN地址,导致PDP激活失败,原因是未知APN。 四 优化建议: 第一种方案:SZ SGSN1打开wildcardAPN纠错开关:
签约指定APN和wildcardAPN的用户使用签约数据激活 = 是
是否签约wildcard用户只能用公共APN = 是
第二种方案:HLR清理用户数据,清除APN签wildcard。 |