Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3884600pxj; Tue, 8 Jun 2021 00:37:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPRnqGMNp/ZcNO1olcfINLm19D1pHk0t0kbb60FXtgrRuJeyWp2pwrulQ9xchJ6jClP3g3 X-Received: by 2002:a17:906:14c9:: with SMTP id y9mr22596726ejc.192.1623137874425; Tue, 08 Jun 2021 00:37:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623137874; cv=none; d=google.com; s=arc-20160816; b=rJT4Ag1SSP1eJxTAypuZg8kqf2vrJBUy+beiqyAqCzgDR/KH4VuW8Yu5NBbqXp+d+e P/EdGLc8noJ9dM0NQvQ09krCUcH67+OGh84pFgnptRPqjzkorErRn+w6/W/VWgto3znw rrxKs+GDG2BpB40s5e8ooHOTjeFv1xAo2TWzpDx6lTvWV+ck94F0cUe4jykATVmsqGF7 wr1dyEyN5Dq/pQex2gw8DHtDic6Eb6KuyCaZYsGlGYQQplev3chs8afBtVQx/jQQpZGn 7HyWBy4PkWApSgNfnpr7eT/6/2ypbe40feUV14W+0IxCpJGWFqG0pklbAsbWlUt+I4EJ 9MSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:subject:from :references:cc:to:dkim-signature; bh=SbRCszcM+0Us1EZPMrPmKxX/D+gZYBJAD3AMc854kic=; b=ArJ7dTzKGuLddzHQC8/WHEnWGoKLbmOA4VKBe2EHO/cP9dvTwT8j5KWVrpcfHzewsU 5kUsYeYP4Ja9pUm7l8brvJQ35nmQdpU5oq0XeP+Tstkr+81m5niKatUW6v4LKVpu/qku GKqKxjQ0XFJWKnqUe7di5CtjXNDqM3K2qmea8enF2Uy6BSbDcd7/H5sBUF9Yf35t/dNb VeuOQNLEPorZ5oy+moIHUSeSf/Hh6WRwJNDYNTOhKXTpfUG7EKwFHCqBfdUzLl/TEJGa 7MKaoBCP4nGQlVKpR2pPWh4M9saIGtDU19mgFajyoSJjJpfkD06+wxbGxRSq5vInqBb8 sd1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samba.org header.s=42 header.b=dErj90Fa; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=samba.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h8si10898957ejo.57.2021.06.08.00.37.20; Tue, 08 Jun 2021 00:37:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@samba.org header.s=42 header.b=dErj90Fa; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=samba.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230307AbhFHHiY (ORCPT + 99 others); Tue, 8 Jun 2021 03:38:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229678AbhFHHiY (ORCPT ); Tue, 8 Jun 2021 03:38:24 -0400 Received: from hr2.samba.org (hr2.samba.org [IPv6:2a01:4f8:192:486::2:0]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23918C061574; Tue, 8 Jun 2021 00:36:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=samba.org; s=42; h=Date:Message-ID:From:Cc:To; bh=SbRCszcM+0Us1EZPMrPmKxX/D+gZYBJAD3AMc854kic=; b=dErj90Fa5bYOeuVyaADbtDZXEx tLRqwllTrHcn62DFtOZiRigMuz5olTQhyCF3/krCH+Zq6p3ZyGp52Awxcd8VIzqa5KAJsAuYHCMI+ bJH7kLjykVAwKZZkFKrRldU9CWJrRQtPa8+Djc5mzPXL6g4AH4fKjB2cCUBE4kCrNIuwMtbo1c41Z 2IBGesUZkDILk77oumxBM/I0X+WpWsDEzlG4+W5VS5D7lodFygQU1UhaerEiGX0Q+kzcn2QbWq9W5 CqnDpAGLKGvnO1HcNTR1en/UaF1uctFZ2D5pWZ0Sho8bN2wDxwIAFVMPJVIZa7zkLDIOGG0n2YaGr zK52Xx0lSr3PsX9dFqlY6lXCZUQJ/3dkMkZX0nlj2hNYfWwwWxkDmgctkL/ipdp32GQtCFGxOXmXu 541qlpn0PjDvcgrg7bgCGMVllqrYzz94EsEZdnDox5xuqxnWmJCUJ9+aBeYyDfOmNjy1YWRfICgpa XZOlGON/7NfVJA5YvMe7inhV; Received: from [127.0.0.2] (localhost [127.0.0.1]) by hr2.samba.org with esmtpsa (TLS1.3:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim) id 1lqWHj-0000gt-Rt; Tue, 08 Jun 2021 07:36:27 +0000 To: Steve French , =?UTF-8?Q?Aur=c3=a9lien_Aptel?= Cc: Alexander Ahring Oder Aring , Network Development , linux-nfs , CIFS , Leif Sahlberg , Steven Whitehouse References: <87pmwxsjxm.fsf@suse.com> From: Stefan Metzmacher Subject: Re: quic in-kernel implementation? Message-ID: <35352ef0-86ed-aaa5-4a49-b2b08dc3674d@samba.org> Date: Tue, 8 Jun 2021 09:36:27 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Am 08.06.21 um 05:04 schrieb Steve French: > On Mon, Jun 7, 2021 at 11:45 AM Aurélien Aptel wrote: >> >> Alexander Ahring Oder Aring writes: >>> as I notice there exists several quic user space implementations, is >>> there any interest or process of doing an in-kernel implementation? I >>> am asking because I would like to try out quic with an in-kernel >>> application protocol like DLM. Besides DLM I've heard that the SMB >>> community is also interested into such implementation. >> >> Yes SMB can work over QUIC. It would be nice if there was an in-kernel >> implementation that cifs.ko could use. Many firewall block port 445 >> (SMB) despite the newer version of the protocol now having encryption, >> signing, etc. Using QUIC (UDP port 443) would allow for more reliable >> connectivity to cloud storage like azure. >> >> There are already multiple well-tested C QUIC implementation out there >> (Microsoft one for example, has a lot of extra code annotation to allow >> for deep static analysis) but I'm not sure how we would go about porting >> it to linux. >> >> https://github.com/microsoft/msquic > > Since the Windows implementation of SMB3.1.1 over QUIC appears stable > (for quite a while now) and well tested, and even wireshark can now decode it, a > possible sequence of steps has been discussed similar to the below: > > 1) using a userspace port of QUIC (e.g. msquic since is one of the more tested > ports, and apparently similar to what already works well for QUIC on Windows > with SMB3.1.1) finish up the SMB3.1.1 kernel pieces needed for running over > QUIC Instead of using userspace upcalls directly, it would be great if we could hide behind a fuse-like socket type, in order to keep the kernel changes in fs/cifs (and other parts) tiny and just replace the socket(AF_INET) call, but continue to use a stream socket (likely with a few QUIC specific getsockopt/setsockopt calls). It would also allow userspace applications like Samba's smbclient and smbd to use it that way too. > 2) then switch focus to porting a smaller C userspace implementation of > QUIC to Linux (probably not msquic since it is larger and doesn't > follow kernel style) > to kernel in fs/cifs (since currently SMB3.1.1 is the only protocol > that uses QUIC, > and the Windows server target is quite stable and can be used to test against)> 3) use the userspace upcall example from step 1 for > comparison/testing/debugging etc. > since we know the userspace version is stable With having the fuse-like socket before it should be trivial to switch between the implementations. > 4) Once SMB3.1.1 over QUIC is no longer experimental, remove, and > we are convinced it (kernel QUIC port) works well with SMB3.1.1 > to servers which support QUIC, then move the quic code from fs/cifs to the /net > tree The 4th step would then finally allocate a stable PF_QUIC which would be ABI stable. metze