[Xorp-hackers] linux VRRP svn xorp

Li Zhao lizhaous2000 at yahoo.com
Thu Mar 11 10:26:57 PST 2010


I tested configuring virtual IP addr thr "... vrid 100 ip 10.0.0.100". What happened was not what I expected:
1. "show vrrp" did not use "10.0.0.100" as the master IP.
2. I can not ping 10.0.0.100 from a neighbor.

This is different from cisco behavior as far as I can remember. Not only 
virtual IP can be a next-hop, it can be a destination too. So I guess this 
is bug.

I traced Vrrp::add_ip once, but did not have any clue yet. I will try to 
do it again later.

--- On Thu, 3/11/10, Eric S. Johnson <esj at cs.fiu.edu> wrote:

> From: Eric S. Johnson <esj at cs.fiu.edu>
> Subject: [Xorp-hackers] linux VRRP svn xorp
> To: xorp-hackers at icir.org
> Date: Thursday, March 11, 2010, 11:13 AM
> 
> So I am kind feeling silly this morning. Ive been chasing a
> bug 
> that nearly  does not exist.
> 
> On and off for the last two weeks I have been trying to
> debug
> why xorp svn (checked out 20100217, i dont think much has
> changed
> since then) VRRP didn't work.
> 
> The behavior I saw was that when xorp became master for a
> router
> it would correctly change the mac address on the interface,
> but
> yet pinging the virtual IP would not work. I thought VRRP
> was 
> broken and spent some time tracing through the code to
> figure
> out what was going on and going wrong.
> 
> It was not until I was deep in the depths of vrrp/arpd.cc 
> that I realized that the code was *mostly* working. Well,
> all the code I could find was working, but there is one 
> behavior that is far from what I expected.
> 
> I  found that indeed I could ping THROUGH the xorp
> VRRP master 
> router, just not ping the virtual address it self.
> 
> And that seems to be the way the code is designed to
> work?!?
> 
> Vrrp::become_master()
> {
>     _state = MASTER;
>            
>         // my comments
>     _vif.add_mac(_source_mac);   
>     // this changes the mac on the interface
>     send_advertisement();   
>     // start sending vrrp master
> announcements
>     send_arps();   
>         // send gratuitous
> arps
>     setup_timers();   
>         // start timers
>     _arpd.start();   
>         // start an pseudo arp
> deamon
>            
>         // that responds to
> arp requests for the virtual
>            
>         // IP address with the
> virtual mac
> }
> 
> 
> but no where does it seem to add the virtual IP as a IP on
> the interface/vif..
> 
> So a station sending a packet to the an address that is not
> the 
> virtual IP but that has a next hop of the virtual IP will
> make a 
> arp request for the Virtual IP, and get back (from the
> pseudo arp 
> deamon) the virtual MAC and when that IP packet arrives at
> the xorp 
> router, it is processed normally and forwarded.
> 
> But an IP packet with a DESTINATION of the virtual IP
> address will get
> to the xorp router too. But the virtual router does not
> recognize the
> virtual IP as being one of it's IP address and doesn't
> accept it.
> 
> 
> soooo 
> 
> Is/was this just unfinished code?
> 
> Am I missing somewhere the Virtual address would be added
> to the
> VIF and something is broken in the code I can't find?
> 
> Or am I miss-understanding how VRRP should work (though
> EVERY other 
> implementation I have seen (vendor C, J, and open source
> vrrpd) all
> accept IP packets destined for the virtual IP address?)
> 
> 
> 
> Would a correct solution be to have xorp set the virtual IP
> 
> as a secondary IP on that VIF? If so, what would be the
> correct
> way to do this.. IfTreeVif::add_addr method?
> 
> 
> Thoughts?
> 
> linux centos 5 kernel 2.6.18-164.6.1.el5
> E
> 
> _______________________________________________
> Xorp-hackers mailing list
> Xorp-hackers at icir.org
> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers
> 


      



More information about the Xorp-hackers mailing list