Главная Virtualization, Новое Виртуальные машины и сети
  • Виртуальные машины и сети

    vn-4Для грамотного управления виртуальной инфраструктурой необходимо иметь представление о том, как организуется сетевое взаимодействие виртуальных машин между собой, с хостовой ОС (parent partition в терминологии MS), и с самой локальной сетью. В этой статье я постараюсь объяснить в меру своих возможностей тонкости работы виртуальных машин с сетью. Тем, кто уже работал с другими платформами виртуализации (VMWare, Virtual Server, etc.) все, о чем я буду писать, скорее всего, уже известно, тем не менее, на уровне терминологии вполне возможны некие различия.

    Работа с виртуальными сетями

    Все сетевое взаимодействие в среде Microsoft Hyper-V осуществляется через виртуальные сети (Virtual Networks). Де-факто виртуальная сеть – это виртуальный коммутатор, работающий на 2м уровне модели OSI. К этому виртуальному коммутатору в дальнейшем могут подсоединяться сетевые адаптеры: как виртуальные, так и физические. Тем не менее, надо отметить, что взаимодействовать между собой виртуальные сети не могут. Для такого взаимодействия необходимо некое внешнее устройство. Я все же надеюсь, что в одной из следующих версий появятся полноценные виртуальные сети с виртуальными коммутаторами – например такие, как в VMWare ESX.
    В Hyper-V существует три типа виртуальных сетей:

    • External – эта виртуальная сеть имеет выход «наружу». Это означает, что к виртуальному коммутатору будет подключен порт физического сетевого адаптера, и виртуальные машины, подключенные к сети смогут работать с сетью точно так же, как обычные физические машины, подключенные к сети.
    • Internal – внутренняя сеть. Виртуальные машины, подключенные к такой сети, могут взаимодействовать только между собой и с хостовой ОС. Во «внешний мир» они выходить не смогут.
    • Private – «еще более внутренняя сеть». Виртуальные машины могут взаимодействовать только между собой, к хостовой ОС и к общей сети доступа нет.

    Создание новых виртуальных сетей, а так же изменение параметров уже созданных осуществляется через Virtual Network Manager (в правой колонке консоли Hyper-V Manager). Чтобы создать новую сеть – нужно выбрать New virtual network, затем выбрать тип сети и нажать Add.

    Окно Virtual Network Manager

    Окно Virtual Network Manager

    После нажатия Add в списке виртуальных сетей появляется новая, с дефолтным именем «New Virtual Network». Выбрав ее, можно задать новое имя сети (рекомендуется давать понятные имена – например External, Internal и т.д.). Здесь же можно поменять тип сети на другой или включить идентификацию VLAN (подробнее о VLAN – далее). Если выбран тип сети External – то здесь же можно выбрать физический сетевой адаптер, к которому эта сеть будет подсоединена. Это может быть важно, если сервер имеет несколько физических сетевых адаптеров.

    Переходим к виртуальным машинам…

    Логично, что для того, чтобы работать с сетью, виртуальная машина должна иметь как минимум один виртуальный сетевой адаптер. Все создаваемые виртуальные машины по умолчанию комплектуются одним сетевым адаптером. При создании виртуальной машины можно выбрать, к какой из созданных виртуальных сетей он будет подключен. Если виртуальная машина должна иметь несколько сетевых адаптеров – их необходимо добавить вручную в свойствах виртуальной машины. Разумеется, виртуальная машина должна быть в выключенном состоянии (Off), чтобы иметь возможность добавления новых «виртуальных железок». В Hyper-V есть два типа сетевых адаптеров: Network Adapter и Legacy Network Adapter. Network Adapter – работает на скорости 1Гбит/с, и требует для своей работы установленных Integration Services. Legacy Network Adapter эмулирует работу 100Мбит/с сетевого адаптера Intel 21140-based PCI Fast Ethernet Adapter. Рекомендуется использовать Network Adapter, так как он работает намного быстрее. Использовать Legacy Network Adapter имеет смысл в двух случаях:

    • Если версия ОС, установленная на виртуальной машине, не позволяет установить Integration Services.
    • Если на виртуальной машине будет использоваться удаленная загрузка ОС (к примеру – установка Windows c сервера RIS/WDS).

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

    Свойства виртуального сетевого адаптера

    Свойства виртуального сетевого адаптера

    Самое, пожалуй, главное здесь – выбор виртуальной сети, к которой наш адаптер будет подключен. Так же здесь можно задать адаптеру определенный MAC-адрес (мне еще ни разу не пригодилось) и присвоить адаптеру определенный VLAN ID.

    А как же хост?

    Как уже писалось, в некоторых случаях виртуальные сети могут взаимодействовать так же и с хостовой ОС, установленной на физическом сервере. Как это происходит? Очень просто. Допустим, у нас создана одна виртуальная сеть типа External (Ext), одна – типа Internal (Int), и одна – типа Private (Pvt). Заглянем в управление сетевыми адаптерами (Control Panel – Network and  Sharing Center – Manage Network Connections). vn-41

    Сетевые адаптеры на хосте

    В нашем случае – у сервера появилось три сетевых адаптера. Слева – направо:

    • “Железный” сетевой адаптер, установленный в сервер. Играет исключительно роль “моста” между гипервизором и сетью, если открыть его свойства – все протоколы 3го уровня и выше на нем  отключены, включен только Microsoft Virtual Network Switching Protocol (думаю, понятно и без перевода).
    • Виртуальный адаптер для External-сети (именно на нем прописаны IP-адрес, под которым наш сервер присутствует в сети, DNS, etc.). Взаимодействует хостовая ОС с сетью именно через этот виртуальный адаптер, и уже с него пакеты переправляются в сеть через физический адаптер.
    • Виртуальный адаптер для Internal-сети. Используется для связи виртуальной сети и хостовой ОС, с физическими сетевыми адаптерами не связан.

    Для виртуальной сети типа Private никакие виртуальные сетевые адаптеры, естественно, не создаются. В Private-сети виртуальные машины взаимодействуют исключительно между собой.

    Масло масляное, или виртуальная сеть внутри виртуальной сети

    Аббревиатура VLAN расшифровывается как Virtual Local Area Network. К сожалению, понятие «виртуальная сеть» мы уже использовали, так что прошу не путать «виртуальную сеть» и VLAN. Итак, что же такое VLAN? VLAN – это расширение 2 уровня OSI, заключающееся в пометке пакетов специальным номером (VLAN ID). Каждому сетевому адаптеру, входящему в VLAN, присваивается одинаковый VLAN ID. Адаптер, отправляющий пакет, помечает его своим VLAN ID. Коммутаторы (виртуальные сети, и физические коммутаторы, поддерживающие VLAN) хранят таблицу соответствия МАС-адресов сетевых адаптеров и VLAN ID, и благодаря этому к адаптерам, имеющим VLAN ID, попадают только те пакеты, которые помечены соответствующим номером, то есть, даже будучи подключенными к одному и тому же коммутатору, сетевые адаптеры могут быть разнесены по разным VLANам и таким образом находится в разных широковещательных доменах. То есть фактически – это «сеть внутри сети». В нашем случае получается еще смешнее: виртуальная сеть внутри виртуальной сети.
    Проиллюстрировать принцип работы VLANов можно следующей картинкой:

    Иллюстрация работы VLAN'ов

    Иллюстрация работы VLAN’ов

    На рисунке мы видим 3 виртуальные машины внутри одного хоста. Физически они соединены с одним виртуальным коммутатором. Тем не мене, логически – только адаптеры внутри одного VLAN могут обмениваться пакетами друг с другом.
    Надеюсь, что я объяснял не слишком сумбурно, и этой статьи достаточно, чтобы понять, как организуется сетевое взаимодействие в среде Hyper-V. Если я что-то упустил – смело скажите об этом в комментариях, я обязательно поправлю.

    • Рубрика: Virtualization,Новое
    • Автор: Александр Косивченко
    • Дата: Monday 13 Apr 2009

Комментарии

  1. Не совсем понятен пункт
    “… Тем не менее, надо отметить, что взаимодействовать между собой виртуальные сети не могут. Для такого взаимодействия необходимо некое внешнее устройство. Я все же надеюсь, что в одной из следующих версий появятся полноценные виртуальные сети с виртуальными коммутаторами — например такие, как в VMWare ESX…”

    В ESX виртуальные коммутаторы точно так же между собой взаимодействовать не могут.
    Или есть еще какие то отличия, делающие вКоммутаторы Hyper-V неполноценными?

  2. К сожалению, сейчас нет ESX под рукой, чтобы проверить. И работал я с ним давно. И мне казалось что там вроде бы можно было соединять Virtual Switches между собой.
    Извиняюсь, если я ошибся – проверим и поправим 🙂

  3. можете не проверять 🙂

  4. Да, Михаил, если такой человек как вы говорит что это не возможно, значит так оно и есть 🙂
    Рад что вам интересен наш проект 🙂

  5. Хороший проект 🙂
    буду читать, следить чтобы ESX не обижали слишком сильно 😉

  6. Да кто ж его обижает! 🙂 Очень хороший продукт, Microsoft’у есть чему поучиться 🙂

  7. Автор можно увидеть эту статью в .pdf формате?

  8. Господа, может быть я что-то не совсем понимаю, но в ESXi есть такая штука как dvSwitch… разве это не оно?

  9. В ESX для взаимодействия двух виртуальных свитчей можно использовать маааленький роутер – виртуальную машинку с 32МБ оперативки и линуксом, помещающимся на виртуальной же дискете 🙂

    Зачем напрямую связывать два виртуальых свитча средствами гипервизора (виртуальным патчкордом)? Это же можно петлю получить. А вдруг у нас коммутаторы STP не поддерживают? Конфуз будет 🙂

  10. А нужен вообще виртуальный патчкорд для виртуальных свитчей? Так можно и “петлю” получить, конфуз будет.

    Для связи виртуальных свитчей можно использовать маленькие виртуалки-роутеры.

  11. c виртуализацией на Hyper-V столкнулись недавно.
    и сразу косяк:
    1)в диспечере вирт сетей создаем сеть.
    2)в настройках вирт машины в Сетевом адаптере указываем это подключение.

    при запуске Вирт машины (установлен вин серв 2003) никаких сетевых адаптеров нет.
    из неопознанных устройств VMBUS/4&4B018EB&0

    как настроить или установить сеть?

  12. Ответ прост: установить набор доп. драйверов (Integration Services ). Для Windows 2003 это обязательно.

    http://www.virtualizationadmin.com/img/upl/image0021218103222045.gif

  13. Или достаточно установить Устаревший сетевой адаптер, но лучше поставить IS

  14. А какие настройки забиваются на втором физическом адаптере, когда его забирает виртуальная сеть? У меня сервер сам на себя откликается на 169.254.ххх.ххх, вместо того что бы отдавать с первого и главного адаптера его 192.168.1.10. Если забивать адрес из 192.168 подсети, то днс на сервере каталогов регистрирует второй адрес на не 1.10 как мне нужно.

  15. У меня такая же проблема. Физический адаптер который используется только для моста виртуальной сети каким-то образом получает адрес от DHCP, в итоге сервер откликается на этот адрес, а не на реальный другого сетевого адаптера. Хотя если сделать ipconfig /all, то этого моста не видно, а только мой сетевой адаптер.

    Как решить проблему?

  16. В WS2008R2 в свойствах виртуальной сети есть галочка, позволяющая External-сети быть “невидимой” для хостовой ОС.

  17. Александр, спасибо! Как сразу не заметил 🙁 нужно просто убрать галку с “Allow managment operating system to share this network adapter” в Virtual Network Manager

  18. Суть виртуальных сетей я понял! мне бы мануальчик по настройке. У меня есть 3 физические Машинки. Хранилище и 2 нода. на них крутиться 2 вм. как я могу осуществить взаимодействие между ними? и миграцию между нодами? Заранее Спасибо за содействие!