Handing out duplicate IP addresses

Dave dave at optionsdsl.ca
Thu Jan 15 18:28:41 CET 2009


I dont know if this means anything, but Im not using DHCP, Im using
PPPoE. I didnt know FR could even be a dhcp server.

Im just throwing out ideas, but is there a way to not thread the
sqlippool module ?  Let one request at a time for an IP, sure it would
be slower, but for my use would be fine.


Ben Wiechman wrote:
>
> Can’t you do the select and update as part of one transaction?
>
>  
>
> For example with MySQL:
>
> START TRANSACTION;
>
> SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
>
> UPDATE table2 SET summary=@A WHERE type=1;
>
> COMMIT;
>
>  
>
> The transaction may need to be changed to serializable as well. I
> don’t know how the DHCP RFC handles preallocations.
>
>  
>
> You could probably use Repeatable Read level if it is acceptable to
> mark an address as taken when a DHCPOFFER is sent while waiting for a
> DHCPREQUEST from the client, so long as the address if confirmed to be
> free before the DHCPACK is sent, or a DHCPNAK in the case that the
> address was offered to multiple clients.
>
> Ben Wiechman
>
>  
>
>  
>
> *From:*
> freeradius-users-bounces+ben=wisper-wireless.com at lists.freeradius.org
> [mailto:freeradius-users-bounces+ben=wisper-wireless.com at lists.freeradius.org]
> *On Behalf Of *Padam J Singh
> *Sent:* Thursday, January 15, 2009 9:39 AM
> *To:* FreeRadius users mailing list
> *Subject:* Re: Handing out duplicate IP addresses
>
>  
>
> Hello Ivan,
>
> Would adding a mutex around the select-update code in the sqlippool
> module solve this issue?
>
> Padam
>
> tnt at kalik.net <mailto:tnt at kalik.net> wrote:
>
>     The requests all came in at the same time, to the second (among others),
>
>     its like FR took 3 requests and looked at the database at the exact same
>
>     time, saw it was an available IP and all those 3 requests assigned it.
>
>         
>
>  
> That can't be avoided. SELECT (allocate-find) will always work much
> faster than UPDATE (allocate-update).
>  
>   
>
>     My NAS rejects two of the 3 because the IP is assigned,
>
>         
>
>  
> I think that you make a good point here. If the allocate-update query was
> made to fail in the case that the IP address was already issued to
> another thread between allocate-find and allocate-update (by expanding
> it with AND expiry_time IS NULL in WHERE), point of failure will be in
> sqlippool module and not on the NAS. Logic can then perhaps try to issue
> a new IP address (best just once more in order not to create a loop).
> That way issuing same IP address to multiple threads can be handled by
> the sqlippool module.
>  
> Ivan Kalik
> Kalik Informatika ISP
>  
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
>  
>   
>
>
>
> -- 
> PGP Id 9EED2E09
> ------------------------------------------------------------------------
>
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html




More information about the Freeradius-Users mailing list