2015-03-11 22:18 GMT-03:00 Claudio Jeker <[email protected]>: > On Wed, Mar 11, 2015 at 04:41:05PM -0300, Renato Westphal wrote: >> Although RFC 5036 is not explicit about this, LDP should not assign >> labels for BGP routes. Doing that would be very resource consuming in >> some scenarios and unnecessary. The goal is generally only to establish >> LSPs among all PEs in the AS since LDP is not used as an end in itself >> but as a means to implement advanced solutions like MPLS L2/L3 VPNs. Some >> implementations (e.g. JunOS) go further and only assign labels for /32 >> loopback routes advertised in the IGP. >> >> If Inter-AS LSPs are necessary, BGP itself should be used for distributing >> IPv4 labeled routes (e.g. option C. of section 10 in RFC 4364). >> --- >> kroute.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/kroute.c b/kroute.c >> index f5772e7..679f66d 100644 >> --- a/kroute.c >> +++ b/kroute.c >> @@ -1250,6 +1250,8 @@ rtmsg_process(char *buf, size_t len) >> if (rtm->rtm_flags & RTF_MPATH) >> mpath = 1; >> prio = rtm->rtm_priority; >> + if (prio == RTP_BGP) >> + continue; >> >> switch (sa->sa_family) { >> case AF_INET: >> -- >> 1.9.1 >> > > A few comments: > - I would prefer that check to be a bit further up as in above the > RTF_MPATH check and so next to all the other continues. > - Add a comment why we skip RTP_BGP
Ok. > - Shouldn't this be a more generic kind of filter (since the prio can be > changed in bgpd)? Or is this overkill? > - Would be nice to use something like the ROUTE_MSGFILTER to filter these > unwanted messages already in the kernel (esp since bgpd can be a very > chatty companion) I agree with you, filtering by the priority sounds more like a hack than a real solution. Yes, we could create a new sockopt like ROUTE_PROTOFILTER to filter the unwanted routes already in the kernel, but that doesn't address the real issue: how to identify the BGP routes? In Linux the fib_info structure has a field called "fib_protocol" (RTPROT_*) which stores the type of the route. AFAIK we don't have anything like that in OpenBSD. -- Renato Westphal
