Project

General

Profile

StageKVMBIRD » History » Version 23

« Previous - Version 23/53 (diff) - Next » - Current version
Vincent Passama, 03/04/2013 03:54 PM


StageKVMBIRD

Projet de maquettage réseau virtualisé avec interconnexion de niveaux 2 et 3 (routage dynamique)

Projet

Technique

  • Installation et prise en main de KVM/libvirt, Open vSwitch, BIRD.
  • Accès aux machines virtuelles par groupe d'utilisateurs (accès non root)
  • Etablissement de plusieurs topologies de test (voir schéma en lien)
  • Utilisation de routes statiques puis réglages d'OSPF

Information / gestion

  • Documentation et prise en main de BIRD, open vSwitch, KVM

Point d'avancement

  • Installation et lancement de Open vSwitch :

@aptitude install openvswitch-brcompat openvswitch-common openvswitch-datapath-dkms

cat /etc/network/interfaces
  1. The loopback network interface
    auto lo
    iface lo inet loopback
  1. The primary network interface
    auto eth0
    iface eth0 inet manual
    up ifconfig $IFACE 0.0.0.0 up
    down ifconfig $IFACE down
  1. Host Network
    iface ovsbr0p1 inet dhcp

ovs-vsctl add-br ovsbr0
ovs-vsctl add-port ovsbr0 eth0
ovs-vsctl add-port ovsbr0 ovsbr0p1 -- set interface ovsbr0p1 type=internal
reboot@

  • Ajout de VMs avec qemu-kvm :

qemu-img create -f raw debian.raw 2G // Création d'une image disque au format RAW
virt-install --connect qemu:///system --name=DebianTestingSource --hvm --noautoconsole --ram 1024 --file=./debian.raw --vnc --os-type=linux --cdrom ./debian-wheezy-DI-rc1-amd64-CD-1.iso --nonetworks // Ajout d'une VM utilisant l'image
virt-clone --connect qemu:///system --original DebianTestingSource --name X --file ./debianX.raw // Clônage de la machine virtuelle
virt-manager // Pour superviser les VMs en mode graphique
virt-viewer nomVM // Pour lancer la vue sur une VM en ligne de commande

  • Accès aux utilisateurs non root résolu via l'utilisation de plusieurs commandes :

cat /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[libvirt Management Access]
Identity=unix-group:libvirt;unix-user:root
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Ce fichier permet de déclarer les accès à la supervision des machines virtuelles selon le nom ou le groupe d'un utilisateur.

adduser vince kvm
adduser vince libvirt
adduser vince vde2-net

On ajoute l'utilisateur en question au groupe. Puis on se reconnecte sur la machine pour que les changements de groupe soient pris en compte.
Ne pas oublier par la suite de manipuler les machines virtuelles avec cet ajout dans les commandes :

--connect qemu:///system

  • Edition de la VM pour ajouter l'interface créée via Open vSwitch :

virsh edit DebianTestingSource
<interface type='bridge'>
<source bridge='ovsbr0'/>
<virtualport type='openvswitch' />
<model type='virtio'/>

  • Installation et lancement de BIRD :

aptitude install bird bird6 // Installation du paquet BIRD (et BIRD6 pour ipv6)
vim /etc/bird.conf // Edition du fichier de configuration
birdc // Invite de commande pour BIRD
service bird stop|start // Relancer le service BIRD

  • Topologie du triangle BGP (3 AS) avec routes statiques :

Sur 3 Vms, effectuer l'activation du routage IP :

cat /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p /etc/sysctl.conf

Configuration de BIRD :

@cat /etc bird.conf // CONFIGURATION H3

log syslog all;

protocol kernel {
persist; # Don't remove routes on bird shutdown
scan time 20; # Scan kernel routing table every 20 seconds
import all;
export all; # Default is export none
}

  1. This pseudo-protocol watches all interface up/down events.
    protocol device {
    scan time 10; # Scan interfaces every 10 seconds
    primary "eth1" 192.0.1.1;
    primary "eth2" 192.0.2.1;
    }

protocol static {
import all;
}

protocol bgp h31 {
description "BGP H3 65001";
local as 65000;
neighbor 192.0.1.2 as 65001;
import all;
export all;
}

protocol bgp h32 {
description "BGP H3 65002";
local as 65000;
neighbor 192.0.2.2 as 65002;
import all;
export all;
}

cat /etc bird.conf // CONFIGURATION STRI
log syslog all;

protocol kernel {
persist; # Don't remove routes on bird shutdown
scan time 20; # Scan kernel routing table every 20 seconds
import all; # Default is import all
export all; # Default is export none
}

  1. This pseudo-protocol watches all interface up/down events.
    protocol device {
    scan time 10; # Scan interfaces every 10 seconds
    primary "eth1" 192.0.1.2;
    primary "eth2" 192.0.3.2;
    }

protocol static {
import all;
route 192.0.3.0/24 via 192.0.3.2;
route 192.0.1.0/24 via 192.0.1.2;
}

protocol bgp stri1 {
description "BGP STRI 65002";
local as 65001;
neighbor 192.0.3.1 as 65002;
import all;
export all;
}

protocol bgp stri2 {
description "BGP STRI 65000";
local as 65001;
neighbor 192.0.1.1 as 65000;
import all;
export all;
}

cat /etc bird.conf // CONFIGURATION N7
log syslog all;

protocol kernel {
persist; # Don't remove routes on bird shutdown
scan time 20; # Scan kernel routing table every 20 seconds
import all; # Default is import all
export all; # Default is export none
}

  1. This pseudo-protocol watches all interface up/down events.
    protocol device {
    scan time 10; # Scan interfaces every 10 seconds
    primary "eth1" 192.168.2.2;
    primary "eth2" 192.168.3.1;
    }

protocol static {
import all;
}

protocol bgp n71 {
description "BGP N7 65000";
local as 65002;
neighbor 192.0.1.1 as 65000;
import all;
export all;
}

protocol bgp n72 {
description "BGP N7 65001";
local as 65002;
neighbor 192.0.3.2 as 65001;
import all;
export all;
}@

Ici, relancer les services BIRD sur chaque machine et patienter quelques secondes...
(voir schema route-BGP-static.png)

Tâches en cours

Vincent

Paramétrage OSPF + BIRD sur une topologie regroupant plusieurs routeurs. (Triangle pour commencer).

Othmane

Documentation et Installation de KVM+OVS
Documentation et Installation de BIRD
Documentation sur l'utilisation des vlans dans ovs

Réponse:

Ayant pas reçu un mail et du fait que j'ai vue votre publication très tard,je voudrais m'excuser pour ne pas avoir été présent en réunion la semaine passé.

Justement nous avons pu lancer le virt-manager au niveau d'un utilisateur normal.

je viens de voir l'aspect routage(quagga ospfd) entre 3 vm (topologie logique triangle) et je vois que le routage ospf fonctionne bien,sachant que j'ai pas

configurer ports taggés sur le open vswitch.

Serait il nécessaire de passer par des vlans au niveau OVS?

Merci d'avance pour m'avoir apporter quelque explications pour la prochaine étape .

20130304 13h45 : les VLANs ne sont pas prioritaire pour l'association. Est-ce que vous avez un document qui montre ce qu'il faut faire pas a pas pour lancer le switch et 3 VMs interconnectées avec BIRD ? Que pensez-vous presenter a votre soutenance entreprise le mercredi 13 mars dans un peu plus d'une semaine ? / Laurent GUERBY

20130304 14h05 : Oui pour l'instant je travaille essentiellement sur BIRD pour interconnecter les VMS sur du statique puis bientôt OSPF donc les vlans seront étudiés si le temps le permet. Pour le 13 mars je suis d'accord. Je n'ai pas encore recrée la topologie dans son intégralité car je suis encore sur les 3 machines en triangle mais une documentation en étapes sera éditée pour monter l'architecture effectivement. Je peux la fournir dès que j'aurai réussi avec BIRD.

Liens utiles

KVM

open vSwitch

BIRD

Fichiers et documentation

Notes

20130204 15h13 je passe au Batiment U2 salle 213 pour voir vos collegues mercredi 6 fevrier a 9h, ou en-ete-vous ? On se voit aussi ? / Laurent

Je suis actuellement sur la topologie de Laurent, j'ai refais le schéma mais j'ai des doutes sur pas mal d'éléments (voir le fichier ajouté). / Vincent