On Mon, May 25, 2015 at 05:44:09PM +0300, [email protected] wrote:
> >Synopsis: mpls provider doesn't forward packets
> >Category: networking
> >Environment:
> System : OpenBSD 5.7
> Details : OpenBSD 5.7-current (GENERIC.MP) #999: Thu May 21
> 15:37:37 MDT 2015
>
> [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
>
> Architecture: OpenBSD.amd64
> Machine : amd64
> >Description:
> I'm trying to make mpls test network like described in
> http://2011.eurobsdcon.org/papers/jeker/MPLS.pdf
> but in openbsd 5.7 command "ifconfig mpex mplslabel xxx" was not
> working so i switched to current
> and faced with new problem:
> packets with mpls tag not forwarded at all on provider machines.
> counter in "netstat -r" shows that number of forwarded packets increase
> in appropriate rule but
> packets couldn't be detected via tcpdump on outgoing interface.
> >How-To-Repeat:
> build test network like in pdf. dump packets of provider on interface
> connected to provider edge
> than dump packets on interface connected to other provider.
> >Fix:
Hi,
MPLS routing was broken when multiple labels where being sent, you may want
to try this patch on the providers hosts:
Index: net/if_ethersubr.c
===================================================================
RCS file: /cvs/src/sys/net/if_ethersubr.c,v
retrieving revision 1.216
diff -u -p -r1.216 if_ethersubr.c
--- net/if_ethersubr.c 2 Jul 2015 23:15:03 -0000 1.216
+++ net/if_ethersubr.c 16 Jul 2015 17:25:26 -0000
@@ -227,6 +227,7 @@ ether_output(struct ifnet *ifp, struct m
sizeof(edst));
break;
case AF_INET:
+ case AF_MPLS:
error = arpresolve(ifp, rt, m, dst, edst);
if (error)
return (error == EAGAIN ? 0 : error);