51学通信技术论坛
标题: NSAPI [打印本页]
作者: 爱卫生 时间: 2011-1-21 01:36:16 标题: NSAPI
本帖最后由 爱卫生 于 2012-10-7 19:37 编辑
NSAPI : 信令面, 标识同一个用户的多个 PDP Context , NSAPI 与 RAB ID 值等同 。取值 0-15 ; 一个用户最多激活11个PDP上下文。信令面多个 PDP Context 可以共用一个 TEID , 用 NSAPI 区分但如果是一个用户激活secondary APN,虽然APN是同一个,但会分配两个NSAPI。SGSN会放到创建PDP请求消息里发给GGSN。 NSAPI field:4 bit。
=0扩展以后用。
=1 P-MP多播消息
2-4保留
5-15 动态分配的。
连上一个外部网络就有一个NSAPI.由于1-4预留,所以MS拿到的NSAPI一定是从5开始的。
作者: bestflora 时间: 2011-4-25 12:53:14
之前您说每个PDP context与一个APN相对应,那是不是说一个用户激活一个Secodary APN, 这时候就存在一个APN, 一个PDP context,和两个NSAPI呢?
作者: bestflora 时间: 2011-4-25 12:59:59
还有个问题,NSAPI是由谁分配的呢,SGSN还是MS?
作者: 爱卫生 时间: 2011-4-25 13:21:48
回复 bestflora 的帖子
答复如下:
"之前您说每个PDP context与一个APN相对应",这句话不完全准确,每个PDP context和APN没有完全的对应关系。一个APN可以对应多个PDP context。所以,如果你能找到出处,请提供链接给我,我来更正。谢谢!
"那是不是说一个用户激活一个Secodary APN, 这时候就存在一个APN, 一个PDP context,和两个NSAPI呢?"这时,用户将有两个PDP Context,一个是Primary PDP Context,对应的发起流程是PDP Context Activation Procedure(在TS23.060的9.2.2章描述)。另外一个是Secondary PDP Context ,由Secondary PDP Context Activation Procedure来发起(参考TS23.060的9.2.2.1.1),这两个PDP Context属于同一个APN,只不过QOS不一样,在Secondary PDP Context的激活流程中,都不会携带请求的APN,而是通过一个Linked TI来和Primary PDP Context进行关联。但每个PDP Context都会独占一个唯一的NSAPI。因此,在你说的例子里,确实是两个NSAPI,但是是两个PDP Context,存在于同一个APN中。例如我们的cmwap这个APN中提供的业务,可能既有http等基础业务,也有视频,IMS等高级增值业务。对QOS的需求也不一样,这就是需要通过发起Secondary PDP Context Activation Procedure来向网络侧申请更高的QOS来满足这类业务的需求。
最后,NSAPI一般是由MS来分配的,在MS发起的PDP激活请求消息中就要携带NSAPI,但其实不存在由谁分配的问题。因为这个值是固定的,都是从5开始。因为目前的GPRS核心网并不支持网络侧发起的PDP上下文激活,如果支持的话,这个NSAPI也可以是网络侧的GGSN来进行分配。简单来说,就是谁发起激活流程,谁分配。
附件的包,仅供参考。
[attach]264[/attach]
作者: bestflora 时间: 2011-4-25 13:31:46
是我之前理解错了,谢谢您这么耐心的解释。学到东西了
作者: nanjing634 时间: 2011-9-3 21:50:46
呵呵,解释的很详细啊,学习了。。。。
作者: mobileice 时间: 2011-9-7 11:14:10
解释的好,呵呵
作者: zglaojiang 时间: 2011-11-29 20:15:50
回复 爱卫生 的帖子
我之前听谁说过还有个TI,有时候和NSAPI配合起来区分什么的,记不得了。
作者: 爱卫生 时间: 2011-12-1 23:42:15
回复 zglaojiang 的帖子
TI和NSAPI确实是有映射关系的,分别用在不同的接口。但功能类似。
这篇帖子有比较详细的介绍。别被标题迷惑了,虽然标题是"GTP的Teardown Indicator IE及实例”,但你仔细看,后面会讨论到了transacation ID的。链接是:http://www.gprshome.com/forum.php?mod=viewthread&tid=237&extra=&page=2。另外还有这篇:http://www.gprshome.com/forum.php?mod=viewthread&tid=879。
作者: gaoyang_fei 时间: 2012-10-2 22:31:47
爱卫生 发表于 2011-4-25 13:21
回复 bestflora 的帖子
答复如下:
想问下爱总。1
一次激活和二次激活中的控制面的TEID是一样吗?只是NSAPI不同?是这样吗?那两个primary pdp激活呢,他们的TEID和NSAPI的分别有关系吗?数据面的TEID有关系吗?
2 还有就是想问问爱总MS ip什么时候会变化?我看有个文档上写GGSN的pdp update 可以用来给MS重新分配ip是吗? 在RAU中呢MS ip会变化吗?我想 intra-RAU应该不会变吧?那inter-RAU呢?我们从现网采集的 SGSN context response 中有的 含有pdp地址(我想这样new sgsn也许就会不变更 ms的ip了吧),但是有的 SGSN context response 根本就没有 pdp上下文字段,这样是不是一定会有后续的给MS重新分配分配ip的情况?但是携带了pdp上下文字段(能够知道old-pdp-address)也是从新分配ip的?
3想问下爱总标准里面的 condtional 和 optional 有什么差别?我理解都是implementation define (实现定义)啊?看不出什么区别?
作者: 爱卫生 时间: 2012-10-2 22:57:59
gaoyang_fei 发表于 2012-10-2 22:31
想问下爱总。1
一次激活和二次激活中的控制面的TEID是一样吗?只是NSAPI不 ...
因为问题比较多。不确定能否全部回答了。如果漏了,再提醒我吧。
1)一次激活和二次激活中的控制面的TEID是一样的(参见论坛的PDP二次激活实例帖子),NSAPI不同。如果是两个Primary PDP,两者的TEID无任何关系,NSAPI是递增的,从5开始分配。数据面TEID不一样。
2)MS IP只有在去激活,重新激活PDP才会发生变化。其他情况都不变。因为IP变了,业务就会断,影响用户体验。Inter-SGSN RAU流程中(参见论坛Inter-SGSN RAU实例帖子),Old SGSN不需要知道MS的IP(本来就不是由SGSN分配IP),只需要知道GGSN的IP就可以了(前提是MS在做RAU时有一个active的PDP上下文),需要和GGSN更新下下行方向的TEID。
3)condtional 和 optional。前者是有条件的,后者是可选的。有条件的意思就是说如果条件符合,就一定要携带。带有半强制性。可选则是无所谓,可带可不带。例如附着请求中,IMSI或P-TMSI都是condtional 的,MS一定要携带一个来做附着,不能两个都不带。之所以不是madantory的,是因为MS在附着时没有P-TMSI,则只能用IMSI来附着。带不能两个都不带就错误了。又例如:Gn接口PDP激活请求中,小区位置信息就是optional的信息元素,带上了可以提供给GGSN作为网管或计费的参考依据。但不带也不会影响信令流程的继续。
作者: gaoyang_fei 时间: 2012-10-2 23:24:17
爱卫生 发表于 2012-10-2 22:57
因为问题比较多。不确定能否全部回答了。如果漏了,再提醒我吧。1)一次激活和二次激活中的控制面的TEID是 ...
谢谢爱总的热心回答!可以再追问几个吗,TEID是怎么算出来 V0版本网络上有IMSI+NSAPI的说法,但是V1版本一个上下文中有个4个TEID(C面上下行,D面上下行)
作者: gaoyang_fei 时间: 2012-10-2 23:53:04
爱卫生 发表于 2012-10-2 22:57
因为问题比较多。不确定能否全部回答了。如果漏了,再提醒我吧。1)一次激活和二次激活中的控制面的TEID是 ...
爱总困了就睡觉了,(我这一个月都没人问了,终于找到能问的人了,所以成问题少年了,爱问理解{:soso_e120:})说说我的理解,就是一个MS最多有11context ,这些上下文不管从不从属一个primary上下文(虽然叫二次激活,但是对一个primary上下文可以有多个二次激活),nsapi都是从5-16递增是吧。
“Old SGSN不需要知道MS的IP(本来就不是由SGSN分配IP),只需要知道GGSN的IP就可以了” 两个问题
a u面的下行数据来的时候,sgsn找ms,这么说肯定不是靠ip了,所以有没有可能 1个sgsn里面的有相同的ip,因为可能是不同ggsn分配的,ggsn分配的网段有没有可能重复?顺便问一句这个sgsn和RA有什么对应关系吗?(一对sgsn管理多个RA吗?)
b sgsn response 里面的时候 pdp是可选的,你刚回复我的“要知道ggsn的地址”我查了一下: 发送的sgsn context response的时候这个ggsn的 地址也应该是在 pdp 上下文IE里面包含,但是有的sgsn response里面就没有pdp上下文字段,怎么得到ggsn的地址的?
作者: 爱卫生 时间: 2012-10-3 09:49:45
gaoyang_fei 发表于 2012-10-2 23:53
爱总困了就睡觉了,(我这一个月都没人问了,终于找到能问的人了,所以成问题少年了,爱问理解{:soso_e12 ...
呵呵,欢迎提问。说下我的个人理解。
a) 你说的对。SGSN传送下行数据报文给MS时,不会根据IP来传的。传送的是LLC PDU,IP已经被封装到里面了,是看不见的。IP地址从技术上来说,可能会重。例如MS同时激活了两个primary PDP,并且是在两个不同GGSN上建立的。那正好GGSN侧假设配置了相同的MS地址池,就有可能重。但这只是从技术上说的。运营商会从整体规划上避免这一点。给不同的GGSN来分配不同的地址池来避免。
b)RAU流程里的“sgsn response”包含PDP Context IE有一个前提条件,就是old SGSN上自己要有这个PDP上下文,也就是说在MS发生RA移动的时候,本身就带有一个active的PDP上下文移动的。也就是MS是正在上网过程中发生了跨RA的移动。这时候Old SGSN上才知道MS在哪个GGSN上激活的,才能通知New SGSN。否则,如果MS如果不是在上网过程中位置移动了,当前根本就没有GGSN为MS服务,那Old SGSN也就不知道也不需要知道了。因此对应的PDP Context IE里也就没有GGSN IP了。
PS:一个SGSN可以为多个RA服务。也就是一个SGSN的服务范围是由多个RA构成的。
作者: gaoyang_fei 时间: 2012-10-4 12:16:46
爱卫生 发表于 2012-10-2 22:57
因为问题比较多。不确定能否全部回答了。如果漏了,再提醒我吧。1)一次激活和二次激活中的控制面的TEID是 ...
关于你回复的这句话“MS IP只有在去激活,重新激活PDP才会发生变化。其他情况都不变。因为IP变了,业务就会断,影响用户体验。”我在标准中的确找到“GGSN侧的pdp updaterequest可以用来给MS分配ip” 为什么?国内没有采用GGSN侧的update吗?
作者: gaoyang_fei 时间: 2012-10-4 12:39:09
本帖最后由 gaoyang_fei 于 2012-10-5 10:31 编辑
关于你的回复“RAU流程里的“sgsn response”包含PDP Context IE有一个前提条件,就是old SGSN上自己要有这个PDP上下文,也就是说在MS发生RA移动的时候,本身就带有一个active的PDP上下文移动的。也就是MS是正在上网过程中发生了跨RA的移动。这时候Old SGSN上才知道MS在哪个GGSN上激活的,才能通知New SGSN。否则,如果MS如果不是在上网过程中位置移动了,当前根本就没有GGSN为MS服务,那Old SGSN也就不知道也不需要知道了。因此对应的PDP Context IE里也就没有GGSN IP了。” 有sgsn response 不就说明是ms在上网中发生了 RAU吗 ?而且还是inter -RAU,这时候MS肯定会有激活的上下文啊,可是这个时候的sgsn contextresponse里面
很多也是没有pdp上下文的(包含ggsn的ip)
有sgsn response 不能说明用户在上网?
作者: gaoyang_fei 时间: 2012-10-5 10:31:57
gaoyang_fei 发表于 2012-10-4 12:39
关于你的回复“RAU流程里的“sgsn response”包含PDP Context IE有一个前提条件,就是old SGSN上自己要有这 ...
有sgsn response 不能说明用户在上网?
作者: gaoyang_fei 时间: 2012-10-7 18:26:52
本帖最后由 gaoyang_fei 于 2012-10-7 18:31 编辑
gaoyang_fei 发表于 2012-10-4 12:16
关于你回复的这句话“MS IP只有在去激活,重新激活PDP才会发生变化。其他情况都不变。因为IP变 ...
a)如果 GGSN侧的 pdp update request 是作为pdp上下文修改的一部分呢?这种情况下 用来修改MS 的ip 是不是 很常见?
b)update 为什么要修改上下行的 teid呢? 且我见到的包 在response里面 只有 data teid,没有修改控制面的teid,这是为什么呢?
c)追问下在Gb口之间,还有什么信令是会改变一对GSN之间的teid的?
作者: 爱卫生 时间: 2012-10-7 19:35:30
gaoyang_fei 发表于 2012-10-7 18:26
a)如果 GGSN侧的 pdp update request 是作为pdp上下文修改的一部分呢?这种情况下 用来修改MS 的ip 是不 ...
a) 是。MS IP一般不重新分配,否则影响用户体验。
b) 下行用户面是一定要修改的。因为服务的SGSN变了,否则GGSN还会将下行数据发给老的SGSN。其它可选。
c)没有。Gn口的信令只能由GSN节点来协商,和Gb口无关。换句话也就是说BSC和MS不需要关心TEID。
作者: gaoyang_fei 时间: 2012-10-7 21:18:20
本帖最后由 gaoyang_fei 于 2012-10-8 19:21 编辑
爱卫生 发表于 2012-10-7 19:35
a) 是。MS IP一般不重新分配,否则影响用户体验。
b) 下行用户面是一定要修改的。因为服务的SGSN变了,否 ...
不好意思 爱总 打错字了 第三个问题是 Gn口的信令还有那些会影响teid?
还有关于a问题到底ggsn侧的update 用来 进行ip修改常见不常见?你回答的前半句是“是”,后半句是否定,把我搞糊涂了。 我们要做一个上网用户的ip和imsi映射表 ,所以对这个比较关心,不常见但有改变ip的机会的的话,(如果准确率优先,不是性能优先的话)也要有代码在抓到update的时候进行处理,
还有在ggsn发起的update下 下行的控制面teid也是必须改变的吗 ,你在另一处对我的回答中提到update 过程 必定会改变下行的控制面teid 因为会话中的SGSN变了,(上行的控制面不必要变更吗?我看标准中只有data(I)是必须的?为什么?)这个不是在作为RAU流程的一部分才会更换SGSN吗 ?update 过程还有其他目的啊,比如更换Qos,所以SGSN不一定会变更啊?
另一个问题 update response中如果原因值为不接受,那之前的pdp context呢?是不是teid不更新,还维持update 之前的值?
作者: 爱卫生 时间: 2012-10-8 21:58:22
gaoyang_fei 发表于 2012-10-7 21:18
不好意思 爱总 打错字了 第三个问题是 Gn口的信令还有那些会影响teid?
还有关于a问题到底ggsn侧的up ...
因为你的a问题问了两个问题。所以“是”是回答前一个问题。MS IP一般不重新分配是回答后一个问题。如下:
a)如果 GGSN侧的 pdp update request 是作为pdp上下文修改的一部分呢?这种情况下 用来修改MS 的ip 是不是 很常见?
答:是。这种情况下,MS IP一般不重新分配,否则影响用户体验。不用担心update消息(对应的是PDP上下文修改流程)后用户的IP会变,可以说接近100%的情况下是不变的。以下是规范的原文(TS23.060的9.2.3节):“
The following parameters can be modified:
- QoS Negotiated;
- Radio Priority;
- Packet Flow Id;
- PDP Address (in case of the GGSN-initiated modification procedure);
- TFT (in case of MS- or GGSN-initiated modification procedure);
- BCM (in case of GGSN-initiated modification procedure); and
- Usage of Direct Tunnel.
”特意说明了PDP上下文修改流程中只有GGSN发起的PDP修改流程才可以修改UE的IP地址,其他场景都不行(例如RAU、切换等过程产生的update pdp context消息等)。但GGSN通常不会主动去发一个PDP修改流程更新UE的IP地址的,除非是人工在GGSN上触发了什么指令操作。
b)我是针对你的问题,针对Inter-SGSN RAU场景所触发的update pdp context消息,必须要更新用户面TEID,因为SGSN变了。如果是其他场景,例如只是更新Qos,那用户面TEID当然可以不变。规范里只是说用户面TEID是强制IE,一定要携带,并没有说一定要变啊。
PDP上下文更新失败,规范是这么说的。“If the SGSN receives an Update PDP Context Response with a Cause value other than "Request accepted", it shall abort the update of the PDP context.
If the SGSN receives an Update PDP Context Response with a Cause value "Non-existent", it shall delete the PDP Context.”
c)Gn接口只有update pdp消息可以修改GSN之间的TEID。Create用于创建,delete用于删除。
作者: gaoyang_fei 时间: 2012-10-9 10:16:16
a) 关于"规范里只是说用户面TEID是强制IE,一定要携带,并没有说一定要变啊"携带不就是给对端重新分配吗?要不携带干嘛?
b)关于“PDP上下文更新失败,规范是这么说的。“If the SGSN receives an Update PDP Context Response with a Cause value other than "Request accepted", it shall abort the update of the PDP context.
If the SGSN receives an Update PDP Context Response with a Cause value "Non-existent", it shall delete the PDP Context.”” 其他原因的情况呢,只说了non-existent的情况?
作者: gaoyang_fei 时间: 2012-10-10 10:42:41
gaoyang_fei 发表于 2012-10-9 10:16
a) 关于"规范里只是说用户面TEID是强制IE,一定要携带,并没有说一定要变啊"携带不就是给对端重新分配吗 ...
上述两个问题想追问下。。我们只关心update流程过程中控制面的TEID, 1)如果信令中携带了(也就是给对端分配了),对端一定会更新到新的TEID吗?2)”abort update context “ TEID还是维持create pdp context 过程后,update前的 TEID吗?
作者: 爱卫生 时间: 2012-10-10 21:12:40
1) GTP中的TEID有两个。一个是头部中的TEID,这是对方分的。还有一个是头部后面的信息元素部分。这里的TEID是分给对方GSN节点的。如果是信息元素部分携带了TEID,不管是否和原来创建时候的值相同,对方都要拿这个新值覆盖掉旧值。2)是的。
作者: yonka 时间: 2012-11-4 10:39:07
爱卫生 发表于 2012-10-3 09:49
呵呵,欢迎提问。说下我的个人理解。 a) 你说的对。SGSN传送下行数据报文给MS时,不会根据IP来传的。传送 ...
"a) 你说的对。SGSN传送下行数据报文给MS时,不会根据IP来传的。传送的是LLC PDU,IP已经被封装到里面了,是看不见的。IP地址从技术上来说,可能会重。例如MS同时激活了两个primary PDP,并且是在两个不同GGSN上建立的。那正好GGSN侧假设配置了相同的MS地址池,就有可能重。但这只是从技术上说的。运营商会从整体规划上避免这一点。给不同的GGSN来分配不同的地址池来避免。"
爱总,MS的地址冲突会有影响吗?如你所说的不同GGSN的地址池重复的话?
1、我感觉如果同一个运营商,比如XXCM,如果多个GGSN的地址池冲突的话可能会有影响。因为从下行方向来说,防火墙做NAT转换后可能会下发给错误的GGSN。
2、同一个GGSN的不同APN的道理也一样吧?但alex中提到的使用routing instance来隔离不同APN的话可以重复使用地址池是如何理解呢?从下行方向,防火墙到GGSN还是不知道怎么下发吧?
3、但如果不同运营商的话或者XXCM和YYCM这样的,应该没关系吧?
作者: yonka 时间: 2012-11-4 10:41:49
爱卫生 发表于 2012-10-2 22:57
因为问题比较多。不确定能否全部回答了。如果漏了,再提醒我吧。1)一次激活和二次激活中的控制面的TEID是 ...
“1)一次激活和二次激活中的控制面的TEID是一样的(参见论坛的PDP二次激活实例帖子),NSAPI不同。如果是两个Primary PDP,两者的TEID无任何关系,NSAPI是递增的,从5开始分配。数据面TEID不一样。”
爱总,同一个用户不同primary PDP上下文间NSAPI也是递增的吗?还是独立使用?
比如使用CMWAP激活了一个primary然后再激活一个CMWAP的secondary,再激活一个CMNET的primary。这三个PDP上下文都占用同一个5~11吗?
作者: 爱卫生 时间: 2012-11-4 14:58:16
yonka 发表于 2012-11-4 10:39
"a) 你说的对。SGSN传送下行数据报文给MS时,不会根据IP来传的。传送的是LLC PDU,IP已经被封装到里面了, ...
1 没事的。防火墙现在全部都是状态化防火墙,即可以记录用户的session状态的。所以你是从哪个端口来的,回来也从哪个端口下发。防火墙不会弄错的。
2 用VPN实例隔离后就不会有问题了。如果两个VPN实例连接到一个相同的没有划分VPN的防火墙,这就不叫VPN了。所以采用了VPN实例划分的话连接防火墙,那要么是两个不同的防火墙,或者是同样划分了两个VPN实例的一个物理防火墙。所以不会弄错的。
3 跨运营商就更没问题的。运营商之间还有防火墙以及采用不同的地址规划呢。
作者: ithinc 时间: 2013-1-24 13:04:15
gaoyang_fei 发表于 2012-10-7 18:26
a)如果 GGSN侧的 pdp update request 是作为pdp上下文修改的一部分呢?这种情况下 用来修改MS 的ip 是不 ...
a)如果 GGSN侧的 pdp update request 是作为pdp上下文修改的一部分呢?这种情况下 用来修改MS 的ip 是不是 很常见?
b)update 为什么要修改上下行的 teid呢? 且我见到的包 在response里面 只有 data teid,没有修改控制面的teid,这是为什么呢?
c)追问下在Gb口之间,还有什么信令是会改变一对GSN之间的teid的?
a)GGSN修改MSIP是作为初始连接时动态分配IP使用的,后续不会更改MSIP。
b)Update会修改下行TEID,上行TEID不会更改。这个问题我最近刚翻过规范,上行TEID在Release7以前版本中GTPv0向GTPv1切换的时候有可能更改,其他情况不会携带。
作者: hou3331 时间: 2013-6-9 14:10:57
爱总,实际现场测试中,怎么在终端上激活primary PDP和secondary PDP,second PDP呢?IOS系统,android系统,sybiam系统,上网卡上分别是该如何触发的?
欢迎光临 51学通信技术论坛 (http://51xuetongxin.com/bbs/) |
Powered by Discuz! X2 |