1.一种实时传输协议RTP媒体流穿越方法,其特征在于,包括:
SIP服务器接收主叫用户代理的SIP注册报文或注册保活报文,并根据所述主叫用户代理的SIP注册报文或注册保活报文获取所述主叫用户代理的公网IP地址和公网端口号,接收被叫用户代理的SIP注册报文或注册保活报文,并根据所述被叫用户代理的SIP注册报文或注册保活报文获取所述被叫用户代理的公网IP地址和公网端口号;
所述SIP服务器根据所述主叫用户代理的公网IP地址和公网端口号向所述主叫用户代理发送报文以等待所述主叫用户代理进行确认,并且根据所述被叫用户代理的公网IP地址和公网端口号向所述被叫用户代理发送报文以等待所述被叫用户代理进行确认;
所述SIP服务器判定所述主叫用户代理为媒体中继类型或媒体代理类型,并且判定所述被叫用户代理为所述媒体中继类型或所述媒体代理类型;
如果所述主叫用户代理以及所述被叫用户代理均为所述媒体代理类型,则所述SIP服务器将来自所述主叫用户代理或所述被叫用户代理中一方的SIP报文中的RTP媒体信息直接透传给另一方,以便于所述主叫用户代理与所述被叫用户代理根据对方的公网IP地址直接传输RTP媒体流,其中,所述RTP媒体信息包括IP地址和端口号;
如果所述主叫用户代理或者所述被叫用户代理中的至少一方为所述媒体中继类型,则将来自所述主叫用户代理或所述被叫用户代理中一方的SIP报文中的RTP媒体信息中的IP地址替换为所述SIP服务器的IP地址,将所述SIP报文中的RTP媒体信息中的端口号替换为所述SIP服务器的端口,然后将替换后的SIP报文转发给所述主叫用户代理或所述被叫用户代理中的另一方,以便于所述主叫用户代理与所述被叫用户代理通过所述SIP服务器转发RTP媒体流。
2.根据权利要求1所述的方法,其特征在于,所述SIP服务器根据所述主叫用户代理的公网IP地址和公网端口号向所述主叫用户代理发送报文以等待所述主叫用户代理进行确认,并且根据所述被叫用户代理的公网IP地址和公网端口号向所述被叫用户代理发送报文以等待所述被叫用户代理进行确认,包括:
所述SIP服务器接收所述主叫用户代理的第一UDP请求报文;
所述SIP服务器根据所述主叫用户代理的公网IP地址和公网端口号向所述主叫用户代理发送第一响应报文以等待所述主叫用户代理对所述第一响应报文进行确认,其中,所述第一响应报文用于对所述主叫用户代理的第一UDP请求报文进行响应;
所述SIP服务器接收所述被叫用户代理的第二UDP请求报文;
所述SIP服务器根据所述被叫用户代理的公网IP地址和公网端口号向所述被叫用户代理发送第二响应报文以等待所述被叫用户代理对所述第二响应报文进行确认,其中,所述第二响应报文用于对所述被叫用户代理的第二UDP请求报文进行响应。
3.根据权利要求1所述的方法,其特征在于,所述SIP服务器判定所述主叫用户代理为媒体中继类型或媒体代理类型,并且判定所述被叫用户代理为所述媒体中继类型或所述媒体代理类型,包括:
在所述SIP服务器向所述主叫用户代理发送所述第一响应报文之后,所述SIP服务器启动第一定时器;
如果在所述第一定时器超时之后,所述SIP服务器仍未接收到所述主叫用户代理针对所述第一响应报文所发送的第一确认报文,则重新根据所述主叫用户代理的公网IP地址和公网端口号向所述主叫用户代理发送所述第一响应报文并重新启动所述第一定时器,如果在所述第一定时器超时之前,所述SIP服务器接收到所述第一确认报文,则将所述主叫用户代理标记为媒体代理类型;
如果在所述第一定时器再次超时之后,所述SIP服务器仍未接收到所述第一确认报文,则将所述主叫用户代理标记为媒体中继类型,如果在所述第一定时器再次超时之前,所述SIP服务器接收到所述第一确认报文,则将所述主叫用户代理标记为媒体代理类型;
在所述SIP服务器向所述被叫用户代理发送所述第二响应报文之后,所述SIP服务器启动第二定时器;
如果在所述第二定时器超时之后,所述SIP服务器仍未接收到所述被叫用户代理针对所述第二响应报文所发送的第二确认报文,则重新根据所述被叫用户代理的公网IP地址和公网端口号向所述被叫用户代理发送所述第二响应报文并重新启动所述第二定时器,如果在所述第二定时器超时之前,所述SIP服务器接收到所述第二确认报文,则将所述被叫用户代理标记为媒体代理类型;
如果在所述第二定时器再次超时之后,所述SIP服务器仍未接收到所述第二确认报文,则将所述被叫用户代理标记为媒体中继类型,如果在所述第二定时器再次超时之前,所述SIP服务器接收到所述第二确认报文,则将所述被叫用户代理标记为媒体代理类型。
4.根据权利要求1所述的方法,其特征在于,所述将来自所述主叫用户代理或所述被叫用户代理中一方的SIP报文中的RTP媒体信息中的IP地址替换为所述SIP服务器的IP地址,将所述SIP报文中的RTP媒体信息中的端口号替换为所述SIP服务器的端口,然后将替换后的SIP报文转发给所述主叫用户代理或所述被叫用户代理中的另一方,包括:
所述SIP服务器为所述主叫用户代理分配第一RTP媒体端点,为所述被叫用户代理分配第二RTP媒体端点,其中,所述第一RTP媒体端点的RTP媒体信息中的IP地址为所述SIP服务器的IP地址,所述第一RTP媒体端点的RTP媒体信息中的端口号为第一空闲端口号,所述第二RTP媒体端点的RTP媒体信息中的IP地址为所述SIP服务器的IP地址,所述第二RTP媒体端点的RTP媒体信息中的端口号为第二空闲端口号;
将来自所述主叫用户代理的INVITE呼叫请求报文中的RTP媒体信息中的IP地址替换为所述SIP服务器的IP地址,将所述INVITE呼叫请求报文中的RTP媒体信息中的端口号替换为所述第一RTP媒体端点的端口号,然后将所述INVITE呼叫请求报文发送给所述被叫用户代理;
将来自所述被叫用户代理的200OK呼叫应答成功报文中的RTP媒体信息中的IP地址替换为所述SIP服务器的IP地址,将所述200OK呼叫应答成功报文中的RTP媒体信息中的端口号替换为所述第二RTP媒体端点的端口号,然后将所述200OK呼叫应答成功报文发送给所述主叫用户代理。
5.一种SIP服务器,其特征在于,包括:
接收单元,用于接收所述主叫用户代理的SIP注册报文或注册保活报文,接收所述被叫用户代理的SIP注册报文或注册保活报文;
获取单元,用于根据所述接收单元接收到的所述主叫用户代理的SIP注册报文或注册保活报文获取所述主叫用户代理的公网IP地址和公网端口号,根据所述接收单元接收到的所述被叫用户代理的SIP注册报文或注册保活报文获取所述被叫用户代理的公网IP地址和公网端口号;
发送单元,用于根据所述获取单元获取的所述主叫用户代理的公网IP地址和公网端口号向所述主叫用户代理发送报文以等待所述主叫用户代理进行确认,并且根据所述获取单元1032获取的所述被叫用户代理的公网IP地址和公网端口号向所述被叫用户代理发送报文以等待所述被叫用户代理进行确认;
判定单元,用于判定所述主叫用户代理为媒体中继类型或媒体代理类型,并且判定所述被叫用户代理为所述媒体中继类型或所述媒体代理类型;
所述发送单元,还用于如果所述判定单元判定所述主叫用户代理以及所述被叫用户代理均为所述媒体代理类型,则将来自所述主叫用户代理或所述被叫用户代理中一方的SIP报文中的RTP媒体信息直接透传给另一方,以便于所述主叫用户代理与所述被叫用户代理根据对方的公网IP地址直接传输RTP媒体流,其中,所述RTP媒体信息包括IP地址和端口号;
替换单元,用于如果所述判定单元判定所述主叫用户代理或者所述被叫用户代理中的至少一方为所述媒体中继类型,则将来自所述主叫用户代理或所述被叫用户代理中一方的SIP报文中的RTP媒体信息中的IP地址替换为所述SIP服务器的IP地址,将所述SIP报文中的RTP媒体信息中的端口号替换为所述SIP服务器的端口;
所述发送单元,还用于将所述替换单元替换后的SIP报文转发给所述主叫用户代理或所述被叫用户代理中的另一方,以便于所述主叫用户代理与所述被叫用户代理通过所述SIP服务器转发RTP媒体流。
6.根据权利要求5所述的SIP服务器,其特征在于,
所述接收单元,还用于接收所述主叫用户代理的第一UDP请求报文;
所述发送单元,具体用于根据所述主叫用户代理的公网IP地址和公网端口号向所述主叫用户代理发送第一响应报文以等待所述主叫用户代理对所述第一响应报文进行确认,其中,所述第一响应报文用于对所述主叫用户代理的第一UDP请求报文进行响应;
所述接收单元,还用于接收所述被叫用户代理的第二UDP请求报文;
所述发送单元,具体用于根据所述被叫用户代理的公网IP地址和公网端口号向所述被叫用户代理发送第二响应报文以等待所述被叫用户代理对所述第二响应报文进行确认,其中,所述第二响应报文用于对所述被叫用户代理的第二UDP请求报文进行响应。
7.根据权利要求5所述的SIP服务器,其特征在于,所述SIP服务器还包括定时器单元,
所述定时器单元,用于在所述发送单元向所述主叫用户代理发送所述第一响应报文之后,启动第一定时器;
所述发送单元,具体用于如果在所述定时器单元启动的所述第一定时器超时之后,所述接收单元仍未接收到所述主叫用户代理针对所述第一响应报文所发送的第一确认报文,则重新根据所述主叫用户代理的公网IP地址和公网端口号向所述主叫用户代理发送所述第一响应报文并重新启动所述第一定时器;
所述判定单元,具体用于如果在所述定时器单元启动的所述第一定时器超时之前,所述接收单元接收到所述第一确认报文,则将所述主叫用户代理标记为媒体代理类型;
所述判定单元,具体用于如果在所述第一定时器再次超时之后,所述接收单元仍未接收到所述第一确认报文,则将所述主叫用户代理标记为媒体中继类型,如果在所述第一定时器再次超时之前,所述接收单元接收到所述第一确认报文,则将所述主叫用户代理标记为媒体代理类型;
所述定时器单元,还用于在所述发送单元向所述被叫用户代理发送所述第二响应报文之后,启动第二定时器;
所述发送单元,具体用于如果在所述定时器单元启动的所述第二定时器超时之后,所述接收单元仍未接收到所述被叫用户代理针对所述第二响应报文所发送的第二确认报文,则重新根据所述被叫用户代理的公网IP地址和公网端口号向所述被叫用户代理发送所述第二响应报文并重新启动所述第二定时器;
所述判定单元,具体用于如果在所述定时器单元启动的所述第二定时器超时之前,所述接收单元接收到所述第二确认报文,则将所述被叫用户代理标记为媒体代理类型;
所述判定单元,具体用于如果在所述第二定时器再次超时之后,所述接收单元仍未接收到所述第二确认报文,则将所述被叫用户代理标记为媒体中继类型,如果在所述第二定时器再次超时之前,所述接收单元接收到所述第二确认报文,则将所述被叫用户代理标记为媒体代理类型。
8.根据权利要求5所述的SIP服务器,其特征在于,所述SIP服务器还包括分配单元,
所述分配单元,用于为所述主叫用户代理分配第一RTP媒体端点,为所述被叫用户代理分配第二RTP媒体端点,其中,所述第一RTP媒体端点的RTP媒体信息中的IP地址为所述SIP服务器的IP地址,所述第一RTP媒体端点的RTP媒体信息中的端口号为第一空闲端口号,所述第二RTP媒体端点的RTP媒体信息中的IP地址为所述SIP服务器的IP地址,所述第二RTP媒体端点的RTP媒体信息中的端口号为第二空闲端口号;
所述替换单元,具体用于将来自所述主叫用户代理的INVITE呼叫请求报文中的RTP媒体信息中的IP地址替换为所述SIP服务器的IP地址,将所述INVITE呼叫请求报文中的RTP媒体信息中的端口号替换为所述分配单元分配的所述第一RTP媒体端点的端口号;
所述发送单元,具体用于将所述替换单元替换后的所述INVITE呼叫请求报文发送给所述被叫用户代理;
所述替换单元,具体用于将来自所述被叫用户代理的200OK呼叫应答成功报文中的RTP媒体信息中的IP地址替换为所述SIP服务器的IP地址,将所述200OK呼叫应答成功报文中的RTP媒体信息中的端口号替换为所述分配单元分配的所述第二RTP媒体端点的端口号;
所述发送单元,具体用于将所述替换单元替换后的所述200OK呼叫应答成功报文发送给所述主叫用户代理。
9.一种SIP通信系统,其特征在于,包括如权利要求5-8中任一项所述的SIP服务器。