COREDNS-MULTISOCKET(7)

πŸ“¦ version 1.15.0, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… COREDNS-MULTISOCKET πŸ’…

okay so bestie, you're reading the multisocket page from the CoreDNS Plugins manual, section 7. it's giving "one port, many servers, zero gatekeeping" and honestly? iconic. here's everything, no cap πŸ’–


✨ NAME ✨

multisocket β€” allows to start multiple servers that will listen on one port.


πŸ¦‹ DESCRIPTION πŸ¦‹

With multisocket, you can define the number of servers that will listen on the same port. The SO_REUSEPORT socket option allows to open multiple listening sockets at the same address and port. In this case, kernel distributes incoming connections between sockets. slay, the kernel is doing the matchmaking for you πŸ”₯

Enabling this option allows to start multiple servers, which increases the throughput of CoreDNS in environments with a large number of CPU cores. literally main character energy for your big beefy multicore box πŸ‘‘


πŸŽ€ SYNTAX πŸŽ€

multisocket [NUM_SOCKETS]
  • NUM_SOCKETS β€” the number of servers that will listen on one port. Default value is equal to GOMAXPROCS. Maximum value is 1024. πŸ“

🌸 EXAMPLES 🌸

Start 5 TCP/UDP servers on the same port. five little besties, all vibing on one socket 🫢

. {
    multisocket 5
    forward . /etc/resolv.conf
}

Do not define NUM_SOCKETS, in this case it will take a value equal to GOMAXPROCS. let the plugin pick for you, it's got you πŸ’œ

. {
    multisocket
    forward . /etc/resolv.conf
}

⭐ RECOMMENDATIONS ⭐

The tests of the multisocket plugin, which were conducted for NUM_SOCKETS from 1 to 10, did not reveal any side effects or performance degradation. we ran it, it ate, no crumbs left πŸ’…

This means that the multisocket plugin can be used with a default value that is equal to GOMAXPROCS. easy mode, honestly.

However, to achieve the best results, it is recommended to consider the specific environment and plugins used in CoreDNS. To determine the optimal configuration, it is advisable to conduct performance tests with different NUM_SOCKETS, measuring Queries Per Second (QPS) and system load. ngl this is the "do your homework" part, but it's worth it 🌈

If conducting such tests is difficult, follow these recommendations:

  1. Determine the maximum CPU consumption of CoreDNS server without multisocket plugin. Estimate how much CPU CoreDNS actually consumes in specific environment under maximum load. πŸ“Š
  2. Align NUM_SOCKETS with the estimated CPU usage and CPU limits or system's available resources.

Examples:

  • If CoreDNS consumes 4 CPUs and 8 CPUs are available, set NUM_SOCKETS to 2. 🧚
  • If CoreDNS consumes 8 CPUs and 64 CPUs are available, set NUM_SOCKETS to 8. πŸ”₯

πŸ’€ LIMITATIONS πŸ’€

The multisocket value used for a given listen address is taken from the first server block that binds to that address in the Corefile. Subsequent server blocks using the same address will not change it. Different addresses may use different values. first one wins, periodt β€” the rest just don't get a say πŸ™ˆ

The SO_REUSEPORT socket option is not available for some operating systems. It is available since Linux Kernel 3.9 and not available for Windows at all. Windows besties... it's not happening, sorry 😭

Using this plugin with a system that does not support SO_REUSEPORT will cause an address already in use error. this is the danger zone, do a vibe check on your kernel before you ship it ⚠️

okay that's the whole page, you're basically a multisocket expert now, iykyk πŸ’…βœ¨ this was brought to you by CoreDNS, dated March 2026, from the CoreDNS Plugins collection β€” go forth and multiplex, bestie, and remember: one port, many sockets, no drama πŸŽ€πŸ¦‹πŸ‘‘

πŸ“¦ where this page comes from