今天这一篇介绍2/3G中的临时ID,对于这两年入行通信做4/5G的朋友可能会有点儿陌生,但是对于入行7、8年以上的可能是一波回忆杀,甚至有些东西当时测试的时候可能没有注意到,所以就常学常新吧。
另外2/3G还没有完全退网,所以这篇也不是现在完全用不到的东西。
聊临时ID前,先来看看一个要的ID——TMSI。
TMSI:临时ID中的基本盘
TMSI的全称是Temporary Mobile Subscription Identifier,它是一个由4个八位字节组成,也就是一共32bits,是可以使用完整的十六进制进行编码的。
它是由核心网节点比如VLR/MSC、SGSN、MME或者AMF分配的。
为了避免节点重启之后导致重复分配相同的TMSI,P-TMSI还被规定需要设计为有标识时间或者重启的bit位,总之麻雀虽小五脏俱全,制定规则的时候考虑的还是挺多的。
另外核心网节点不能分配一个32位都是1的TMSI,这是因为TMSI必须要存储在SIM卡中,而SIM用32位都为1来表示没有有效的TMSI可以使用。
为什么说TMSI是临时ID中的基本盘呢?因为它将来会在各种临时ID中出现,比如4G GUTI中的M-TMSI,5G中的5G-TMSI,以及2/3G中的P-TMSI,还有S-TMSI、5G-S-TMSI等等,总之就是“踢”。
P-TMSI:2/3G网络中的用户临时ID
说起P-TMSI要倒回到十年前的记忆了,刚入行通信的时候是Gb和SS7从窄带、宽带、Frame Relay、ATM等技术在向over IP过度的尾声,当时被SS7支配的都要放弃了,虽然Over IP之后SS7已经简单不少,但是依然是通信中复杂的存在,谈“七”色变。
虽然是老物件儿,但是偶尔还得拿出来看一看、用一用,所以坐等2/3G退网
P-TMSI中的P是Packet的缩写,所以表示了它是2/3G PS域核心网的用户临时ID,作为TMSI的一类,P-TMSI由SGSN分配,因此:
P-TMSI的结构跟TMSI的结构完全一样,如下图所示:
P-TMSI一共有4个八进制位共32bits,而其中两个最高位字节(31和30位)被永久置为11,以表示此TMSI是由SGSN分配的P-TMSI(其他组合00、01、10表示此TMSI由VLR/MSC分配即电路域的TMSI)。
P-TMSI需要注意的是在SGSN Pool的场景下,3GPP规定了SGSN分配的TMSI中必须包含NRI(Network Resource Identifier)用来标识pool内特定的SGSN member。NRI的长度从0-10bits变化,当然0bit的长度表示没有NRI即SGSN pool这个功能是没有使用的。NRI在TMSI中有其固定位置:从23bit到14bit,也就是说组了SGSN Pool之后,SGSN在分配P-TMSI的时候中间的23到14bit位就不能随意分了,要把自己的NRI放进去。
但由于4G中标识MME pool member的MMECode长度只有8bits,为了能更好地完成2、3G到4G的互操作,在实际应用中NRI的长度应该被最大设定为8bits(为什么?请听下回分解
)。
说到P-TMSI,还有一个搭配的P-TMSI Signature概念。
P-TMSI Signature包含3个八进制位,即一共24bit,它可以被SGSN分配,没有什么特殊的分配规则,唯一的就是不要将24bit都置为1,因为终端使用24个1表示没有有效的P-TMSI Signature:
TLLI:老物件儿新感受
既然聊到了2/3G的ID,就离不开TLLI这个概念,TLLI的全称是Temporary Logical Link Identity,它是由MS或SGSN根据P-TMSI或直接根据某些规则构建的。
TLLI依然是由4个八进制位构成,一共32bit位,按重要性顺序从0到31编号,0 bit为LSB(Least Significant Bit,即最低有效位),31 bit是MSB(Most Significant Bit,即最高有效位)。
TLLI目前规划了四种类型:
以上四类是目前的规划,将来还可能会引入其他类型的TLLI。TLLI的构建规则总结如下表:
其中:“T”、“R”、“A”和“X”表示可以为TLLI类型取任何值的位。更准确地说,“T”表示从P-TMSI导出的位,“R”表示随机选择的位,“A”表示由SGSN选择的位,“G”表示从分配的G-RNTI导出的位,“X”表示保留范围中的位。
另外TLLI码空间的一部分被GERAN(2G)重新使用,以允许在RLC/MAC消息中包含GERAN的无线网络临时标识。
四类规划的TLLI是如何使用的呢?3GPP 24.008的4.7.1.4.1定义了使用规则,总结如下:
在下图2G Attach Request消息中可以看到BSSGP这个LLC层的TLLI最高两位是1和0,29-0位的值跟P-TMSI中29-0位的值一样,所以这个TLLI是一个Foreign TLLI。
在Attach Accept中SGSN分配了新的P-TMSI,如下:
在之后手机发的Payload的消息BSSGP中TLLI最高两位是1,当然这个TLLI跟上图中Attach Accept中的P-TMSI是完全一样的,所以是一个Local TLLI:
这就是一个Foreign TLLI到Local TLLI变化成功的测试结果。
以上就是通信网络中2/3G的临时ID,虽然其已经在退网的边缘,但是承担的历史使命没有完成,所以还得关注,内容参考以下3GPP整理: