[bmwg] How to apply RFC 4814 pseudorandom source and destination port numbers, when benchmarking tunneling technologies?
Lencse Gábor <lencse@hit.bme.hu> Sat, 19 September 2020 20:08 UTC
Return-Path: <lencse@hit.bme.hu>
X-Original-To: bmwg@ietfa.amsl.com
Delivered-To: bmwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BAF7E3A0812 for <bmwg@ietfa.amsl.com>; Sat, 19 Sep 2020 13:08:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 lTeF62dzDPEc for <bmwg@ietfa.amsl.com>; Sat, 19 Sep 2020 13:08:21 -0700 (PDT)
Received: from frogstar.hit.bme.hu (frogstar.hit.bme.hu [IPv6:2001:738:2001:4020::2c]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D18CF3A080F for <bmwg@ietf.org>; Sat, 19 Sep 2020 13:08:20 -0700 (PDT)
Received: from [192.168.1.113] (host-79-121-45-147.kabelnet.hu [79.121.45.147]) (authenticated bits=0) by frogstar.hit.bme.hu (8.15.2/8.15.2) with ESMTPSA id 08JK88KI029915 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Sat, 19 Sep 2020 22:08:13 +0200 (CEST) (envelope-from lencse@hit.bme.hu)
X-Authentication-Warning: frogstar.hit.bme.hu: Host host-79-121-45-147.kabelnet.hu [79.121.45.147] claimed to be [192.168.1.113]
To: dnewman@networktest.com, timmons.player@spirent.com
From: Lencse Gábor <lencse@hit.bme.hu>
Cc: bmwg@ietf.org
Message-ID: <d7aa12c6-3d3e-a71c-2c7f-866113641a0c@hit.bme.hu>
Date: Sat, 19 Sep 2020 22:08:05 +0200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------D54C1572CFC79CFB52681E2D"
Content-Language: en-US
X-Virus-Scanned: clamav-milter 0.102.4 at frogstar.hit.bme.hu
X-Virus-Status: Clean
Received-SPF: pass (frogstar.hit.bme.hu: authenticated connection) receiver=frogstar.hit.bme.hu; client-ip=79.121.45.147; helo=[192.168.1.113]; envelope-from=lencse@hit.bme.hu; x-software=spfmilter 2.001 http://www.acme.com/software/spfmilter/ with libspf2-1.2.10;
X-DCC--Metrics: frogstar.hit.bme.hu; whitelist
X-Scanned-By: MIMEDefang 2.79 on 152.66.248.44
Archived-At: <https://mailarchive.ietf.org/arch/msg/bmwg/OZe3Gm2ik12C3KE_I-hcTOoSh_s>
Subject: [bmwg] How to apply RFC 4814 pseudorandom source and destination port numbers, when benchmarking tunneling technologies?
X-BeenThere: bmwg@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Benchmarking Methodology Working Group <bmwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/bmwg>, <mailto:bmwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/bmwg/>
List-Post: <mailto:bmwg@ietf.org>
List-Help: <mailto:bmwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/bmwg>, <mailto:bmwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 19 Sep 2020 20:08:24 -0000
Dear Authors of RFC 4814 and also BMWG Members, RFC 4814 Section 4.5 recommends to use pseudorandom source and destination port numbers. My experience show that their usage is an essential precondition to receive realistic results, when multi-core devices are benchmarked. (I have recently added this feature to siitperf, my DPDK-based RFC 8219 compliant SIIT tester: https://github.com/lencsegabor/siitperf/tree/varport Please see my report on the BMWG mailing list for the details.) However, I am not sure, how random ports should be used, when tunneling technologies are benchmarked. My MSc student is working on the implementation of a DS-Lite tester. He is going to build two separate Testers for the B4 and for the AFTR parts. For simplicity, let us consider B4 first (as the stateful nature of the AFTR further complicates the problem). The Single DUT test and traffic setup of RFC 8219 would look like this: +--------------------+ | | +------------|IPv4 Tester IPv6|<-------------+ | | tunnel| | | +--------------------+ | | | | +--------------------+ | | | | | +----------->|IPv4 B4 IPv6|--------------+ | tunnel| +--------------------+ Although the arrows are unidirectional, bidirectional traffic is required. On the left side, the Tester may send IPv4 traffic with pseudorandom source and destination port numbers. The DUT encapsulates the IPv4 packets into IPv6 packets and forwards them to the IPv6 port of the DUT. However, on the right side, the DUT has to use fixed UDP port numbers, when sending IPv6 traffic, as there is a tunnel there. Of course, the encapsulated IPv4 packets may have pseudorandom UDP port numbers, but they are not taken into consideration by the NIC of the B4 device. Thus the interrupts caused by the arrival of the IPv6 packets will not be hashed to all the cores of the B4 devices. IMHO, we may say that it is NOT a problem regarding the benchmarking method, because of the following consideration: We use pseudorandom port numbers for benchmarking in order to approximate the nature of the real life traffic, which usually has different IP addresses and port numbers. However, in this case, the real life traffic does have fixed port numbers due to the tunnel, thus having fixed UDP port numbers of over IPv6 complies with the real life traffic. (In addition to that, B4 is usually a small CE device, which perhaps does not have too many cores.) Am I right, or do I miss something? The situation of the AFTR is very different. +--------------------+ | | +------------|IPv6 Tester IPv4|<-------------+ | |tunnel | | | +--------------------+ | | | | +--------------------+ | | | | | +----------->|IPv6 AFTR IPv4|--------------+ |tunnel | +--------------------+ On the left side, the Tester needs to send IPv6 packets that encapsulate IPv4 packets. In real life, a high number of B4 devices are connected to an AFTR. Thus although the port numbers are fixed due to the tunnels, the IPv6 source addresses are different, and thus the interrupts caused by the packets are hashed more or less equally to the several CPU cores of the AFTR. (Of course, the encapsulated IPv4 packets have pseudorandom port numbers, but the NIC does not "see" them.) Am I right, that here the real spirit of RFC 4814 is that the Tester should use different source IPv6 addresses? Of course, their number (e.g. 256 or 65536) is a further question. As for the IPv4 traffic in the other direction, varying port number may be (and should be) used. However, they may not be arbitrarily due to the stateful NAPT44 in the AFTR. To that end, I have an idea: the tester should send preliminary traffic in the left to right direction, where the encapsulated IPv4 packets have varying (not random but rather one-by-one increasing) port numbers, and it should store the observed port numbers on the right side. Then it may randomly select from among the observed port numbers, when generating traffic in the right to left direction. But it is beyond the scope of my current question. I really appreciate any suggestions, comments, ideas! Best regards, Gábor Lencse ----------------------------------------------------- Dr. Gabor Lencse Professor Department of Telecommunications Szechenyi Istvan University Egyetem ter 1. Gyor, H-9026, HUNGARY FAX: +36.96.613.646 E-Mail: lencse@sze.hu URL: http://www.hit.bme.hu/people/lencse/index_en.htm
- [bmwg] How to apply RFC 4814 pseudorandom source … Lencse Gábor
- Re: [bmwg] How to apply RFC 4814 pseudorandom sou… David Newman
- [bmwg] How to benchmark stateful middleboxes (e.g… Lencse Gábor