IPv6SIP终端与IPv4SIP终端通讯的方法

文档序号:7973875阅读:294来源:国知局
专利名称:IPv6 SIP终端与IPv4 SIP终端通讯的方法
技术领域
本发明涉及网络通信领域,特别涉及一种IPv6 (因特网协议版本6)网络在部署初期与 现有的IPv4 (因特网协议版本4)网络进行通讯的方法。
背景技术
与IPv4协议相比,IPv6具备的一系列先进特性,例如充足的地址空间、自动配置、改 进的移动性以及安全性,使其更便于家庭网络的构建。随着IPv6网络部署步伐的加快,将来 的家庭网络势必会构建在IPv6之上。但是IPv6网络的部署是一个循序渐进的过程,我们不 能指望一夜之间所有的网络全都变成基于IPv6的网络。因此在部署初期,必然是一个IPv6 与IPv4共存的时期。这样一来,对部署基于IPv6的家庭网络就很可能会出现这样一种情况 (如图1所示)我们部署的IPv6家庭网络仅仅是一个IPv6网络孤岛,它通过一个具有 IPv6/IPv4双栈的家庭网关设备来与外部IPv4网络中的IPv4节点进行通讯,或跨过IPv4网 络来与其它IPv6网络进行通讯。
在这种IPv4和IPv6网络共存的情况下,对于IPv6家庭网络中必不可少的基于SIP (初 始会话协议)的VoIPv6 (Voice over IPv6)终端而言,如何与目前正广泛使用于IPv4网络 的SIP VoIP (Voice over Internet Protocol)终端进行正常通讯,就成为一个值得考虑的 问题。目前,NAT-PT是一种常用的IPv6与IPv4互相通信的方法,NAT-PT是附带协议转换的 网络地址转换器,通过修改协议报头来转换网络地址,使IPv4节点和IPv6节点互通。与一 些隧道技术不同,NAT-PT只要求在IPv4和IPv6之间互联的网络转换设备上启用,协议转换 的目的是实现IPv4和IPv6协议头之间的转换,地址转换则是为了让IPv4和IPv6网络中的 主机互相识别对方。但是由于以下三个原因,它对于我们上面提出的问题并不适用
(1) SIP是为了建立媒体会话的应用层协议。当遇到NAT-PT这类协议时就会遇到一些 麻烦,因为在SIP包的有效载荷中包含着用于建立会话的地址。NAT-PT是与应用无关的,它 仅会对IP包头中的地址进行映射,而不会对SIP包的有效载荷中的地址进行探测。
(2) NAT-PT的基本思想是为需要进行IPv6与IPv4通信的节点,动态或静态的建立一 种一一映射的关系。当将来IPv6家庭网络进行实际部署时,可供分配的IPv4地址必然己是 极度匮乏,而家庭网络中又往往会有若干个SIP终端以及可以基于SIP进行通话的其它设备
(如PC)。因此我们不可能为家庭网络中所有这类IPv6设备在与外界IPv4对端进行通话时 各分配一个IPv4地址,因此NAT-PT和SIP-ALG组合的解决方案也并不适用此处。较好的方 法是所有这类IPv6设备在与外界IPv4对端进行通话时,都使用同一个IPv4地址。
(3)基于第二点,我们似乎可以用NAPT-PT(带端口号的NAT-PT)来解决这个问题。但答 案是否定的。在用NAPT-PT + SIP-ALG或用NAT-PT + SIP-ALG来实现IPv6与IPv4网络中 SIP终端之间通话的方法中,在INVITE邀请消息的To头域中用"user射或名"的方式,用域 名屏蔽了 IPv6与IPv4在地址上的差异。但通常家庭网络是不具有域名的,这样IPv4网络中 仅支持IPv4的SIP终端是无法用域名的方式来屏蔽IPv6地址的,它是不能用"user@IPv6 地址"的方式直接发起呼叫的。因此用NAPT-PT + SIP-ALG或用NAT-PT + SIP-ALG来实现 IPv6与IPv4网络中SIP终端之间通话的方法也不适用于此处。

发明内容
为克服上述缺陷,本发明的目的在于提供一种IPv6家庭网络中的多个基于SIP的VoIPv6 终端,和其外部位于IPv4网络中的基于SIP的VoIP对端,在不使用域名且仅使用一个IPv4 地址的情况下进行通讯的IPv6终端与IPv4终端通讯的方法。
为达到上述发明目的,本发明采用如下技术方案该IPv6 S[P终端与IPv4 SIP终端通 讯的方法包括
在IPv4网络内,将IPv6 SIP终端的用户名和IPv6 SIP终端所属的SIP网关在IPv4网 络中的IPv4地址,作为IPv6 SIP终端的地址与IPv4 SIP终端通讯;
在IPv6网络内,将IPv6 SIP终端的用户名和IPv6地址作为IPv6 SIP终端的地址与IPv4 SIP终端通讯。
其中,IPv6 SIP终端为发送端,IPv4 SIP终端为接收端时,会话建立阶段具体为
(21) IPv6 SIP终端向SIP网关发送包括用户名和IPv6地址的SIP消息;
(22) SIP网关将收到的SIP消息中的IPv6地址映射为IPv4地址后发送到接收端,并 建立会话映射表。
其中,所述的将收到的SIP消息中的IPv6地址映射为IPv4地址具体为
(31) SIP网关在会话映射表中记录下发送端的IPv6地址和接收端的IPv4地址的映射
关系;
(32) 将目的地址由接收端的IPv4地址映射出的IPv6地址还原为IPv4地址,将源地址由发送端的IPv6地址映射为SIP网关在IPv4网络中的IPv4地址。
其中,IPv6 SIP终端为接收端,IPv4 SIP终端为发送端时,会话建立阶段具体为
(41) IPv4 SIP终端向SIP网关发送包括用户名和IPv4地址的SIP消息,
(42) SIP网关将收到的SIP消息中的IPv4地址映射为IPv6地址后发送到接收端,并 建立会话映射表。
其中,所述的将收到的SIP消息中的IPv4地址映射为IPv6地址具体为
(51) SIP网关依据接收端的用户名在会话映射表中査找接收端的IPv6地址;
(52) 将目的地址由SIP网关在IPv4网络中的IPv4地址,映射为査找到的IPv6地址, 将源地址由发送端的IPv4地址映射为IPv6地址。
其中,正常通话阶段通过实时传送协议互发消息, IPv6 SIP终端向IPv4 SIP终端发送数据包时,具体为
(Al)发送端将数据包的源地址和源端口号分别填写为发送端的IPv6地址和接收端口 号,将目的地址和目的端口号分别填写为接收端的IPv4地址映射出的IPv6地址和接收端口 号,并将数据包发送到SIP网关;
(Bl) SIP网关根据会话建立阶段建立的会话映射表,将源地址和源端口号替换为SIP 网关在IPv4网络中的IPv4地址和SIP网关的接收端口号,将目的地址和目的端口号替换为 接收端的IPv4地址和接收端口号,并发送到接收端;
IPv6 SIP终端向IPv4 SIP终端发送数据包时,具体为
(A2)发送端将数据包的源地址和源端口号分别填写为发送端的IPv4地址和接收端口 号,将目的地址和目的端口号分别填写为接收端所属SIP网关在IPv4网络中的IPv4地址和 接收端口号,并将数据包发送到SIP网关;
(B2) SIP网关根据会话建立阶段建立的会话映射表,将源地址和源端口号替换为发送 端的IPv4地址映射出的IPv6地址和接收端口号,将目的地址和目的端口号替换为接收端的 IPv6地址和接收端口号,并发送到接收端。
其中,所述的会话映射表中记录SIP网关内的每一个IPv6终端的状态信息,该状态信息 包括当前会话状态、会话双方的地址信息以及会话的发起方。
其中,在通话结束后,将会话映射表中对应的映射关系删除,该删除操作至少包括将 当前会话状态修改为未通话状态。
由上述技术方案所描述的IPv6 SIP终端与IPv4 SIP终端通讯的方法,由于IPv6网络内
部的SIP终端通过SIP网关在IPv4网络中的IPv4地址与外部IPv4网络通讯,外部的IPv4 SIP 终端通过IPv6网关内的SIP终端的用户名不同来识别通讯对端。本发明对通常的IPv6/IPv4 双栈家庭网关进行了改进,增加了用于处理SIP会话的SIP网关以及由此SIP网关维护的记 录IPv6家庭网络中所有SIP终端当前通话状态的会话映射表。通过在家庭网关中增加的会话 映射表、SIP网关和NAPT-PT相互配合,以此来实现不具有域名的IPv6家庭网络,仅使用一 个IPv4地址就可以实现家庭网络中的多个基于SIP的VoIPv6终端,和其外部位于IPv4网络 中的基于SIP的VoIP对端同时进行通讯。


图1是IPv6家庭网络中SIP终端与外部IPv4 SIP终端的通讯概图2为本发明中使用的SIP网关的会话映射表的结构示例;
图3为本发明中使用的会话映射表状态一;
图4为本发明的实施例A4向A6发送INVITE消息的地址映射前后的示意图5为本发明中使用的会话映射表状态二;
图6为本发明实施例A6发向A4的OK消息的地址映射前后的示意图7为本发明中使用的会话映射表状态三;
图8为本发明中使用的SIP网关建立的NAPT-PT映射表项;
图9为本发明正常通话阶段的地址和端口映射示意图10为本发明结束通话后,删除SIP网关建立的NAPT-PT映射表项; 图ll为本发明会话建立、正常通话和通话结束的全过程。
具体实施例方式
下面结合附图对本发明IPv6 SIP终端与IPv4 SIP终端通讯的方法进行详细描述。 本发明的核心思想是在IPv6家庭网络的家庭网关中增加一个SIP网关,并由此SIP网 关维护一个用于记录所有会话状态的会话映射表(如图2所示),该会话映射表主要包括会话 的发起者、会话双方的地址信息和当前的会话状态。IPv6家庭网关中的SIP网关在IPv6家 庭网络内部与外部通话的建立过程、正常通话过程和通话结束过程中起到一种过渡和中转的 作用。此SIP网关根据SIP数据包的源地址或目标地址在会话映射表中进行査询,对SIP消 息而言,根据査询到的对端地址更改此SIP数据包包含的SIP消息中的地址信息,使所有在 该家庭网关内的终端都使用家庭网关的IPv4地址与外部IPv4网络通讯,从而实现整个IPv6
家庭网络中的所有SIP终端可以在只使用一个IPv4地址的情况下同时与其外部位于IPv4网 络中的基于SIP的VoIP对端进行通话。同时以"用户名釘Pv6家庭网关在IPv4网络中的接 口地址"形式向IPv4网络中的SIP终端提供会话建立的对端地址,以此在不使用域名的情况 下进行两者的会话通讯。对外部的IPv4网络而言,IPv6家庭网络中的不同的SIP终端是用 不同的用户名来区分的。
IPv6家庭网络中的SIP终端向外部IPv4网络中的SIP终端发送SIP消息的过程如下(以 SIP终端A6向A4发送SIP消息为例,如图1所示)
第一步,SIP终端A6构建一个需要发送的SIP消息。在SIP消息的目的地址中添上被叫 方A4的IPv4地址映射出的IPv6地址,即在To头域中添上"0:: IPv4地址",Request-URI 中也包含同样的地址。在SIP消息的源地址中添上主叫方A6的名字和IPv6地址,即在From 头域中添上主叫方A6的名字和IPv6地址,消息头中Call-ID包含了这个呼叫的标识符,标 识符由一个伪随机串和主叫方A6的IPv6地址生成。
第二步,A6将此SIP消息发送给此IPv6家庭网络中家庭网关,家庭网关通过数据包的 目的端口号5060来为SIP网关识别SIP包,当家庭网关收到A6的SIP消息时,因为承载该 消息的SIP包具有特定的目的端口号而将该SIP消息转交给家庭网关中的SIP网关。
第三步,SIP网关收到A6的SIP消息后,需要完成以下三个歩骤
1、 SIP网关首先在会话映射表中记录下此INVITE消息发起方A6的IPv6地址和消息接 收方A4的IPv4地址的映射关系,并填写会话映射表中的其他内容,具体内容如图2所示。
2、 会话映射表建立完成以后,SIP网关需要对承载此SIP消息的SIP包进行修改。对SIP 消息的消息头部而言,需要将To头域中被叫方A4的IPv4地址映射出的IPv6地址还原为IPv4 地址,Request-URI中包含的同样的地址也要还原为IPv4地址。然后将From头域中A6的IPv6 地址更改为家庭网关在IPv4网中的接口地址,同时,消息头中Call-ID项中主叫方A6的IPv6 地址也同样需要更改为家庭网关在IPv4网中的IPv4接口地址。对SIP消息的消息体而言, SDP会话描述的媒体信息部分中的媒体地址和地址类型也需要更改为家庭网关在IPv4网中的 地址。对SDP有效载荷进行的这种修改很可能会变更SDP有效载荷的长度,因此SIP消息头
部中的消息内容长度字段也必须进行相应的修改。
3、 修改完成后,SIP网关将此修改后的SIP消息转发给处于IPv4网络中的接收端,即
此例中的SIP终端A4。
IPv4网络中的SIP终端向IPv6家庭网络中的SIP终端发送SIP消息的过程如下(以SIP终端A4向A6发送SIP消息为例,如图1所示)
第一步,SIP终端A4构建一个需要发送的SIP消息。在To头域中添上接收方A6的用户 名和所在家庭网络的家庭网关在IPv4网中的IPv4接口地址。在From头域中添上发送方A4 的名字和IPv4地址,消息头中Cal1-ID包含了这个呼叫的标识符,标识符由一个伪随机串和 主叫方A4的IPv4地址生成。
第二步,A4将此SIP消息发送给此IPv6家庭网络中的家庭网关。当家庭网关收到A4的 SIP消息时,因为承载该消息的SIP包具有特定的目的端口号而将该SIP消息转交给家庭网 关中的SIP网关。
第三步,SIP网关收到A4的SIP消息后,需要完成以下歩骤
1、 SIP网关根据收到的SIP消息头的To头域中的A6的用户名在如图2所示的SIP网关 的会话映射表中査找A6的IPv6地址。
2、 用査找到的A6的IPv6地址替换SIP消息头的To头域中的IPv4地址,Request-URI 中包含的相同地址也要进行替换。
3、 将From头域中的A4的IPv4地址改为此IPv4地址映射出的IPv6地址,将消息头中 Call-ID项中的IPv4地址也替换为A4的IPv4地址映射出的IPv6地址。
4、 SIP网关将修改后的SIP消息转发给SIP终端A6。
以上就是会话建立阶段的步骤,包括IPv4 SIP终端或IPv6 SIP终端作为主叫方两种情 况,虽然他们建立会话的过程有所不同,但是这两种情况在会话建立完成后进入的正常通话 过程是一样的,具体如下
会话建立完成后进入正常通话过程中,双方通过RTP协议(Real-time Transport Protocol,实时传送协议)互发消息来进行通话。此时承载语音的数据包通过NAPT-PT协议来 穿越IPv6和IPv4的边界。位于IPv6家庭网络中的SIP终端A6向它的位于家庭网络外的IPv4 对端SIP终端A4发送承载着语音信息的UDP数据包的过程如下
第一步,该数据包的源地址和源端口号分别填写为A6的IPv6地址和接收端口号,而目 的地址和目的端口号分别填写为会话对端A4的IPv4地址映射出的IPv6地址和A4的接收端 口号;
第二步,家庭网关中的NAPT-PT根据会话建立阶段建立的映射关系将源地址和源端口号
分别进行替换,将源地址和源端口号替换为家庭网关在IPv4网中的IPv4地址和家庭网关的
接收端口号,并将目的地址还原为A4的IPv4地址,然后进行转发。 而位于家庭网络外的IPv4 SIP终端A4向它的位于IPv6家庭网络中的SIP终端A6对端 发送承载着语音信息的UDP数据包的过程如下
第一步,该数据包的源地址和源端口号分别填写为A4的IPv4地址和接收端口号,目的 地址和目的端口号分别填写为家庭网络在IPv4中的接口地址和A6的接收端口号;
第二步,在经过家庭网关的NAPT-PT后,该数据包的目的地址和目的端口号分别根据 NAPT-PT映射表中的映射更改为A6的IPv6地址和接收端口号,源地址更改为A4的IPv4地 址映射出的IPv6地址,然后进行转发。
对由SIP网关维护的会话映射表的描述如下
1、 会话映射表中的内容反映了 IPv6家庭网络中的所有SIP终端当前的通话状态。
2、 IPv6家庭网络中的每一个SIP终端都会在会话映射表中保留有一项,而不管此SIP 终端是否正在通话。
3、 当IPv6家庭网络中的SIP终端与外部IPv4网络中的SIP终端进行通话时,会在会话 映射表中对应的表项中填写映射关系及会话的发起者、当前会话状态、会话双方的地址信息, 以便于査找。
4、 当IPv6家庭网络中的SIP终端与外部IPv4网络中的SIP终端结束通话时,应将会话 映射表中对应表项的映射关系删除。此处的删除,不是指将这一映射表项整个删除,而是仅 仅将该映射表项中的其中三项家庭网络外会话对端IPv4地址、会话发起方、当前会话状态 分别改写为无、无、未通话状态。
本发明对通常的IPv6/IPv4双栈家庭网关进行了改进,增加了用于处理SIP会话的SIP 网关以及由此SIP网关维护的记录IPv6家庭网络中所有SIP终端当前通话状态的会话映射 表。通过在家庭网关中增加的会话映射表、SIP网关和NAPT-PT相互配合,以此来实现不具 有域名的IPv6家庭网络,仅使用一个IPv4地址就可以实现家庭网络中的多个基于SIP的 VoIPv6终端,和其外部位于IPv4网络中的基于SIP的VoIP对端同时进行通讯。
采用本发明所述方法,使不具有域名的IPv6家庭网络仅使用一个IPv4地址就可以实现
家庭网络中的多个基于SIP的VoIPv6终端,和其外部位于IPv4网络中的基于SIP的VoIP对
端同时进行通讯。IPv6家庭网络中的SIP终端分别使用不同的端口号来接收IPv4网络中的
会话对端发送的承载语音的数据包。这样一来,对IPv4网络中的会话对端而言,它们通过相
同的目的地址和不同的目的端口号来区分承载语音的数据包的接收方究竟是IPv6家庭网络
中的那一个SIP终端。所以应避免IPv6家庭网络中的SIP终端使用相同的端口号来接收IPv4
网络中的会话对端发送的承载语音的数据包。
图1中的IPv6家庭网络中有三个基于IPv6的SIP终端A6、 B6和C6。假设其中的B6正 在和处于IPv4网中对端B4进行通话,C6未进行通话,而此时处于IPv4网中SIP终端A4想 要与A6建立通话。此时的会话映射表的内容如图5所示。
在图3中需要注意的是,纵使未进行通话,IPv6家庭网络中的每一个SIP终端都会在会 话映射表中保留有一项(如SIP终端C6和A6)。这样做的目的是便于IPv6家庭网络外的仅 支持IPv4的SIP终端向IPv6家庭网络内的SIP终端主动发起呼叫时的处理。
这些SIP终端的IP地址见图1中所示。IPv6家庭网络中的家庭网关是具有IPv6/IPv4 双栈的设备,它在IPv6家庭网络中的接口地址为2880:5E34::27AB:FA82:3,而在IPv4公共 网络中的接口地址为202. 117. 30. 15。
下面针对上述的会话建立过程叙述2个具体实施例。
实施例l、外部的IPv4网络中的SIP终端主动发起会话请求
图11中描述了整个会话建立、正常通话和通话结束的过程,下面将该过程分段讲述。 一、会话建立阶段
IPv6家庭网络中的SIP终端的呼叫地址正常情况下应该为"用户名肌Pv6地址"的形式, 比如A6@2880:5E34:2053:FF: 50AB:3F50。但是IPv4网络中的SIP终端是不支持IPv6地址的, 所以我们以"用户名@家庭网关在IPv4网络中的接口地址"的形式(如A6啦02. 117.30. 15) 来向IPv4公共网络中的SIP终端提供可供呼叫的地址,而将地址的转换工作留给家庭网关来 处理。由此可见,对外部的IPv4网络而言,IPv6家庭网络中的不同的SIP终端是用不同的 用户名来区分的。
当IPv6家庭网络外的仅支持IPv4的SIP终端向IPv6家庭网络内的SIP终端主动发起呼 叫时,比如图1中SIP终端A4向SIP终端A6主动发起呼叫,A4会向A6@202. 117. 30. 15发 送INVITE邀请消息。
这里有两点值得注意,(1)此处的地址202. 117. 30. 15是IPv6家庭网关在IPv4网络中 的接口地址;(2)如果是向B6发起呼叫,则向B6證.117. 30. 15发送INVITE邀请消息。 IPv6家庭网络用同一个IPv4地址202. 117. 30.15和不同的用户名(如A6和B6)来区分家庭 网络内部不同的SIP终端。
INVITE消息的构建,如图4所示,A4首先创建一个INVITE请求。在To头域中添上
A6匿.117. 30.15, Request-URI中也包含同样的地址。在From头域中添上主叫方A4的名 字和IPv4地址,即sip: A4@202. 117. 30. 27。消息头中Call-ID包含了这个呼叫的标识符, 标识符由一个伪随机串和主叫方A4的IPv4地址生成。
然后A4将此构建好的INVITE请求发送给此IPv6家庭网络中的家庭网关,。IPv6的家庭 网关收到此INVITE消息后,因为承载该消息的SIP包的端口号5060而将其转交给SIP网关 处理。SIP网关事实上以IPv6家庭网络的家庭网关中的一个应用进程的形式出现,专门用来 处理IPv6家庭网络中基于IPv6的SIP终端与外部处于IPv4网中的SIP终端建立通话、进行 通话、终止通话过程中遇到的问题。
SIP网关收到A4的INVITE请求后,需要完成以下四项工作
第一、SIP网关根据收到的INVITE消息头的To头域A6@202. 117. 30. 15中的用户名A6 在如图3所示的SIP网关的会话映射表中进行查找。査找到A6的表项后,检查其当前会话状 态属性是否为"未通话"。
如果此属性不是"未通话",则向发起方A4返回一个Busy Here (486)消息,以通知A4 它呼叫的用户当前正忙。
如果此属性是"未通话",则首先对会话映射表中的A6表项进行修改。分别将表项中的 家庭网络外会话对端IPv4地址、会话发起方、当前会话状态等信息分别改写为A4的地址 202. 117. 30. 27、 A4、正在通话中等。以此在会话映射表中记录下此INVITE消息发起方A4的 IPv4地址和消息接收方A6的IPv6地址的映射关系,填写结果如图5所示。
第二、会话映射表建立完成以后,SIP网关需要对承载此INVITE消息的SIP包进行修改。 SIP网关必须能够将穿越IPv4/IPv6边界的每一个SIP报文进行修改。此例中,用査找到的 A6的IPv6地址2880:5E34:2053:FF:50AB: 3F50替换INVITE消息头的To头域中的IPv4地址, 替换结果为A6@2880:5E34:2053:FF:50AB:3F50。 Request-URI中包含的地址也要如To域中一 样进行更改。而From头域和Call-ID项中A4的IPv4地址需要更改为此IPv4地址映射出的 IPv6地址(即0:: 202.117.30.27)。更改前后的数据包地址如图4所示。
对INVITE消息的消息体而言,SDP会话描述的媒体信息部分中的媒体地址也需要更改为 A4的IPv4地址映射出的IPv6地址0:: 202. 117. 30. 27。对SDP有效载荷进行的这种修改很 可能会变更SDP有效载荷的长度,因此SIP消息头部中的消息内容长度字段也必须进行相应 的修改。
第三、SIP网关将修改后的INVITE消息转发给SIP终端A6。
第四、最后SIP网关需要构造一个Trying (100)消息,并发送给SIP会话请求的发起 端SIP终端A4,以此来告诉发起端A4已将INVITE消息送出,连接正在进行中。
对于收到此事实上来自于A4@202. 117. 30. 27的INVITE消息的被叫方SIP终端A6而言, 它并不知道呼叫它的对端是一个基于IPv4的SIP终端。它通过分析此INVITE消息认为呼叫 它的是A4舶202. 117.30.27 (通过消息头中的From字段)。
当被叫方SIP终端A6收到呼叫请求后,它可以接受或拒绝该呼叫,但不管怎样都必须 返回应答。在被叫方A6接受呼叫以前,A6会向A4柳202. 117. 30. 27发送Ringing (180) 消息告诉会话发起方正在等待被叫方接听,当前正在震铃。它通过收到的INVITE请求来生成 To, From, Call-ID等头域的域值,以此来构建Ringing (180)消息。
当被叫方A6接受呼叫时, 一个OK (200)应答消息会发送给它所认为的会话主叫方 A4柳202. 117. 30.27 (实际为A4@202. 117. 30. 27),如图6所示。OK (200)应答消息的构 建方法与前面讨论的Ringing (180)是类似的。
IPv6的家庭网关收到此OK消息后,同样因为承载该消息的SIP包的端口号5060而将其 转交给SIP网关处理。SIP网关需要完成以下四项工作
第一,SIP网关首先根据收到的OK消息头的To头域A4柳202. 117. 30. 27在如图5所 示的SIP网关的会话映射表中进行査找,以找到相应的会话表项。
第二, SIP网关将To头域中A4的IPv4地址映射出的IPv6地址0: :202. 117. 30. 27还原 成IPv4地址202. 117. 30. 27;将From头域中的A6的IPv6地址更改为家庭网关在IPv4网络 中的接口地址202. 117. 30. 15,即修改为A6蛇02. 117. 30. 15。其它的一些如Request-RUI和 Call-ID头域也要进行类似的修改,修改前后的地址信息如图6所示。
第三,OK消息中的SDP中,包含有在会话建立好后正常通话时用于接收语音数据包的接 口地址和端口号。SIP网关将语音包接收地址由A6的IPv6地址变更为家庭网关在IPv4网络 中的接口地址,并在会话映射表中记录下在OK消息的SDP中指定的端口号,如图7所示。
第四,SIP网关将修改后的0K消息包发送给会话发起端A4。
主叫方SIP终端A4收到被叫方A6的0K应答消息后,向被叫方发送ACK证实请求。ACK 证实请求的发送过程与之前所述的主叫方A4发送给被叫方A6的INVITE消息是几乎一样的, 在此不再赘述。
但需要指出的是,SIP网关在转发完ACK证实请求后,会根据会话映射表建立一个NAPT-PT
映射表项。映射关系为"A6打算接收语音数据包的IPv6地址和端口号"与"家庭网关的IPv4
接口地址和A6打算接收语音数据包的端口号"。如果以SIP终端A6与SIP终端A4的会话为
例即(IPv6地址2880:5E34:2053:FF:50AB:3F50、端口号9999)与':IPv4地址202. 117. 30. 15、 端口号9999)之间的映射,如图8所示。此后A4和A6就可以直接通过NAPT-PT来收发承载 语音的数据包了。当被叫方A6收到ACK消息后,主被叫间的会话建立。至此,SIP建立会话 的任务就完成了。 SIP会话建立完成后,SIP网关会对如图7所示的会话映射表进行更新。将 与A4和A6会话相关的条目中当前会话状态项由"会话建立中"更改为"通话中"。
二、 正常通话阶段
正常通话时,双方通过RTP协议(Real-time Transport Protocol,实时传送协议)互发消 息来进行通话。此时承载语音的数据包通过NAPT-PT协议来穿越[Pv6和IPv4的边界。
以SIP终端A6与SIP终端A4的通话为例。如图9所示,当位于IPv6家庭网络中的SIP 终端A6通过RTP协议向它的位于家庭网络外的IPv4对端SIP终端A4发送承载着语音信息 的UDP数据包时,该数据包的源地址和源端口号分别为A6的IPv6地址 2880: 5E34:2053: FF: 50AB: 3F50和9999,而目的地址和目的端口号分别为会话对端A4的IPv4 地址映射出的IPv6地址0: :202. 117. 30. 27和5100。家庭网关的NAPT-PT根据会话建立阶段 建立的映射关系(2880: 5E34:2053: FF: 50AB: 3F50端口号9999与202. 117. 30. 15端口号9999) 将源地址和源端口号分别更改为202. 117. 30. 15和9999,并将目的地址还原为A4的IPv4地 址202. 117.30.27,然后进行转发。
而当位于家庭网络外的IPv4对端SIP终端A4通过RTP协议向位于IPv6家庭网络中的 SIP终端A6发送承载着语音信息的UDP数据包时,该数据包的源地址和源端口号分别为A4 的IPv4地址202. 117. 30. 27和5100,目的地址和目的端口号分别202. 117. 30. 15和9999。 在经过家庭网关的NAPT-PT后该数据包的源地址和源端口号分别为A4的IPv4地址映射出的 IPv6地址0: :202. 117.30.27和5100,而目的地址和目的端口号分别为A6的IPv6地址 2880: 5E34:2053: FF: 50AB: 3F50和端口号9999,然后进行转发。
三、 通话结束阶段
正常通话结束后,通话的任何一方都可以向对方发送"再见"(BYE)消息,请求终止会话。 接收方只需回送一个Ack响应,则会话就结束了。这些会话结束阶段进行的消息交互的处理过 程,与前面描述的消息处理过程是类似的。
所不同之处在于,当通话结束后,SIP网关会将会话映射表中此会话对应的会话映射表
项复原,如图5所示。然后SIP网关会将会话建立阶段建立的用于收发语音数据包的NAPT-PT
表项删除(如图10所示)。至此,整个通话过程结束。
实施例2、 IPv6家庭网络中的SIP终端主动发起会话请求
一、会话建立阶段
以SIP终端A6向A4发起呼叫为例,如图2所示,A6首先创建一个INVITE请求。在To 头域中添上被叫方A4的IPv4地址映射出了 IPv6地址0: :202. 117. 30. 27, Request-URI中也 包含同样的地址。在From头域中添上主叫方A6的名字和IPv6地址,即sip: A6@2880:5E34:2053:FF:50AB:3F50。此处应该注意,与一般情况不同,From头域中主叫方的 IPv6地址在通过家庭网关后都会被SIP网关替换成一个相同的IPv4地址。所以为了区分IPv6 家庭网络中不同的SIP终端,From头域中主叫方的名字是不能相同的。也就是说,IPv6家庭 网络中的每一个SIP终端需要起不同的用户名。消息头中Call-ID包含了这个呼叫的标识符, 标识符由一个伪随机串和主叫方A6的IPv6地址生成。
然后A6将此INVITE请求发送给此IPv6家庭网络中的家庭网关。家庭网关通过数据包的 目的端口号5060来为SIP网关识别SIP消息包。当家庭网关收到A6的顶VITE请求时,因 为承载该消息的SIP包的目的端口号为5060而将其转交给SIP网关。
SIP网关收到A6的INVITE请求后,需要完成以下四项工作
第一、SIP网关首先在会话映射表中记录下此顶VITE消息发起方A6的IPv6地址和消息 接收方A4的IPv4地址的映射关系,并填写会话映射表中的内容,如图2所示。
第二、会话映射表建立完成以后,SIP网关需要对承载此INVITE消息的SIP包进行修改。 此例中,对INVITE消息的消息头部而言,需要将To头域中被叫方A4的IPv4地址映射出了 IPv6地址0: :202. 117. 30. 27还原为IPv4地址202. 117. 30. 27, Request-URI中包含的同样 的地址也要进行还原。From头域中A6的IPv6地址更改为家庭网关在IPv4网中的接口地址 202. 117. 30. 15。同时,消息头中Call-ID项中主叫方A6的IPv6地址也同样需要更改为家庭 网关在IPv4网中的接口地址202. 117.30. 15。
对INVITE消息的消息体而言,SDP会话描述的媒体信息部分中的媒体地址也需要更改为 家庭网关在IPv4网中的地址202.117. 30.15。对SDP有效载荷进行的这种修改很可能会变更 SDP有效载荷的长度,因此SIP消息头部中的消息内容长度字段也必须进行相应的修改。之 所以要进行这些更改是因为仅支持IPv4的接收端是无法处理IPv6地址的。
第三、修改完成后,SIP网关将此修改后的INVITE消息转发给处于IPv4网络中的被叫
方,即此例中的SIP终端A4。
第四、最后SIP网关需要构造一个Trying (100)消息,并发送给SIP会话请求的发起端SIP终端A6,以此来告诉发起端A6已将INVITE消息送出,连接正在进行中。
对于收到此事实上来自于A6蛇880: 5E34:2053:FF:50AB: 3F50的INVITE消息的被叫方SIP 终端A4而言,它并不知道呼叫它的对端是一个基于IPv6的SIP终端。它通过分析此INVITE 消息认为呼叫它的是A6Q202. 117.30. 15 (通过消息头中的From字段)。
当被叫方SIP终端A4收到呼叫请求后,它可以接受或拒绝该呼叫,但不管怎样都必须 返回应答。在被叫方A4接受呼叫以前,A4会向A6i202. 117.30. 15发送Ringing (180)消息 告诉会话发起方正在等待被叫方接听,当前正在震铃。它通过收到的INVITE请求来生成To, From, Call-ID等头域的域值,以此来构建Ringing (180)消息。
IPv6的家庭网关收到此Ringing消息后,同样因为承载该消息的SIP包的端口号5060 而将其转交给SIP网关处理。
首先,SIP网关根据收到的Ringing消息头的To头域A6匿.117. 30.15在如图2所示 的SIP网关的会话映射表中进行查找。用查找到的A6的IPv6地址 2880:5E34:2053:FF:50AB:3F50替换Ringing消息头的To头域中的IPv4地址,替换结果为 A6⑥2880:5E34:2053:FF:50AB:3F50。同样,消息头中Call-ID项中的IPv4地址202. 117.30. 15 也需要替换为A6的IPv6地址2880:5E34:2053 :FF:50AB:3F50。而From头域则需要将被叫方 A4的IPv4地址更改为此IPv4地址映射出来的IPv6地址0: :202. 117. 30. 27。然后,SIP网 关将修改后的Ringing消息转发给SIP终端A6。
当被叫方A4接受呼叫时, 一个OK (200)应答消息会发送给被叫方A4所认为的会话主 叫方A6錢202. 117. 30. 15 (实际为A6@2880:5E34:2053:FF:50AB:3F50)。 OK (200)应答消息的 构建方法与前面讨论的Ringing (180)是类似的。
IPv6的家庭网关和SIP网关收到此OK消息后进行的处理与上面述及的对Ringing消息 处理也类似。不同之处在于OK消息中比Ringing消息多包含了用于会话媒体类型协商的消息 体(采用SDP来描述)。SIP网关将来自IPv4对端A4的OK消息中带的SDP会话描述的媒体 信息部分中的媒体地址和地址类型更改为A4的IPv4地址映射出来的IPv6地址,(即0:: IPv4 地址)。同样,对SDP有效载荷进行的这种修改很可能会变更SDP有效载荷的长度,因此SIP 消息头部中的消息内容长度字段也必须要进行相应的修改。然后,SIP网关将修改后的OK消 息转发给SIP终端A6。
主叫方SIP终端A6收到被叫方的OK应答消息后,向被叫方发送ACK证实请求。ACK证
实请求的发送过程与之前所述的主叫方A6发送给被叫方A4的INVITE消息是几乎一样的,在此不再赘述。需要指出的是,SIP网关在转发完ACK证实请求后,会建立一个NAPT-PT映射 表项。映射关系为"A6打算接收语音数据包的IPv6地址和端口号"与"家庭网关的IPv4接 口地址和A6打算接收语音数据包的端口号"。此后A6和A4就可以直接通过NAPT-PT来收发 承载语音的数据包了。当被叫方A4收到ACK消息后,主被叫间的会话建立。至此,SIP建立 会话的任务就完成了。 SIP会话建立完成后,SIP网关会对会话映射表进行更新。将与A6和 A4会话相关的条目中当前会话状态项由"会话建立中"更改为"正常通话中"。
二、 正常通话阶段
正常通话时,双方通过RTP协议(Real-time Transport Protocol,实时传送协议)互发消 息来进行通话。此时承载语音的数据包通过NAPT-PT协议来穿越IPv6和IPv4的边界。在正 常通话时的处理和前面已经论述的IPv4 SIP终端主动发起呼叫的情况类似,具体如下
以SIP终端A6与SIP终端A4的通话为例。如图9所示,当位于IPv6家庭网络中的SIP 终端A6通过RTP协议向它的位于家庭网络外的IPv4对端SIP终端A4发送承载着语音信息 的UDP数据包时,该数据包的源地址和源端口号分别为A6的IPv6地址 2880: 5E34:2053: FF: 50AB: 3F50和9999,而目的地址和目的端口号分别为会话对端A4的IPv4 地址映射出的IPv6地址0: :202. 117. 30. 27和5100。家庭网关的NAPT-PT根据会话建立阶段 建立的映射关系(2880:5E34:2053:FF: 50AB: 3F50端口号9999与202. 117. 30.15端口号9999) 将源地址和源端口号分别更改为202. 117. 30.15和9999,并将目的地址还原为A4的IPv4地 址202. 117.30.27,然后进行转发。
而当位于家庭网络外的IPv4对端SIP终端A4通过RTP协议向位于IPv6家庭网络中的 SIP终端A6发送承载着语音信息的UDP数据包时,该数据包的源地址和源端口号分别为A4 的IPv4地址202. 117.30. 27和5100,目的地址和目的端口号分别202. 117. 30. 15和9999。 在经过家庭网关的NAPT-PT后该数据包的源地址和源端口号分别为A4的IPv4地址映射出的 IPv6地址0: :202.117.30.27禾Q 5100,而目的地址和目的端口号分别为A6的IPv6地址 2880:5E34:2053 :FF:50AB:3F50和端口号9999,然后进行转发。
三、 通话结束阶段
在通话结束阶段的处理和前面己经论述的IPv4 SIP终端主动发起呼叫的情况类似,正常 通话结束后,通话的任何一方都可以向对方发送"再见"(BYE)消息,请求终止会话。接收方 只需回送一个Ack响应,则会话就结束了。这些会话结束阶段进行的消息交互的处理过程,与 前面描述的消息处理过程是类似的。所不同之处在于,当通话结束后,SIP网关会将会话映射表中此会话对应的会话映射表 项复原,如图5所示。然后SIP网关会将会话建立阶段建立的用于收发语音数据包的NAPT-PT 表项删除(如图10所示)。至此,整个通话过程结束。
权利要求
1、一种IPv6 SIP终端与IPv4 SIP终端通讯的方法,其特征在于在IPv4网络内,将IPv6 SIP终端的用户名和IPv6 SIP终端所属的SIP网关在IPv4网络中的IPv4地址,作为IPv6 SIP终端的地址与IPv4 SIP终端通讯;在IPv6网络内,将IPv6 SIP终端的用户名和IPv6地址作为IPv6 SIP终端的地址与IPv4SIP终端通讯。
2、 按照权利要求1所述的IPv6 SIP终端与IPv4 SIP终端通讯的方法,其特征在于IPv6 SIP终端为发送端,IPv4 SIP终端为接收端时,会话建立阶段具体为(21) IPv6 SIP终端向SIP网关发送包括用户名和IPv6地址的SIP消息;(22) SIP网关将收到的SIP消息中的IPv6地址映射为IPv4地址后发送到接收端,并 建立会话映射表。
3、 按照权利要求2所述的IPv6SIP终端与IPv4SIP终端通讯的方法,其特征在于所 述的将收到的SIP消息中的IPv6地址映射为IPv4地址具体为(31) SIP网关在会话映射表中记录下发送端的IPv6地址和接收端的IPv4地址的映射关系;(32) 将目的地址由接收端的IPv4地址映射出的IPv6地址还原为IPv4地址,将源地址 由发送端的IPv6地址映射为SIP网关在IPv4网络中的IPv4地址。
4、 按照权利要求1所述的IPv6 SIP终端与IPv4 SIP终端通讯的方法,其特征在于IPv6 SIP终端为接收端,IPv4 SIP终端为发送端时,会话建立阶段具体为(41) IPv4 SIP终端向SIP网关发送包括用户名和IPv4地址的SIP消息,(42) SIP网关将收到的SIP消息中的IPv4地址映射为IPv6地址后发送到接收端,并 建立会话映射表。
5、 按照权利要求4所述的IPv6 SIP终端与IPv4 SIP终端通讯的方法,其特征在于所 述的将收到的SIP消息中的IPv4地址映射为IPv6地址具体为(51) SIP网关依据接收端的用户名在会话映射表中査找接收端的IPv6地址;(52) 将目的地址由SIP网关在IPv4网络中的IPv4地址,映射为查找到的IPv6地址, 将源地址由发送端的IPv4地址映射为IPv6地址。
6、 按照权利要求2、 3、 4或5所述的IPv6 SIP终端与IPv4 SIP终端通讯的方法,其特 征在于正常通话阶段通过实时传送协议互发消息,IPv6 SIP终端向IPv4 SIP终端发送数据包时,具体为 (Al)发送端将数据包的源地址和源端口号分别填写为发送端的IPv6地址和接收端口 号,将目的地址和目的端口号分别填写为接收端的IPv4地址映射出的IPv6地址和接收端口 号,并将数据包发送到SIP网关;(Bl) SIP网关根据会话建立阶段建立的会话映射表,将源地址和源端口号替换为SIP 网关在IPv4网络中的IPv4地址和SIP网关的接收端口号,将目的地址和目的端口号替换为 接收端的IPv4地址和接收端口号,并发送到接收端;IPv6 SIP终端向IPv4 SIP终端发送数据包时,具体为 (A2)发送端将数据包的源地址和源端口号分别填写为发送端的IPv4地址和接收端口 号,将目的地址和目的端口号分别填写为接收端所属SIP网关在IPv4网络中的IPv4地址和 接收端口号,并将数据包发送到SIP网关;(B2) SIP网关根据会话建立阶段建立的会话映射表,将源地址和源端口号替换为发送 端的IPv4地址映射出的IPv6地址和接收端口号,将目的地址和目的端口号替换为接收端的 IPv6地址和接收端口号,并发送到接收端。
7、 按照权利要求6中的任意一项所述的IPv6 SIP终端与IPv4 SIP终端通讯的方法,其 特征在于所述的会话映射表中记录SIP网关内的每一个IPv6终端的状态信息,该状态信息 包括当前会话状态、会话双方的地址信息以及会话的发起方。
8、 按照权利要求7所述的IPv6终端与IPv4终端通讯的方法,其特征在于在通话结束 后,将会话映射表中对应的映射关系删除,该删除操作至少包括将当前会话状态修改为未 通话状态。
全文摘要
本发明公开了一种IPv6 SIP终端与IPv4 SIP终端通讯的方法,为解决现有技术中多个IPv6终端无法使用同一个IPv4地址通讯的问题而发明。该IPv6 SIP终端与IPv4 SIP终端通讯的方法包括在IPv4网络内,将IPv6 SIP终端的用户名和IPv6 SIP终端所属的SIP网关在IPv4网络中的IPv4地址,作为IPv6 SIP终端的地址与IPv4 SIP终端通讯;在IPv6网络内,将IPv6 SIP终端的用户名和IPv6地址作为IPv6 SIP终端的地址与IPv4 SIP终端通讯。实现了在IPv6家庭网络中使用同一IPv4地址与外部IPv4网络通讯,用于IPv6初期与现有IPv4网络共存的网络部署。
文档编号H04L29/06GK101197820SQ20061016210
公开日2008年6月11日 申请日期2006年12月5日 优先权日2006年12月5日
发明者敏 赖 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1