On 2017-03-10 22:32, Nick Hilliard wrote: 

> This is listed as a
MUST in 4721, so heas@ is probably correct that any
> implementation
which ignores this is terminally broken.

 I agree fully:
 - terminally
broken from a standard and compliance POV
 - working perfectly in
production from an operational one (most likely for years).

ExaBGP OPEN
with everything it implements is 173 bytes ATM.

SENDING ( 173) FFFF
FFFF FFFF FFFF FFFF FFFF FFFF FFFF 00AD 0104 FFFD 00B4 7F00 0000 9002
0601 0400 0100 0102 0601 0400 0100 0202 0601 0400 0100 0402 0601 0400
0100 8002 0601 0400 0100 8402 0601 0400 0100 8502 0601 0400 0100 8602
0601 0400 0200 0102 0601 0400 0200 0202 0601 0400 0200 0402 0601 0400
0200 8002 0601 0400 0200 8502 0601 0400 0200 8602 0601 0400 1900 4102
0601 0400 1900 4602 0601 0440 0400 4702 0601 0440 0400 4802 0641 0400
00FF FD

OPEN version=4 asn=65533 hold_time=180 router_id=127.0.0.0
capabilities=[Multiprotocol(ipv4 unicast,ipv4 multicast,ipv4
nlri-mpls,ipv4 mpls-vpn,ipv4 rtc,ipv4 flow,ipv4 flow-vpn,ipv6
unicast,ipv6 multicast,ipv6 nlri-mpls,ipv6 mpls-vpn,ipv6 flow,ipv6
flow-vpn,l2vpn vpls,l2vpn evpn,bgpls bgp-ls,bgpls bgp-ls-vpn),
ASN4(65533)]

But before caring about the 65k OPEN, we may want to
consider that the "Optional Parameters Length" which is a byte, so:

173
bytes with 19 bytes of header and 10 bytes of pre-capabilities OPEN
headers, so effectively 144 bytes are used for capabilities, so in this
OPEN there is still around 100 bytes left for the things I did not
implement .. which is not that much.

A simple solution would be to have
a capability that if present allow the pair "Optional Parameters Length"
/ "Optional Parameters" to be repeated multiple times (the "to be
continued capability" capability :p) ... It would then increase the size
from 100 to around 4k, at which point we can still extend it with
another capability allowing for another OPEN in another draft if we need
to span multiple OPEN. ATM all we have to do is forbid this capability
when we reach the 4k limit.

Quite ironically ExaBGP does not enforce
the "Optional Parameters Length", and therefore will read up to 4k in
capability in violation of the RFC ... /me starts looking in another
direction ...
But somehow it helps me with my point about the sleeping
beast, so I will not feel too bad about it
:p

https://github.com/Exa-Networks/exabgp/blob/master/lib/exabgp/bgp/message/open/capability/capabilities.py#L159

Let's
keep with the IETF "Robustness Principle" and just fix this with
4k.

Thomas

 
_______________________________________________
GROW mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/grow

Reply via email to