eBGP not establishing

I have two new directly connected CRS354-48G-4S+2Q+ running RouterOS 7.11.3. They are directly connected on ether1. Ping works both ways, but eBGP won’t establish. When running a packet capture, I can see a SYN from sw1, SYN-ACK from sw2, and then packets are retransmitted. I’ve replicated this setup on a different pair of brand new CRS354, and the same thing is happening.

sw1:
/ip address
add address=10.255.255.2/30 interface=ether1 network=10.255.255.0
/routing bgp connection
add as=65001 disabled=no local.address=10.255.255.2 .role=ebgp name=test remote.address=10.255.255.3 .as=65000 routing-table=main


sw2:
/ip address
add address=10.255.255.3/30 interface=ether1 network=10.255.255.0
/routing bgp connection
add as=65000 disabled=no local.address=10.255.255.3 .role=ebgp name=test remote.address=10.255.255.2 .as=65001 routing-table=main

Any ideas as to what can be happening?

You must not assign subnets broadcast address to host.

Thank you. Would be helpful to put that information in the manual as I didn’t find it anywhere. Apologies in advance if it already exists there.

that is networking basics

Already exists here: https://help.mikrotik.com/docs/spaces/ROS/pages/328247/IP+Addressing#IPAddressing-AddingIPAddress

I wonder why Cisco and Arista can support them

RFC 3021 compliance dictates that assigning the broadcast address of a /31 is not problematic. I don’t see anything in the official Mikrotik documentation describing support for RFC 3021, but I have seen a few forum posts mentioning that >=7.13 supports it, so while it is indeed networking basics to not allow assigning the broadcast address of a non /31 subnet, it would be useful for Mikrotik to document which RouterOS versions support RFC 3021. I tested this on 7.11 and the symptoms are the same as OP’s:

Router 1

/ip address
add address=10.255.255.6/31 interface=ether2 network=10.255.255.6

/routing bgp connection
add as=65006 local.role=ebgp name=test remote.address=10.255.255.7 .as=65004

Router 2

/ip address
add address=10.255.255.7/31 interface=ether4 network=10.255.255.6

/routing bgp connection
add as=65004 local.role=ebgp name=test remote.address=10.255.255.6 .as=65006

RFC3021 is for point-to-point links. Back in the day, on Cisco one had to explicitly configure the interface with the keyword “point-to-point”.

Not by a MT device right now but will definitely try tomorrow.

OP clearly hows that broadcast address of /30 is used, it has nothing to do with /31

I’ve upgraded firmware to RouterOS 7.16.2 and attempting to use a /31 on a point to point link without success. Is there support for RFC 3021 on this platform or do I need to use a /30 and a non-broadcast address?

/31 is just added in 7.18b2, earlier version do not understand that.