[Asterisk-Users] iaxtel and jitterbuffer

Scott Laird scott at sigkill.org
Sat Aug 28 07:58:47 MST 2004


On Aug 28, 2004, at 7:39 AM, Rich Adamson wrote:
>
> I do a lot of work with companies throughout the US on network 
> performance
> and we _frequently_ run into routers, switches, servers, etc, that are
> allowed to auto-negotiate their half vs full duplex nic interfaces. 
> About
> 50% of the time, systems will get it wrong as there are no standards as
> to how the negotiation should be done.

No standard?  Huh?  You mean besides 'NWay', which is part of 802.3?  
http://www.scyld.com/NWay.html

I've certainly seen problems, particularly with older Cisco switches 
and routers, but newer hardware seems to be pretty good.  In fact, 
autonegotiation is *required* with GigE; you aren't even allowed to 
disable it according to the specs.  Of course, that's sort of moot, 
because 1000/half isn't even slightly useful due to its 640-byte 
minimum packet size.

At my previous employer, we were having tons of duplex problems.  They 
mostly boiled down to forced duplex problems, where someone would force 
one end of a link, but leave the other end to autonegotiate.  With most 
of Cisco's hardware, forcing 100/full *completely* disables 
autonegotiation.  IMHO, it should still participate in autonegotiation, 
but only advertise the 100/full ability.  Instead, Cisco tells the 
other end "I don't negotiate."  So, if you set one end to 100/full and 
fail to force the other end, then it will try to negotiate, fail, and 
fall back to 100/half, because that's the only reasonable thing to when 
negotiation fails.  At this point, one end is 100/full and the other is 
100/half, and you're about to have trouble.  The really fun thing with 
this sort of link is that it works just fine with low traffic levels--a 
normal ping won't show problems, but it'll break when you actually try 
to use it for anything non-trivial.  Using larger ping packets helps: 
ping -s 10000 totally fails if the duplex is broken anywhere along the 
link.

With newer IOS and CatOS builds, you can get around this by leaving CDP 
enabled; CDP v2 shares duplex information, and it'll log duplex 
mis-matches when both ends of the link use Cisco hardware.  I wrote a 
small CDP listener for Linux boxes and did the same thing, logging 
duplex mis-matches.  With 700 servers over 2 years, the only mismatches 
we ever found were caused by forced 100/full on the switches.

One easy fix that we found, at least for IOS switches, was to set the 
speed to auto but force the duplex.  That apparently leaves NWay 
negotiation running but only advertises full duplex as an option.  
Since nothing *ever* uses NWay to negotiate the speed of the link, this 
has the same result as forcing 100/full, but it fails in the right 
direction if you only force one end of the link.  Of course, knowing 
Cisco, this only applies for every third model of switch running 
even-numbered IOS builds.


Scott




More information about the asterisk-users mailing list