Почему так долго устанавливается подключение к локальной сети при загрузке?

У меня проблема с виртуальной машиной, которой требуется время для подключения к локальной сети при загрузке.

Я создаю виртуальную машину с помощью следующей команды:

virt-install \
    --connect qemu:///system \
    --name demo \
    --noautoconsole \
    --disk path=/demo.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback \
    --disk path=/base.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback \
    --import \
    --vcpus 1 \
    --virt-type kvm \
    --ram 256 \
    --hvm \
    --os-type linux

Когда я создаю машину на хосте под управлением Ubuntu 14.04.4 LTS, все работает нормально: виртуальная машина загружается и подключается к локальной сети прямо перед запуском скрипты systemd . Однако, когда на хосте запущен Debian 8.5, требуется некоторое время для подключения виртуальной машины и запуска скриптов systemd до того, как сетевые ресурсы можно будет фактически использовать.

Во время отладки я создал следующий сценарий:

#!/bin/bash

date >> /ping.log
ping -c 3 -W 3 "192.168.1.7" >> /ping.log
date >> /ping.log
curl google.com >> ping.log
date >> /ping.log

Вот соответствующая конфигурация systemd :

[Unit]
Description=Demo
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/demo-init

[Install]
WantedBy=multi-user.target

После загрузки машины ping.log содержит следующее :

Tue Jul 19 12:57:56 UTC 2016
PING 192.168.1.7 (192.168.1.7) 56(84) bytes of data.
From 192.168.1.35 icmp_seq=1 Destination Host Unreachable
From 192.168.1.35 icmp_seq=2 Destination Host Unreachable
From 192.168.1.35 icmp_seq=3 Destination Host Unreachable

--- 192.168.1.7 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2001ms
pipe 3
Tue Jul 19 12:57:59 UTC 2016

[...]
^M
Tue Jul 19 12:58:16 UTC 2016

Это означает, что:

  • ping не работает,
  • Требуется 20 секунд для подключения.

Для сравнения, при запуске той же машины на хосте Ubuntu это то, что хранится в ping.log :

Tue Jul 19 13:18:12 UTC 2016
PING 192.168.1.7 (192.168.1.7) 56(84) bytes of data.
64 bytes from 192.168.1.7: icmp_seq=1 ttl=64 time=2.27 ms
64 bytes from 192.168.1.7: icmp_seq=2 ttl=64 time=0.711 ms
64 bytes from 192.168.1.7: icmp_seq=3 ttl=64 time=5.47 ms

--- 192.168.1.7 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.711/2.819/5.472/1.981 ms
Tue Jul 19 13:18:14 UTC 2016

[...]
^M
Tue Jul 19 13:18:14 UTC 2016

Здесь:

  • ping успешно,
  • Это занимает 2 секунды, то есть время, чтобы выполнить фактический пинг .

Фактические хосты (Debian и Ubuntu) имеют разное оборудование (включая разное количество сетевых карт), что затрудняет сравнение конфигурации. Однако виртуальная машина развертывается точно так же, основана на том же базовом диске с предустановленным Debian и имеет точно такие же / etc / network / interfaces :

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.1.35
    netmask 255.255.240.0
    network 192.168.0.0
    broadcast 192.168.3.255
    gateway 192.168.1.1
    dns-nameservers 192.168.1.3 192.168.1.4 8.8.8.8 8.8.4.4

У меня есть два вопроса:

  • Какие могут быть возможные причины такой огромной задержки?

  • Я неправильно понял цель network-online.target ? Я думал, что это гарантирует базовое соединение при запуске скрипта. Поскольку на самом деле это не так, для чего это нужно?

0
13.04.2017, 15:36
1 ответ

Нашел. В аналогичном случае автор жаловался, что:

Мне нужно ждать около 20 секунд, пока моя сеть не подключится.

Оказалось, что :

Эта задержка вызвана протоколом Spanning Tree Protocol (STP)

. Действительно, одно из различий заключалось в том, что / etc / network / interfaces Debian хост содержал bridge_stp на , тогда как в Ubuntu не было оператора bridge_stp .

0
28.01.2020, 04:50

Теги

Похожие вопросы