[c-nsp] Swap hsrp with vrrp in mixed physical/vmware environment?

Phil Mayers p.mayers at imperial.ac.uk
Fri Mar 22 05:57:50 EDT 2013


On 03/21/2013 06:14 PM, David Hubbard wrote:

> I've read that at least on the ipv4 side, many
> Windows servers will not accept the gratuitous arp
> when vrrp is brought up so they'll just sit there
> happily talking to the dead hsrp MAC.  I can't find

That has not been my experience. In fact, quite the opposite - when 
moving from non-HSRP to HSRP, or HSRPv1 to HSRPv2, we've never seen an 
outage except on some really old SunOS boxes, and both procedures rely 
on the grat. arp to update end-hosts.

You will need to sequence it correctly of course, and there will be a 
brief window where the virtual IP doesn't exist, so you'll probably take 
a few seconds outage at minimum.

> much of any info on how they'd deal with the change on
> the ipv6 side.  Not a huge deal either way since
> the Windows stuff is minimal but would like to go
> in knowing what to expect and what needs to be done.
>
> On the linux side, I'm pretty sure it will accept the
> arp and update the ipv4 default gateway mac; at least
> it does when testing MITM attacks.  Would love to
> hear real world experience with this though.  For
> ipv6, I can't find much on what it does if its
> previously learned router's link local address goes
> unreachable, if it will replace the neighbor table
> entry with the new vrrp advertised entry, do a
> solicitation on its own, etc.

v6 is more tricky.

What you'll see is a new RA with the same prefix but a different router 
address. The question is whether IOS will *first* send an RA with 
lifetime=0 to "de-advertise" the HSRP virtual router, than send an RA 
with the VRRP virtual router.

In the past when we've gone from non-HSRP to HSRPv6, this seems to have 
happened. In that case, end-hosts will update their router more or less 
immediately. But converting from one protocol to another might not 
trigger the same behaviours.

I would test it on a dummy SVI if I were you; I don't think you need to 
test with the full gamut of hosts/OS combos, just watch what ICMPv6 
packets the IOS box emits as you do the transition - as long as the HSRP 
router is de-advertised, you should be ok.

One final note: obviously none of this works if the grat. arp or ICMPv6 
packets are missed by a busy host, or just plain dropped. You could 
write a script using scapy to forge the relevant grat. arp / ICMPv6 
packets and send multiple tries - this is a technique I've successfully 
used to de-b0rk vlans after I've had an "accident" with emitting a rogue 
RA during testing...

Broad recipie for sending an RA withdraw is, from my notes:

"""
You need to send an RA with:

Router lifetime=0
A prefix option with preferred lifetime=0 and valid=7200 (you CANNOT 
send valid <7200 or it will be ignored)

$ ./run_scapy
 >>> fix = Ether() / IPv6() / ICMPv6ND_RA(prf='Low', routerlifetime=0) / 
ICMPv6NDOptPrefixInfo(prefix='2001:db8:1::', prefixlen=64, 
validlifetime=7200, preferredlifetime=0)
 >>> sendp(fix, iface='eth0', loop=0)

"""

...obviously spoofing the relevant IPv6 source address too.


More information about the cisco-nsp mailing list