Dipole Moment
2005-Mar-09 04:51 UTC
[Asterisk-Users] Should ICMP port unreachable generate a BYE request?
Hi all, I'm researching random call drops on our Asterisk and would like to make sure whether it's something wrong with our VoIP provider or with the Asterisk. I sniffed traffic between Asterisk and our VoIP provider's SIP gateway, and observed that in the middle of the conversation an RTP stream originating from Asterisk gets an ICMP port unreachable from provider's SIP gateway at random times and conversation seems to go on for a while, but after a while a few more port unreachables are observed and Asterisk sends BYE request to both parties. I wonder if it is it normal for Asterisk to send BYE requests to both parties once it gets a port unreach even though noone from the either end has hanged up the call? If yes, then why doesn't it send BYE request on the first unreach it sees? Or is it some tunable parameter that can be set via configuration files? Or should I mail the sniffer dump to my provider and ask them to fix their gateway? Thanks!
Martijn van Oosterhout
2005-Mar-09 05:19 UTC
[Asterisk-Users] Should ICMP port unreachable generate a BYE request?
On Wed, Mar 09, 2005 at 01:51:09PM +0200, Dipole Moment wrote:> I'm researching random call drops on our Asterisk and would like to > make sure whether it's something wrong with our VoIP provider or with > the Asterisk. I sniffed traffic between Asterisk and our VoIP > provider's SIP gateway, and observed that in the middle of the > conversation an RTP stream originating from Asterisk gets an ICMP port > unreachable from provider's SIP gateway at random times and > conversation seems to go on for a while, but after a while a few more > port unreachables are observed and Asterisk sends BYE request to both > parties. > > I wonder if it is it normal for Asterisk to send BYE requests to both > parties once it gets a port unreach even though noone from the either > end has hanged up the call? If yes, then why doesn't it send BYE > request on the first unreach it sees? Or is it some tunable parameter > that can be set via configuration files? Or should I mail the sniffer > dump to my provider and ask them to fix their gateway?You'd have to trace the code to work it out properly. But ICMP packets aren't generally passed to userspace. What's more likely is that the kernel, upon receiving sufficient of these errors, decides the connection is dead and notifies asterisk. Although, with UDP (in Linux anyway) the error can be passed back. Strange problem though, how can only some packets generate Port Unreachable, but not all. Random routing problem? Have a nice day, -- Martijn van Oosterhout Ecomtel Pty Ltd