Any ideas on the below?

Alex

On 8 Aug 2014, at 20:05, Alex Bligh <[email protected]> wrote:

> When I start bird using 1.4.0-1 (Ubuntu Trusty) I see the error:
> 
> warnings.log:Aug  8 13:47:03 node-10-157-128-41 bird: /etc/bird/bird.conf, 
> line 62: Multihop BGP cannot use direct gateway mode
> 
> This error did not occur on 1.3.4-1 with the same config on Ubuntu Precise.
> 
> The config I am using is pasted below, as is the output of 'ip addr show'.
> 
> Line 62 of the config is the closing bracket of a BGP protocol definition. 
> The neighbour statement is on line 29:
> neighbor 10.157.192.1 as 65000
> 
> You will note that interface evrr-000000 has IP address 10.157.192.41/20, and 
> the peer is IP address 10.157.192.1. This should thus not be a multihop 
> session. The output of 'ip route show' (also below) confirms this.
> 
> It is an iBGP session (in that both ends have the same address) but I am 
> deliberately hoping to use gateway direct, i.e. want to put the advertised 
> next hop straight into the RIB without doing a recursive lookup. Specifically 
> if something else on the same /20 gets advertised as a next hop, I still want 
> to send the traffic to the advertising router.
> 
> The documentation says:
> 
>> For received routes, their gw (immediate next hop) attribute is computed 
>> from received bgp_next_hopattribute. This option specifies how it is 
>> computed. Direct mode means that the IP address frombgp_next_hop is used if 
>> it is directly reachable, otherwise the neighbor IP address is used. 
>> Recursive mode means that the gateway is computed by an IGP routing table 
>> lookup for the IP address from bgp_next_hop. Recursive mode is the behavior 
>> specified by the BGP standard. Direct mode is simpler, does not require any 
>> routes in a routing table, and was used in older versions of BIRD, but does 
>> not handle well nontrivial iBGP setups and multihop. Recursive mode is 
>> incompatible with sorted tables. Default: direct for direct sessions, 
>> recursive for multihop sessions.
> 
> 
> From this, gateway direct should be the default for a direct session in any 
> case. It would appear to me that bird is somehow misidentifying the session 
> as a multihop session.
> 
> Removing 'gateway direct' fixes the error (but obviously not the behaviour).
> 
> This is running in an network container if that's of any interest.
> 
> Any ideas?
> 
> (apologies for a potential dupe - I sent this to what I think must have been 
> an old list email address)
> 
> -- 
> Alex Bligh
> 
> 
> 
> root@node-10-157-128-41:/# ip addr show
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
> default
>   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
>   inet 127.0.0.1/8 scope host lo
>      valid_lft forever preferred_lft forever
>   inet6 ::1/128 scope host
>      valid_lft forever preferred_lft forever
> 2: dummy2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state 
> UP group default qlen 1000
>   link/ether 5a:17:eb:e4:7b:10 brd ff:ff:ff:ff:ff:ff
>   inet6 fe80::5817:ebff:fee4:7b10/64 scope link
>      valid_lft forever preferred_lft forever
> 3: dummy: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state 
> UP group default qlen 1000
>   link/ether 12:7f:06:13:e8:91 brd ff:ff:ff:ff:ff:ff
>   inet 10.99.99.1/24 scope global dummy
>      valid_lft forever preferred_lft forever
>   inet6 fe80::107f:6ff:fe13:e891/64 scope link
>      valid_lft forever preferred_lft forever
> 12: evrr-000000: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast 
> state UP group default qlen 1000
>   link/ether ee:19:d3:6f:24:1b brd ff:ff:ff:ff:ff:ff
>   inet 10.157.192.41/20 scope global evrr-000000
>      valid_lft forever preferred_lft forever
>   inet6 fc00:41c8:10:1dd::29/64 scope global
>      valid_lft forever preferred_lft forever
>   inet6 fe80::ec19:d3ff:fe6f:241b/64 scope link
>      valid_lft forever preferred_lft forever
> 
> root@node-10-157-128-41:/# ip route show
> 10.99.99.0/24 dev dummy  proto kernel  scope link  src 10.99.99.1
> 10.157.192.0/20 dev evrr-000000  proto kernel  scope link  src 10.157.192.41
> 
> 
>     1 # Configure logging
>     2 log syslog { debug, trace, info, remote, warning, error, auth, fatal, 
> bug };
>     3 log stderr all;
>     4
>     5 router id 10.157.192.41;
>     6
>     7 # Import kernel routes. These come in with RTS_INHERIT
>     8 protocol kernel evrkernel {
>     9         persist;                # Don't remove routes on bird shutdown
>    10         scan time 10;           # Scan kernel routing table every 20 
> seconds
>    11         import all;
>    12         export all;
>    13         learn;                  # Learn all alien routes from the kernel
>    14 }
>    15
>    16 # This pseudo-protocol watches all interface up/down events.
>    17 protocol device {
>    18         scan time 10;           # Scan interfaces every 10 seconds
>    19 }
>    20
>    21 # Import all directly connected routes. These come in with RTS_DEVICE
>    22 protocol direct evrdirect {
>    23          interface "-evrr-000000", "evrr-*";
>    24          export all;
>    25 }
>    26
>    27 protocol bgp evrbgp1 {
>    28          local as 65000;
>    29          neighbor 10.157.192.1 as 65000;
>    30
>    31          gateway direct;
>    32          export filter {
>    33                 # RTS_INHERIT means routers from the kernel
>    34                 if net = 10.157.192.0/20 then reject;
>    35                 if net = 0.0.0.0/8 then reject;
>    36                 if (source = RTS_INHERIT) || (source = RTS_DEVICE) then 
> {
>    37                         # Add no-export
>    38                         bgp_community.add((65535, 65281));
>    39                         # Add no-advertise
>    40                         bgp_community.add((65535, 65282));
>    41 
>    42                         bgp_local_pref = 100;
>    43 
>    44                         accept;
>    45                 }
>    46                 reject;
>    47          };
>    48          import filter {
>    49                 if net = 0.0.0.0/0 then accept;
>    50                 reject;
>    51          };
>    52          next hop self;
>    53
>    54 # timers
>    55         hold time 12;
>    56         startup hold time 12;
>    57         keepalive time 4;
>    58         connect retry time 6;
>    59         start delay time 1;
>    60         error wait time 2, 16;
>    61         error forget time 16;
>    62 }
>    63
>    64 protocol bgp evrbgp2 {
>    65          local as 65000;
>    66          neighbor 10.157.192.2 as 65000;
>    67
>    68          gateway direct;
>    69          export filter {
>    70                 # RTS_INHERIT means routers from the kernel
>    71                 if net = 10.157.192.0/20 then reject;
>    72                 if net = 0.0.0.0/8 then reject;
>    73                 if (source = RTS_INHERIT) || (source = RTS_DEVICE) then 
> {
>    74                         # Add no-export
>    75                         bgp_community.add((65535, 65281));
>    76                         # Add no-advertise
>    77                         bgp_community.add((65535, 65282));
>    78 
>    79                         bgp_local_pref = 100;
>    80 
>    81                         accept;
>    82                 }
>    83                 reject;
>    84          };
>    85          import filter {
>    86                 if net = 0.0.0.0/0 then accept;
>    87                 reject;
>    88          };
>    89          next hop self;
>    90
>    91 # timers
>    92         hold time 12;
>    93         startup hold time 12;
>    94         keepalive time 4;
>    95         connect retry time 6;
>    96         start delay time 1;
>    97         error wait time 2, 16;
>    98         error forget time 16;
>    99 }
>   100
> 

-- 
Alex Bligh




Reply via email to