On Tue, 2021-06-22 at 12:21 +0300, Lyubomir Yotov wrote:
> Hi Clemens,
> What version of BSDRP are you using?

One of the latest, an uname -a gives me:
FreeBSD amarklor.atnoc.net 14.0-CURRENT FreeBSD 14.0-CURRENT BSDRP-
AMD64 amd64

> I would suggest that you check your configuration for some errors in
> peers definitions in the first place. A help from a colleague of
> yours would help a lot (I have had some stupid typos like using /29
> instead of /30 and the sort, also metrics here and there in route-
> maps could be good place to look for errors)

These are fine, I'm doing BGP on ISP Level for >20 years; I' seeing the
same Problem on other prefixes too.
For that matter, I just got a 'looping' -Complaint right now - I spare
the BGP Info as a first. Im seeing the following 
information in the BSD kernel-routing table (for the IP I've got the
compaint for):

[root@amarklor]/etc# route -n get 149.13.75.104
route to: 149.13.75.104
destination: 149.12.0.0
mask: 255.254.0.0
gateway: 149.6.174.241
fib: 0
interface: cxl0
flags: <UP,GATEWAY,DONE,PROTO1>
recvpipe sendpipe ssthresh rtt,msec mtu weight expire
0 0 0 0 1500 1 0 


Which clearly indicates a next-Hop at 149.6.174.241 - the router of our
upstream. But If I 'traceroute' the IP:

[root@amarklor]/etc# traceroute -n 149.13.75.104
traceroute to 149.13.75.104 (149.13.75.104), 64 hops max, 40 byte
packets
1 193.239.188.36 0.256 ms 0.333 ms 0.368 ms
2 193.239.188.38 0.270 ms 0.096 ms 0.118 ms

The BSD-Kernel sends the Packets towards 193.239.188.36. Which is
completely wrong. And not what the 
Kernel FIB klaims what will happen to the packets.

I spare you with the BGP-related entries right now; I checked thema,
The BGP-Paths seems correct, and all the routers
in question produce correct paths (If I look at the BGP routes,
everythin is correct, If I look at the kernel-routing-tables,
as well the RIBs on the Ciscos: They reflect the BGP Information in a
consitent manner)

But for what Its worth: The BSD-kernel seems to forward the Packet
towards another router.

If I 'grep' all routes (from a netstat -rn) for the range in quesion
one gets the following:

149.12.0.0/20 149.6.174.241 UG1 cxl0
149.12.0.0/15 149.6.174.241 UG1 cxl0
149.12.17.0/24 149.6.174.241 UG1 cxl0
149.12.70.0/24 149.6.174.241 UG1 cxl0
149.12.128.0/24 149.6.174.241 UG1 cxl0
149.12.128.0/22 149.6.174.241 UG1 cxl0
149.12.129.0/24 149.6.174.241 UG1 cxl0
149.12.130.0/24 149.6.174.241 UG1 cxl0
149.12.131.0/24 149.6.174.241 UG1 cxl0
149.12.183.0/24 149.6.174.241 UG1 cxl0
149.12.184.0/22 149.6.174.241 UG1 cxl0
149.12.200.0/24 149.6.174.241 UG1 cxl0
149.12.201.0/24 149.6.174.241 UG1 cxl0
149.12.224.0/24 149.6.174.241 UG1 cxl0
149.12.227.0/24 149.6.174.241 UG1 cxl0
149.12.241.0/24 193.239.188.34 UG1 igb0
149.12.242.0/23 193.239.188.34 UG1 igb0
149.12.244.0/24 149.6.174.241 UG1 cxl0
149.13.0.0/24 149.6.174.241 UG1 cxl0
149.13.2.0/24 149.6.174.241 UG1 cxl0
149.13.3.0/24 149.6.174.241 UG1 cxl0
149.13.16.0/24 149.6.174.241 UG1 cxl0
149.13.18.0/23 149.6.174.241 UG1 cxl0
149.13.24.0/23 149.6.174.241 UG1 cxl0
149.13.24.0/22 149.6.174.241 UG1 cxl0
149.13.25.0/24 149.6.174.241 UG1 cxl0
149.13.26.0/23 149.6.174.241 UG1 cxl0
149.13.32.0/24 193.239.188.34 UG1 igb0
149.13.65.0/24 149.6.174.241 UG1 cxl0
149.13.69.0/24 149.6.174.241 UG1 cxl0
149.13.70.0/24 149.6.174.241 UG1 cxl0
149.13.72.0/24 149.6.174.241 UG1 cxl0
149.13.78.0/23 193.239.188.34 UG1 igb0
149.13.80.0/23 193.239.188.34 UG1 igb0
149.13.82.0/24 149.6.174.241 UG1 cxl0
149.13.83.0/24 193.239.188.34 UG1 igb0
149.13.90.0/24 149.6.174.241 UG1 cxl0
149.13.94.0/24 149.6.174.241 UG1 cxl0
149.13.113.0/24 149.6.174.241 UG1 cxl0
149.13.115.0/24 149.6.174.241 UG1 cxl0
149.13.145.0/24 149.6.174.241 UG1 cxl0
149.13.146.0/24 149.6.174.241 UG1 cxl0
149.13.147.0/24 149.6.174.241 UG1 cxl0
149.13.148.0/22 149.6.174.241 UG1 cxl0
149.13.152.0/22 149.6.174.241 UG1 cxl0
149.13.156.0/22 149.6.174.241 UG1 cxl0
149.13.176.0/24 149.6.174.241 UG1 cxl0

There ar in fact some more-spefics within 149.12.0.0/15, but none for
149.13.75.104. So
149.13.75.104 is handled by 149.12.0.0/15 (compare route -n get
149.13.75.104) - but 
despite the *korrekt* information in the FIB, the Packets get forwardet
via 193.239.188.36
(even though this Border is not referenced even once in the FIB for
149.12.0.0/15, and more
specific prefixes within this network.


> Another thing you could  try is to reconfigure the peers one by one
> but not copy and paste. Take some time to make the configurations
> again.
> Most probably it is a matter of configuration.
> 


The Configuration seems pretty solid, to me; Which part could I've
missed leding to 
packet-forwarding not matching the kernels fib? I do have *some* ipfw
rules, but no
redirects in there (filtering of RFC1918 (rules numered 3000), denying
AS35339 
SRC-Address Packets in via Upstream-Interfaces (rules 2000), such
stuff. 
Bog-Standard basic network security rules, Required by some BCPs. And
Im Blocking 
TR69-Syns towards our dialin-ranges  (rules 04001 und 04002).


Ah yes, and I'v enabled ipfw_netflow. 
Redirects are disabled: net.inet.ip.redirect: 0


complete ipfw show output as follows:

00100 666753 70419169 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 8 4768 deny ip from 127.0.0.0/8 to any
00400 0 0 deny ip from any to ::1
00500 0 0 deny ip from ::1 to any
00600 0 0 allow ipv6-icmp from :: to ff02::/16
00700 1264589 84841128 allow ipv6-icmp from fe80::/10 to fe80::/10
00800 704954 52076976 allow ipv6-icmp from fe80::/10 to ff02::/16
00900 16562562 2242736622 allow ipv6-icmp from any to any icmp6types 1
01000 1937949 1330602388 allow ipv6-icmp from any to any icmp6types
2,135,136
01000 70475719 73830970321 allow ip from me to any
01001 91537 13532464 allow ip from 95.129.200.0/21 to me
01002 3829904 334555883 allow ip from 193.239.188.0/23 to me
02000 1481 142567 deny ip from 95.129.200.0/21 to any in via cxl0
02001 257 22873 deny ip from 193.239.188.0/23 to any in via cxl0
02002 552 49209 deny ip from 185.65.232.0/22 to any in via cxl0
02003 0 0 deny ip6 from 2a02:b18::/32 to any in via cxl0
03001 552891 51238709 reject ip from any to 10.0.0.0/8
03002 4753 431799 reject ip from any to 172.16.0.0/12
03003 5018090 381259117 reject ip from any to 192.168.0.0/16
04001 833432 33475188 unreach port tcp from any to 95.129.200.0/21 7547
in via cxl0 setup
04002 33411 1409920 unreach port tcp from any to 185.65.232.0/22 7547
in via cxl0 setup
10000 73384539658 34867129902846 ngtee 9995 ip from any to any
65000 73552389878 34940200731572 allow ip from any to any

I'm a decades user of *BSDs, I've never seen such a forwarding
behaviour in my life. Is there
something 'new' in 13 / or 14 Releases, I'm not aware of? some kind of
caching, or new
route-lookup-mechanic (going haywire, here, obviously)? If yes: Can
that be disabled?



> Regards,
> 
> Lyubo
> 
> 

cu
    Clemens.


PS: I've a Hard time playing with this spefic Box, as she handles
multiple GBits/s 
of Upstream, but I have another one, which I can setup for testing. I
did
intend to relayce the other upstream too (currently Cisco), but I'm
currently refraining 
from that, until I know whats going on here.

PPS: I can provide more-or-less complete configurations, If required; I
do not have really 
sensitive information in those.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
Bsdrp-users mailing list
Bsdrp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bsdrp-users

Reply via email to