Hi Matteo, There's some prior art in other routing implementations which you might be interested in looking at. FRR already has similar functionality for automatic peering via IPv6 link-local addresses, as does Nokia's SR Linux platform (there may be others, but those are the ones I know).
FRR uses IPv6 router advertisements for peer discovery, by periodically sending RAs to announce itself on a given interface and listening for RAs from other hosts on the same link to discover other peers. BGP sessions are then established via link-local addresses automatically when a new peer on the link becomes known. Off the top of my head I'm not sure how FRR handles established sessions with peers which stop sending RAs (I'm on holiday and don't have access to my work notes right now, I might have looked at that when I last worked on automatic peer discovery in the lab). This scheme in FRR appears to have been developed for uses cases like routed datacentre fabrics with point-to-point connections between routers rather than shared L2 segments where multiple routers are present. I'm not sure if the implementation in FRR would handle multiple peers on the same L2 correctly. Nokia SR Linux implements the same scheme using IPv6 RAs and is compatible with FRR -- an FRR instance and a Nokia device on opposite sides of the same link will recognise each other's presence and attempt to establish sessions with each other. As far as I'm aware this is a non-standard feature of FRR which has been copied and reimplemented by at least Nokia, if not other vendors. It would be practical if Bird were also compatible with this scheme of course, though in an ideal world there would be an RFC specifying this behaviour rather than implementers all reverse engineering FRR independently. Best wishes, --mm.
