The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Симулятор работы сети из маршрутизаторов Cisco и Linux-машин (xen emulator cisco virtual)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: xen, emulator, cisco, virtual,  (найти похожие документы)
From: Игорь Чубин <igor@chub.in.> Date: Mon, 9 Feb 2007 14:31:37 +0000 (UTC) Subject: Симулятор работы сети из маршрутизаторов Cisco и Linux-машин Оригинал: http://xgu.ru/wiki/Xenomips Материал из Xgu.ru. Автор: Игорь Чубин Xenomips -- это виртуальная машина Xenolinux, работающая в домене domU Xen. Внутри виртуальной машины работает dynamips (Cisco 7200 Simulator), интерфейсы которого подключены к сетевым интерфейсам виртуальной машины. Идея В 2005 году Кристоф Филло (Christophe Fillot) начал работу над программным эмулятором платформы Cisco 7200 для персонального компьютера, известным сейчас под названием Dynamips. Проект постоянно развивается. Сейчас выполняется эмуляция нескольких платформ маршрутизаторов и большого количества интерфейсных карт. Существует проект Dynagen, который позволяет описывать виртуальные сети на dynamips, и затем управлять их работой. К сожалению, этот проект не позволяет также легко включать в сеть виртуальные машины других типов. С другой стороны, известный проект Xen, позволяет создавать виртуальные машины, работающие под разнообразными операционными системами, в частности Linux, и объединять их между собой в сети любой сложности. Упаковка dynamips внутрь виртуальной машины Xen позволяет добиться нескольких интересных результатов. Преимущества Возможность построения гетерогенных виртуальных сетей На базе Xen и Xenomips легко строить гетерогенные сети, сочетающие в себе виртуальные машины, работающие под управление различных операционных систем. Например, построение сети, состоящей из нескольких виртуальных маршрутизаторов Cisco, соединяющих между собой виртуальные системы Windows XP с серверами Windows 2003 Server (*), Linux и OpenSolaris, является очень простой задачей. (*) для поддержки виртуальных машин Windows обязательно наличие архитектурных расширений HVM в процессоре базовой системы. Унифицированные средства управления Становятся едиными средства для управления виртуальными машинами Xen (Linux, FreeBSD, OpenSolaris, Windows) и Dynamips. Существующие и вновь создаваемые инструменты для управления виртуальными машинами Xen точно также могут применяться для управления машинами Dynamips. Это в частности, относится к механизмам управления выделяемым процессорным временем и памятью. Миграция и живая миграция виртуальных роутеров Dynamips Состояние всей виртуальной сети целиком может быть запомнено и восстановлено в любой момент времени. Виртуальная сеть может быть целиком или частично перенесена с одной хост-системы на другую без остановки (и даже приостановки) её работы. (это преимущество является наиболее спорным, поскольку пока что непроработаны вопросы построения виртуальной сети на базе распределённой хост-системы) Управление трафиком между экземплярами Dynamips средствами Linux Интерфейсы доменов Xen соединяются между собой с помощью мостов Linux. Все они видны в домене 0 Xen, и к трафику, проходящему через эти интерфейсы, применимы все стандартные механизмы управления: для управления трафиком между виртуальными маршрутизаторами становится доступным богатый инструментарий Linux. В частности, это позволяет использовать функционал iptables, ebtables, а также QoS-средств базовой Linux-системы. Недостатки Память Xenomips требует больше оперативной памяти на каждый экземпляр чем чистый Dynamips. Память потребляет ОС, под управлением которой работает виртуальная машина, выполняющая процесс Dynamips. Интерфейсы Dynamips В настоящий момент в Xenomips из всего богатства интерфейсов доступных в интерфейсов доступных в Dynamips используются только интерфейсы Ethernet. При желании от этого недостатка можно избавиться. Начальные требования Требования к программному обеспечению: * Xen. Базовая система обязательно должна работать под управлением Xenolinux. В описываемой ниже процедуре предполагается, что Xen уже проинсталлирован и сконфигурирован, а все действия выполняются в домене 0 Xen. Если это не так, читайте о том, как подготовить систему на странице Xen. * Debian GNU/Linux. Можно использовать и другие дистрибутивы Linux, но в случае с Debian упрощается процедура подготовки образа Xenomips. При использовании готового образа Xenomips дистрибутив может быть любым. Ниже рассматривается процедура для дистрибутива Debian. * Dynamips не обязательно должен быть установлен в системе на момент начала экспериментов. Однако, следует иметь в виду, что это важнейший компонент системы Xenomips, и его обязательно придётся выкачивать, собирать и инсталлировать. Требования к аппаратному обеспечению: * Никаких дополнительных требований в сравнении с требованиями Xen и Dynamips Следует отметить, что наиболее ценным ресурсом в экспериментах с Xen и Dynamips является виртуальная память. Более-менее интересные эксперименты возможны начиная с 2GB ОЗУ в системе. Подготовка виртуальной машины Подготовка автоматически с помощью скрипта В настоящий момент скрипта автоматической подготовки нет. Когда скрипт автоматической подготовки виртуальной машины xenomips будет написан, инсталляция будет выполняться так: %# wget http://xgu.ru/xenomips/install %# sh install В ходе выполнения скрипта будут выполняться все действия, описанные в следующем разделе. Подготовка виртуальной машины вручную Процесс подготовки виртуальной машины состоит из подпроцессов подготовки образов нескольких файловых систем, важнейшим из которых является образ корневой файловой системы. Создание образа корневой файловой системы xenomips Процедура подготовки образа корневой системы состоит из нескольких этапов, включающих: * создание образа, * заполнение его базовой системой, * установку необходимого программного обеспечения, * редактирование конфигурационных файлов. В результате этого этапа должен появиться образ, который можно использовать в качестве корневой файловой системы виртуальной машины xenomips. Создание пустого образа корневой файловой системы xenomips Если образ будет находиться на логическом томе LVM: %# lvcreate -L 2048M -n xenomips0 /dev/NAS0 %# mkfs.ext3 /dev/NAS0/xenomips0 %# mount /dev/NAS0/xenomips0 /mnt Создаём логический том размером 2G (в действительности, нужно намного меньше места - создаём с запасом) на группе томов /dev/NAS0. Если в качестве образа будет использоваться обычный файл, команды немного отличаются: %# dd if=/dev/zero of=xenomips0.img bs=1024k count=2048 %# mkfs.ext3 xenomips0.img %# mount -o loop xenomips0.img /mnt Файл будет создан в текущем каталоге. Созданная файловая система будет подмонтирована в каталог /mnt, в котором будет вестись дальнейшая работа. Выполнить debootstrap Проинсталлировать базу дистрибутива etch Debian GNU/Linux: %# debootstrap etch http://192.168.15.251:9999/debian/ /mnt Здесь указан локальный apt-proxy (http://192.168.15.251:9999/debian/). Вместо него нужно указать адрес ближайшего зеркала репозитория Debian. После того как Linux будет проинсталлирован, нужно сделать chroot в каталог /mnt. %# chroot /mnt Дальнейшая работа выполняется с корневой файловой системой Xenolinux в ограниченной среде. Когда работа с ней будет завершена, можно покинуть среду командой exit. Установить дополнительные пакеты Пакеты, которые нужно установить для работы самой системы: * openssh-server * libc6-xen Пакеты, которые должны быть проинсталлированы для работы dynamips: * libelf1 * libpcap Инсталляция выполняется так: %# apt-get install openssh-server libc6-xen libelf1 libpcap Пароль root'а Если вы собираетесь обращаться к Linux-системе через SSH, обязательно установить пароль root'а: %# passwd Enter new password: rootpass Файл /etc/fstab Отредактировать файл /etc/fstab proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0 /dev/hda1 / ext3 ro 0 0 /dev/hda2 /data/Cisco_IOS ext3 ro 0 0 /dev/hda3 /xenomips ext3 rw 0 0 Раздел /dev/hda1 содержит образ корневой файловой системы. Его мы готовили ранее. Раздел /dev/hda2 содержит образы IOS. Раздел /dev/hda3 будет содержать рабочие файлы Dynamips. Он должен монтировать в режиме read-write. Файл /etc/network/interfaces Отредактировать файл /etc/network/interfaces. Файл должен содержать следующее: auto lo eth0 iface lo inet loopback up for i in `ifconfig -a | grep 'eth.*Link encap' | awk '{print $1}'`; do ifconfig $i up ; done iface eth0 inet dhcp Это означает: * Автоматически при загрузке поднимать интерфейсы lo и eth0 * Когда интерфейс lo успешно поднялся, выполнить скрипт, который найдёт все интерфейсы Ethernet в системе и поднимет их, без установки IP-адресов и выполнения любой другой конфигурации. * Поднять eth0 по dhcp. Мы используем eth0 как сервисный интерфейс, через который будет при необходимости осуществлять доступ к виртуальной машине Linux. К нему не будет подключаться Dynamips. Необходимость в хитром скрипте, поднимающем интерфейсы eth, связана с тем, что dynamips может работать только через включенные интерфейсы. Заранее количество интерфейсов, которые будут присутствовать в данном экземпляре Xenomips неизвестно, поэтому нужно просто поднимать все. Загрузочные файлы системы Для того чтобы после старта машины сразу же запускался dynamips, добавим его вызов в файл /etc/rc.local. /usr/local/bin/xenomips.sh Скрипт xenomips.sh выполняет запуск dynamips. Процесс dynamips выполняется на консоли, не в фоновом режиме. Можно сказать, что на этапе запуска xenomips.sh загрузка системы завершается. В каталоге /etc/rc2.d нужно добавить ссылку на скрипт /etc/init.d/xenomips-init, который готовит систему к использованию корневого раздела в режиме read-only. Пока что скрипт отсутствует, он будет создан позже. Ссылку можно сделать и сейчас. # cd /etc/rc2.d; ln -s ../init.d/xenomips-init S20xenomips-init Установка dynamips Сборка dynamips выполняется в базовой системе. Нужно покинуть среду ограниченного исполнения, в которой выполнялась доработка системы. %# exit Собранный код инсталлируется в дерево каталогов /mnt. Для сборки dynamips из исходников в базовой системе должно быть установлены следующие пакеты: * libelf-dev * libpcap-dev (точнее, libpcap0.8-dev) Установить их можно так: %# apt-get install libelf-dev libpcap0.8-dev Наличие этих пакетов в самой виртуальной машине xenomips не обязательно. Они нужны только на этапе сборки. Процесс сборки: %# wget http:// # Точный адрес дистрибутива необходимо уточнять на сайте %# tar xvfz dynamips* %# cd dynamips* %# make %# make install DESTDIR=/mnt Установка xenomips Необходимо создать каталоги, которые будут использоваться в ходе работы системы, и скопировать недостающие скрипты. Создать каталоги /xenomips/, /var/lib/xenomips, /data/Cisco_IOS: %# mkdir -p /xenomips/ /var/lib/xenomips/ /data/Cisco_IOS/ Скопировать (или создать) скрипты xenomips: * /usr/local/bin/xenomips.sh * /etc/init.d/xenomips-init Скрипт xenomips.sh #!/bin/sh DYNAMIPS_WORKDIR="/xenomips" DYNAMIPS_ARGS=`cat /proc/cmdline | sed 's/.*xenomips="//; s/".*//'` cd "$DYNAMIPS_WORKDIR" dynamips $DYNAMIPS_ARGS Этот скрипт вырезает аргументы командной строки dynamips из параметра xenomips="...", переданного ядру Linux. После этого выполняется переход в рабочий каталог /xenomips, в котором dynamips будет сохранять свои файлы (в частности, файлы конфигурации виртуальных машин), и выполняется запуск dynamips. Скрипт xenomips-init (Скрипт позаимствован из проекта LTSP.) #!/bin/sh bind_mounts () { # set defaults test -z "$tmpfs_dir" && tmpfs_dir=/var/lib/xenomips test -z "$rw_dirs" && rw_dirs="/var/cache/man /var/lock /var/run /var/log \ /var/spool /var/tmp /tmp /var/lib/urandom" test -z "$copy_dirs" && copy_dirs="" test -z "$temp_copy_dirs" && temp_copy_dirs="/var/cache/debconf" test -z "$bindfiles" && bindfiles="" mount -t tmpfs -o mode=0755 tmpfs $tmpfs_dir # preserve directory structure for d in $rw_dirs ; do if [ -d "$d" ]; then cd $tmpfs_dir tar --no-recursion -cpf - $(find $d -type d 2> /dev/null) 2> /dev/null |tar xpf - mount --bind $tmpfs_dir/$d $d else echo "WARNING: $d does not exist" fi done # copy contents into tmpfs for d in $copy_dirs $temp_copy_dirs; do if [ -d "$d" ]; then cd $tmpfs_dir tar -cpf - $d 2> /dev/null | tar xpf - mount --bind $tmpfs_dir/$d $d else echo "WARNING: $d does not exist" fi done # mount one file on top of another for f in $bindfiles ; do if [ -e "$f" ]; then mkdir -p "$(dirname $tmpfs_dir/$f)" cp $f $tmpfs_dir/$f mount --bind $tmpfs_dir/$f $f else echo "WARNING: $f does not exist" fi done touch /var/log/dmesg } bind_mounts Данный скрипт предназначен для того чтобы сделать возможным использование корневой файловой системы в режиме read/only. Он должен запускаться каждый раз при старте системы. Завершение подготовки образа Когда образ готов, его можно отмонтировать. %# umount /mnt В дальнейшем, при необходимости доработки образа, нужно подмонтировать его и сделать необходимые изменения. Если нужно будет поставить внутрь образа дополнительное программное обеспечение, сделать это можно так: %# mount /dev/NAS0/xenomips0 /mnt %# chroot /mnt %# apt-get install ______ %# exit %# umount /mnt Создание файла образа для рабочих файлов xenomips Корневой раздел xenomips монтируется в режиме read-only. Тем не менее, необходим раздел в системе, который будет содержать изменяющиеся файлы -- рабочие файлы Xenomips. Для этого предлагается использовать отдельный файл, передаваемый виртуальной машине Xen как один из дисковых разделов. Такие файлы должны быть по одному на каждую виртуальную машину Xenomips. Выше был показан файл /etc/fstab виртуальной машины. Из него видно, что раздел /dev/hda3 монтируется в каталог /xenomips. Этот каталог делается текущим для процесса dynamips. Создание файла: %# dd if=/dev/zero of=/root/xenomips/images/xenomips.img bs=1024k count=100 %# mkfs.ext3 /root/xenomips/images/xenomips.img %# cp /root/xenomips/images/xenomips.img /root/xenomips/images/xenomips0.img В данном случае создаётся один базовый файл, который затем копируется для каждого экземпляра xenomips. Предполагается, что файлы будут находиться в каталоге /root/xenomips/images/ домена 0. Создание раздела с образами IOS Образы IOS можно было бы скопировать непосредственно в корневую систему, но это идеологически не совсем корректно. Поэтому, мы будем хранить образы IOS на отдельном разделе, и подмонтировать их в виртуальной машине Xenomips. Раздел с образами IOS должен быть доступен в виртуальных машинах в режиме read-only. Если используются LVM: %# lvcreate -n ios -L 2048M /dev/NAS0 %# mkfs.ext3 /dev/NAS0/ios %# mount /dev/NAS0/ios /mnt %# cp /path/to/ios/images/* /mnt %# umount /mnt Если используются обычные файлы: %# dd if=/dev/zero of=ios-images.img count=2048 bs=1024k %# mkfs.ext3 ios-images.img %# mount -o loop ios-images.img /mnt %# cp /path/to/ios/images/* /mnt %# umount /mnt Образы IOS лучше декомпрессировать, поскольку это сокращает время запуска Dynamips. Конфигурационный файл виртуальной машины Конфигурационные файлы виртуальных машин в Xen -- это скрипты на Python. Как правило, единственная операция, которая используется в этих скриптах, это операция присваивания. Однако, на этом возможности конфигурационных файлов не исчерпываются -- в них можно писать любые программы на Python, что делает нетревиальное конфигурирование виртуальных машин Xen чрезвычайно простым и гибким. Конфигурация машин xenomips (всех экземпляров сразу), описывается в одном конфигурационном файле. /etc/xen/xenomips Далее этот файл используется при создании виртуальных машин следующим образом: %# xm create xenomips N=0 Здесь N - номер порождаемого экземпляра Xenomips. Конфигурация виртуальной машины, в частности, количество её сетевых интерфейсов и способ их соединения с сетью, определяется номером машины и конфигурационным файлом xenomips. Ниже поэтапно описываются все составляющие конфигурационного файла, а в конце приводится файл целиком. Стандартная часть Директивы, которые должны присутствовать в любом конфигурационном файле домена Xen, и которые не требуют особого внимания в данном случае: kernel = "/boot/vmlinuz-2.6.18-3-xen-686" ramdisk = "/boot/initrd.img-2.6.18-3-xen-686" #builder='linux' memory = 400 #.... on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' Предполагается, что файлы /boot/vmlinuz-2.6.18-3-xen-686 и /boot/initrd.img-2.6.18-3-xen-686 существуют. Объём оперативной памяти домена, задаваемый директивой memory, зависит от конфигурации dynamips и может быть понижен. Имя Имя виртуального домена должно быть уникальным. Пусть оно определяется номером машины xenomips: #... name = "xenomips"+N #... Тогда, например для машины N=3, имя домена будет xenomips3. Мосты Виртуальные машины соединяются между собой с помощью мостов Linux в домене 0. Названия мостов, к которым должны подключаться интерфейсы машин, описываются списком списков vbridges_table. Например: vbridges_table = [ ['service0', 'xenbr0', 'xenbr1'], ['service0', 'xenbr1', 'xenbr2'], ['service0', 'xenbr0', 'xenbr2'] ] В этом случае машина N=0 подключается своими интерфейсами: * eth0 к мосту service0 * eth1 к мосту xenbr0 * eth2 к мосту xenbr1 А, например, машина N=2 подключается к таким мостам: * eth0 к мосту service0 * eth1 к мосту xenbr0 * eth2 к мосту xenbr2 Предполагается, что интерфейсы eth0 будет использоваться в сервисных целях (например, для захода на виртуальный Linux по ssh), а остальные интерфейсы (начиная с eth1) будут подключены к dynamips. Об этом ниже. Мосты service0, xenbr0 и xenbr1 должны быть созданы и включены. %# brctl addbr service0 %# ifconfig service0 up Подробнее о мостах Linux: * Linux Bridge MAC-адреса Dynamips отправляет пакеты с интерфейса со своим собственным MAC-адресом. MAC-адреса виртуальной машины Xen использует только операционная система. MAC-адреса машин Xen и Dynamips: * 00:16:3e:01:XX:YY - для Xen * 00:16:3e:02:XX:01 - для Dynamips (будем использовать адреса из пространства Xen, хотя это и не совсем корректно) Числа XX и YY выбираются по следующему правилу: * XX=N , где N - номер машины. * YY=C0+K для интерфейсов ethK При такой схеме выделения адресов можно адресовать до 256 машин, у каждой из которых до 64 интерфейсов. Список vif, описывающий интерфейсы, генерируется следующим образом: #... vif=[] x=1 for i in vbridges: vif.append('bridge='+i+',mac=00:16:3e:01:'+hex(int(N))[2:]+':'+hex(int('c0',16)+x)[2:]) x+=1 #... Например, при условии, что N='1', а vbridges=['service0', 'xenbr1', 'xenbr2'] код сгенерирует список: vif=['bridge=service0,mac=00:16:3e:01:1:c1', \ 'bridge=xenbr1,mac=00:16:3e:01:1:c2', 'bridge=xenbr2,mac=00:16:3e:01:1:c3'] Диски Виртуальной машине должны быть доступны три дисковых раздела: 1. Корневой раздел с Debian GNU/Linux (одинаковый для всех); 2. Раздел с образами IOS (одинаковый для всех); 3. Раздел с рабочими файлами Dynamips (индивидуальный); Первые два раздела могут использоваться совместно всеми машинами. Они монтируются в режиме read-only. Последний раздел содержит рабочие файлы dynamips, в частности конфигурацию виртуальных машин. Он монтируется в режиме read/write и должен быть индивидуальным для каждой машины. Таким образом, список disk в конфигурационном файле xenomips будет выглядеть следующим образом: #... disk = [ 'phy:/dev/NAS0/xenomips0,hda1,r', 'phy:/dev/NAS0/ios,hda2,r', \ 'file:/root/xenomips/images/xenomips'+N+'.img,hda3,w' ] #... Первые два раздела представлены томами LVM, третий - обычным файлом. Он используется через loopback-устройство. Имя файла с конфигурацией зависит от номера виртуальной машины N. Например, для машины N=1, файл будет называться так: /root/xenomips/images/xenomips1.img Если все разделы базируются на файлах, а не на LVM, измените список соответствующим образом. Dynamips Параметры процессу dynamips, который будет запускаться внутри виртуальной машины передаются как аргрумент в командной строке ядра. Затем, после того как операционная система домена загрузится, она находит эти параметры, и передаёт их в командную строку dynamips при его вызове. Пример командной строки ядра: linux ro root=/dev/hda1 xenomips="....." Получается, что аргументы командной строки, которые мы хотели бы передать процессу dynamips, должны задаваться в двойных кавычках в параметре xenomips ядра Linux. В качестве аргументов передаётся: * имя файла с IOS * -m - базовый MAC-адрес шасси (см. выше) * -p - описание сетевых адаптеров * -s - описание подключения сетевых адаптеров Пусть в dynamips будет столько адаптеров, сколько интерфейсов в Linux (на один меньше - сервисный адаптер к dynamips не подключается). В действительности это самая простая, но не единственная конфигурация. Адаптеры пусть подключаются к интерфейсам виртуальной машины. Один адаптер в dynamips есть всегда, остальные создаются с помощью ключа -p. Например: -p 1:PA-FE-TX -p 2:PA-FE-TX Означает добавить 2 FastEthernet адаптера. Существует большое количество вариантов подключения интерфейсов виртуальной машины Dynamips. В частности, интерфейсы Cisco можно подключить непосредственно к интерфейсам Linux: -s 0:0:gen_eth:eth0 Означает подключить интерфейс fa0/0 Cisco к интерфейсу eth0 Linux. Будем автоматически подключать интерфейсы faX/0 Cisco к интерфейсам ethX+1 в Linux (интерфейс eth0 задействован под сервисные нужды). #.... xenomips='/data/Cisco_IOS/C7200-JK.BIN -m 00:16:3e:02:'+hex(int(N))[2:]+':01' for i in range(len(vbridges)-2): xenomips += ' -p '+str(i+1)+':PA-FE-TX' for i in range(len(vbridges)-1): xenomips += ' -s '+str(i)+':0:gen_eth:eth'+str(i+1) extra = "xenomips=\""+xenomips+"\"" #... Конфигурационный файл виртуальной машины Итоговый конфигурационный файл xenomips представлен ниже. Он должен быть размещён в каталоге /etc/xen домен 0 хоста под управлением Xenolinux. kernel = "/boot/vmlinuz-2.6.18-3-xen-686" ramdisk = "/boot/initrd.img-2.6.18-3-xen-686" #builder='linux' memory = 400 name = "xenomips"+N vbridges_table = [ ['service0', 'xenbr0', 'xenbr1'], ['service0', 'xenbr1', 'xenbr2'], ['service0', 'xenbr0', 'xenbr2'] ] vbridges = vbridges_table[int(N)] vif=[] x=1 for i in vbridges: vif.append('bridge='+i+',mac=00:16:3e:01:'+hex(int(N))[2:]+':'+hex(int('c0',16)+x)[2:]) x+=1 disk = [ 'phy:/dev/NAS0/xenomips0,hda1,r', 'phy:/dev/NAS0/ios,hda2,r', \ 'file:/root/xenomips/images/xenomips'+N+'.img,hda3,w' ] root = "/dev/hda1 ro" #xenomips='/data/Cisco_IOS/C7200-JK.BIN -m 00:16:3e:01:'+hex(int(N))[2:]+\ # ':01 -p 1:PA-FE-TX -p 2:PA-FE-TX -s 0:0:linux_eth:eth1 -s 1:0:gen_eth:eth2' xenomips='/data/Cisco_IOS/C7200-JK.BIN -m 00:16:3e:01:'+hex(int(N))[2:]+':01' for i in range(len(vbridges)-2): xenomips += ' -p '+str(i+1)+':PA-FE-TX' for i in range(len(vbridges)-1): xenomips += ' -s '+str(i)+':0:gen_eth:eth'+str(i+1) extra = "xenomips=\""+xenomips+"\"" on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' Запуск виртуальных машин Виртуальные машины запускаются стандартным способом: %# xm create xenomips N=0 %# xm create xenomips N=1 %# xm create xenomips N=2 Если нужно создать сразу несколько машин, можно воспользоваться циклом командного интерпретатора: %# for i in `seq 1 10`; do xm create xenomips N=$i; done Внимание! Каждая виртуальная машина потребляет значительную оперативную память, поэтому нужно быть уверенным, что физической памяти на хост-системе достаточно чтобы разместить заданное количество машин. Например, для запуска 10 машин, каждая из которых потребляет 400MB потребуется больше 4GB ОЗУ. После того как машины запущены, можно посмотреть, работают ли они: %# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 555 1 r----- 1433.8 ltsp0 15 256 1 -b---- 24.0 xenomips0 43 400 1 ------ 13.7 xenomips1 44 400 1 ------ 13.2 xenomips2 45 400 1 ------ 13.2 Использование Подключиться к консоли виртуальной машины можно с помощью команды: %# xm console xenomips0 Отключиться от консоли Xen можно с помощью комбинации клавиш ^] (Ctrl+]). Внимание! Escape-последовательность Xen и Dynamips совпадает. По этому воспользоваться Escape-последовательностью Dynamips через консоль Xen не удастся. Если вам нужно поработать с Linux, воспользуйтесь доступом через сервисный интерфейс Xenomips -- зайдите на него через SSH. Другой способ: при компиляции Dynamips изменить его исходный код и указать другую escape-последовательность. Рекомендуется воспользоваться программой GNU Screen и подключаться к консолям разных доменов Xen из отдельных окон screen. Это удобно. К машинам xenomips применимы все действия, которые Xen позволяет делать со своими доменами, в частности, сохранять и восстанавливать их состояние, выполнять миграцию, живую миграцию и другие. Подробнее об использовании доменов Xen: * Xen * Руководство пользователя Xen Проверка Конфигурация роутера стандартная: router0>ena router0#show run Building configuration... Current configuration : 864 bytes ! version 12.3 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname router0 ! boot-start-marker boot-end-marker ! ! no aaa new-model ip subnet-zero ! ip cef ip audit po max-events 100 no ftp-server write-enable ! no crypto isakmp enable ! interface FastEthernet0/0 ip address 192.168.15.170 255.255.255.0 duplex half ! interface FastEthernet1/0 ip address 192.168.16.1 255.255.255.0 duplex half ! router ospf 10 log-adjacency-changes ! router ospf 1 log-adjacency-changes network 192.168.15.0 0.0.0.255 area 0 network 192.168.16.0 0.0.0.255 area 0 ! ip classless no ip http server no ip http secure-server ! control-plane ! gatekeeper shutdown ! ! line con 0 stopbits 1 line aux 0 stopbits 1 line vty 0 4 login ! end Пингуем реальные машины: router0#ping 192.168.15.254 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.15.254, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 24/76/92 ms Пингуем виртуальные машины: #ping 192.168.17.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.17.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 84/208/360 ms Проверяем, работает ли OSPF: router0#show ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set C 192.168.15.0/24 is directly connected, FastEthernet0/0 O 192.168.17.0/24 [110/2] via 192.168.16.2, 12:52:45, FastEthernet1/0 [110/2] via 192.168.15.171, 12:52:45, FastEthernet0/0 C 192.168.16.0/24 is directly connected, FastEthernet1/0 router0#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.17.1 1 FULL/BDR 00:00:34 192.168.16.2 FastEthernet1/0 192.168.17.2 1 FULL/BDR 00:00:39 192.168.15.171 FastEthernet0/0 Благодарности Спасибо разработчикам систем Xen и Dynamips за то, что они дают возможность работать с такими необыкновенными вещами. Отдельное спасибо Игорю Подолюху -- тренеру по системам Cisco учебного центра Сетевые Технологии, который в своё время познакомил меня с маршрутизаторами Cisco, в другое время показал мне Dynamips, и на протяжении всего времени отвечает на все идиотские вопросы по цискам, которые я ему задаю. Обратная связь Пожалуйста, если у вас есть какие-то идеи, замечания, пожелания или вопросы, пишите об этом: * на странице обсуждения Обсуждение:Xenomips * на странице обсуждения OpenNet * на странице обсуждения Linux.org.ru * по электронной почте: igor @ chub.in

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру