[lvs-users] Invalid operation. Possibly wrong module version, address not unicast, ...

Simon Horman horms at verge.net.au
Thu Jan 14 12:15:23 GMT 2010


On Thu, Jan 14, 2010 at 11:43:13AM +0000, Nigel Kukard wrote:
> 
> >>> Apon upgrading to 2.6.29.6 from 2.6.22 and recompiling ipvsadm 1.25 to
> >>> get ipv6 support I'm getting the following error:
> >>>
> >>> Invalid operation.  Possibly wrong module version, address not unicast, ...
> >>>
> >>> when running ...
> >>>
> >>> ipvsadm -ln -t SERVICE_HERE
> >>>
> >>> There is absolutely nothing else that changed apart from the kernel and
> >>> recompile of 1.25.
> >>>
> >>> Everything seems to work fine,  ipvsadm -ln  works fine, setting up
> >>> services works fine as does all functionality except the above.
> >>>
> >>> Can anyone shed some light?
> >>>     
> >>>       
> >> Hi Nigel,
> >>
> >> I'm not having any luck reproducing this problem.
> >> Is sane output produced when you run "ipvsadm -ln" ?
> >> Could you be more specific about what SERVICE_HERE is,
> >> and if it includes a host name if it resolves to an ipv4
> >> or ipv6 address, or both?
> >>
> >> Also, is the 2.6.29.6 vanilla, or has it had some patches added?
> >>     
> > 2.6.29.6 vanilla
> >
> > The problem above was due to some CFLAGS being set in the environment,
> > namely  "-O2 --march=pentium-mmx". Without the env being set, there are
> > no more errors. I did a total rm -rf sources and recompile.
> >
> > Which brings me to another problem now... my ipvsadm -ln is not
> > displaying the current number of connections. I've copied the same
> > binary over to 2.6.29.5 and its working. Using the binary on 2.6.29.6
> > seems to just give zero's. Also statement in the original post was
> > incorrect, -ln did work, but also didn't display the number of connections.
> >
> > # ipvsadm -v
> > ipvsadm v1.25 2008/5/15 (compiled with popt and IPVS v1.2.1)
> >
> > # ipvsadm -ln -t a.b.c.d:25
> > Prot LocalAddress:Port Scheduler Flags
> >   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
> > TCP  a.b.c.d:25 wlc
> >   -> 10.0.200.131:25              Masq    240    0          75       
> >   -> 10.0.200.141:25              Masq    239    0          69       
> >   -> 10.0.200.151:25              Masq    238    0          69       
> >   -> 10.0.200.161:25              Masq    239    0          67
> >
> > # ipvsadm -ln -t a.b.c.d:25 --stats
> > Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes
> > OutBytes
> >   -> RemoteAddress:Port
> > TCP  a.b.c.d:25                 1516    37220    32114 31690896  1836300
> >   -> 10.0.200.131:25                   404    13002    10258 10433390  
> > 556410
> >   -> 10.0.200.141:25                   360     7119     6485  5986697  
> > 392303
> >   -> 10.0.200.151:25                   390     9374     8454  8919481  
> > 485851
> >   -> 10.0.200.161:25                   362     7726     6918  6351400  
> > 401884
> >
> > # ipvsadm -ln -t a.b.c.d:25 --rate
> > Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS  
> > OutBPS
> >   -> RemoteAddress:Port
> > TCP  a.b.c.d:25                    6       96       92    69714     5619
> >   -> 10.0.200.131:25                     1       14       16    
> > 3177     1108
> >   -> 10.0.200.141:25                     2       38       32   
> > 30077     1911
> >   -> 10.0.200.151:25                     1       21       21   
> > 14418     1274
> >   -> 10.0.200.161:25                     1       24       23   
> > 22041     1325
> >
> > # ipvsadm -ln -c | grep ESTABLISHED | wc -l   
> > 65
> >   
> 
> Ok ... I found the problem.
> 
> * My scripts overrode CFLAGS= which is why it worked before, -D for NL
> was being forcefully removed.
> * I fixed this a few weeks ago, when upgrading .. same time I upgraded
> my kernel, appears that libnl is now used.
> * Below ...
> 
> make HAVE_NL=0 POPT_LIB="-lpopt"   <= that works fine, I get the correct
> listing below...
> TCP  a.b.c.d:25 wlc
>   -> 10.0.200.131:25              Masq    238    14         47       
>   -> 10.0.200.141:25              Masq    241    14         36       
>   -> 10.0.200.151:25              Masq    242    10         109      
>   -> 10.0.200.161:25              Masq    242    13         90 
> 
> make POPT_LIB="-lpopt" <= that gives wrong details for ActiveConn, below ...
> TCP  a.b.c.d:25 wlc
>   -> 10.0.200.131:25              Masq    240    0          31       
>   -> 10.0.200.141:25              Masq    240    0          34       
>   -> 10.0.200.151:25              Masq    241    0          94       
>   -> 10.0.200.161:25              Masq    238    0          87       
> 
> Same results on all kernel versions & servers I've tried.
> 
> My problem is that using HAVE_NL=0 seems not to work with v6 support...
> /tmp/ipvsadm.no-nl -A -t [fc00::10]:25 -s rr
> Operation not supported with specified address family

That bit is expected, the NL support was added specifically
because the non-NL support couldn't be expanded to handle ipv6.
So as you need ipv6 you also need NL. And curiously that seems
to result in the connection count being bogus.

Would it be possible for you to test this against a newer kernel - say
2.6.32 or 2.6.33-rc4. It would be good to know if the problem is
still present.

On an unrelated note, I'm going to be away from my desk attending
Linux.Conf.Au from now until the 25th. Apologies in advance for any delays
that may cause.





More information about the lvs-users mailing list