本帖最后由 爱卫生 于 2012-10-15 20:14 编辑
接下来,我们通过一个具体实例,来看一下在SS7网络中,关于MTP层的路由具体在节点中是怎样实现的。
下面的例子,假设是SGSN需要发送一个MAP消息(是一个位置更新请求消息)给HLR。图中列出了消息经过每一个节点的时候的包的封装。相应的地址编码和节点名称也都在图中做了标识,如下:
图例3-SS7网络MTP路由图 我们来看一下这个包发送的步骤: 1)首先SGSN在用户部分创建好MAP消息之后,交给TCAP层。TCAP层的功能后续介绍,但本层和消息路由无关。然后交给SCCP层。SCCP层的功能后续会做详细介绍。这里只看其中的两个字段。一个是SSN,前面提到SSN,类似于TCP/UDP中的端口号,用于识别上层的不同用户部分。这里值为149,代表SGSN上的MAP消息。另外一个字段为RI(路由指示符),这里的取值为RI=Route On SSN。代表要求处理此消息的节点根据DPC+SSN来完成路由选择。还有另外一种选路方式为Route On GT。会在以后的例子中给大家介绍。在本例中只用到MTP中的DPC和SCCP中的SSN来完成消息的路由和寻址。然后,继续往下封装,交给MTP-3层,加上OPC是自己的2-100,DPC是下一跳STP的信令点码1-100,而不是HLR的信令点码3-100。从这一点可以看出来SPC和MAC地址非常相似。而并不和IP地址等价。接着往下交给MTP-2层信令链路,以及MTP-1层的E1端口或若干个E1时隙去完成转发。 2)在STP1上收到这个消息后,解封装。读取MTP-3层的DPC,发现是自己。然后就可以继续解到SCCP层。发现RI=Route On GT,得到一个指示,这个包要求自己根据GT来进行选路。然后执行GT翻译。其实这个消息并不是发给自己的。因此STP1要根据GT翻译的结果重写MTP-3层的封装,根据路由表的查找,下一跳为STP2,STP1根据GT翻译的结果将DPC重写为STP2的信令点码1-200。然后再通过路由表下一跳映射到MTP2层合适的信令链路发送出去。 SP2上做和STP1类似的操作。 3)HLR收到这个消息后,发现DPC是自己,解包。到SCCP层,发现是Route On SSN代表按照DPC+SSN来进行寻址。SSN=149是代表上层的MAP消息,就可以直接将这个消息交给上层的MAP协议栈相应的进程去处理了。 至此,消息发送完毕。 |