UDP send costs in Linux

Ian Swett <ianswett@google.com> Wed, 04 April 2018 00:20 UTC

Return-Path: <ianswett@google.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2A54E1241F3 for <quic@ietfa.amsl.com>; Tue, 3 Apr 2018 17:20:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.709
X-Spam-Level:
X-Spam-Status: No, score=-2.709 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dFBOvENr9wGA for <quic@ietfa.amsl.com>; Tue, 3 Apr 2018 17:20:21 -0700 (PDT)
Received: from mail-it0-x22e.google.com (mail-it0-x22e.google.com [IPv6:2607:f8b0:4001:c0b::22e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3F5491205F0 for <quic@ietf.org>; Tue, 3 Apr 2018 17:20:21 -0700 (PDT)
Received: by mail-it0-x22e.google.com with SMTP id v194-v6so25201912itb.0 for <quic@ietf.org>; Tue, 03 Apr 2018 17:20:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=/FTCRuDXr7i3YCeb4zLfqHSPL5DpLQGTkd72w6kLCeE=; b=eWlWe+bXTzuh2dTMVMEgnYnC7nMVyArYSkJuPlDFlvM2hnr9rRsyWAynRS8COtNjDh swJHzv+4h9UFChe8UKrUUhktJVlSE65tsbViN8RG9QUdxBxm6vAg1NoxxQLQscUHGU6l InCKd5JlV7WZARkYL/E77twJ3Lc8vtKiBL9tvesBLpLVsxBPv6t3LFWakmXxxmhI7zdV L9kaDWrcG9vHiLN74bEJxe4dei1foHcYiI6eGXSVdyyeONP+3P4Od3O5RcXX4YU+rtjw HukWCIMMV8SvezEr+HdNNVI3nF9dNJsMR6HLXUHmCV3xbBW/zZhAX5oi+UABmceU5D6O cpAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=/FTCRuDXr7i3YCeb4zLfqHSPL5DpLQGTkd72w6kLCeE=; b=tgp2IrcrKPVJfAp9DSweLNOw1av1QFN8AvoMOD3km87WbG9F4ttmIaydiRb7qpvJbY UTc9qIUCiTF2Dru/qL5/REyjNUudae6fUlwgpS9kHza0/QWAA7ff/9GF6XKlCvXEIVRp 6gw3TqT5plZ1K7lK9/CBqDiz26rIc0Ttg+8lOnzw+uozY4egtROsrC4QFBbugufrhGDW 4+g+SjgUdJb5O6WPT4qEqj0dZJHdfZXWC8V73i+Hxrt5iJ54O9rzSeNuExAYq6pC71tP 5ZkmpGmhjzYxqdSc9+6u2FQDJ75/QIayoWH10ijYH6BjqZPXYCboUIEUXI7ZU9gT7+HP tENg==
X-Gm-Message-State: ALQs6tDgeibKkZeGiPvsa5w7toWmHXJ6GyRDGJmHS/2GbJp2AJECUJH/ YPk0S2fOrtvLc8jZhWDx/RWS15jDd37W8a9OmZfyG1QnhxI=
X-Google-Smtp-Source: AIpwx4+GCloe6vPpQHHnAQDpVsQfaU0dhh0eOHIrcMYkHsMQDu4ctayGfAVevEMGzHTQ1+CwRLdkSI7CSVhpcoV1X7U=
X-Received: by 2002:a24:618f:: with SMTP id s137-v6mr7749575itc.40.1522801220148; Tue, 03 Apr 2018 17:20:20 -0700 (PDT)
MIME-Version: 1.0
From: Ian Swett <ianswett@google.com>
Date: Wed, 04 Apr 2018 00:20:08 +0000
Message-ID: <CAKcm_gP4zz1bW5T-_N2Oxy6o5Sw2mEs3DFU9_HrmfkuaJyLz0A@mail.gmail.com>
Subject: UDP send costs in Linux
To: IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000caebbf0568fac9ec"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/fSwoMrI1XPsyMfC7MZwXSG7L9v8>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 04 Apr 2018 00:20:23 -0000

One challenge with QUIC at the moment is the increased CPU cost of sending
UDP packets vs TCP payloads.  I've seen this across every platform Google
has deployed QUIC on, so it's a widespread issue.

Here's an excellent presentation on what's causing the increased CPU
consumption on Linux from Willem de Bruijn(UDP starts on slide 9).
http://vger.kernel.org/netconf2017_files/rx_hardening_and_udp_gso.pdf

And while you're thinking of CPU usage, it's worth looking at the
presentation on timing wheel based packet pacing(which is minimum release
time based) and is ideal for QUIC(and TCP for that matter):
https://conferences.sigcomm.org/sigcomm/2017/files/program/ts-9-4-carousel.pdf

-Ian