[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 []) 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-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 ([]) by localhost (ietfa.amsl.com []) (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 [] (host-79-121-45-147.kabelnet.hu []) (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 [] claimed to be []
To: dnewman@networktest.com, timmons.player@spirent.com
From: =?UTF-8?Q?Lencse_G=c3=a1bor?= <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=; helo=[]; 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
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
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