From patchwork Tue Sep 26 09:22:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amine Kherbouche X-Patchwork-Id: 818501 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=6wind-com.20150623.gappssmtp.com header.i=@6wind-com.20150623.gappssmtp.com header.b="CkfRv/uR"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3y1b955Gl3z9t3B for ; Tue, 26 Sep 2017 19:23:21 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030533AbdIZJXU (ORCPT ); Tue, 26 Sep 2017 05:23:20 -0400 Received: from mail-wm0-f45.google.com ([74.125.82.45]:44866 "EHLO mail-wm0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S968431AbdIZJXK (ORCPT ); Tue, 26 Sep 2017 05:23:10 -0400 Received: by mail-wm0-f45.google.com with SMTP id m127so14699340wmm.1 for ; Tue, 26 Sep 2017 02:23:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=eJCXpexLuxXDUMzCykkgA6Igapwi3V4Q26JZt7ENvbc=; b=CkfRv/uRibSfGtssJYd6YygCi5JvHsyvzst7a8sfSNjHmiAb8wzVuUE7IqRaiqEbdz As1777UKFs6fEQSZMltajc80+tefUeeO/vLj1I/G5zVcJLHQtYFgP7Vl/BcUwXDRzYIR 0drNCkLc8BhSqTu5No/oyCnSw+hfHFDTiqSm1hvcW4lHfHj3w2DJMOXISHlysxT+DfbU rTQW6vzm9mce8OKBHfouqxVyt1og9mQXuKl1PVtZ78EfBUoplLJ6E2Cf8fAcUC0OpmD+ hyvNpiW9tLJtn/6ISVq/8xNt6u7Bc5mD7ifl/X4Jp0tsZ/IU9R9my30TqtVbCYrZ+Obr NOYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=eJCXpexLuxXDUMzCykkgA6Igapwi3V4Q26JZt7ENvbc=; b=trLl/u5SmoHqWmN7Co7u38b5rAs99xeMJB7thfj1AJzt/HmLsKVIpM44BwOuF+Nw3a QvTvoYwgAIlSn9Jy14ODJ77IQY0Zhvc9mypMpbUmZDPU5wRjmLB7YgSimrDAr+VYY0bn RtVlBHR6U6ivD8xDbCKo5z341nNx++d/MDSNJYOPtk7IocsTlVa0Rm9yDQeWC86wJukf C0XGOVdFsB1IgkhwPv/NmCnGi72t8asbtlWGweKCkAzFlm0WtHGHEWkSX6DuQFPkeZvy ajRfB8PtCjVCMcR3Gkru5Ct/74xzObXE/OZgaUJ+tIXI7zhXpDx22JGTUeZY/3WLZc67 lcsg== X-Gm-Message-State: AHPjjUjf9OlJ+PfGqbB1XwPd/PdHB4+bYHdyq0Jr2cSVcExR3/Fa2D5D pVq/PSvUNFm3DViULzTmPE8bO8fo X-Google-Smtp-Source: AOwi7QCIKmCiv7XKh8S8Hx9y9mR1M+Isb8S0XSNvTw/vZSLf0y/k26YnC2l70eJ0+MlTUngWnWn8Eg== X-Received: by 10.28.54.101 with SMTP id d98mr2343697wma.90.1506417788407; Tue, 26 Sep 2017 02:23:08 -0700 (PDT) Received: from griffon.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id b66sm754235wmh.25.2017.09.26.02.23.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 26 Sep 2017 02:23:07 -0700 (PDT) From: Amine Kherbouche To: netdev@vger.kernel.org, xeb@mail.ru, roopa@cumulusnetworks.com Cc: amine.kherbouche@6wind.com, equinox@diac24.net Subject: [PATCH v2 0/2] Introduce MPLS over GRE Date: Tue, 26 Sep 2017 11:22:49 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This series introduces the MPLS over GRE encapsulation (RFC 4023). Various applications of MPLS make use of label stacks with multiple entries. In some cases, it is possible to replace the top label of the stack with an IP-based encapsulation, thereby, it is possible for two LSRs that are adjacent on an LSP to be separated by an IP network, even if that IP network does not provide MPLS. Changes in v2: - wrap ip tunnel functions under ifdef in mpls file. - fix indentation. - check return code. An example of configuration: node1 LER1 LER2 node2 +-----+ +------+ +------+ +-----+ | | | | | | | | | | | |p3 GRE tunnel p4| | | | | |p1 p2| +-------------------+ |p5 p6| | | +-------------+ +-------------------+ +------------+| | | |10.100.0.0/24| | | |10.200.0.0/24| | | |fd00:100::/64| | 10.125.0.0/24 | |fd00:200::/64| | | | | | fd00:125::/64 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----+ +------+ +------+ +-----+ ### node1 ### ip link set p1 up ip addr add 10.100.0.1/24 dev p1 ### LER1 ### ip link set p2 up ip addr add 10.100.0.2/24 dev p2 ip link set p3 up ip addr add 10.125.0.1/24 dev p3 modprobe mpls_router sysctl -w net.mpls.conf.p2.input=1 sysctl -w net.mpls.conf.p3.input=1 sysctl -w net.mpls.platform_labels=1000 ip link add gre1 type gre ttl 64 local 10.125.0.1 remote 10.125.0.2 dev p3 ip link set dev gre1 up ip -M route add 111 as 222 dev gre1 ip -M route add 555 as 666 via inet 10.100.0.1 dev p2 ### LER2 ### ip link set p5 up ip addr add 10.200.0.2/24 dev p5 ip link set p4 up ip addr add 10.125.0.2/24 dev p4 modprobe mpls_router sysctl -w net.mpls.conf.p4.input=1 sysctl -w net.mpls.conf.p5.input=1 sysctl -w net.mpls.platform_labels=1000 ip link add gre1 type gre ttl 64 local 10.125.0.2 remote 10.125.0.1 dev p4 ip link set dev gre1 up ip -M route add 444 as 555 dev gre1 ip -M route add 222 as 333 via inet 10.200.0.1 dev p5 ### node2 ### ip link set p6 up ip addr add 10.200.0.1/24 dev p6 Now using this scapy to forge and send packets from the port p1 of node1: p = Ether(src='de:ed:01:0c:41:09', dst='de:ed:01:2f:3b:ba') p /= MPLS(s=1, ttl=64, label=111)/Raw(load='\xde') sendp(p, iface="p1", count=20, inter=0.1) Amine Kherbouche (2): mpls: expose stack entry function ip_tunnel: add mpls over gre encapsulation include/linux/mpls.h | 3 +++ include/net/gre.h | 3 +++ include/uapi/linux/if_tunnel.h | 1 + net/ipv4/gre_demux.c | 22 +++++++++++++++++++++ net/ipv4/ip_gre.c | 9 +++++++++ net/ipv6/ip6_gre.c | 7 +++++++ net/mpls/af_mpls.c | 45 ++++++++++++++++++++++++++++++++++++++++-- 7 files changed, 88 insertions(+), 2 deletions(-)