Design, Implementation and Performance Estimation of mtd64-ng, a New Tiny DNS64 Proxy
Abstract
In the current phase of the IPv6 transition, it is a typical situation that IPv6 only clients should be enabled to communicate with IPv4 only servers. The DNS64+NAT64 tool suite is an excellent solution to this problem. Although several free software DNS64 implementations exist, we point out that there is room for further high performance and computation efficient multithreaded DNS64 implementations. MTD64 was designed to be able to utilize several CPU cores. Whereas MTD64 outperformed BIND more than five times, two critical issues (memory leaking and potential vulnerability to DoS attacks) were identified. Therefore MTD64 was redesigned under a new name: mtd64-ng (not capitalized). This paper is about the design, implementation and initial performance estimation of mtd64-ng. The usage of object oriented decomposition and the RAII (Resource Acquisition Is Initialization) idiom ensures that raw, sensitive resources (e.g. memory, sockets) are always released and it greatly simplifies exception handling. Using the new features of the C++11 standard enabled us to write more efficient and better readable code. The performance of mtd64-ng is compared to that of BIND and MTD64 and it is found that mtd64-ng outperforms even its predecessor, MTD64.
Keywords
Full Text:
PDFDOI: https://doi.org/10.20532/cit.2017.1003419
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.