Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Jan 2009 20:08:30 +0000
From:      Paul Thornton <prt@prt.org>
To:        freebsd-net@freebsd.org
Subject:   pppoed problem with reconnections
Message-ID:  <49723ABE.6010409@prt.org>

next in thread | raw e-mail | index | archive | help
Hi folks,

I am currently doing some lab testing with 6.3-release and a pppoe setup 
where each user has their own VLAN.  On the termination box have an em 
interface with about 200 VLANs configured on it, and have a ppp.conf 
looking like this:

default:
  set log Chat Command Phase
  enable pap
  enable chap
  allow mode direct
  set mru 1462
  set mtu 1462
  set timeout 0
  enable lqr
  accept dns
  set dns 192.168.1.1 192.168.1.2
  set radius /etc/ppp/radius.conf
  set ifaddr 192.168.254.254/32

cv1001e:
  set device PPPoE:vlan1001:cv1001

cv1002e:
  set device PPPoE:vlan1002:cv1002

cv1003e:
  set device PPPoE:vlan1003:cv1003

cv1004e:
  set device PPPoE:vlan1004:cv1004

(and so on for several pages)


There are multiple pppoed processes running, one for each VLAN (this 
might seem wasteful but there are other reasons for doing it this way).

All user authentication and IP address assignment is handled by the 
radius server, and each user ID has a static IP address.

The problem I'm seeing is as follows:
- PPPoE connection comes in, is authenticated, and a ppp process is 
exec()ed by pppoed.
- This connection has the user's IP address, say 192.168.254.1.
- Everything works as expected.  This is a Good Thing.
- The PPPoE connection is then not disconnected cleanly (say network 
cable pulled out, or machine reboots, etc)
- Back on the termination box, there is still a ppp process running 
using that address.
- When you try and reconnect as the original user, it fails because the 
address cannot be assigned (already in use).  Things then stay like this 
for ever until I kill the ppp process that was connected with the pppoed 
running on that VLAN.

I don't want to set a timeout as I want these sessions to be always on. 
  Is there any way to configure pppoed to kill the old ppp process 
before trying to launch the new one, so the IP address is released?

I guess I'm asking the reverse of the age old "how do I deny multiple 
logins" question - how do I allow it, but have the new one boot the old 
one off?

Thanks,

Paul.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49723ABE.6010409>