{'fraction_non_alphanumeric': 0.013377926421404682, 'fraction_numerical': 0.0, 'mean_word_length': 5.323943661971831, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Reducible Complexity in DNS

DNS is one of the most important components of the Internet infrastructure. Unfortunately, it is known to be difficult to implement, and available implementations are difficult to configure correctly. DNS performance and availability often suffer from poor configuration which leads to unavailability or erroneous behavior of distributed systems that depend on DNS. The data structures of DNS are historically grown. Some are no longer needed, some have changed their semantics. However, they have to be maintained by implementations. We measure the extent and configuration issues in DNS data and propose simplifications to DNS data types and semantics that would allow building more dependable implementations. New DNS implementations could also reduce complexity by ignoring certain functionality of DNS that are not needed or that can be implemented in other ways.