Hello Leon -

Your understanding of what Radiator does in this case is incorrect.

If the AuthBy DYNADDRESS clause sees that there is a Framed-IP-Address 
already present in the reply packet, it leaves it alone and does not do any 
address allocation. This is to allow specific user definitions with a fixed 
IP address to take precedence.

>From section 6.42.3 in the Radiator 3.1 reference manual.

MapAttribute

 This optional parameter allows you to specifiy how the results of the 
address allocation are to be placed in the reply. If the yiaddr attribute 
(usually Framed-IP-ADdress) is already set in the reply, then AuthBy 
DYNADDRESS will not allocate an addresss, and will just ACCEPT the request. 
This means that if a user record has a fixed IP address in it, then AuthBy 
DYNADDRESS will not allocate an address for that user.

To say any more, I will need to see the complete configuration file, and the 
relevant SQL database records.

regards

Hugh


On Fri, 31 May 2002 04:31, Leon Oosterwijk wrote:
> Hugh,Mike,
>
> We  switched to using the Radiator's Address Allocator routines. I recently
> discovered what I perceive to be a bug in the mapResult function. I noticed
> that our NAS was getting sporadic occurances of users getting an address
> assigned from our backup pool. This pool is only on the NAS in case the
> Address Allocation Radiator provides fails. When doing research I noticed
> that Radiator does not properly strip out existing Framed-Ip-Address
> attributes when adding it's allocated address to a packet. Concider the
> following:
>
> Radiator 3.0
>
> User: leonppp
> Reply Items:
> Service-Type Framed-User
> Framed-Protocol PPP
> Framed-IP-Address   255.255.255.254
> Framed-IP-Netmask   255.255.255.255
> Framed-Compression Van-Jacobson-TCP-IP
> Framed-MTU   1500
> Ascend-Idle-Limit   1200
> Ascend-PPP-Address    127.0.0.5
> Ascend-Maximum-Channels    1
> Ascend-Maximum-Call-Duration  180
>
> Relevant portion of config:
> <AuthBy GROUP>
>         Identifier IsdnAuth
>         AuthByPolicy ContinueWhileAccept
>         <AuthBy SQL>
>                 # Adjust DBSource, DBUsername, DBAuth to suit your DB
>                 DBSource        dbi:secret:secret
>                 DBUsername      secret
>                 DBAuth          secret
>                 # The SQL SELECT statement to fetch the right data from the
> Mysql DB
>                 AuthSelect select PASSWORD, CHECKATTR, REPLYATTR from
> SUBSCRIBERS where USERNAME='%n'
>                 AuthColumnDef 0, User-Password, check
>                 AuthColumnDef 1, GENERIC, check
>                 AuthColumnDef 2, GENERIC, reply
>                 AddToReply      Ascend-Shared-Profile-Enable =
> Shared-Profile-Yes
>                 AddToReplyIfNotExist Service-Type = Framed, Framed-Protocol
> = PPP,  Pool = 3
>         </AuthBy>
>         <AuthBy GROUP>
>                 AuthByPolicy ContinueAlways
>                 AuthBy IsdnAcctAuth
>                 AuthBy DynAuth
>                 StripFromReply Pool
>         </AuthBy>
> </AuthBy>
>
> RadpwTst:
> [root@host raddb]# radpwtst -user leonppp -password secret  -noacct -trace
> sending Access-Request...
> Packet dump:
> *** Sending to 127.0.0.1 port 1645 ....
> Code:       Access-Request
> Identifier: 153
> Authentic:  1234567890123456
> Attributes:
>         User-Name = "leonppp"
>         Service-Type = Framed-User
>         NAS-IP-Address = 203.63.154.1
>         NAS-Port = 1234
>         Called-Station-Id = "123456789"
>         Calling-Station-Id = "987654321"
>         NAS-Port-Type = Async
>         User-Password =
> "<154><227>6<206><196>9j<129><213>Vn<211><216>}x<153>"
>
> Packet dump:
> *** Received from 127.0.0.1 port 1645 ....
> Code:       Access-Accept
> Identifier: 153
> Authentic:  <173>2<182><179><27><142><245>:<225>5><135><183>N<250>|
> Attributes:
>         Framed-IP-Address = 255.255.255.254
>         Service-Type = Framed
>         Framed-Protocol = PPP
>         Framed-IP-Netmask = 255.255.255.255
>         Framed-Compression = Van-Jacobson-TCP-IP
>         Framed-MTU = 1500
>         Ascend-Idle-Limit = 1200
>         Ascend-PPP-Address = 127.0.0.5
>         Ascend-Maximum-Channels = 1
>         Ascend-Maximum-Call-Duration = 180
>         Ascend-Shared-Profile-Enable = Shared-Profile-Yes
>         Framed-IP-Netmask = 255.255.255.255
>         Framed-IP-Address = 207.65.130.40
>
> OK
>
>
>
> Notice that there are two Framed-IP-Address entries in this packet. Not
> good. Apparently our NAS almost always picks the last one, but sometimes
> (hence the sporadic use of the backup pool on our unit) the first one.
>
> Now. If I make the following change to the AuthDYNADDRESS.pm
>
> #####################################################################
> # Take an allocation result, and map it into redius reply
> # attributes
> sub mapResult
> {
>     my ($self, $result, $p) = @_;
>
>     # Now go through the list of allocation results that
>     # we have to map into radius reply attribtues
>     my $name;
>     foreach $name (sort keys %{$self->{MapAttribute}})
>     {
>         # If there is a definition for this result,
>         # and the corresponding radius reply attribute
>         # is not already set in the reply, and we
>         # actually have a value for it, then set it
>         my $value;
>         if ($self->{MapAttribute}{$name} ne ''
>             && $$result{$name} ne ''
>             && ! $p->get_attr($name))
>         {
> #           $p->add_attr($self->{MapAttribute}{$name}, $$result{$name});
> # Changed by Leon May 2002 to use Change. Change will change existing
> # Attribute, or if not exist, add a new one.
>             $p->change_attr($self->{MapAttribute}{$name}, $$result{$name});
>         }
>     }
> }
>
> And restart radiator:
>
> [root@host raddb]# radpwtst -user leonppp -password secret  -noacct -trace
> sending Access-Request...
> Packet dump:
> *** Sending to 127.0.0.1 port 1645 ....
> Code:       Access-Request
> Identifier: 163
> Authentic:  1234567890123456
> Attributes:
>         User-Name = "leonppp"
>         Service-Type = Framed-User
>         NAS-IP-Address = 203.63.154.1
>         NAS-Port = 1234
>         Called-Station-Id = "123456789"
>         Calling-Station-Id = "987654321"
>         NAS-Port-Type = Async
>         User-Password =
> "<154><227>6<206><196>9j<129><213>Vn<211><216>}x<153>"
>
> Packet dump:
> *** Received from 127.0.0.1 port 1645 ....
> Code:       Access-Accept
> Identifier: 163
> Authentic:  <188><175>D<214><183>k<216><20>^<158>A<147><198><5><226><17>
> Attributes:
>         Framed-IP-Address = 207.65.129.158
>         Service-Type = Framed
>         Framed-Protocol = PPP
>         Framed-IP-Netmask = 255.255.255.255
>         Framed-Compression = Van-Jacobson-TCP-IP
>         Framed-MTU = 1500
>         Ascend-Idle-Limit = 1200
>         Ascend-PPP-Address = 127.0.0.5
>         Ascend-Maximum-Channels = 1
>         Ascend-Maximum-Call-Duration = 180
>         Ascend-Shared-Profile-Enable = Shared-Profile-Yes
>
> OK
>
>
> As you can see there is now no more duplication.
>
> I am not sure whether the change I made merely suppresses the symptoms or
> if it would be a good fix. One thing I should mention is another change we
> made to the AuthDYNADDRESS.pm
>
> #####################################################################
> # Handle a request
> # This function is called for each packet. $p points to a Radius::
> # packet
> # REVISIT:should we fork before handling. There might be long timeouts?
> sub handle_request
> {
>     my ($self, $p, $dummy, $extra_checks) = @_;
>
>     my $type = ref($self);
>     $self->log($main::LOG_DEBUG, "Handling with $type", $p);
>
>     my $user_name = $p->getUserName;
>     if ($p->code eq 'Access-Request')
>     {
>         # REVISIT: first confirm that there is no
>         # address present yet in the reply. yiaddr gives the
>         # name of the radius attribute where the allocated address
>         # would be put if we got that far.
>        return ($main::ACCEPT) # Do nothing
>         # ALTERTED BY LEON 2002 to only ACCEPT if ip Addres is NEW DYN
>             if $p->{rp}->get_attr($self->{MapAttribute}{yiaddr}) ne
> "255.255.255.254" &&
>                 $p->{rp}->get_attr($self->{MapAttribute}{yiaddr}) ne "";
>
> Etc..
>
>
> This change makes sure our statically assigned customer will not get an ip
> address assigned.
>
> Please let me know whether I'm doing something wrong, or if this is really
> undesired behaviour.
>
>
>
> Sincerely,
>
> Leon Oosterwijk
> ISDN-NET Inc.
> (615) 221-4200
> http://www.isdn.net
>
> -----Original Message-----
> From: Riza Kamalie [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, May 29, 2002 3:06 AM
> To: [EMAIL PROTECTED]
> Subject: (RADIATOR) Radiator 3.0 - load testing
>
>
> Hi,
>
> We have just upgraded to radiator 3.0 on a SPARC IIi system using AuthBY
> LDAP (which works fine) and
> started writing accounting both locally and to a oracleDB hosted to a
> seperate server, the problem that
> we have encounted it that the performance has decreased some what when
> writing to an DB and in turn
> causes backlog to the nasses, due to outstanding accounting requests, my
> question how do you guys
> test load issues against your server re: the performance and tuning table
> in the radiator 3 manual?
>
> The way we have do it was using radpwtst -acct_port -noacct to a config
> script on port x which wrote accounting
> to our database. Using the RADAR real time graph we could see the total
> accounting requests it handled was
> done poorly by the DB
>
>   SQL->Oracle (10000 users)13****
>
>
> Any input would be appreciated!
>
> Thanks
>
>
>
> Riza Kamalie
> Systems Administrator
> Engineering
> Worldonline
> A Division of Tiscali (Pty) Ltd
> +27 (21) 940 9702
> +27(0) 82 992 2027
> [EMAIL PROTECTED]
> http://www.worldonline.co.za
>
> If you want your dreams to come true, don't oversleep.
> ===
> Archive at http://www.open.com.au/archives/radiator/
> Announcements on [EMAIL PROTECTED]
> To unsubscribe, email '[EMAIL PROTECTED]' with
> 'unsubscribe radiator' in the body of the message.

-- 
Radiator: the most portable, flexible and configurable RADIUS server
anywhere. Available on *NIX, *BSD, Windows 95/98/2000, NT, MacOS X.
-
Nets: internetwork inventory and management - graphical, extensible,
flexible with hardware, software, platform and database independence.
===
Archive at http://www.open.com.au/archives/radiator/
Announcements on [EMAIL PROTECTED]
To unsubscribe, email '[EMAIL PROTECTED]' with
'unsubscribe radiator' in the body of the message.

Reply via email to