Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp939730rdb; Wed, 6 Dec 2023 04:34:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IHFTWn6rEH4wWffJbCKfbxHPhs5Obxu0lc0SkpZCg4138KNaiFiXl75d3SwxSq0FGNt4CrR X-Received: by 2002:a05:6a20:7d8c:b0:18f:97c:5b92 with SMTP id v12-20020a056a207d8c00b0018f097c5b92mr496260pzj.96.1701866055954; Wed, 06 Dec 2023 04:34:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701866055; cv=none; d=google.com; s=arc-20160816; b=SwZtuP+tkoLxr/j4xQkumVLAabnYO+fbh8DYaUDp8v6g8x8w19AmGzEeteqQUeEGvA MRXBw1vxL3nyJCiLa6uc+EOzvuFCSmx2yw+P2QuPw9HjYkm8u0S7V1LN5Cw6zK5GfWXW u0AvFgeYnF0Qr9jmVS3S3SdWRnopROkmGV5pBSLX80TJ75OH8vp6GqkFEtcZlk/FNcck YxVvoDEwvrxtPa7/qGoY8WpnBu7lGHFfN/u7T3q3dunkydS8Wh175tJS0aLR4C+IY3La EN1NZ6PxcJxvRVqC83CHvXW2ZILS+ZAEWieA+30JYZ91uFeFi5+L7bNAfgXj2RlKLwlY 574A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:message-id:in-reply-to :subject:cc:to:from:date:dkim-signature; bh=iyDhc6vQCS9ju9hX0FcpJMQJ7Ip5rmo1E40gTmjWPTo=; fh=FzPdnNwusQnPDaPl+5cCbJLsk8DFWF5DXwJc5t3kadk=; b=J2e1zOKiq4Fi4OWAhCXxOZtlkf6uypATix6OMvKR2V52QGqIDBwRDdquF7n0sASFbs ASOoaQoiDus/jF+tO4WyTCzgtAUy4K1LYWHUttdyd8OOCYLWUb67kxRFAxVZATics12a XjHCaIDrCcED5cjw6+LEs7ZcTVftIsXjapZBB0R2tqdHTDHMm4a2ZOaZIrjD9Tp0bvMv oIK+h4Wv+WvxPL9a45QPLaONKg0NijdS/Xs2kaBCDtUwhXJb94+gkrqQp/LjYapoZyYL E1ZB/yZtr5yPzpKqR3qoImkMw0Y/gNVpo4F9lE94DeUzzMZ50z1Jl9jOKJsmiRCRj/Td 3XqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@ssi.bg header.s=ink header.b=ky+r5FZJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ssi.bg Return-Path: Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id k10-20020a17090a9d8a00b0028873dbd62asi784902pjp.77.2023.12.06.04.34.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 04:34:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=fail header.i=@ssi.bg header.s=ink header.b=ky+r5FZJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ssi.bg Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id B84908325D1D; Wed, 6 Dec 2023 04:34:12 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378292AbjLFMdx (ORCPT + 99 others); Wed, 6 Dec 2023 07:33:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378277AbjLFMdw (ORCPT ); Wed, 6 Dec 2023 07:33:52 -0500 Received: from mg.ssi.bg (mg.ssi.bg [193.238.174.37]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4F94112; Wed, 6 Dec 2023 04:33:55 -0800 (PST) Received: from mg.bb.i.ssi.bg (localhost [127.0.0.1]) by mg.bb.i.ssi.bg (Proxmox) with ESMTP id 058A017AAD; Wed, 6 Dec 2023 14:33:51 +0200 (EET) Received: from ink.ssi.bg (ink.ssi.bg [193.238.174.40]) by mg.bb.i.ssi.bg (Proxmox) with ESMTPS id DF4DB17AA4; Wed, 6 Dec 2023 14:33:50 +0200 (EET) Received: from ja.ssi.bg (unknown [213.16.62.126]) by ink.ssi.bg (Postfix) with ESMTPSA id 5E83A3C0439; Wed, 6 Dec 2023 14:33:50 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=ssi.bg; s=ink; t=1701866030; bh=Qx6bGY5zwKCukI64izDOo4jSKiZokAgYKMjEju4y7Xc=; h=Date:From:To:cc:Subject:In-Reply-To:References; b=ky+r5FZJhNsSI8aZdpYuGwZY/NnJVOx5ruooFjSqB14C457Iyrt6DUGDlCrW+BCAp Mf+m37WmEQt53Loth6p9nKxJf+NChZw+ADCVN+Klt03gjyQd7P67ilA45NS0Vh4hks w/WtISkByQk/WLNeRCuKFdUcuzQcqlwxw0H3jwJ0= Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by ja.ssi.bg (8.17.1/8.17.1) with ESMTP id 3B6CXlw6051933; Wed, 6 Dec 2023 14:33:48 +0200 Date: Wed, 6 Dec 2023 14:33:47 +0200 (EET) From: Julian Anastasov To: Lev Pantiukhin cc: mitradir@yandex-team.ru, Simon Horman , linux-kernel , netdev@vger.kernel.org, lvs-devel@vger.kernel.org, netfilter-devel@vger.kernel.org, coreteam@netfilter.org Subject: Re: [PATCH] ipvs: add a stateless type of service and a stateless Maglev hashing scheduler In-Reply-To: <20231204152020.472247-1-kndrvt@yandex-team.ru> Message-ID: <58b14269-4d81-8939-020e-c33ed70df483@ssi.bg> References: <20231204152020.472247-1-kndrvt@yandex-team.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Wed, 06 Dec 2023 04:34:13 -0800 (PST) Hello, On Mon, 4 Dec 2023, Lev Pantiukhin wrote: > +#define IP_VS_SVC_F_STATELESS 0x0040 /* stateless scheduling */ I have another idea for the traffic that does not need per-client state. We need some per-dest cp to forward the packet. If we replace the cp->caddr usage with iph->saddr/daddr usage we can try it. cp->caddr is used at the following places: - tcp_snat_handler (iph->daddr), tcp_dnat_handler (iph->saddr): iph is already provided. tcp_snat_handler requires IP_VS_SVC_F_STATELESS to be set for serivce with present vaddr, i.e. non-fwmark based. So, NAT+svc->fwmark is another restriction for IP_VS_SVC_F_STATELESS because we do not know what VIP to use as saddr for outgoing traffic. - ip_vs_nfct_expect_related - we should investigate for any problems when IP_VS_CONN_F_NFCT is set, probably, we can not work with NFCT? - ip_vs_conn_drop_conntrack - FTP: - sets IP_VS_CONN_F_NFCT, uses cp->app May be IP_VS_CONN_F_NFCT should be restriction for IP_VS_SVC_F_STATELESS mode? cp->app for sure because we keep TCP seq/ack state for the app in cp->in_seq/out_seq. We can keep some dest->cp_route or another name that will hold our cp for such connections. The idea is to not allocate cp for every packet but to reuse this saved cp. It has all needed info to forward skb to real server. The first packet will create it, save it with some locking into dest and next packets will reuse it. Probably, it should be ONE_PACKET entry (not hashed in table) but can be with running timer, if needed. One refcnt for attaching to dest, new temp refcnt for every packet. But in this mode __ip_vs_conn_put_timer uses 0-second timer, we have to handle it somehow. It should be released when dest is removed and on edit_dest if needed. There are other problems to solve, such as set_tcp_state() changing dest->activeconns and dest->inactconns. They are used also in ip_vs_bind_dest(), ip_vs_unbind_dest(). As we do not keep previous connection state and as conn can start in established state, we should avoid touching these counters. For UDP ONE_PACKET has no such problem with states but for TCP/SCTP we should take care. Regards -- Julian Anastasov