Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Not A Bug
-
Affects Version/s: None
-
Fix Version/s: 1.0.7
-
Component/s: freeswitch-core
-
Labels:None
-
Platform:Win32/VS
-
CPU Info:Mobile Pentium II, 300Mhz
-
FreeSWITCH GIT Revision:Past week GIT head
-
Reproduced with GIT HEAD?:yes
Description
I can't make call from device A to B. But I can make call from B to A. The reason seems to be FS, that creates the problem with codec negotiation in the middle.
Let's take a look at two scenarios.
Making call from A to B (failure):
-------------------------------------------------
A sends fo FS:
INVITE XXX SIP/2.0
m=audio 4002 RTP/AVP 102 0 8 9 107 106 105 101
a=rtpmap:102 iLBC/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:9 G722/8000
a=rtpmap:107 speex/32000
a=rtpmap:106 speex/16000
a=rtpmap:105 speex/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
FS sends to B:
INVITE XXX SIP/2.0
m=audio 27962 RTP/AVP 98 99 101 13
a=rtpmap:98 iLBC/8000
a=rtpmap:99 iLBC/8000
a=rtpmap:101 telephone-event/8000
m=audio 27962 RTP/AVP 18 100 102 9 0 8 3 101 13
a=rtpmap:100 G7221/32000
a=rtpmap:102 G7221/16000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
FS to A:
SIP/2.0 183 Session Progress
m=audio 23712 RTP/AVP 102 101
a=rtpmap:102 iLBC/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
B to FS:
SIP/2.0 488 Not Acceptable Here
-------------------------------------------------
FS to B:
ACK sip:205@XX.YY.220.149:11508 SIP/2.0
-------------------------------------------------
[INFO] mod_dptools.c:2690 Originate Failed. Cause: INCOMPATIBLE_DESTINATION
-------------------------------------------------
Call goes to VM.
-------------------------------------------------
Making call from B to A (success):
-------------------------------------------------
B makes new call:
INVITE XXX SIP/2.0
m=audio 16636 RTP/AVP 0 8 18 104 102 103 105 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:104 G726-32/8000
a=rtpmap:102 G726-16/8000
a=rtpmap:103 G726-24/8000
a=rtpmap:105 G726-40/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
FS sends to A:
INVITE XXX SIP/2.0
m=audio 24338 RTP/AVP 0 18 98 99 9 8 3 101 13
a=rtpmap:98 G7221/32000
a=fmtp:98 bitrate=48000
a=rtpmap:99 G7221/16000
a=fmtp:99 bitrate=32000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=rtpmap:100 iLBC/8000
a=fmtp:100 mode=30
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
-------------------------------------------------
FS sends to B:
SIP/2.0 183 Session Progress
m=audio 21532 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
A to FS:
SIP/2.0 200 OK
m=audio 4000 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
FS to A:
ACK XXX SIP/2.0
-------------------------------------------------
FS to B:
SIP/2.0 200 OK
m=audio 28976 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
B to FS:
ACK XXX SIP/2.0
-------------------------------------------------
Successful conversation...
As you can see the problem is created by FS, that insists on using iLIB or G722 codecs, which are not supported by device B. It clearly indicates its list of supported codecs: PCMU, PCMA, G729, etc., some of which are in the list of offered by device A.
Related questions:
1. In the first scenario why FS offers iLBC/8000 twice (98 and 99)?
2. What is the codec G7221/32000, that FS sends to A in the second scenario? I guess it's a typo in the log (and it's actually G722/32000), but it should be checked...
3. How in the second scenario A gets codec PCMU/8000, if it's not even listed in the INVITE request sent from FS to A?
Let's take a look at two scenarios.
Making call from A to B (failure):
-------------------------------------------------
A sends fo FS:
INVITE XXX SIP/2.0
m=audio 4002 RTP/AVP 102 0 8 9 107 106 105 101
a=rtpmap:102 iLBC/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:9 G722/8000
a=rtpmap:107 speex/32000
a=rtpmap:106 speex/16000
a=rtpmap:105 speex/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
FS sends to B:
INVITE XXX SIP/2.0
m=audio 27962 RTP/AVP 98 99 101 13
a=rtpmap:98 iLBC/8000
a=rtpmap:99 iLBC/8000
a=rtpmap:101 telephone-event/8000
m=audio 27962 RTP/AVP 18 100 102 9 0 8 3 101 13
a=rtpmap:100 G7221/32000
a=rtpmap:102 G7221/16000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
FS to A:
SIP/2.0 183 Session Progress
m=audio 23712 RTP/AVP 102 101
a=rtpmap:102 iLBC/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
B to FS:
SIP/2.0 488 Not Acceptable Here
-------------------------------------------------
FS to B:
ACK sip:205@XX.YY.220.149:11508 SIP/2.0
-------------------------------------------------
[INFO] mod_dptools.c:2690 Originate Failed. Cause: INCOMPATIBLE_DESTINATION
-------------------------------------------------
Call goes to VM.
-------------------------------------------------
Making call from B to A (success):
-------------------------------------------------
B makes new call:
INVITE XXX SIP/2.0
m=audio 16636 RTP/AVP 0 8 18 104 102 103 105 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:104 G726-32/8000
a=rtpmap:102 G726-16/8000
a=rtpmap:103 G726-24/8000
a=rtpmap:105 G726-40/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
FS sends to A:
INVITE XXX SIP/2.0
m=audio 24338 RTP/AVP 0 18 98 99 9 8 3 101 13
a=rtpmap:98 G7221/32000
a=fmtp:98 bitrate=48000
a=rtpmap:99 G7221/16000
a=fmtp:99 bitrate=32000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=rtpmap:100 iLBC/8000
a=fmtp:100 mode=30
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
-------------------------------------------------
FS sends to B:
SIP/2.0 183 Session Progress
m=audio 21532 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
A to FS:
SIP/2.0 200 OK
m=audio 4000 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
FS to A:
ACK XXX SIP/2.0
-------------------------------------------------
FS to B:
SIP/2.0 200 OK
m=audio 28976 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
-------------------------------------------------
B to FS:
ACK XXX SIP/2.0
-------------------------------------------------
Successful conversation...
As you can see the problem is created by FS, that insists on using iLIB or G722 codecs, which are not supported by device B. It clearly indicates its list of supported codecs: PCMU, PCMA, G729, etc., some of which are in the list of offered by device A.
Related questions:
1. In the first scenario why FS offers iLBC/8000 twice (98 and 99)?
2. What is the codec G7221/32000, that FS sends to A in the second scenario? I guess it's a typo in the log (and it's actually G722/32000), but it should be checked...
3. How in the second scenario A gets codec PCMU/8000, if it's not even listed in the INVITE request sent from FS to A?
I need your help. Could you please remove IP address of the host mentioned in the issue above.
Thanks!