SIP SDP重整

时间:2016-03-18 11:18:03

标签: java sip sdp

我试图在媒体服务器(Kurento)和SIP客户端之间建立呼叫。 SIP堆栈已经在我的Java应用程序中实现,但是我遇到了一些关于被调用者收到的SDP信息的问题。

这是我的Java应用程序通过SIP服务器发送的邀请:

INVITE sip:+351988000011@xxx.xxx.com SIP/2.0
Call-ID: 065b4a789be1a70a37706080c18b1866@172.18.2.22
CSeq: 1 INVITE
From: <sip:+351988000010@xxx.xxx.com>;tag=e648cda1
To: <sip:+351988000011@xxx.xxx.com>
Via: SIP/2.0/TCP 172.18.2.22:5060;rport;branch=z9hG4bK-383538-eb3a39cdd1534e4a2344dd3f17b19b1c
Max-Forwards: 70
Content-Type: application/sdp
Contact: <sip:+351988000010@172.18.2.22:5060;transport=tcp;rinstance=d1e3c1bedd39b70e>
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, MESSAGE
Content-Length: 679

v=0
o=- 3667284021 3667284021 IN IP4 xx.xx.xx.xx (this is the media server IP)
s=Kurento Media Server
c=IN IP4 xx.xx.xx.xx
(...)

但被叫方收到的邀请消息是:

INVITE sip:+351988000011@172.18.2.22:55360;rinstance=2a5c7f48406d95dd;transport=tcp SIP/2.0
Max-Forwards: 69
Content-Length: 679
To: <sip:+351988000011@172.18.2.22:55360;rinstance=2a5c7f48406d95dd>
Contact: <sip:10.39.40.114:5065;transport=tcp;fid=server_1>
Cseq: 1 INVITE
Via: SIP/2.0/TCP 10.39.40.114:5065;branch=z9hG4bKdaacbc1f7b6f84534d8abb46bec988577b27
Content-Type: application/sdp
Call-Id: 10.39.40.114_261_5716106364191099203
From: <sip:+351988000010@xxx.xxx.com>;tag=ilxjbmm2-sa

v=0
o=- 3667284021 3667284021 IN IP4 10.39.40.114 (internal network ip)
s=Kurento Media Server
c=IN IP4 10.39.40.114
t=0 0
(...)

问题是SDP数据包中的IP4 IP不是媒体服务器的公共IP(媒体服务器不在内部网络中,可通过互联网访问)。

如何在到达收件人之前确保SDP数据包中的媒体服务器的IP没有更改?

1 个答案:

答案 0 :(得分:0)

这可能是由两个原因造成的:

  • 未正确配置媒体服务器的外部IP(因此它正在使用它的内部LAN IP)
  • 媒体实际上没有路由媒体服务器(您在SDP中看到对等IP)