Ceci est une ancienne révision du document !
Table des matières
OpenVSwitch (OVS)
Doc
Exemple
- Démarrer le service openvswitch (fedora) :
$ systemctl start openvswitch.service
- Créer un bridgre
bridge1
:
$ ovs-vsctl add-br bridge1
- Activer le bridge nouvellement créé :
$ ifconfig bridge1 up
- Ajouter l'interface
wls34
au bridgebridge1
(Attention on pert le réseau à partir de ce moment là) :
$ ovs-vsctl add-port bridge1 wls34
- On reset l'interface
wls34
:
$ ifconfig eth0 0
- On configure une ip pour le switch (dans notre exemple en DHCP) :
$ dhclient bridge1 $ route del default gw 192.168.1.1 wls34 $ route del 192.168.1.1 wls34
ou à la main :
$ ifconfig br-int 192.168.1.46 netmask 255.255.255.0 $ route add default gw 192.168.1.1 bridge1 $ route del default gw 192.168.1.1 wls34 $ route del 192.168.1.1 wls34
Après la modification des route
on récupère le réseau.
Table de routage :
$ route -n Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 bridge1 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 bridge1
- Affichage de la vue :
$ ovs-vsctl show 109065b0-a911-48ad-a0ad-4fa6785c0552 Bridge "bridge1" Port "wls34" Interface "wls34" Port "bridge1" Interface "bridge1" type: internal ovs_version: "2.3.1"
- Créer 2 interfaces de type
tap
nomméesvport1
etvport2
:
$ ip tuntap add mode tap vport1 $ ip tuntap add mode tap vport2 $ ifconfig vport1 up $ ifconfig vport2 up
Vous pouvez également utiliser tunctl
pour créer une interface de type tap
:
$ tunctl –t tap0 –u root
- Ajoutons ces 2 interfaces
vport1
etvport2
au switchbridge1
(–
permet de lui spécifier plusieurs commandes à la suite) :
$ ovs-vsctl add-port bridge1 vport1 -- add-port bridge1 vport2
On peut maintenant venir brancher par exemple deux VM sur les ports vport1 et
vport2.
* Nous voyons maintenant notre switch composée des interfaces
vport1,
vport2 et
wls34 :
<code>
$ ovs-vsctl show
109065b0-a911-48ad-a0ad-4fa6785c0552
Bridge “bridge1”
Port “vport1”
Interface “vport1”
Port “bridge1”
Interface “bridge1”
type: internal
Port “vport2”
Interface “vport2”
Port “wls34”
Interface “wls34”
ovs_version: “2.3.1”
</code>
* informations sur les port/VLAN et MAC de
bridge1 :
<code>
ovs-appctl fdb/show bridge1
port VLAN MAC Age
3 0 e0:a1:d7:ab:62:78 76
3 0 d4:3d:7e:f3:22:ea 74
3 0 e0:a1:d7:39:cf:e0 5
LOCAL 0 00:21:5d:5f:05:f8 5
</code>
* On peut voir la vitesse réseau négociée entre les VM et les ports du switch
bridge1 :
<code>
ovs-ofctl show bridge1
OFPT_FEATURES_REPLY (xid=0x2): dpid:000000215d5f05f8
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE
3(wls34): addr:00:21:5d:5f:05:f8
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
4(vport1): addr:8a:b8:20:e9:9e:56
config: 0
state: LINK_DOWN
current: 10MB-FD COPPER
speed: 10 Mbps now, 0 Mbps max
5(vport2): addr:ce:18:f9:2f:46:f6
config: 0
state: LINK_DOWN
current: 10MB-FD COPPER
speed: 10 Mbps now, 0 Mbps max
LOCAL(bridge1): addr:00:21:5d:5f:05:f8
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
</code>
* Packets :
<code>
$ ovs-ofctl dump-flows bridge1
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=3986.626s, table=0, n_packets=5660, n_bytes=1785393, idle_age=0, priority=0 actions=NORMAL
</code>
* Lister les switchs :
<code>
$ ovs-vsctl list Bridge
_uuid : 21680110-ef3b-4145-b5d2-17662e97c3cc
controller : []
datapath_id : “000000215d5f05f8”
datapath_type : “”
external_ids : {}
fail_mode : []
flood_vlans : []
flow_tables : {}
ipfix : []
mirrors : []
name : “bridge1”
netflow : []
other_config : {}
ports : [423dd0b4-e9f1-415c-8d2e-5b1420f3fbad, 837fd7e1-160d-4de1-a78d-521165766f38, 951efaa1-cd8f-4b5a-99cc-d81a78c3aafb, dfa58c1e-6ccb-4b1f-b310-089663148935]
protocols : []
sflow : []
status : {}
stp_enable : false
</code>
* Lister les ports du switch :
<code>
$ ovs-vsctl list Port
_uuid : 423dd0b4-e9f1-415c-8d2e-5b1420f3fbad
bond_active_slave : []
bond_downdelay : 0
bond_fake_iface : false
bond_mode : []
bond_updelay : 0
external_ids : {}
fake_bridge : false
interfaces : [d88afbae-18f3-46b3-a1c6-6a52032fb1f9]
lacp : []
mac : []
name : “vport1”
other_config : {}
qos : []
statistics : {}
status : {}
tag : []
trunks : []
vlan_mode : []
_uuid : 951efaa1-cd8f-4b5a-99cc-d81a78c3aafb
bond_active_slave : []
bond_downdelay : 0
bond_fake_iface : false
bond_mode : []
bond_updelay : 0
external_ids : {}
fake_bridge : false
interfaces : [b9d5a333-12c2-4c75-90cf-7db30138241b]
lacp : []
mac : []
name : “vport2”
other_config : {}
qos : []
statistics : {}
status : {}
tag : []
trunks : []
vlan_mode : []
_uuid : 837fd7e1-160d-4de1-a78d-521165766f38
bond_active_slave : []
bond_downdelay : 0
bond_fake_iface : false
bond_mode : []
bond_updelay : 0
external_ids : {}
fake_bridge : false
interfaces : [6547e7b6-1dd2-4b59-9a1b-f4639fd020e1]
lacp : []
mac : []
name : “bridge1”
other_config : {}
qos : []
statistics : {}
status : {}
tag : []
trunks : []
vlan_mode : []
_uuid : dfa58c1e-6ccb-4b1f-b310-089663148935
bond_active_slave : []
bond_downdelay : 0
bond_fake_iface : false
bond_mode : []
bond_updelay : 0
external_ids : {}
fake_bridge : false
interfaces : [532efcf6-eee5-4b3d-b6fe-986f2089676c]
lacp : []
mac : []
name : “wls34”
other_config : {}
qos : []
statistics : {}
status : {}
tag : []
trunks : []
vlan_mode : []
</code>
* Lister les interfaces :
<code>
$ ovs-vsctl list Interface
_uuid : 532efcf6-eee5-4b3d-b6fe-986f2089676c
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_flap_count : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : []
external_ids : {}
ifindex : 3
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 0
link_speed : []
link_state : up
mac : []
mac_in_use : “00:21:5d:5f:05:f8”
mtu : 1500
name : “wls34”
ofport : 3
ofport_request : []
options : {}
other_config : {}
statistics : {collisions=0, rx_bytes=93328146, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=95891, tx_bytes=8789787, tx_dropped=0, tx_errors=0, tx_packets=59516}
status : {driver_name=iwlwifi, driver_version=“3.17.8-300.fc21.x86_64”, firmware_version=“8.83.5.1 build 33692”}
type : “”
_uuid : 6547e7b6-1dd2-4b59-9a1b-f4639fd020e1
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_flap_count : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : []
external_ids : {}
ifindex : 6
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 1
link_speed : []
link_state : up
mac : []
mac_in_use : “00:21:5d:5f:05:f8”
mtu : 1500
name : “bridge1”
ofport : 65534
ofport_request : []
options : {}
other_config : {}
statistics : {collisions=0, rx_bytes=643639, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=2264, tx_bytes=1331489, tx_dropped=0, tx_errors=0, tx_packets=3928}
status : {driver_name=openvswitch}
type : internal
_uuid : d88afbae-18f3-46b3-a1c6-6a52032fb1f9
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_flap_count : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : full
external_ids : {}
ifindex : 7
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 0
link_speed : 10000000
link_state : down
mac : []
mac_in_use : “8a:b8:20:e9:9e:56”
mtu : 1500
name : “vport1”
ofport : 4
ofport_request : []
options : {}
other_config : {}
statistics : {collisions=0, rx_bytes=0, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_errors=0, tx_packets=0}
status : {driver_name=tun, driver_version=“1.6”, firmware_version=“”}
type : “”
_uuid : b9d5a333-12c2-4c75-90cf-7db30138241b
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_flap_count : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : full
external_ids : {}
ifindex : 8
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 0
link_speed : 10000000
link_state : down
mac : []
mac_in_use : “ce:18:f9:2f:46:f6”
mtu : 1500
name : “vport2”
ofport : 5
ofport_request : []
options : {}
other_config : {}
statistics : {collisions=0, rx_bytes=0, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_errors=0, tx_packets=0}
status : {driver_name=tun, driver_version=“1.6”, firmware_version=“”}
type : “”
</code>
* Supprimer le port
wls34 :
<code>
$ ovs-vsctl add-port bridge1 wls34
</code>
Supprimer le bridgre
bridge1 :
<code>
$ ovs-vsctl del-br bridge1
</code>
===== VLANs =====
* Ajoute le port
vport0 à
bridge1 avec numéro de vlan 100 :
<code>
$ ovs-vsctl add-port bridge1 vport0 tag=100
</code>
* Ajoute le port
vport1 à
bridge1'' avec numéro de vlan 200 :
$ ovs-vsctl add-port bridge1 vport1 tag=200