La topologie physique de l'interconnexion
réseau
Même s'il n'est pas toujours évident d'obtenir une représentation
satisfaisante d'une interconnexion réseau, ce n'est pas une raison pour faire
n'importe quoi. La problématique dans le cas présent vient du fait que toutes
les interfaces sont raccordées au même commutateur : vde.
Une représentation telle que celle donnée ci-dessus, qui ne fait apparaître
qu'un commutateur unique est quasiment illisible. Que dire de l'identification
des VLANs ? Même en employant
différentes couleurs on aurait beaucoup de mal à identifier les différents
domaines de diffusion. C'est la raison pour laquelle je préfère utiliser
autant de «sous-commutateurs» que de VLANs.
Si l'on accepte le fait que le commutateur est découpé en cinq
sous-ensembles correspondant chacun à un réseau local (ou un VLAN), on gagne en lisibilité. Pour la partie câblage
proprement dite on peut alors se contenter d'un tableau de correspondance.
Tableau 1. Brassage des interfaces sur le
commutateur vde
numéro de port |
interface |
hôte |
1 |
tap0 |
Système hôte |
2 |
fa0/0 |
Routeur Campus |
3 |
fa0/1 |
Routeur Campus |
4 |
fa0/0 |
Routeur Parc |
5 |
fa0/1 |
Routeur Parc |
6 |
fa1/0 |
Routeur Parc |
7 |
fa0/0 |
Routeur DMZ |
8 |
fa0/1 |
Routeur DMZ |
9 |
fa1/0 |
Routeur DMZ |
10 |
eth0 |
Client (machine virtuelle KVM) |
11 |
eth0 |
Serveur (machine virtuelle KVM) |
Une fois ce brassage établi, il ne varie plus tout au long des différentes
étapes et évolutions de la topologie logique. On passe d'une topologie logique
à l'autre par le biais des affectations de VLANs.
Le tableau ci-dessus est la traduction des éléments de configuration en
place aussi bien sur le système hôte que sur les systèmes émulés ou
virtualisés.
Sur un système Debian GNU/Linux, le paquet
vde2
fournit les scripts nécessaires à la
configuration d'une interface de type tap
au
lancement du commutateur. Voici un extrait du fichier /etc/network/interfaces
.
iface tap0 inet static
address 192.200.0.1
netmask 255.255.255.224
network 192.200.0.0
broadcast 192.200.0.31
vde2-switch -
Lors de l'activation de l'interface tap0
,
le commutateur virtuel est lancé et l'interface est directement raccordée sur
le port numéro 1.
$
unixterm /var/run/vde2/tap0.mgmt
VDE switch V.2.2.3
(C) Virtual Square Team (coord. R. Davoli) 2005,2006,2007 - GPLv2
vde$ port/print
0000 DATA END WITH '.'
Port 0001 untagged_vlan=0000 ACTIVE - Unnamed Allocatable
Current User: NONE Access Control: (User: NONE - Group: NONE)
IN: pkts 81 bytes 25726
OUT: pkts 0 bytes 0
-- endpoint ID 0007 module tuntap : tap0
.
1000 Success
L'émulation des routeurs Cisco
Le gestionnaire dynagen prend en charge
l'interconnexion des interfaces des routeurs émulés via son fichier de
configuration.
$
cat lab.net
[localhost]
ghostios = true
sparsemem = true
[[7200]]
[[router Campus]]
model = 2621XM
ram = 192
image = /home/phil/ios.images/c2600-advipservicesk9-mz.124-15.T14.image
f0/0 = NIO_vde:/var/run/vde2/tap0.ctl/ctl:/var/run/vde2/tap0.ctl/Campus_f0_0
f0/1 = NIO_vde:/var/run/vde2/tap0.ctl/ctl:/var/run/vde2/tap0.ctl/Campus_f0_1
[[router Parc]]
model = 2621XM
ram = 192
slot1 = NM-1FE-TX
image = /home/phil/ios.images/c2600-advipservicesk9-mz.124-15.T14.image
f0/0 = NIO_vde:/var/run/vde2/tap0.ctl/ctl:/var/run/vde2/tap0.ctl/Parc_f0_0
f0/1 = NIO_vde:/var/run/vde2/tap0.ctl/ctl:/var/run/vde2/tap0.ctl/Parc_f0_1
f1/0 = NIO_vde:/var/run/vde2/tap0.ctl/ctl:/var/run/vde2/tap0.ctl/Parc_f1_0
[[router DMZ]]
model = 2621XM
ram = 192
slot1 = NM-1FE-TX
image = /home/phil/ios.images/c2600-advipservicesk9-mz.124-15.T14.image
f0/0 = NIO_vde:/var/run/vde2/tap0.ctl/ctl:/var/run/vde2/tap0.ctl/DMZ_f0_0
f0/1 = NIO_vde:/var/run/vde2/tap0.ctl/ctl:/var/run/vde2/tap0.ctl/DMZ_f0_1
f1/0 = NIO_vde:/var/run/vde2/tap0.ctl/ctl:/var/run/vde2/tap0.ctl/DMZ_f1_0
Les ports du commutateur vde sont
raccordés séquentiellement aux interfaces des routeurs dans l'ordre défini
dans le fichier de configuration ci-dessus.
Dans le cas des machines virtuelles, les affectations se font lors de
l'appel au script d'initialisation startup.sh proposé dans l'article Virtualisation système et enseignements
pratiques. En voici une copie.
#!/bin/bash
# $Id: startup.sh 1614 2011-03-17 22:41:04Z latu $
#RedOnBlack='\E[31;40m'
RedOnBlack='\E[31m'
vm=$1
shift
memory=$1
shift
port=$1
shift
if [[ -z "$vm" || -z "$memory" || -z "$port" ]]
then
echo "ERREUR : paramètre manquant"
echo "Utilisation : $0 "
exit 1
fi
if (( $memory < 128 ))
then
echo "ERREUR : quantité de mémoire RAM insuffisante"
echo "La quantité de mémoire en Mo doit être supérieure ou égale à 128"
exit 1
fi
macaddress="52:54:00:12:34:$port"
echo -e "$RedOnBlack"
echo "~> Machine virtuelle : $vm"
echo "~> Mémoire RAM : $memory"
echo "~> Port commutateur : $port"
echo "~> Adresse MAC : $macaddress"
tput sgr0
# -vga vmware \
kvm \
-daemonize \
-name $vm \
-m $memory \
-rtc base=localtime,clock=host \
-drive file=$vm,if=virtio,media=disk,boot=on \
-k fr \
-usb -usbdevice tablet \
-soundhw es1370 \
-net vde,vlan=1,sock=/var/run/vde2/tap0.ctl,port=$port \
-net nic,vlan=1,model=virtio,macaddr=$macaddress \
$*
Ici, les machines virtuelles sont lancées à l'aide des deux instructions
suivantes.
../scripts/startup.sh client.raw 512 10
../scripts/startup.sh serveur.raw 512 11
L'initialisation de la maquette
complète
Pour synthétiser tous ces éléments de configuration, on utilise un script
qui englobe les différentes initialisations.
$
cat migration.sh
#!/bin/bash
../scripts/startup.sh client.raw 512 10
../scripts/startup.sh serveur.raw 512 11
if [[ -z "`pidof dynamips | tr -d '\n'`" ]]
then
echo "Launching dynamips"
dynamips -H 7200 & >/dev/null
sleep 5
echo '.'
fi
dynagen lab.net
echo "The End"
exit 0
Une fois que tous les systèmes sont actifs, on peut passer à la création de
la base de données des VLANs via la console
d'administration du commutateur vde.
$
unixterm /var/run/vde2/tap0.mgmt
VDE switch V.2.2.3
(C) Virtual Square Team (coord. R. Davoli) 2005,2006,2007 - GPLv2
vde$ vlan/create 1
1000 Success
vde$ vlan/create 2
1000 Success
vde$ vlan/create 3
1000 Success
vde$ vlan/create 4
1000 Success
vde$ vlan/create 5
1000 Success
vde$ vlan/print
0000 DATA END WITH '.'
VLAN 0000
-- Port 0001 tagged=0 active=1 status=Forwarding
-- Port 0002 tagged=0 active=1 status=Forwarding
-- Port 0003 tagged=0 active=1 status=Forwarding
-- Port 0004 tagged=0 active=1 status=Forwarding
-- Port 0005 tagged=0 active=1 status=Forwarding
-- Port 0006 tagged=0 active=1 status=Forwarding
-- Port 0007 tagged=0 active=1 status=Forwarding
-- Port 0008 tagged=0 active=1 status=Forwarding
-- Port 0009 tagged=0 active=1 status=Forwarding
-- Port 0010 tagged=0 active=1 status=Forwarding
-- Port 0011 tagged=0 active=1 status=Forwarding
VLAN 0001
VLAN 0002
VLAN 0003
VLAN 0004
VLAN 0005
.
1000 Success
La copie d'écran ci-dessus montre que tous les ports actifs appartiennent
au même VLAN (le numéro 0) et que cinq
autres VLANs ont été créés.
On peut maintenant considérer que la topologie physique est en place et
passer à la mise en œuvre de la première topologie logique.
La première topologie logique
Cette topologie logique de départ correspond à la présentation de la topologie physique
initiale. Après avoir traité le niveau physique dans la section
précédente, on remonte les couches de la modélisation : base de données
des VLANs au niveau liaison, configuration
IP et routage OSPF au niveau réseau puis validation des couches
transport et application à l'aide des systèmes virtuels client et serveur.
Les réseaux locaux (VLANs)
La configuration des VLANs se fait
toujours à l'aide de la console d'administration de vde.
vde$ port/setvlan 1 1
1000 Success
vde$ port/setvlan 2 1
1000 Success
vde$ port/setvlan 3 2
1000 Success
vde$ port/setvlan 4 2
1000 Success
vde$ port/setvlan 5 3
1000 Success
vde$ port/setvlan 10 3
1000 Success
vde$ port/setvlan 6 4
1000 Success
vde$ port/setvlan 11 4
1000 Success
vde$ vlan/print
0000 DATA END WITH '.'
VLAN 0000
-- Port 0007 tagged=0 active=1 status=Forwarding
-- Port 0008 tagged=0 active=1 status=Forwarding
-- Port 0009 tagged=0 active=1 status=Forwarding
VLAN 0001
-- Port 0001 tagged=0 active=1 status=Forwarding
-- Port 0002 tagged=0 active=1 status=Forwarding
VLAN 0002
-- Port 0003 tagged=0 active=1 status=Forwarding
-- Port 0004 tagged=0 active=1 status=Forwarding
VLAN 0003
-- Port 0005 tagged=0 active=1 status=Forwarding
-- Port 0010 tagged=0 active=1 status=Forwarding
VLAN 0004
-- Port 0006 tagged=0 active=1 status=Forwarding
-- Port 0011 tagged=0 active=1 status=Forwarding
VLAN 0005
.
1000 Success
Après cette suite d'instructions, les ports 7, 8 et 9 sont les seuls à ne
pas être affectés à un VLAN particulier.
Ils ne sont pas utilisés dans cette première topologie logique.
Les accès Internet et réseau du campus
Le premier réseau local (VLAN 1)
représente le lien entre le réseau du campus et l'Internet. Dans cette
maquette, le réseau du campus se résume à un routeur à la frontière entre
l'aire OSPF et le système hôte qui dispose
d'un véritable accès à l'Internet. Cet accès réel est mis à disposition des
équipements de la maquette par routage et traduction d'adresses sources
(S-NAT).
Le réseau IP utilisé pour la
communication entre le système hôte et les équipements virtualisés est le
192.200.0.0/27
et le réseau de l'aire
OSPF (VLAN 2) est le 172.20.124.0/22
. Voici un extrait de la configuration du
routeur Campus
.
interface FastEthernet0/0
mac-address c800.309b.0100
ip address 192.200.0.2 255.255.255.224
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 172.20.124.2 255.255.252.0
duplex auto
speed auto
!
router ospf 1
router-id 0.0.0.1
log-adjacency-changes
passive-interface FastEthernet0/0
network 172.20.124.0 0.0.3.255 area 0
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.200.0.1
Pour assurer une visibilité entre les réseaux de la maquette et le système
hôte, on ajoute autant de routes statiques sur le système hôte que de réseaux
utilisés. Dans le cas présent, on ajoute seulement le réseau 172.20.124.0/22
au système hôte.
#
ip ro add 172.20.124.0/22 dev tap0
Le routeur de site de la première topologie logique est baptisé
Parc
. Il dessert deux périmètres
distincts : le réseau du parc des postes de travail 192.168.177.0/24
(VLAN 3) et le réseau des services Internet
192.168.185.0/24
(VLAN 4).
Voici un extrait de la configuration du routeur Parc
.
interface FastEthernet0/0
mac-address c801.309b.0010
ip address 172.20.124.8 255.255.252.0
duplex auto
speed auto
!
interface FastEthernet0/1
mac-address c801.309b.0011
ip address 192.168.177.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet1/0
mac-address c801.309b.0012
ip address 192.168.185.1 255.255.255.0
duplex auto
speed auto
!
router ospf 1
router-id 0.0.0.2
log-adjacency-changes
network 172.20.124.0 0.0.3.255 area 0
network 192.168.177.0 0.0.0.255 area 0
network 192.168.185.0 0.0.0.255 area 0
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 172.20.124.2
La table de routage est la suivante :
Parc#sh 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 172.20.124.2 to network 0.0.0.0
C 192.168.177.0/24 is directly connected, FastEthernet0/1
172.20.0.0/22 is subnetted, 1 subnets
C 172.20.124.0 is directly connected, FastEthernet0/0
C 192.168.185.0/24 is directly connected, FastEthernet1/0
S* 0.0.0.0/0 [1/0] via 172.20.124.2
Les tests ICMP classiques permettent de
valider la connectivité entre les réseaux du site et le système hôte.
$
ping -qc 5 192.168.177.1
PING 192.168.177.1 (192.168.177.1) 56(84) bytes of data.
--- 192.168.177.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 6.361/9.082/10.765/1.514 ms
$
ping -qc 5 192.168.185.1
PING 192.168.185.1 (192.168.185.1) 56(84) bytes of data.
--- 192.168.185.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 5.093/8.100/9.431/1.580 ms
Parc#ping 192.200.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.200.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/7/16 ms
Les systèmes virtuels client et serveur
Pour finir de valider le fonctionnement de l'interconnexion de la première
topologie logique, il ne reste plus qu'à tester la connectivité depuis les
deux machines virtuelles client et serveur. On leur affecte respectivement les
adresses IP 192.168.177.10
et 192.168.185.10
. Après avoir repris les tests
ICMP présentés ci-dessus avec les adresses
IP du client et du serveur, on installe les
outils nécessaires à la navigation Web. Sur le poste client, on se contente
d'installer le paquet du navigateur lynx-cur.
Sur le poste serveur, on installe le paquet du serveur apache2.
Une fois la configuration en place, on peut naviguer «facilement» depuis le
poste client ou le système hôte.
La seconde topologie logique
Cette topologie logique utilise un routeur par périmètre. L'objectif ici
est de disposer de davantage de capacité de traitement pour chaque type de
flux réseau à router et filtrer. Relativement à la section précédente, la
topologie physique évolue par réaffectation des VLANs sur les ports du commutateur vde concernés.
Les réseaux locaux (VLANs)
Pour la nouvelle configuration des VLANs, on utilise à nouveau la console d'administration de
vde.
vde$ port/setvlan 7 2
1000 Success
vde$ port/setvlan 9 4
1000 Success
vde$ port/setvlan 8 5
1000 Success
vde$ port/setvlan 11 5
1000 Success
vde$ vlan/print
0000 DATA END WITH '.'
VLAN 0000
VLAN 0001
-- Port 0001 tagged=0 active=1 status=Forwarding
-- Port 0002 tagged=0 active=1 status=Forwarding
VLAN 0002
-- Port 0003 tagged=0 active=1 status=Forwarding
-- Port 0004 tagged=0 active=1 status=Forwarding
-- Port 0007 tagged=0 active=1 status=Forwarding
VLAN 0003
-- Port 0005 tagged=0 active=1 status=Forwarding
-- Port 0010 tagged=0 active=1 status=Forwarding
VLAN 0004
-- Port 0006 tagged=0 active=1 status=Forwarding
-- Port 0009 tagged=0 active=1 status=Forwarding
VLAN 0005
-- Port 0008 tagged=0 active=1 status=Forwarding
-- Port 0011 tagged=0 active=1 status=Forwarding
.
1000 Success
Une fois ces affectations de VLAN par
port effectuées, on étudie les deux nouveaux périmètres du parc des postes de
travail et des services Internet. Les accès Internet et réseau du campus ne
changent pas et la configuration du routeur Campus
reste identique.
Le réseau du parc des postes de travail
Le routeur baptisé Parc
dessert toujours
les postes de travail ; soit le réseau 192.168.177.0/24
(VLAN
3). Il est maintenant raccordé au routeur baptisé DMZ
via le réseau 192.168.0.0/30
(VLAN
4). Voici un extrait de la nouvelle configuration du routeur Parc
.
interface FastEthernet0/0
mac-address c801.309b.0010
ip address 172.20.124.8 255.255.252.0
duplex auto
speed auto
!
interface FastEthernet0/1
mac-address c801.309b.0011
ip address 192.168.177.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet1/0
mac-address c801.309b.0012
ip address 192.168.0.1 255.255.255.252
duplex auto
speed auto
!
router ospf 1
router-id 0.0.0.2
log-adjacency-changes
network 172.20.124.0 0.0.3.255 area 0
network 192.168.177.0 0.0.0.255 area 0
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 172.20.124.2
ip route 192.168.185.0 255.255.255.0 FastEthernet1/0
Le réseau d'interconnexion directe (VLAN
4) entre les routeurs Parc
et DMZ
est configuré pour faire transiter les flux entre les
postes de travail et les services Internet du site sans passer par le réseau
du campus. On a ajouté une route statique dont la métrique est plus faible que
celle d'une route établie via le protocole OSPF. C'est donc cette route statique qui est implantée
dans la table de routage.
Parc#sh 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 172.20.124.2 to network 0.0.0.0
C 192.168.177.0/24 is directly connected, FastEthernet0/1
172.20.0.0/22 is subnetted, 1 subnets
C 172.20.124.0 is directly connected, FastEthernet0/0
192.168.0.0/30 is subnetted, 1 subnets
C 192.168.0.0 is directly connected, FastEthernet1/0
S 192.168.185.0/24 is directly connected, FastEthernet1/0
S* 0.0.0.0/0 [1/0] via 172.20.124.2
Le réseau des services Internet
Le routeur baptisé DMZ
dessert le réseau
des services Internet qui a migré vers ce nouveau routeur. Si l'adresse de ce
réseau reste 192.168.185.0/24
, elle correspond
maintenant au VLAN 5. De façon symétrique,
le routeur DMZ
est raccordé au routeur
Parc
via le réseau 192.168.0.0/30
(VLAN
4). Voici un extrait de la configuration du nouveau routeur DMZ
.
interface FastEthernet0/0
mac-address c802.309b.0020
ip address 172.20.124.10 255.255.252.0
duplex auto
speed auto
!
interface FastEthernet0/1
mac-address c802.309b.0021
ip address 192.168.185.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet1/0
mac-address c802.309b.0022
ip address 192.168.0.2 255.255.255.252
duplex auto
speed auto
!
router ospf 1
router-id 0.0.0.4
log-adjacency-changes
network 172.20.124.0 0.0.3.255 area 0
network 192.168.185.0 0.0.0.255 area 0
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 130.120.124.2
ip route 192.168.177.0 255.255.255.0 FastEthernet1/0
Tout comme sur le routeur Parc
on a ajouté
une route statique pour faire transiter les flux entre les services Internet
et les postes de travail du site sans passer par le réseau du campus.
DMZ#sh 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
S 192.168.177.0/24 is directly connected, FastEthernet1/0
172.20.0.0/22 is subnetted, 1 subnets
C 172.20.124.0 is directly connected, FastEthernet0/0
192.168.0.0/30 is subnetted, 1 subnets
C 192.168.0.0 is directly connected, FastEthernet1/0
C 192.168.185.0/24 is directly connected, FastEthernet0/1
Une fois la seconde topologie en place, on reprend les mêmes tests
ICMP que ceux effectués avec la première
topologie. On procède de même avec les navigateurs Web de la machine virtuelle
cliente et du système hôte.
Voilà une illustration supplémentaire de l'utilisation des outils de
virtualisation et d'émulation que l'on peut aisément faire fonctionner sur un
système GNU/Linux. Cette maquette montre que l'on peut préparer sereinement
les configurations des équipements en dehors de l'interconnexion réseau «en
production» et éviter ainsi les écueils les plus gros.
En toute honnêteté, cette préparation par maquette n'offre aucune garantie
de bon fonctionnement dans la mesure où elle ne supporte pas de trafic réel.
Face à des profils de trafic réseau hautement imprévisibles et difficilement
reproductibles, le «comportement» des équipements réels est parfois décevant.
C'est souvent un non dit qui conduit à surdimensionner les configurations
matérielles.
Ce billet est disponible en version imprimable au format PDF :
ospf-migration.pdf.
$Id: ospf-migration.xml 1615 2011-03-20 23:13:26Z
latu $