Hello Kings -
We can add HSRP and GLBP as 2 more that do NOT do the opcode for a request either.
I spent a few minutes on GNS with wireshark, and could not get it to do it.
I followed the link you posted and read this:
"If one is trying to write software for moving IP addresses around that works with all routers, switches and IP stacks, it is best to send both the request and the reply. These are documented by RFC 2002 and RFC 826."
It seems Cisco only implemented the gratuitous Reply part of it.
Just wanted to give an update on my findings:
Windows Gratuitous ARP uses ARP Request while Cisco uses ARP Reply.
Windows sends a Gratuitous ARP with opcode 1 (ARP request). If there is any other device using the same IP, it sends ARP Reply (OPcode 2) with it's MAC address. Thus the Windows comes to know that the same IP address is being used.
It seems that the goal of Cisco and the goal of Windows is actually different. Windows is trying to determine if the IP address is in use with a request. Cisco is trying to update arp tables only. I agree with Keith said and that it seems prudent to send both. However, the arp table should be updated with simply a request alone. Additionally, the request will allow for duplicate IP detection. I guess Cisco devices assume that the administrator is responsible for proper IP addressing. In any case, thanks for posting your observations.
Google led me here when writing a blog post about Gratuitous ARPs.
I came into something weird / new recently called ARP Probe (RFC 5227) and have documented it down and hope will be useful for someone out there. Thanks.