On 08/10/13 12:09, Vladislav Grishenko wrote:
From: Simon Kelley
Sent: Tuesday, October 08, 2013 4:20 PM
On 06/10/13 11:32, Vladislav Grishenko wrote:
Hi, RFC4861 says:

     A router might want to send Router Advertisements without
advertising
     itself as a default router.  For instance, a router might advertise
     prefixes for stateless address autoconfiguration while not wishing
to
     forward packets.  Such a router sets the Router Lifetime field in
     outgoing advertisements to zero.

is it possible to tell dnsmasq not to announce itself as router?
So , yes, it's theoretically possible.

That's good information, thanks. In answer to the next question, no, it's
not
possible to configure dnsmasq to send Router Lifetime == 0.

The lifetime, in dhcp-range is used to calculate the lifetimes for
prefixes, no
the router lifetime. In fact the router lifetime is always advertised as
1800
seconds, I think.

Since this is a per-broadcast domain thing, and not per prefix thing, it
needs
to be associated with an interface.

Simplest would be

no-router-interface=<interface>[,<interface>,....]

to set the interfaces that get router lifetime of zero.

More complex would be to allow explict setting of the router lifetime per
interface, that would have to be linked to the RA frequency: you wouldn't
want a router expiring before it could be re-advertised.


No-router-interface is simplest, and adds more option to control RA.
Currently we have already:
--dhcp-range=...ra-only|slaac|ra-names...
--enable-ra
--force-fast-ra

What if to logically split options to dhcp*-related and to slaac-related?
--dhcp-range=
Sets only DHCP range/RA prefix parameters (including
lease/prefix/rdnss/domain lifetimes), but not RA timeouts

--enable-ra=<interface>[,<interface>,...][,AdvDefaultLifetime][,MinRtrAdvInt
erval,MaxRtrAdvInterval]
Sets only RA timouts, if params absent - use defaults, 600 as max, 1/3*600
as min.
With this, both min&  max can be configured,
As per RFC,
        max should be in range 4-1800 secodns, default 600
        min should be in range 3-3/4*max, default 1/3*max, if max>=9,
otherwise equal to max

With this approach, --no-router-interface will be alias of
--enable-ra=interface,0
And --force-fast-ra will be an alias of --enable-ra=interface,1800,5,20

Also, current code uses 600 as max, and 3/4*max as min ra intervals, what
fits RFC, bit, guessб isn't optimal, too big min delay.
As for startup advertisements and force-fast-ra, interval is 5-20, but can
be limited to range MIN_DELAY_BETWEEN_RAS-MAX_INITIAL_RTR_ADVERT_INTERVAL, 3
and 16 respectively as RFC suggests
Since RA can be very frequent, is it ever worth to log with LOG_INFO level
every unsolicited RTR-ADVERT? It just floods syslog and has no other meaning
in my opinion.

Best Regards, Vladislav Grishenko




OK, I just committed my take on this, which is --ra-param option, and removed --force-fast-ra


 --ra-param=<interface>,[high|low],[[<ra-interval>],<router
       lifetime>]
              Set non-default values for router advertisements  sent
              via  an  interface.  The priority field for the router
              may be altered from the  default  of  medium  with  eg
              --ra-param=eth0,high.   The  interval  between  router
              advertisements may be  set  (in  seconds)  with  --ra-
              param=eth0,60.   The  lifetime  of  the  route  may be
              changed or set to  zero,  which  allows  a  router  to
              advertise  prefixes but not a route via itself.  --ra-
              parm=eth0,0,0 (A value of zero for the interval  means
              the default value.) All three parameters may be set at
              once.  --ra-param=low,60,1200 The interface field  may
              include a wildcard.



I even added control of router priority as a bonus!


Cheers,

Simon.


_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss

Reply via email to