Hi Alexander, 

The “error” I had before was the lack of a warning. I think the usability of 
BIRD would be improved if there was a warning for the state that I described.

Thanks, Brian

> On Apr 10, 2019, at 6:17 AM, Alexander Zubkov <[email protected]> wrote:
> 
> Hi Brian,
> 
> It is a bit more information, but it does not help fully still. You are 
> saying:
> 
>> With the patch, I use the configuration as shown and it peers as before, but 
>> the RIB is properly formed:
> 
> But I can not understand what error did you have before. If you showed
> original bgp configuration, tcpdump and result of commands like "show
> protocols all", "show route all" and pointed out what pieces you find
> wrong, it would be helpful.
> It also seems to me that in your first message you could mix up router
> ids and neigbours' ips.
> 
> On Sun, Apr 7, 2019 at 12:23 AM Brian Topping <[email protected]> wrote:
>> 
>>> On Apr 6, 2019, at 1:38 PM, Alexander Zubkov <[email protected]> wrote:
>>> 
>>> Hi Brian,
>>> 
>>> Can you give specific examples of what is happening? Configuration samples, 
>>> show running route information from cli, etc.
>> 
>> Hi Alexander, I can give it a shot here. Apologies for the previous direct 
>> reply.
>> 
>> These are the configs after application of the patch that I referenced below.
>> 
>> BIRD BGP:
>> 
>>> router id UP.STREAM.143.113;
>>> 
>>> protocol bgp bgp_metal_gw01 {
>>>      local as ASLOCAL;
>>>      neighbor 10.10.0.41 as ASN; # See description below
>>>      passive yes;
>>>      ipv4 {
>>>              next hop self;
>>>              import filter {
>>>                      bgp_origin = ORIGIN_IGP;
>>>                      dest = RTD_BLACKHOLE;
>>>                      accept;
>>>              };
>>>              export none;
>>>      };
>>> }
>> 
>> MetalLB:
>> 
>>> apiVersion: v1
>>> kind: ConfigMap
>>> data:
>>> config: |
>>>   peers:
>>>   - peer-address: UP.STREAM.143.113
>>>     router-id: 10.10.0.41
>>>     peer-asn: ASLOCAL
>>>     my-asn: ASLOCAL
>> 
>> 
>> Without the patch, the BIRD neighbor address is *also* UP.STREAM.143.113. 
>> This is broken, but because MetalLB was using the primary interface that was 
>> returned by Go standard library, I realized via tcpdump that BIRD wasn’t 
>> allowing the connection without the neighbor address matching the socket 
>> source address being used by MetalLB. At that point, the session was 
>> established with no warnings or errors, but the behavior I described 
>> previously was the result. Relevant trace from that previous configuration:
>> 
>>>   UP.STREAM.143.125.bgp > UP.STREAM.143.113.40871: Flags [P.], cksum 0x5bf5 
>>> (correct), seq 87:150, ack 71, win 16384, options [nop,nop,TS val 
>>> 1618696452 ecr 1215190272], length 63: BGP
>>>   Keepalive Message (4), length: 19
>>>   Update Message (2), length: 44
>>>     Origin (1), length: 1, Flags [T]: IGP
>>>       0x0000:  00
>>>     AS Path (2), length: 6, Flags [T]: 30475
>>>       0x0000:  0201 0000 770b
>>>     Next Hop (3), length: 4, Flags [T]: UP.STREAM.143.125
>>>       0x0000:  adf8 8f7d
>>>     Updated routes:
>>>       0.0.0.0/0
>>> 00:02:53.744295 IP (tos 0xc0, ttl 1, id 38102, offset 0, flags [DF], proto 
>>> TCP (6), length 210)
>>>   UP.STREAM.143.113.40871 > UP.STREAM.143.125.bgp: Flags [P.], cksum 0x7ba4 
>>> (incorrect -> 0x443f), seq 71:229, ack 150, win 502, options [nop,nop,TS 
>>> val 1215190314 ecr 1618696452], length 158: BGP
>>>   Update Message (2), length: 84
>>>     Origin (1), length: 1, Flags [T]: IGP
>>>       0x0000:  00
>>>     AS Path (2), length: 10, Flags [T]: ASLOCAL ASLOCAL
>>>       0x0000:  0202 0000 2963 0000 2963
>>>     Next Hop (3), length: 4, Flags [T]: UP.STREAM.143.113
>>>       0x0000:  adf8 8f71
>>>     Community (8), length: 4, Flags [OTP]:  NO_EXPORT
>>>       0x0000:  ffff ff01
>>>     Updated routes:
>>>       ANN.CIDR.96.10/32
>>>       ANN.CIDR.96.11/32
>>>       ANN.CIDR.96.8/32
>>>       ANN.CIDR.96.9/32
>>>       ANN.CIDR.96.0/32
>>>       ANN.CIDR.97.1/32
>>>   Update Message (2), length: 51
>>>     Origin (1), length: 1, Flags [T]: IGP
>>>       0x0000:  00
>>>     AS Path (2), length: 6, Flags [T]: ASLOCAL
>>>       0x0000:  0201 0000 2963
>>>     Next Hop (3), length: 4, Flags [T]: UP.STREAM.143.113
>>>       0x0000:  adf8 8f71
>>>     Updated routes:
>>>       ANN.CIDR.96.0/24
>>>       ANN.CIDR.97.0/24
>>>   Update Message (2), length: 23
>>>     End-of-Rib Marker (empty NLRI)
>> 
>> With the patch, I use the configuration as shown and it peers as before, but 
>> the RIB is properly formed:
>> 
>>> [root@gw01 ~]# birdc show route
>>> BIRD 2.0.2 ready.
>>> Table master4:
>>> 0.0.0.0/0            unicast [bgp_handy_125 21:22:05.177] * (100) 
>>> [ASUPSTREAMi]
>>>      via UP.STREAM.143.125 on eno1
>>>                    unicast [bgp_handy_126 21:22:04.771] (100) [ASUPSTREAMi]
>>>      via UP.STREAM.143.126 on eno1
>>> ANN.CIDR.96.10/32     blackhole [bgp_metal_gw01 16:01:32.784 from 
>>> 10.10.0.41] * (100) [i]
>>> 10.9.255.0/24        unicast [backbone 21:22:00.909] * I (150/10) 
>>> [UP.STREAM.143.113]
>>>      dev vti19
>>> ANN.CIDR.96.11/32     blackhole [bgp_metal_gw01 16:01:32.784 from 
>>> 10.10.0.41] * (100) [i]
>>> ANN.CIDR.96.8/32      blackhole [bgp_metal_gw01 16:01:32.784 from 
>>> 10.10.0.41] * (100) [i]
>>> ANN.CIDR.96.9/32      blackhole [bgp_metal_gw01 16:01:32.784 from 
>>> 10.10.0.41] * (100) [i]
>>> ANN.CIDR.96.0/24      blackhole [public_nets_proto 21:22:00.809] * (500)
>>> ANN.CIDR.97.0/24      blackhole [public_nets_proto 21:22:00.809] * (500)
>>> ANN.CIDR.96.0/32      blackhole [bgp_metal_gw01 16:01:32.784 from 
>>> 10.10.0.41] * (100) [i]
>>> ANN.CIDR.97.1/32      blackhole [bgp_metal_gw01 16:01:32.784 from 
>>> 10.10.0.41] * (100) [i]
>>> 10.10.0.0/22         unicast [backbone 21:22:00.909] * I (150/10) 
>>> [UP.STREAM.143.113]
>>>      dev eno2
>> 
>> 
>> Does that help?
>> 
>> 


Reply via email to