Abstract-In our earlier research papers, bash shell scripts using the host Linux command were applied for testing the performance and stability of different DNS64 server implementations. Because of their inefficiency, a small multithreaded C/C++ program (named dns64perf) was written which can directly send DNS AAAA record queries. After the introduction to the essential theoretical background about the structure of DNS messages and TCP/IP socket interface programming, the design decisions and implementation details of our DNS64 performance test program are disclosed. The efficiency of dns64perf is compared to that of the old method using bash shell scripts. The result is convincing: dns64perf can send at least 95 times more DNS AAAA record queries per second. The source code of dns64perf is published under the GNU GPLv3 license to support the work of other researchers in the field of testing the performance of DNS64 servers.
Keywords-DNS64, DNS query, Linux, performance analysis, TCP/IP socket interface programming.
I. INTRODUCTIONThe combination of DNS64 [1] and NAT64 [2] is the best available solution which can enable IPv6 only clients to communicate with IPv4 only servers. There are several DNS64 and NAT64 implementations exist and the network operators need to choose the one that best fits for their purposes. Performance, stability and security are all very important aspects. Several papers were published concerning the performance of DNS64 and NAT64 implementations,, however their authors measured the common performance of the combination of a given DNS64 implementation and a given NAT64 implementation. We have shown in [6] that the performance of the NAT64 and DNS64 implementations should be measured independently. In our previous works [6]-[8], we measured the performance of several DNS64 implementations using single core and also multi-core test devices. We used simple bash shell scripts for load generation (see details in section II), but they proved to be inefficient and therefore we decided to prepare a small special purpose C/C++ test program. We do not know of any other similar test program for the performance analysis of DNS64 servers, except for the general DNS server performance test program called DNSPerf [9] which could be used, however it uses a text file as input [10] and thus the reading and processing of the text file may be a Therefore we considered that a small special purpose DNS64 performance test program was worth writing. In this paper, we discuss the design, implementation and testing of our DNS64 performance test program. The remainder of this paper is organized as follows. The DNS64 server performance testing algorithm to be implemented by the test program is discussed in section II. The theoretical background including the structure of the DNS messages and the basics of TCP/IP socket interface programming is summarized in section III. The design and implementation questions are detailed in section IV. The method of the comparison of the performances of the old bash scripts and of...