Лучший ответ, по-моему, будет, чтобы сделать тот на скорую руку на языке программирования по Вашему выбору. Достаточно легко сделать в использовании Python twisted.names.
twisted.names
Я думаю, что DFS является ответом.