Summary:ASTERISK-01845: MGCP channel sends RQNT, CRCX commands out of order
Reporter:vladl (vladl)Labels:
Date Opened:2004-06-16 18:25:50Date Closed:2011-06-07 14:10:11
Versions:Frequency of
Environment:Attachments:( 0) out_of_sequence.txt
Description:MGCP channel sends RQNT, CRCX commands out of order while call DG-104S.


D-Link DG-104S while being called by Asterisk is going nuts every other call if located distantly, like 150ms away from Asterisk, while in the same subnet works just fine (~1ms away).

Here is what I could find on internet regarding MGCP call flow:

I believe that the first command sent by Asterisk to called DG-104S should be RQNT (not CRCX), then once received OK, send CRCX and wait for OK and so on.

I also checked in source code itself and found out that function "start_rtp" (CRCX) always gets called earlier than "transmit_notify_request_with_callerid" (RQNT).

I am attaching log from my DG-104S. IP addreses are scrambled.
Comments:By: Mark Spencer (markster) 2004-06-16 20:48:17

When we were working on this, the D-link gateway (not the phone) wouldn't send callerid unless there was an RTP stream already.  Is there anything within the MGCP specification that makes you think this is actually a bug in Asterisk somehow?

By: vladl (vladl) 2004-06-16 23:07:49

Please take a look at the bottom of page 4 of the the web-link I included in the original post. It says that RQNT goes in front of CRCX, as well as DLCX goes before final RQNT. Also each command requires 200 OK message.

The file attached includes a message: "000005680 tcid 0. no request events??"
Lot's of times distant DG-104S stops logging/processing any other request from Asterisk exactly after this command. But it never happens with local DG-104S.

I believe the best way would be to try DG-104S in debug mode with any other call manager in order figure out the right sequence.

By: Mark Spencer (markster) 2004-06-16 23:58:05

That's just a call flow, i'm talking about in the specification.  Where in the MGCP spec does it say we have to send an RQNT before a CRCX?

By: vladl (vladl) 2004-06-17 19:31:37

Ok, I found one more document at http://www.zvon.org/tmRFC/RFC3435/Output/chapter17.html, which also says that RQNT goes before CRCX and after DLCX, but it still does not say that it MUST to. It also does not say that each command MUST be acknowleged by "200 OK", it just shows how it works.

Sorry, if it is not a spec again.

BTW, I asked a question about command sequence at dlink VOIP forum. Still no answers.

By: Mark Spencer (markster) 2004-06-18 00:09:00

Again, that's just example call flows.  The RFC for MGCP can be found at http://www.faqs.org/rfcs/rfc2705.html so if you can find a reference there that says you have to send RQNT before CRCX then that's great, otherwise, we're not doing anything wrong.