xentaur/todo
Материал из Xgu.ru
Список доработок для Xentaur, Xenomips и xen-drbd.
Проекты постепенно интегрируются, но пока каждый из них сам по себе.
Содержание |
[править] Сделано и нужно сделать
[править] Нужно сделать
[править] Первая очередь
- Глюк с третьим интерфейсом в write_to
- python shell в screen
- поддержка сериал-интерфейсов
- вывод сериал-интерфейсов на реальную консоль (USB?, подумать)
- Интегрировать скрипты /xen/procurve/make-xen-bridges, /xen/procurve/vlan-commands и /xen/procurve/make-vlans-on-switch; перенести их в дистрибутив; описать на странице http://xgu.ru/wiki/xentaur/real_network
- xentaur live — Шаблон:важно
[править] Вторая очередь
- виртуальный pix
- виртуальный коммутатор
- Добавить проверку на наличие IOS'а с нужным именем
[править] Третья очередь
- Собрать Xentaur в пакет Debian GNU/Linux
- Если Dynamips перезагружается слишком часто, не перезапускать его, а выдавать сообщение об ошибке
[править] Четвёртая очередь
- Интегрировать код Xentaur и xen-drbd
- удобное указание кроссов
- нормальная отрисовка кроссов
- Добавлять в xenomips не только quagga, но и программы для работы с ipsec
[править] Прочее
- Поддержка карт html для запуска процесса подключения к узлу
- использование правильных имён интерфейсов при конфигурировании
- использование тех или иных модулей для связи виртуальных систем между собой исходя из типа интерфейса
- интеграция с libvirt
- Автоматическое создание конфиг-файлов с именем топологии
- Соответствие внутренних структур xenomips состоянию реальной сетки
- Сохранение настройки сетки в файлах
- Обновить документацию по Xenomips, возможно выделить Xenomips в отдельный проект
- Вынести на конфиг-раздел не только конфиг quagga, но и возможно, весь /etc
- Передача дополнительных параметров dynamips'ам
- Вынесения общей части из конфига домена Xen
- Нормальные имена конфигурационны файлов (без .py) — сделано
- Имя топологии указывается в командной строке — сделано
- (и может сохраняться в файлах /etc/xentaur.conf и ~/.xentaurc)
- properties
- notes
- Дамп конфигурации с учётом properties
- обновление картинки на web
- запись в файл внутри xentaur
- вызов программ из xentaur
- поддержка большого количества интерфейсов в xenomips — сделано (точнее, уже не нужно в связи с тем, что Xen поддерживает 8 интерфейсов)
- Конфиг quagga, пересборка - посмотреть как сделано в quagga4
[править] Сделано
- Добавить quagga внутрь xenomips — сделано
- Перенести xentaur в cvs — сделано
- Сохранение состояния в файле — сделано
- python shell — сделано
- sudo xenomips — сделано
- визуализация машин различных типов — сделано
- документирование функций, начать — сделано
- конфигурирование машин изнутри python shell — сделано
- вынести образы в отдельную иерархию из xenomips — сделано
- Опциональный параметр write_to указывающий на какой экран возвращаться — сделано
- Создание конфигурационных файлов quagga — сделано
- отключение автоматического возврата на экран 0 — сделано
- Размер конфигурационного раздела xenomips — сделано
- Тип терминала в TERM=linux в гостевом домене — сделано
- Автозапуск screen в гостевом домене — сделано
- Убрать сервисный интерфейс — сделано
- Сделать подключение к виртуальным машинам через xm-консоль — сделано
- Перезагрузка dynamips — сделано
- Нужно сделать чтобы нельзя было выйти из quagga — сделано
- Интеграция с реальной сетью — сделано
- Функция python для управления соединения бриджами — сделано
- Функция для дампа бриджа — сделано
- Сделать инициализационные скрипты (библиотеку?) — сделано
- Исправить скрипт build-xenomips-image, так чтобы в dd использовалось seek — сделано
- Картинка не только в PNG, но и в SVG (и возможно) в других форматах — сделано
- синхронизация времени в xenomips — сделано
[править] Доработки в документации
[править] Xentaur в CVS
Дерево разработки Xentaur доступно через CVS. (пока что не анонимно)
%$ cvs -d :ext:igor@xgu.ru:/var/lib/cvs checkout xentaur
Вместо имени igor укажите другое имя пользователя.
[править] Изменение sudoers
Для того чтобы xentaur мог управлять машинами от имени пользователя xenomips, необходимо модифицировать файл /etc/sudoers на хост-системе (в домене 0):
xenomips ALL=(ALL) NOPASSWD: /usr/sbin/xm, /sbin/ip, /usr/sbin/brctl
Такая защита с помощью sudo является очень слабой, поскольку её легко можно обойти воспользовавшись возможностями, например, команды xm. |
[править] Настройка виртуальных машин из управляющей консоли xentaur
Пример 1. Установить имя хоста равное имени домена.
>>> for i in [1,2,3,4,5,6]: write_to(i,"\nena\nconf t\nhostname "+domains[i-1]+"\nexit\nexit\n")
Пример 2. Включить оба ethernet-интерфейса.
faX_up=""" ena conf t int fa0/0 no shutdown exit int fa1/0 no shutdown exit exit exit """ for i in [1,2,3,4,5,6]: write_to(i,faX_up)
Пример 3. Установить адреса на интерфейсах
cisco_set_ip_on_int=""" \n\n\n int fa%s/0 no ip address ip address %s 255.255.255.0 no shutdown exit """ quagga_set_ip_on_int=""" int eth%s no ip address ip address %s/24 no shutdown exit """ doms=domains command = cisco_set_ip_on_int for dom in doms: i=domains.index(dom)+1 write_to(i,"\nena\nconf t\n") j=0 for br in vbridges_table[dom]: write_to(i,command % (j, "192.168.%s.%s"%(bridges.index(br),i))) j+=1 write_to(i,"\nend\nexit\n")
Пример 4. Включение OSPF для сети 192.168.0.0/26
write_to(domains,"\nena\nconf t\nrouter ospf\nnetwork 192.168.0.0 0.0.255.255 area 0\nend\n")
Для Cisco:
write_to(dyns,"\n\nena\nconf t\nrouter ospf 1\nnetwork 192.168.0.0 0.0.255.255 area 0\nend\n")
Для Quagga:
write_to(qua,"\n\nconf t\nrouter ospf\nnetwork 192.168.0.0/16 area 0\nend\n")
Пример 5. Другие базовые настройки
Настройки консоли, терминала и пароля на привелегированный режим для Cisco:
write_to(dyns,"\n\nena\nconf t\nline console 0\nlogging synchronous\nexec-timeout 6000\nno login\nend\n") write_to(dyns,"\n\nena\nconf t\nline vty 0 15\nlogging synchronous\nexec-timeout 6000\nno login\nend\n") write_to(dyns,"\n\nena\nconf t\nenable secret xentaur\nend\n")
Сохранение конфигурации:
write_to(domains, "\n\nena\ncopy run start\n\n") write_to(domains, "\n\nena\nwr\n")
Отключение DNS для Cisco:
write_to(dyns,"\n\nconf t\nno ip domain-lookup\nend\n")
Перевод интерфесов в режим full duplex (по умолчанию half duplex) для Cisco:
write_to(dyns,"\n\nena\nconf t\nint fa0/0\nduplex full\nint fa1/0\nduplex full\nend\n")
Включение forwarding'а в Linux (предварительно нужно выйти из консоли Quagga с помощью Ctrl-x d; после завершения настройки возврат производится автоматически):
write_to(qua,"\necho 1 > /proc/sys/net/ipv4/ip_forward\nscreen -r\n")
[править] Примеры управления Xentaur из консоли ipython
Примеры:
Создание виртуальной машины Windows
win1=vm.windows_xp.new('win1') win1.interfaces=[bridge[1], bridge[2]] win1.create()
Создание кольца из десяти маршрутизаторов Quagga и одного Cisco.
bridge[0]=bridge.new() for i in range(1,10): bridge[i]=bridge.new() bridge[i].run() quagga[i]=vm.quagga.new('quagga'+i) quagga[i].interfaces=[bridge[i-1],bridge[i]] quagga[i].create() cisco=vm.xenomips.new('cisco') cisco.interfaces=[bridges[10],bridges[0]]
Изменение свойства соединения
Пусть виртуальный маршрутизатор cisco подсоединён к бриджу bridge1 с помощью связи link1.
link1=cisco.link_to(bridge1)
Выключить связь:
cisco.link_to(bridge1).down()
или
link1.down()
Добавить в таблицу в домене 0 на соответствующую связь правило ebtables:
link1.ebtables("правило ebtables")
Аналогично, но правило iptables:
Начать запись трафика,
который передается через соединение link1,
в файл link1.dump:
link1.dump_start("link1.dump")
Остановить запись:
link1.dump_stop("link1.dump")
Можно указать дополнительный фильтр трафика при записи:
link1.dump_start("link1.dump", "host 192.168.1.1 and host 192.168.1.2 and icmp")
Выражение для фильтрации записывается в формате Berkeley Packet Filter.
Посмотреть список выполняющихся в настоящий момент записей:
link1.dump_list()
Сделанный дамп трафика имеет двоичный формат tcpdump
и может быть проанализирован с помощью tcpdump, wireshark,
ettercap или другим аналогичным инструментом.
[править] Графический интерфейс
Требования к графическому интерфейсу:
- Схема сети
- Свойства машин
- Консоль управления Dynalab
- Консоль управления отдельными виртуальными системами
- (возможно) Щелчок по машине позволяет открыть консоль управления этой машиной
- В графическом интерфейсе должно быть обозначение различных типов машин
- Возможность закрепления машин за определёнными координатами и возможность наложения карты на схему.
- (возможно) В правом окне свойства машины или свойства линка.
Требования
Общие требования:
- Динамическая реконфигурация машин и связей между машинами
Связи:
- Состояние связей может описываться многочисленными характеристиками, в том числе:
- Активностью (активна/неактивна)
- Пропускной способностью (величина)
- Потери (величина, 0..1)
- Связи должны легко попадать под правила фильтрации, приоритезации трафика и других механизмов регулирования в базовой системе.
Интерфейс:
- Должен быть удобный программный и командный интерфейс к системе.
- Командный интерфейс должен содержать набор команд, необходимых для:
- Добавления машины;
- Удаления машины;
- Реконфигурирования машины;
- Останова машины;
- Запуска машины;
- Управления всеми характеристиками связей.
Поддержка машин различных типов:
Если известно, что машина запускается с определённой операционной системой внутри, должен быть доступен дополнительный программный интерфейс, использующий специфические возможности виртуальной машины.
Должен быть удобный интерфейс по конфигурированию машин.
Должна быть унифицированная возможность подключения к консоли каждой машины. Консоль может быть как текстовой, так и графической.
Масштабируемость:
- Система должна быть распределённой и масштабируемой.
- Распределённость. В качестве хост-системы может быть как одна система, так и множество связанных между собой систем. При этом должна быть возможность Live-переноса.
- Масштабируемость. Должна быть разрешимой с помощью доступных средств (до 10 физических компьютеров с объёмом ОЗУ < 2G) задача эмуляции сети, которая в настоящий момент насчитывает до 200 систем.
[править]
Xentaur 1: Топология
[править]
Задание
Несколько бездисковых станций загружаются по сети с центрального узла. Каждая из загрузившихся станций сообщает центральному узлу о завершении загрузки и своей текущей конфигурации. После того как загрузка завершена станция при необходимости загружает пользовательские домены.
Привязка доменов к физическим узлам задаётся в конфигурационном файле.
Запущенные домены соединяются в виртуальную сеть произвольной топологии.
Тополгия виртуальной сети задаётся в конфигурационном файле.
При построении топологии учесть, что в U-доменах Xen не может быть более трёх сетевых интерфейсов.
По каналам виртуальной сети может передаваться как тэгированный, так и не тэгированный трафик (тэгирование 802.1Q).
Топология сети должна визуализироваться.
[править] Quagga
Для того чтобы можно было сохранять конфигурацию quagga прямо из vtysh, необходимо в режиме конфигурирования (configure terminal) дать команду:
(config)# service integrated-vtysh-config
Для того чтобы отключить эту возможность, нужно дать команду:
(config)# no service integrated-vtysh-config
[править] Падает на платформе 2600
*** TLB (Load/Fetch) Exception *** PC = 0x80008000, Cause = 0x00008008, Status Reg = 0x00408103 MIPS64 Registers: zr ($ 0) = 0x0000000000000000 at ($ 1) = 0x0000000000000000 v0 ($ 2) = 0x0000000000008008 v1 ($ 3) = 0x0000000000408103 a0 ($ 4) = 0x0000000000000002 a1 ($ 5) = 0x0000000000000000 a2 ($ 6) = 0x0000000000000000 a3 ($ 7) = 0x0000000000000000 t0 ($ 8) = 0xffffffff80008000 t1 ($ 9) = 0xffffffffa0000000 t2 ($10) = 0xffffffff80003fd8 t3 ($11) = 0xffffffff80003fdf t4 ($12) = 0x0000000000000001 t5 ($13) = 0xfffffffffffffff8 t6 ($14) = 0xffffffffb6001080 t7 ($15) = 0xffffffffbfc00000 s0 ($16) = 0xffffffffbfc00000 s1 ($17) = 0xffffffffb6000000 s2 ($18) = 0x0000000000000000 s3 ($19) = 0x0000000000000000 s4 ($20) = 0x0000000000000000 s5 ($21) = 0x0000000000000000 s6 ($22) = 0x0000000000000000 s7 ($23) = 0x0000000000000000 t8 ($24) = 0x0000000000000000 t9 ($25) = 0x0000000000000000 k0 ($26) = 0xffffffffbfc003e0 k1 ($27) = 0x0000000000000000 gp ($28) = 0x0000000000000000 sp ($29) = 0xffffffff80007fc0 fp ($30) = 0x0000000000000000 ra ($31) = 0xffffffffbfc0068c lo = 0x0000000000000000, hi = 0x0000000000000000 pc = 0xffffffff80008000, ll_bit = 0 Instruction: 9421fff0 lhu at,-16(at) CP0 Registers: index ($ 0) = 0x0000000000000000 random ($ 1) = 0x000000000000000c entry_lo0 ($ 2) = 0x0000000000000000 entry_lo1 ($ 3) = 0x0000000000000000 context ($ 4) = 0x0000000000000000 pagemask ($ 5) = 0x0000000000000000 wired ($ 6) = 0x0000000000000000 info ($ 7) = 0x0000000020000000 badvaddr ($ 8) = 0xfffffffffffffff0 count ($ 9) = 0x00000000017aa230 entry_hi ($10) = 0x0000000000000000 compare ($11) = 0x000000000174b210 status ($12) = 0x0000000000408101 cause ($13) = 0x0000000000008008 epc ($14) = 0xffffffff80008000 prid ($15) = 0x0000000000002721 config ($16) = 0x0000000000c08ff0 ll_addr ($17) = 0x0000000000000000 watch_lo ($18) = 0x0000000000000000 watch_hi ($19) = 0x0000000000000000 xcontext ($20) = 0x0000000000000000 cp0_r21 ($21) = 0x0000000000000000 cp0_r22 ($22) = 0x0000000000000000 cp0_r23 ($23) = 0x0000000000000000 cp0_r24 ($24) = 0x0000000000000000 cp0_r25 ($25) = 0x0000000000000000 ecc ($26) = 0x0000000000000000 cache_err ($27) = 0x0000000000000000 tag_lo ($28) = 0x0000000000000000 tag_hi ($29) = 0x0000000000000000 err_epc ($30) = 0x0000000000000000 cp0_r31 ($31) = 0x0000000000000000 IRQ count: 568, IRQ false positives: 545, IRQ Pending: 1 Timer IRQ count: 568, pending: 1765, timer drift: 3 Device access count: 1473343
Платформа и IOS:
if domain=='dyn8': platform='2691' ios_name='C2600-AD.BIN'
[править] Старая заготовка Xentaur
(чтобы не выбрасывать)
[править] Требования
Общие требования:
- Динамическая реконфигурация машин и связей между машинами
Связи:
- Состояние связей может описываться многочисленными характеристиками, в том числе:
- Активностью (активна/неактивна)
- Пропускной способностью (величина)
- Потери (величина, 0..1)
- Связи должны легко попадать под правила фильтрации, приоритезации трафика и других механизмов регулирования в базовой системе.
Интерфейс:
- Должен быть удобный программный и командный интерфейс к системе.
- Командный интерфейс должен содержать набор команд, необходимых для:
- Добавления машины;
- Удаления машины;
- Реконфигурирования машины;
- Останова машины;
- Запуска машины;
- Управления всеми характеристиками связей.
Поддержка машин различных типов:
Если известно, что машина запускается с определённой операционной системой внутри, должен быть доступен дополнительный программный интерфейс, использующий специфические возможности виртуальной машины.
Должен быть удобный интерфейс по конфигурированию машин.
Должна быть унифицированная возможность подключения к консоли каждой машины. Консоль может быть как текстовой, так и графической.
Графический интерфейс:
- Схема сети
- Свойства машин
- Консоль управления Dynalab
- Консоль управления отдельными виртуальными системами
- (возможно) Щелчок по машине позволяет открыть консоль управления этой машиной
- В графическом интерфейсе должно быть обозначение различных типов машин
- Возможность закрепления машин за определёнными координатами и возможность наложения карты на схему.
- (возможно) В правом окне свойства машины или свойства линка.
Масштабируемость:
- Система должна быть распределённой и масштабируемой.
- Распределённость. В качестве хост-системы может быть как одна система, так и множество связанных между собой систем. При этом должна быть возможность Live-переноса.
- Масштабируемость. Должна быть разрешимой с помощью доступных средств (до 10 физических компьютеров с объёмом ОЗУ < 2G) задача эмуляции сети, которая в настоящий момент насчитывает до 200 систем.
[править] Xentaur 1 - пример топологии
Несколько бездисковых станций загружаются по сети с центрального узла. Каждая из загрузившихся станций сообщает центральному узлу о завершении загрузки и своей текущей конфигурации. После того как загрузка завершена станция при необходимости загружает пользовательские домены.
Привязка доменов к физическим узлам задаётся в конфигурационном файле.
Запущенные домены соединяются в виртуальную сеть произвольной топологии.
Топология виртуальной сети задаётся в конфигурационном файле.
При построении топологии учесть, что в U-доменах Xen не может быть более трёх сетевых интерфейсов.
По каналам виртуальной сети может передаваться как тэгированный, так и не тэгированный трафик (тэгирование 802.1Q).
Топология сети должна визуализироваться.
[править] Интерфейс пользователя
Основной интерфейс поьзователя -- управляющая консоль Xentaur.
В настоящий момент существует возможность просмотра графической карты
виртуальной сети.
На карте обозначается исходное и текущее состояния сети,
включая имена и типы машин, соединения между ними
и их состояния.
При нажатии на изображение узла открывается консоль доступа к нему.
Она может иметь как графический (например, Windows, Linux), так и текстовый интерфейс (например, Linux, UNIX, IOS).
Управляещие консоли доступны и через оконный менеджер screen. Текстовые консоли в этом случае открываются в отдельных окнах screen, а графические --- во внешних, через screen они только активируются.
Графический интерфейс для управления конфигурацией сети и её параметрами в настоящий момент отсутствует. Однако, его относительно легко добавить, учитывая, что все основные операции по работе с виртуальной средой описаны в виде готовых функций, Возможно, он появится в дальнейшем.
[править] Идея с модификацией графического интерфейса
Можно попробовать поиграться с модификацией оконного менеджера compiz:
при переключении по cmd-s на экране появляется аксонометрическая проекция схемы сети, которая вращается и перемещается в соответствии с тем, какое окно выбрано.
Это поможет удобнее переключаться между управляющими консолями при переключении между узлами в малознакомой сети.
[править] Дополнительная информация
|
---|