On Thu, Jul 16, 2015 at 02:38:45PM -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);
> 

OK claudio@

-- 
:wq Claudio

Reply via email to