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

Reply via email to