delete vpp settings interface <ethN> while pppoe-server has sessions on it commits cleanly —
there is no guard against it. But changing under vpp settings restarts vpp.service, and
accel-pppd is restarted as a side effect of that PPPoE
session on the server is down, including sessions on other interfaces that were never touched.
Steps to reproduce
# r2 (server) set vpp settings interface eth3 set service pppoe-server interface eth1 set service pppoe-server interface eth3 set service pppoe-server gateway-address '10.255.0.1' set service pppoe-server client-ip-pool POOL1 range '10.255.0.10-10.255.0.20' set service pppoe-server default-pool 'POOL1' set service pppoe-server authentication mode 'local' set service pppoe-server authentication local-users username rvtest password 'rvtest' set service pppoe-server authentication local-users username rvtest2 password 'rvtest2' commit save
# r1 (client) configure set interfaces pppoe pppoe0 source-interface 'eth1' set interfaces pppoe pppoe0 authentication username 'rvtest' set interfaces pppoe pppoe0 authentication password 'rvtest' commit save vyos@vpp1-r1:~$ show interfaces pppoe Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- pppoe0 10.255.0.10/32 u/u
# r3 (client, VPP-bound eth3) configure set interfaces pppoe pppoe0 source-interface 'eth1' set interfaces pppoe pppoe0 authentication username 'rvtest2' set interfaces pppoe pppoe0 authentication password 'rvtest2' commit save vyos@vpp1-r3:~$ show interfaces pppoe Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- pppoe0 10.255.0.11/32 u/u vyos@vpp1-r3:~$
vyos@vpp1-r2:~$ pgrep -o accel-pppd 38786 vyos@vpp1-r2:~$ show pppoe-server sessions ifname | username | ip | ip6 | ip6-dp | calling-sid | rate-limit | state | uptime | rx-bytes | tx-bytes ----------------+----------+-------------+-----+--------+-------------------+------------+--------+----------+----------+---------- ppp0 | rvtest | 10.255.0.10 | | | 52:54:00:01:01:00 | | active | 00:49:38 | 390 B | 384 B pppoe_session0 | rvtest2 | 10.255.0.11 | | | 52:54:00:03:01:00 | | active | 00:48:21 | 0 B | 0 B vyos@vpp1-r2# delete vpp settings interface eth3 [edit] vyos@vpp1-r2# commit vyos@vpp1-r2# run show pppoe-server sessions ifname | username | ip | ip6 | ip6-dp | calling-sid | rate-limit | state | uptime | rx-bytes | tx-bytes --------+----------+----+-----+--------+-------------+------------+-------+--------+----------+---------- [edit] vyos@vpp1-r2# pgrep -o accel-pppd 41447 [edit] vyos@vpp1-r2# run show pppoe-server sessions ifname | username | ip | ip6 | ip6-dp | calling-sid | rate-limit | state | uptime | rx-bytes | tx-bytes --------+----------+-------------+-----+--------+-------------------+------------+--------+----------+----------+---------- ppp0 | rvtest | 10.255.0.10 | | | 52:54:00:01:01:00 | | active | 00:02:27 | 222 B | 216 B ppp1 | rvtest2 | 10.255.0.11 | | | 52:54:00:03:01:00 | | active | 00:01:24 | 222 B | 216 B
Expected (?)
Either the commit is refused while pppoe-server still depends on the interface, or only the
session actually running on the unbound interface is down.
Actual
accel-pppd restarted immediately (new PID). Both subscriber sessions renegotiated