On 2015 Jul 16 (Thu) at 14:38:45 -0300 (-0300), Rafael Zalamena wrote:
: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);
:
This fixes the problems I have seen with MPLS.
OK
--
My doctor told me to stop having intimate dinners for four. Unless
there are three other people.
-- Orson Welles