시작 시 LAN 연결을 설정하는 데 시간이 오래 걸리는 이유는 무엇입니까?

시작 시 LAN 연결을 설정하는 데 시간이 오래 걸리는 이유는 무엇입니까?

부팅 시 가상 머신이 로컬 네트워크에 연결하는 데 시간이 걸리는 문제가 발생했습니다.

다음 명령을 사용하여 가상 머신을 만듭니다.

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

systemdUbuntu 14.04.4 LTS를 실행하는 호스트에서 머신을 생성하면 모든 것이 잘 작동합니다. 스크립트를 실행하기 전에 가상 머신이 시작되고 LAN에 연결됩니다. 그러나 호스트 시스템이 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
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
[...]
</BODY></HTML>^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
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
[...]
</BODY></HTML>^M
Tue Jul 19 13:18:14 UTC 2016

여기:

  • ping성공했다
  • 실제로 작업을 수행하는 데 걸리는 시간인 2초가 소요됩니다 ping.

실제 호스트(Debian 및 Ubuntu)는 하드웨어가 다르므로(NIC 수가 다름) 구성을 비교하기가 어렵습니다. 그러나 가상 머신은 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? 스크립트를 실행할 때 기본적인 연결을 보장한다고 생각합니다. 그렇지 않은데, 이것의 목적은 무엇입니까?

답변1

그것을 발견.비슷한 상황에서, 저자는 다음과 같이 불평했습니다.

네트워크가 정상으로 돌아올 때까지 약 20초 정도 기다려야 합니다.

것 같다:

이 지연은 STP(Spanning Tree Protocol)로 인해 발생합니다.

실제로 차이점 중 하나는 /etc/network/interfacesDebian 호스트에는 포함되어 있지만 bridge_stp onUbuntu에는 선언되지 않았다는 것입니다 bridge_stp.

관련 정보