Задержка в большой сети на localhohst

У меня есть ноутбук, который я хочу оптимизировать для приложений VoIP. Я испытываю проблему, состоящую в том, что приложения, подключающиеся к localhost, страдают большими задержками Обычно ничего не происходит в течение 2-3 секунд, когда одно приложение подключается к другому на том же компьютере. Похоже на "простое" время. Я задал вопрос на форуме VoIP, и один из ответов предполагал, что "для одного из используемых адресов нет действительного обратного DNS, и даже не получаю однозначного" неизвестного "ответа от DNS-сервера"

ping localhost возвращает 0.03ms - неплохо

Теперь, когда я копаю e330 (localhost), когда компьютер подключен к сети, я получаю:

dig e330

; <<>> DiG 9.8.1-P1 <<>> e330
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 46557
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;e330.              IN  A

;; AUTHORITY SECTION:
.           600 IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2015012700 1800 900 604800 86400

;; Query time: 38 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jan 27 12:35:08 2015
;; MSG SIZE  rcvd: 97

38 мсек выглядит плохо.

Затем я отключаю компьютер от сети и снова "копаю e330". На этот раз время запроса: 0 мсек. Однако не имеет значения, подключен ли мой ноутбук к сети или нет. Время простоя примерно одинаково.

Из того, что я прочитал, я вижу, что я могу настроить DNS и DHCP на моем ноутбуке. Но я не хочу, чтобы он работал как сервер. Это ноутбук, и он должен подключаться к другим сетям везде, ничего не перенастраивая.

Что можно сделать с "обратным DNS"? (Я понимаю, что это такое, но я не знал, что с этим можно что-то сделать) Что-нибудь еще можно сделать с точки зрения Linux для ускорения сетевых интерфейсов для приложений VOIP?

Linux E330 3.13.11-03131111-generiC#201411111336 SMP вт 11 ноября 18:55:51 UTC 2014 i686 i686 i386 GNU/Linux

2 ответа

Я решил проблему. Кажется, что это то же самое на каждой машине с Ubuntu. По крайней мере, 12.04.

Вот как я отладил проблему:

  • У меня уже были установлены Asterisk, Linphone и Wireshark. Я запускаю их всех.
  • Я заставляю Wireshark слушать "вот". Обычно в Wireshark ничего не показывалось.
  • Тогда я называю hello world на локальном хосте. Я вижу, что первая связь между Linphone и звездочкой происходит в 0 секунд, затем что-то происходит в 0,5 секунды, затем длинная пауза и следующий пакет почти через 3 секунды. Это была моя проблема.

Ниже как я это исправил. Это избавляет от этой длинной 3-секундной задержки, хотя есть еще 0,5 с, от которых я не могу избавиться.

Как выяснилось, dnsmasq, поставляемый с сетевым менеджером, разрешал localhost, запрашивая удаленный DNS-сервер, в моем случае opendns.

В /etc/NetworkManager/NetworkManager.conf Я закомментировал #dns=dnsmasq

затем

sudo service network-manager stop
sudo netstat -anlp | grep -w LISTEN

убить все запущенные процессы dnsmasq

sudo apt-get install dnsmasq

Затем настройте dnsmasq, убедитесь, что /etc/dnsmasq.conf у тебя есть

# Listen only on localhost
listen-address=127.0.0.1
bind-interfaces

И это все. Вам придется перезагрузить компьютер, я думаю, что выход из системы и логин тоже должны подойти.

Чтобы увидеть, использует ли ваша система Dnsmasq, запустите

netstat -ulnp | grep ":53 "

Вы можете запустить

sudo /etc/init.d/dnsmasq restart

чтобы увидеть, если вы не получаете никаких ошибок. Теперь "копать localhost" занимает 0 сек.

Некоторые ссылки, которые мне помогли: http://sokratisg.net/2012/03/31/ubuntu-precise-dnsmasq/

То, что вы видите, на самом деле провал. Он не получает ответ локально, а затем ищет в Интернете и, наконец, отказывается от NXDOMAIN ошибка. Это занимает так много времени, потому что он запрашивает основные корневые серверы, которые находятся за пределами вашей локальной сети.

Вот как это должно выглядеть. Это то, что я вижу, когда я запрашиваю мое имя хоста:

oli@bert:~$ dig bert

; <<>> DiG 9.9.5-3ubuntu0.1-Ubuntu <<>> bert
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25238
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;bert.              IN  A

;; Query time: 2 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Tue Jan 27 12:37:37 GMT 2015
;; MSG SIZE  rcvd: 33

Вы заметите, что нет root-servers.net деятельность.

Похоже, что у вас, вероятно, нет линии в вашем /etc/hosts это указывает на ваше имя хоста. Достаточно легко исправить, просто добавьте что-то вроде этого:

127.0.1.1    e330

Тогда попробуй dig e330 снова.

Другие вопросы по тегам