Hi,

You could very likely mitigate this with:

sysctl -w net.ipv4.ip_nonlocal_bind=1

K.

On 7 January 2020 21:45:43 CET, Ben Tremblay <b...@tremblay.dev> wrote:
>Hi all,
>
>I have encountered a problem with how BIRD opens the listening socket
>for strict bind BGP.
>
>In particular, BIRD sometimes tries to open the listening socket for
>the protocol when the configured local IP is not yet present on the
>interface. It seems that BIRD will try to bind the BGP socket to the
>configured IP if any address exists on the protocol interface that can
>be used to reach the neighbor. Let me give an example to clarify.
>
>I have a minimal reproducible example with the following BGP
>configuration:
>
>    router id 192.168.0.1;
>
>    protocol device {
>        scan time 10;
>    }
>
>    protocol bgp bgp_01 {
>            ipv4 {
>                    import all;
>                    export all;
>            };
>            debug all;
>            local 192.168.0.1 port 179 as 1;
>            neighbor 192.168.0.2 port 179 as 1;
>            interface "host1";
>            direct;
>            strict bind yes;
>    }
>
>Given this configuration, I can reproduce the problem behaviour by
>starting the protocol with no addressing on the host1 interface and
>then adding an address which includes the neighbor IP in its subnet,
>e.g. 192.168.0.3/24. Once this address/route is added, BIRD logs the
>following:
>
>    Jan 07 12:09:31 router03 bird[57497]: bgp_01: Neighbor ready
>Jan 07 12:09:31 router03 bird[57497]: bgp_01: Socket error: bind:
>Cannot assign requested address
>Jan 07 12:09:31 router03 bird[57497]: bgp_01: Cannot open listening
>socket
>
>And the protocol enters an error state:
>
>    BIRD 2.0.6 ready.
>    Name       Proto      Table      State  Since         Info
>    device1    Device     ---        up     11:55:51.049
>bgp_01     BGP        ---        down   12:09:31.264  Error: No
>listening socket
>
>The reason this error is so problematic for me is that the protocol
>cannot recover from this state without administrative intervention
>(e.g. configuring bird or restarting the protocol).
>
>So, I have two questions:
>
>    1. Is this correct behaviour?
>2. Can I configure BIRD so that my protocol is able to recover after
>suffering a socket error like this?
>
>I should also mention I can actually observe this socket error occur
>when adding the 'correct' address to the protocol interface, but only
>in the context of a larger application and only some of the time.
>
>Thanks,
>Ben

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Reply via email to