From patchwork Tue May 16 05:33:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nobuhiro MIKI X-Patchwork-Id: 1781781 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::133; helo=smtp2.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=selector1 header.b=DjRDc9nl; dkim-atps=neutral Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QL4fl2xcKz20dX for ; Tue, 16 May 2023 15:34:07 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 3731540447; Tue, 16 May 2023 05:34:05 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 3731540447 Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key, unprotected) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=selector1 header.b=DjRDc9nl X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FVhGs1T7B0Hv; Tue, 16 May 2023 05:34:04 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 35DFA40588; Tue, 16 May 2023 05:34:03 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 35DFA40588 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id DFE80C0037; Tue, 16 May 2023 05:34:02 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1AA0BC002A for ; Tue, 16 May 2023 05:34:01 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id D26CA415F0 for ; Tue, 16 May 2023 05:34:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org D26CA415F0 Authentication-Results: smtp4.osuosl.org; dkim=pass (1024-bit key, unprotected) header.d=yahoo-corp.jp header.i=@yahoo-corp.jp header.a=rsa-sha256 header.s=selector1 header.b=DjRDc9nl X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id V5Pg6xoERXP9 for ; Tue, 16 May 2023 05:33:59 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org BBB4B415B9 Received: from corp-ob10.yahoo-corp.jp (corp-ob10.yahoo-corp.jp [182.22.125.210]) by smtp4.osuosl.org (Postfix) with ESMTPS id BBB4B415B9 for ; Tue, 16 May 2023 05:33:58 +0000 (UTC) Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01lp2168.outbound.protection.outlook.com [104.47.23.168]) by corp-ob10.yahoo-corp.jp (Postfix) with ESMTPS id 678AF19FB187 for ; Tue, 16 May 2023 14:33:56 +0900 (JST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e9xifKyicUfTo3R5VJg8s26JwNgehCHgYOcId2jmbGAXsInX0YeDMzr73CaAHFD2pTV8fYw3hyf/xQGo8XJH+lvCpGMrRrdvI9tha3WylLFkM+JVVSD/9n8p5jE6kHADv/vlLAMXIjbQwgyGsUUdsig7ID5E3ZWbisBLedkKyAatjBK8+lRUXcBmEQk68kKJfjYfRvXCyDDiNqsypsBsKf2y+K7lG2FXLz0lwb0lKMK9kCI/WzhbSo+D3OAOOdyz+oMloQjyXSa7Ym1QXHSL32DFlgU98NZKLC2tBE/I6iIH/i3ROT8fdH3MqruGaV9BJtxPaus/V6bRYv1bNqkcAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Vi33oXrqcc4xqTncU1K1QqgBXlpa2EA++LYxvZkU5U8=; b=AXHv1ZmpKKyWPL3LcXYHn4GFZ2LTnnmSwdx4Ib9EjHgg/vlksGGlWEbD3JO9u3cfW0G42h6AMryAyjX5RHXs2QyGzYXFCvypMO2Dui5nj0pmGfj+eDcZIKmMBw8ZzSYGp/uOa3SxbJPoZv6AIUEAEF3Lq5nm49cCjA/k6uVfJ0h72luPpUc/jJ9wOuDASvG3RxrjqKPvVHsWcZWQZH3IvqAgbLSlbn2780yFN/cRESPJ+DxSOJtZ7pDOlxwsVIAGNfZ+BQCBmajp6pKRzjfrYjLPWsPk0T7WzObR1SzJHi+V7Zr8BEg8SIHdGCti2rZp3lq8rkNdjwUyIkxoTuHK5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=yahoo-corp.jp; dmarc=pass action=none header.from=yahoo-corp.jp; dkim=pass header.d=yahoo-corp.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-corp.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Vi33oXrqcc4xqTncU1K1QqgBXlpa2EA++LYxvZkU5U8=; b=DjRDc9nlQOpHRygFvvhUk7IrxYCJO+gpb2VNjW165qoPtePpYMA/wJh8vu5JzmDuv98E9AVEI4XGGwiybl/vRPtv7IpfeUsXHvuys8QJHORvYv8rYQk3T3cVLxpN6h5eL5QYVNtR1j6QQ4oH1XAmnsiN7cj0C6QgCN+iKtU1Rio= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=yahoo-corp.jp; Received: from TY2PR01MB4107.jpnprd01.prod.outlook.com (2603:1096:404:d8::23) by TYWPR01MB11940.jpnprd01.prod.outlook.com (2603:1096:400:3fd::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.32; Tue, 16 May 2023 05:33:55 +0000 Received: from TY2PR01MB4107.jpnprd01.prod.outlook.com ([fe80::6e16:2bc5:f889:3826]) by TY2PR01MB4107.jpnprd01.prod.outlook.com ([fe80::6e16:2bc5:f889:3826%4]) with mapi id 15.20.6387.030; Tue, 16 May 2023 05:33:55 +0000 From: Nobuhiro MIKI To: dev@openvswitch.org Date: Tue, 16 May 2023 14:33:35 +0900 Message-Id: <20230516053336.27303-2-nmiki@yahoo-corp.jp> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230516053336.27303-1-nmiki@yahoo-corp.jp> References: <20230516053336.27303-1-nmiki@yahoo-corp.jp> X-ClientProxiedBy: TYCP286CA0120.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::20) To TY2PR01MB4107.jpnprd01.prod.outlook.com (2603:1096:404:d8::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY2PR01MB4107:EE_|TYWPR01MB11940:EE_ X-MS-Office365-Filtering-Correlation-Id: 07fd9e0e-0a91-48d7-6764-08db55cf23da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: L+XcvqbuFCaY9po04FIbbeE30ssRtNBAKs6ptKPcHlyWlhSuVlekDrC0G4IGWP5sog8AP4ghHghcm13yore2KaJdcytodKRwWBBNfq9+wR97a3b2FfiWswQ7hrYC5meB6oSU8ZGMpiUSdnYwbZPN+Oq0cHt0Ah6Q+ug/l96PImV0qA+dwehzWWpGvhjDWSPxMqq63KrDiM3WP8zhKcs0nJB2l14m0H4Wy8h8mafaNQrRwHGSfzd4HRSFnf5dTCJHyGhYXi47YyCCfh0HlTX9bfkFy/lX+azM2fDj11+dih33+UyCV9lt8hh0PkTSIJwv7uRt85Jarc0KABG5oDuPyqIhxO6/H7MiJsBX9G6gPg8P6ypm/4RF8l/PVNjJG1Y0VR8WZ7nuQb10w36dDp34oEF/xLAW0RdD0TnONtWK3vFsNPTTm5/GLE0/HypMDMN1PInU/9BsLTLIWoET3d4++h45JqXvtGM+weATIUTnsnwVQGWpx4f7Mcdpj9tBVerjYL0aXAv9EsN1kDRB3wrjBggdXfE8V+gT09E6v2QX2LwA3BRzJaCepUU8zVpgxSwDE2RqYSfxAI5L2WWu1mUNAz26M2cHgyY1KGPos4bXrG1QWaWq1VmopMbZFOo599e9 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TY2PR01MB4107.jpnprd01.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(39860400002)(136003)(376002)(396003)(346002)(366004)(451199021)(6666004)(52116002)(6486002)(83380400001)(107886003)(26005)(1076003)(186003)(6512007)(36756003)(2616005)(6506007)(86362001)(38100700002)(82960400001)(38350700002)(8676002)(8936002)(5660300002)(66946007)(66556008)(66476007)(41300700001)(6916009)(4326008)(2906002)(316002)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fGtIUC6ELMH1bz/TYfzTgd5ZacxEWOOr0dgXRkAfuDjmW3qWwbjZJw6KCOjuaAl7Wq/m6AtjrQ7CbMB9o2R8gJaIidMFIWYugFiQSAOR3g+z6P3QJ8rR7VP+0+t9vmiZySRVoPNb39mZ7fPTQiyA7vdqGgpAgL9ThTnQ6u2rwhsZLy8sWMtx9t5lVDhWbMrGPuMQq13egyK1QYDUoUmPWckwmJbf7OxyeXogegVdWb//6sqp0wjM8Y+sijQbB7fZ+qvzSiVCM31/Rhosw6tk9Rc6Z8B+jLg/iEtw/Tmo3jRdo7wLPSaUPS1Y2bTAl07fVLKZ7eP0hIL59ri+InLw7b68q6VWHDjzt1Cl5YN4/mPVLRFDF4ecIXLMOfooqe7qrYyKIu0PZI0lupG4ssomfAAdxPsJAx2eXCS/GF9KoN1Y/BHzOGbDF0kPDfqzl0D7Ug/58iJAtskl5HR2T+LbmgIaVvIzcA+1plo9mtfBYCBn9dvQB4xdRDLtyUaXiGnpaRgd5Ikv8IImch94gnoVGvEUpDqtufM+JBG6KC+FIGzMmpius9J3M4lxM3SH3EuAugg9KKGd5HuysdyPhmdQRXhV1rbTN+lQ+ID18NKPS84wZfpA3h+Z+1QhJdJkxKl+ZTGuAFhmkQ8NIQEo7WtzLr603z3l5RZyFgO4+RKIBi4Lz3C6gprBcQV9KPIdd+OL5YDQjUAhAwN3VPoczsLEiAHXM+6fKs0Il2dvn0m9AeShLFY0v9bt83Oy048jfvzCn29bha/DIAD0H/o8WxtQjxFi+jw1DKIzR25AJ0ItilaVNoxUqRm+uwWK/q9iLQyMILEZ5OXnYUClIMCPD5pg/EUjjfdgwJ8cFU1VJeuyL4K/8wt5rf7QoJ35gwhY5/9c2zpQfcOiRwXRZ7TNN+DdObQ8gZMj0vlFqbSgVsCbu9bqn6QillgUiJgUNkJbce02RxQlPpZyJpPjWdxwYj3U9ByCYnNjoIadEu7XR9gq3iVTpqe8+0RaUsGpU5p+CHjAZQ1HjfL1SxwqYSRkWvUikys41acL7PnWGC1VXMRO7C0IrQ48JJAunNCjqDnSM/j/NVrTEbs4f9Il4/vVbsnAqem+Jzk5gg4ySHWHNK9djPltmFKd1We7E4HJjbIJF3eEAUy0D4+I1EWVWnVJWnJ3Xofqf19o3vZqIZz2MkhW1oAllq3W+DRRQxa+0YLq91WkAlq8lMici7zZhCiFj9Owu1FCcPl511VcoHbgHVIo25QBJmESfIjA/pFmy+s9VvckpyPgrU3CFKMJsEpBtNoGbvFANso/9wFs5XM3XKd1bdCYaTOEFrDXOKQUxbUFxyZfBFw7UzD44Ra3HaNuAI+rzIQu7Ldw2cXnIu7JfgI4OZTORaL7r6mBxb8Pcblpqc4IWIZDZcI1JFVnRuYB3e++X6civfcw0jCHSuMiRwcxmA/pL3JFxWd3yCgA03vZFJUIk7TvwBSXfJFk5EjU2F5WWj+zBy8Hgc8nh17bYaMT8zrFbiiMddNKsvDxhhU+bbNpgZ9Zk6BpZpTbjhvzUti00NaBhYGoryF49GABaa9b6uCc7u1x872n/1uLvOqJh832 X-OriginatorOrg: yahoo-corp.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 07fd9e0e-0a91-48d7-6764-08db55cf23da X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4107.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 May 2023 05:33:55.3468 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a208d369-cd4e-4f87-b119-98eaf31df2c3 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vOYyt1s1fLZXFzDRXWtje1MpSy0YqVPsruQnQrB93tNYgihlQbS4IMPexTkzOpExTAfuEgVroI8/VxIkI6c8Ig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB11940 Subject: [ovs-dev] [PATCH v4 1/2] netdev-native-tnl: Add ipv6_label param in netdev_tnl_push_ip_header. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" For tunnels such as SRv6, some popular vendor appliances support IPv6 flowlabel based load balancing. In preparation for OVS to support it, this patch modifies the encapsulation to allow IPv6 flowlabel to be configured. Signed-off-by: Nobuhiro MIKI --- lib/netdev-native-tnl.c | 23 +++++++++++++---------- lib/netdev-native-tnl.h | 4 ++-- lib/packets.c | 2 +- lib/packets.h | 2 ++ 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lib/netdev-native-tnl.c b/lib/netdev-native-tnl.c index 9abdf51076a8..db1c4c6d9bfc 100644 --- a/lib/netdev-native-tnl.c +++ b/lib/netdev-native-tnl.c @@ -146,8 +146,8 @@ netdev_tnl_ip_extract_tnl_md(struct dp_packet *packet, struct flow_tnl *tnl, * * Return pointer to the L4 header added to 'packet'. */ void * -netdev_tnl_push_ip_header(struct dp_packet *packet, - const void *header, int size, int *ip_tot_size) +netdev_tnl_push_ip_header(struct dp_packet *packet, const void *header, + int size, int *ip_tot_size, ovs_be32 ipv6_label) { struct eth_header *eth; struct ip_header *ip; @@ -166,6 +166,7 @@ netdev_tnl_push_ip_header(struct dp_packet *packet, ip6 = netdev_tnl_ipv6_hdr(eth); *ip_tot_size -= IPV6_HEADER_LEN; ip6->ip6_plen = htons(*ip_tot_size); + packet_set_ipv6_flow_label(&ip6->ip6_flow, ipv6_label); packet->l4_ofs = dp_packet_size(packet) - *ip_tot_size; return ip6 + 1; } else { @@ -245,7 +246,8 @@ netdev_tnl_push_udp_header(const struct netdev *netdev OVS_UNUSED, struct udp_header *udp; int ip_tot_size; - udp = netdev_tnl_push_ip_header(packet, data->header, data->header_len, &ip_tot_size); + udp = netdev_tnl_push_ip_header(packet, data->header, data->header_len, + &ip_tot_size, 0); /* set udp src port */ udp->udp_src = netdev_tnl_get_src_port(packet); @@ -456,7 +458,8 @@ netdev_gre_push_header(const struct netdev *netdev, struct gre_base_hdr *greh; int ip_tot_size; - greh = netdev_tnl_push_ip_header(packet, data->header, data->header_len, &ip_tot_size); + greh = netdev_tnl_push_ip_header(packet, data->header, data->header_len, + &ip_tot_size, 0); if (greh->flags & htons(GRE_CSUM)) { ovs_be16 *csum_opt = (ovs_be16 *) (greh + 1); @@ -611,8 +614,8 @@ netdev_erspan_push_header(const struct netdev *netdev, struct erspan_md2 *md2; int ip_tot_size; - greh = netdev_tnl_push_ip_header(packet, data->header, - data->header_len, &ip_tot_size); + greh = netdev_tnl_push_ip_header(packet, data->header, data->header_len, + &ip_tot_size, 0); /* update GRE seqno */ tnl_cfg = &dev->tnl_cfg; @@ -793,8 +796,8 @@ netdev_gtpu_push_header(const struct netdev *netdev, unsigned int payload_len; payload_len = dp_packet_size(packet); - udp = netdev_tnl_push_ip_header(packet, data->header, - data->header_len, &ip_tot_size); + udp = netdev_tnl_push_ip_header(packet, data->header, data->header_len, + &ip_tot_size, 0); udp->udp_src = netdev_tnl_get_src_port(packet); udp->udp_len = htons(ip_tot_size); netdev_tnl_calc_udp_csum(udp, packet, ip_tot_size); @@ -921,8 +924,8 @@ netdev_srv6_push_header(const struct netdev *netdev OVS_UNUSED, { int ip_tot_size; - netdev_tnl_push_ip_header(packet, data->header, - data->header_len, &ip_tot_size); + netdev_tnl_push_ip_header(packet, data->header, data->header_len, + &ip_tot_size, 0); } struct dp_packet * diff --git a/lib/netdev-native-tnl.h b/lib/netdev-native-tnl.h index 4dad8f978cc6..3311d796ed85 100644 --- a/lib/netdev-native-tnl.h +++ b/lib/netdev-native-tnl.h @@ -138,8 +138,8 @@ void * netdev_tnl_ip_extract_tnl_md(struct dp_packet *packet, struct flow_tnl *tnl, unsigned int *hlen); void * -netdev_tnl_push_ip_header(struct dp_packet *packet, - const void *header, int size, int *ip_tot_size); +netdev_tnl_push_ip_header(struct dp_packet *packet, const void *header, + int size, int *ip_tot_size, ovs_be32 ipv6_label); void netdev_tnl_egress_port_range(struct unixctl_conn *conn, int argc, const char *argv[], void *aux OVS_UNUSED); diff --git a/lib/packets.c b/lib/packets.c index 06f516cb1af4..7e5a52fd40ed 100644 --- a/lib/packets.c +++ b/lib/packets.c @@ -1274,7 +1274,7 @@ packet_set_ipv6_addr(struct dp_packet *packet, uint8_t proto, pkt_metadata_init_conn(&packet->md); } -static void +void packet_set_ipv6_flow_label(ovs_16aligned_be32 *flow_label, ovs_be32 flow_key) { ovs_be32 old_label = get_16aligned_be32(flow_label); diff --git a/lib/packets.h b/lib/packets.h index 9465bec16c9c..ac4c28e471e6 100644 --- a/lib/packets.h +++ b/lib/packets.h @@ -1622,6 +1622,8 @@ void packet_set_ipv6_addr(struct dp_packet *packet, uint8_t proto, ovs_16aligned_be32 addr[4], const struct in6_addr *new_addr, bool recalculate_csum); +void packet_set_ipv6_flow_label(ovs_16aligned_be32 *flow_label, + ovs_be32 flow_key); void packet_set_tcp_port(struct dp_packet *, ovs_be16 src, ovs_be16 dst); void packet_set_udp_port(struct dp_packet *, ovs_be16 src, ovs_be16 dst); void packet_set_sctp_port(struct dp_packet *, ovs_be16 src, ovs_be16 dst);