Cisco 7975 8.5.4 Reinvite

Im just setup couple of Cisco 7975s IP Phones running SIP 8.5.4:
Problem:

When I call extension to extension both same network 110.10.0.X/24 all RTP audio goes through Asterisk.
I want IP Phones to communicate directly as they are in the same LAN.
PBX is also in same network (All connected to same switch)

I setup
canreinvite=yes
directrtpsetup=yes
nat=no (No NAT involved)

Version:

Cisco SIP SIP45.8-5-4S
Asterisk 1.8.2-rc1 built by root @ myasterisk on a i686 running Linux on 2010-12-22 17:31:36 UTC
FreePBX 2.0.8

I got the logs:

myasterisk*CLI> sip show settings

Global Settings:

UDP Bindaddress: 0.0.0.0:5060
TCP SIP Bindaddress: Disabled
TLS SIP Bindaddress: Disabled
Videosupport: No
Textsupport: No
Ignore SDP sess. ver.: No
AutoCreate Peer: No
Match Auth Username: No
Allow unknown access: No
Allow subscriptions: Yes
Allow overlap dialing: Yes
Allow promsic. redir: No
Enable call counters: No
SIP domain support: No
Realm. auth: No
Our auth realm asterisk
Use domains as realms: No
Call to non-local dom.: Yes
URI user is phone no: No
Always auth rejects: Yes
Direct RTP setup: Yes
User Agent: Asterisk PBX 1.8.2-rc1
SDP Session Name: Asterisk PBX 1.8.2-rc1
SDP Owner Name: root
Reg. context: (not set)
Regexten on Qualify: No
Caller ID: Unknown
From: Domain:
Record SIP history: Off
Call Events: Off
Auth. Failure Events: Off
T.38 support: Yes
T.38 EC mode: FEC
T.38 MaxDtgrm: -1
SIP realtime: Disabled
Qualify Freq : 60000 ms
Q.850 Reason header: No

Network QoS Settings:

IP ToS SIP: CS3
IP ToS RTP audio: EF
IP ToS RTP video: AF41
IP ToS RTP text: CS0
802.1p CoS SIP: 4
802.1p CoS RTP audio: 5
802.1p CoS RTP video: 6
802.1p CoS RTP text: 5
Jitterbuffer enabled: No
Jitterbuffer forced: No
Jitterbuffer max size: -1
Jitterbuffer resync: -1
Jitterbuffer impl:
Jitterbuffer log: No

Network Settings:

SIP address remapping: Enabled using externhost
Externhost: myasterisk.mydomain.com
externaddr: X.Y.Z.W:0
Externrefresh: 120
Localnet: 110.10.0.0/255.255.255.0

Global Signalling Settings:

Codecs: 0x10c (ulaw|alaw|g729)
Codec Order: ulaw:20,alaw:20,g729:20
Relax DTMF: No
RFC2833 Compensation: No
Symmetric RTP: Yes
Compact SIP headers: No
RTP Keepalive: 0 (Disabled)
RTP Timeout: 30
RTP Hold Timeout: 300
MWI NOTIFY mime type: application/simple-message-summary
DNS SRV lookup: No
Pedantic SIP support: Yes
Reg. min duration 60 secs
Reg. max duration: 3600 secs
Reg. default duration: 120 secs
Outbound reg. timeout: 20 secs
Outbound reg. attempts: 0
Notify ringing state: Yes
Include CID: No
Notify hold state: Yes
SIP Transfer mode: open
Max Call Bitrate: 384 kbps
Auto-Framing: No
Outb. proxy:
Session Timers: Accept
Session Refresher: uas
Session Expires: 1800 secs
Session Min-SE: 90 secs
Timer T1: 500
Timer T1 minimum: 100
Timer B: 32000
No premature media: Yes
Max forwards: 70

Default Settings:

Allowed transports: UDP
Outbound transport: UDP
Context: from-sip-external
Force rport: Yes
DTMF: rfc2833
Qualify: 0
Use ClientCode: No
Progress inband: Never
Language:
MOH Interpret: default
MOH Suggest:
Voice Mail Extension: *97

I collected SIP logs and Asterisk logs if someone wants to take a look.
Thanks

Is this a problem of Asterisk or an issue that’s specific to those phones? Can you create the same effect using a different phone, e.g. a softclient maybe like Xlite or Blink?

Hi Malcolm,
Thanks for replying,
I tried to reproduce behavior using Xlite and SIP communicator.
I get the same results.
RTP is redirected to Asterisk

sip_general_additional.conf

canreinvite=yes
rtpholdtimeout=300
rtpkeepalive=0
checkmwi=10
notifyringing=yes
nat=no
externhost=myasterisk.mydomain.com
externrefresh=120
localnet=110.10.0.0/255.255.255.0

sip_additional.conf

[104]
deny=0.0.0.0/0.0.0.0
disallow=all
secret=asterisk104
dtmfmode=rfc2833
canreinvite=yes
context=from-internal
host=dynamic
type=friend
nat=no
port=5060
qualify=yes
callgroup=
pickupgroup=
allow=g729
allow=ulaw
allow=g722
allow=alaw
dial=SIP/104
mailbox=104@default
permit=0.0.0.0/0.0.0.0
callerid=device <104>
callcounter=yes
faxdetect=no

I read more information about directrtpsetup and canreinvite

voip-info.org/wiki/view/Aste … anreinvite

* If one of the clients is configured with canreinvite=NO, Asterisk will not issue a re-invite at all.
* If the clients use different codecs, Asterisk will not issue a re-invite.
* If the Dial() command contains ''t'', ''T", "h", "H", "w", "W" or "L" (with multiple arguments) Asterisk will not issue a re-invite. 

and found 2 issues:
a. Xlite vs SIP communicator does not announce same codecs during initial REINVITE, only codec in common is Ulaw
b. From my logs when dialing from 103 to 104:

-- Executing [s@macro-dial-one:35] Set("SIP/103-00000000", "__CWIGNORE=") in new stack
-- Executing [s@macro-dial-one:36] Set("SIP/103-00000000", "__KEEPCID=TRUE") in new stack
-- Executing [s@macro-dial-one:37] Dial("SIP/103-00000000", "[b]SIP/104,15,tr[/b]") in new stack

I can see using tr for dialing.

that may explain why careinvite does not work, but in regards directrtpsetup, I dont understand why Asterisk is not acting as B2BUA. This is a simple scenario no NAT all same network.
Do you have any sample configuration?
Should I open a case?

thanks Malcolm

Here is my sip show settings
Direct RTP setup: Yes

maradona*CLI> sip show settings

Global Settings:

UDP Bindaddress: 0.0.0.0:5060
TCP SIP Bindaddress: Disabled
TLS SIP Bindaddress: Disabled
Videosupport: No
Textsupport: No
Ignore SDP sess. ver.: No
AutoCreate Peer: No
Match Auth Username: No
Allow unknown access: No
Allow subscriptions: Yes
Allow overlap dialing: Yes
Allow promsic. redir: No
Enable call counters: No
SIP domain support: No
Realm. auth: No
Our auth realm asterisk
Use domains as realms: No
Call to non-local dom.: Yes
URI user is phone no: No
Always auth rejects: Yes
Direct RTP setup: Yes
User Agent: Asterisk PBX 1.8.2-rc1
SDP Session Name: Asterisk PBX 1.8.2-rc1
SDP Owner Name: root
Reg. context: (not set)
Regexten on Qualify: No
Caller ID: Unknown
From: Domain:
Record SIP history: Off
Call Events: Off
Auth. Failure Events: Off
T.38 support: Yes
T.38 EC mode: FEC
T.38 MaxDtgrm: -1
SIP realtime: Disabled
Qualify Freq : 60000 ms
Q.850 Reason header: No

Network QoS Settings:

IP ToS SIP: CS3
IP ToS RTP audio: EF
IP ToS RTP video: AF41
IP ToS RTP text: CS0
802.1p CoS SIP: 4
802.1p CoS RTP audio: 5
802.1p CoS RTP video: 6
802.1p CoS RTP text: 5
Jitterbuffer enabled: No
Jitterbuffer forced: No
Jitterbuffer max size: -1
Jitterbuffer resync: -1
Jitterbuffer impl:
Jitterbuffer log: No

Network Settings:

SIP address remapping: Enabled using externhost
Externhost: myasterisk.mydomain.com
externaddr: X.Y.Z.W:0
Externrefresh: 120
Localnet: 110.10.0.0/255.255.255.0

Global Signalling Settings:

Codecs: 0x10c (ulaw|alaw|g729)
Codec Order: ulaw:20,alaw:20,g729:20
Relax DTMF: No
RFC2833 Compensation: No
Symmetric RTP: No
Compact SIP headers: No
RTP Keepalive: 0 (Disabled)
RTP Timeout: 30
RTP Hold Timeout: 300
MWI NOTIFY mime type: application/simple-message-summary
DNS SRV lookup: No
Pedantic SIP support: Yes
Reg. min duration 60 secs
Reg. max duration: 3600 secs
Reg. default duration: 120 secs
Outbound reg. timeout: 20 secs
Outbound reg. attempts: 0
Notify ringing state: Yes
Include CID: No
Notify hold state: Yes
SIP Transfer mode: open
Max Call Bitrate: 384 kbps
Auto-Framing: No
Outb. proxy:
Session Timers: Accept
Session Refresher: uas
Session Expires: 1800 secs
Session Min-SE: 90 secs
Timer T1: 500
Timer T1 minimum: 100
Timer B: 32000
No premature media: Yes
Max forwards: 70

Default Settings:

Allowed transports: UDP
Outbound transport: UDP
Context: from-sip-external
Force rport: No
DTMF: rfc2833
Qualify: 0
Use ClientCode: No
Progress inband: Never
Language:
MOH Interpret: default
MOH Suggest:
Voice Mail Extension: *97

If your dial string includes any of those parameters “Dial(“SIP/103-00000000”, “SIP/104,15,tr”)” then a case should not be opened, no.

Take them out and try again.

Cheers.

As additional information, “t” requires Asterisk to monitor the DTMF stream for the transfer initiation digit. It cannot do that unless the RTP stream is flowing through it. That’s why it is incompatible with external bridging.

You guys rock!!!
I remove T, only left r and calls are working fine now!
Thanks for your help