Page 1 of 1

Problem IPoE (nl_modify: File exists)

Posted: 30 Nov 2020, 12:05
by daniloacr
Hello everyone!

I have a problem with IPoE and I can't solve it.
Whenever there is a mass disconnection (Power outage for example)

customers are unable to authenticate again
in the log it shows

Code: Select all

error: ipoe1771: ipoe: nl_modify: File exists
and to work again I have to restart linux

I did a simulation using VMWARE + DHCDROP and managed to reproduce the problem.

Linux: Debian 9
Kernel: 4.9.0-11-amd64
Accel-PPP: accel-cmd 1.12.0-103-g45896ff
Video: https://www.youtube.com/watch?v=fnMBFLqLm4M
My Config: https://pastebin.com/raw/YQvwPVqx

already tested

Code: Select all

[ipoe]
unit-cache=0
unit-cache=1000
unit-cache=5000

Code: Select all

[common]
check-ip=0
check-ip=1

there's no need to stop the daemon, just let the IPoE session expire the effect is the same


Real production scenario:

Imagine part of the city without electricity for 1 hour.
However, the backbone has a power generator.
the server will NOT shut down.

Many subscribers will be left without internet (without electricity), the Lease-Time (10 minute) will expire and the server will remove these sessions.
When the electric power is restored, the same problem reported above will happen.

would anyone have an idea how to solve this problem?

Re: Problem IPoE (nl_modify: File exists)

Posted: 01 Dec 2020, 09:04
by dimka88
Try to set max-lease-time to 84600, I hope electricity will restore and customers get his old params with worked sessions.

Re: Problem IPoE (nl_modify: File exists)

Posted: 01 Dec 2020, 09:08
by daniloacr
would not be an ideal solution, I need to work with a lower lease-time

Re: Problem IPoE (nl_modify: File exists)

Posted: 01 Dec 2020, 10:47
by daniloacr
I believe that accel-ppp should delete / skip these interfaces in error.
That way the other subscribers would be able to authenticate.

I'm not a C programmer.
but looking at the source the problem seems to happen in this piece of code.
I apologize if I'm talking nonsense

drivers/ipoe/ipoe.c

Code: Select all

static int ipoe_nl_cmd_modify(struct sk_buff *skb, struct genl_info *info)
{
        ...
        ...
        ...
        if (info->attrs[IPOE_ATTR_PEER_ADDR]) {
                peer_addr = nla_get_be32(info->attrs[IPOE_ATTR_PEER_ADDR]);
                //if (peer_addr) {
                //      ses1 = ipoe_lookup(peer_addr);
                //      if (ses1) {
                //              atomic_dec(&ses1->refs);
                //              if (ses1 != ses) {
                //                      ret = -EEXIST;
                //                      goto out_unlock;
                //              }
                //      }
                //}
        ...
        ...
        ...
}

Re: Problem IPoE (nl_modify: File exists)

Posted: 19 Aug 2021, 06:48
by eklmno
Hi ,
it looks like we've got similar behaviour.

debug: ipoe164: ipoe: activate session
debug: mlibnetlink: RTNETLINK answers: File exists
error: ipoe164: ipoe: nl_modify: File exists
debug: ipoe164: terminate
info: ipoe164: ipoe: session finished

Are there any chance to force Accel to delete/skip those fake interfaces without rebooting the server ?

Re: Problem IPoE (nl_modify: File exists)

Posted: 04 Sep 2021, 16:39
by dimka88
Hello @ekimno, need to understand the nature of this issue. Could you grab logs when ipoe164 is earlier finished?

Re: Problem IPoE (nl_modify: File exists)

Posted: 25 Sep 2021, 18:11
by eklmno
Hello,
My colleague has started a new thread at
viewtopic.php?f=13&t=5519
I left some odds and ends there.