Sounds good. i'll check out that module. What I was trying to do is log what I call a 'checkpoint' for all online sessions for the purpose of calculating monthly bandwidth usage. if a session starts in one month, but logs out in a different month, you can't calculate the monthly usage accurately. I wanted to log a checkpoint entry containing the usage on the 1st of every month for each session. with that, usage can be subtracted to find the usage of that month.
So, i ended up using 'Alive' packets to accomplish this. Seems like kind of a hack, but it works pretty good. <Client ...> ... # for a 40 minute windows on the 1st of every month, set Acct-Status-Type = checkpoint ClientHook sub { my $req = ${$_[0]}; \ my $dHM = &Radius::Util::format_special("%d,%H,%M"); my( $d, $H, $M ) = ( split(/,/,$dHM) )[0,1,2]; if( $d == 1 && $H == 0 && $M <= 40 && $req->get_attr('Acct-Status-Type') eq 'Alive' ) { &main::log($main::LOG_WARNING, "ClientHook: 1st of the month. configuring Alive packet as a checkpoint."); $req->change_attr('Acct-Status-Type','checkpoint'); } ... </Client> And then later, in an AuthBy: <AuthBy SQL> ... # for Acct-Status-Type = checkpoint HandleAcctStatusTypes checkpoint AcctSQLStatement INSERT INTO some_table ( sess_id, timestamp, upload, download, ..... ) \ VALUES ( '%{Acct-Session-Id}', %b, ... ) \ ON DUPLICATE KEY UPDATE (x=y,xx=yy, ....) ... </AuthBy> Michael On 11-01-05 08:43 PM, Kiernan McColl wrote: > You could use radiator's Radius::Radius perl module from within your own perl > script. That way you could fork if a single thread isn't sending them fast > enough for your needs. > I believe there's an example in the goodies directory. > > -----Original Message----- > From: radiator-boun...@open.com.au [mailto:radiator-boun...@open.com.au] On > Behalf Of Bjoern A. Zeeb > Sent: Thursday, January 06, 2011 5:37 AM > To: Michael > Cc: radiator@open.com.au list > Subject: Re: [RADIATOR] radpwtst - sending multiple packets > > On Wed, 5 Jan 2011, Michael wrote: > > Hi, > >> I'm trying to figure out the best way to send multiple radius packets to >> a server. It seems that executing radpwtst once for each individual >> packet is pretty slow. I assume it is slow since it has to compile, >> parse the dictionary, and do whatever else radpwtst has to do each time >> it is run. I'm wondering if there is a way to have radpwtst run once, >> and send/receive multiple packets. >> >> I see there is a -rawfileseq option that appears to do this, but i don't >> see this as being a documented option in the manual. How do you >> generate raw packets to build a raw file? >> >> Is there any other ways of sending/receiving radius packets to a server? > > Depends on what you really want to accomplish. Shell loops of > radpwtst have often been suggested in the past; I found them painful > to script though. There is a problem of deltaT (rtt) as well, so you need > parallel radpwtst to actually get to speed and with that you need to > make sure to not send duplicates, yadda yadda yadda. It's ok if you > want to check a couple of hundred requests. > > For benchmarking and pushing servers in the multiple thousands of > reqs/s you probably want something more sophisticated but perl and > Radiator have proven to be able to do that fairly well, even on a > desktop machine;) > > /bz > _______________________________________________ radiator mailing list radiator@open.com.au http://www.open.com.au/mailman/listinfo/radiator