====== Hálózatvirtualizáció ====== Ábrák forrása: [[https://events.static.linuxfound.org/sites/events/files/slides/LinuxConJapan2014_makita_0.pdf|NTT Corp.]] ===== Szoftver-bridge ===== ==== Klasszikus megoldás ==== {{ :it:bridge.png?300|klasszikus bridge megoldás}} * **802.1d** * interfész promiscuous módban * tipikusan architektúra: TAP-eszköz (virtuális hálózati interfész) és egy bridge * klasszikusan: ''tunctl -t'' és ''brctl'' * újabban: ''ip tuntap'', ''ip link'' * ''ip tuntap add dev tap0 mode tap'' * ''ip link add name br0 type bridge'' * ''ip link set dev eth0 master br0'' * ''ip link set dev tap0 master br0'' * újabb kernelek: FDB (Forwarding DB), STP, VLAN-címék (ld. ''bridge fdb'', ''bridge vlan'' stb.) ==== MAC-VLAN ==== * VLAN nem **802.1q** címkézéssel, hanem külön MAC-címmel * több MAC-cím egy fizikai interfészhez * ezek ún. alinterfészek (sub-interface, slave) * a VM/konténer alinterfészt használ * az alinterfész nem tud közvetlenül kommunikálni a fizikai interfésszel, tehát ahhoz, hogy a VM/konténer elérje a hosztot, egy külön alinterfészt kell adni a hoszthoz is * interfésznevek: ''mac0@eth0'', ''mac1@eth0'' – első és második alinterfész az első fizikai interfészen * ''ip link add mac0 link eth0 type macvlan'' === Bridge mód === {{:it:macvlan_bridge.png?200| macvlan bridge mode}} * pehelysúlyú switch (nem tanul, nincs STP stb.) * MAC-VLAN-ok közötti forgalmat biztosítja * ''ip link add mac0 link eth0 type macvlan mode bridge'' === Passthru mód === {{:it:macvlan_passthru.png?150| macvlan passthru mode}} * csak egy MAC-VLAN alinterfész engedélyezett * VM TAP-eszközként használhatja (MACVTAP) * "közvetlenül" eléri fizikai interfészt * bármilyen MAC-címe lehet (promiscuous) * ''ip link add mac0 link eth0 type macvlan mode passthru'' === VEPA-mód === {{:it:macvlan_vepa.png?200| macvlan vepa mode}} * MAC-VLAN-ok közötti forgalom külső switch-en keresztül (ld. [[#VEPA]]) * ''ip link add mac0 link eth0 type macvlan mode vepa'' === Privát mód === {{:it:macvlan_private.png?200| macvlan private mode}} * nem bridge üzemmód * MAC-VLAN-ok közötti forgalmat tiltja * ''ip link add mac0 link eth0 type macvlan mode private'' ==== IP-VLAN ==== * https://hicu.be/macvlan-vs-ipvlan * https://www.kernel.org/doc/Documentation/networking/ipvlan.txt * hasonló a MAC-VLAN-hoz, nem használható egyszerre a kettő * nem kapnak külön MAC-címet az alinterfészek, csak külön IP-címet * használata korlátozott * WiFi csatoló esetén * ha nem lehet több MAC-címet adni az interfészhez (érdemes nem IP-VLAN-nal megoldani) * BGP-vel közzétett szolgáltatás a VM-ben/konténerben === L2 mód === * ld. MAC-VLAN bridge mód * broadcast/multicast minden alinterfészhez megy * ''ip link add ipvlan0 link eth0 type ipvlan mode l2'' === L3 mód === * router-ként működik az eszköz (dinamikus routing nincs) * alinterfészek és a fizikai interfész között * alinterfészek között * minden alinterfész külön alhálózatban kell hogy legyen * broadcast nem működik alinterfészek között * multicast nem támogatott * TTL-t nem csökkenti, ezért traceroute-ban nem jelenik meg * ''ip link add ipvlan0 link eth0 type ipvlan mode l3'' == L3S mód == * conn-tracking is megy ==== Open vSwitch (OVS) ==== * teljeskörű szoftverswitch (VLAN-címkék, VXLAN, GRE, bonding stb.) * normál switchként is használható * támogatja az OpenFlow-t (L3-alapú forgalommenedzsment) * ''ovs-vsctl'' ===== SR-IOV ===== * **Single Root I/O Virtualization** * egy PCI Express eszköz felosztása úgy, hogy több fizikai eszköznek látsszék * szétválnak a fizikai funkciók (PF) és a virtuális funkciók (VF) * a VF (kb. virtuális hálózati port) nem (vagy csak korlátozottan) konfigurálható, csak adatokat tud küldeni/fogadni * elvben max. 256 VF portonként, gyakorlatban jelenleg max. 64 * BIOS és hypervisor/OS támogatás kell hozzá * egyes hálózati kártyák (pl. Intel 82599) támogatják a **VF-ek közötti switch-elés**t * interfésznevek: ''eth0_0'', ''eth0_1'' ===== Edge Virtual Bridging (EVB) ===== * virtuális gépek hálózati forgalmának hoszton kívüli (fizikai) switchelése * http://wikibon.org/wiki/v/Edge_Virtual_Bridging * a hálózati adminisztráció (monitorozás, statisztikák, ACL-ek) egy kézben tartható a fizikai szinten * virtuális helyett fizikai switch használata: hálózati overhead (sávszélesség, késleltetés) ==== VEPA ==== * **Virtual Ethernet Port Aggregation** * **802.1qbg** * **HP**, IBM, Juniper, Brocade... === Standard mód === * a hypervisor a hálózati kereteket a külső switch-hez irányítja * a hoszton belüli VM-ek esetén MAC-címet kell váltani * a hoszton kívüli VM címzése esetén a MAC-cím változatlan) * a fizikai switch visszaküldi a forgalmat a hosztra (hairpin turn on VEPA port), * a firmware-nek támogatnia kell a hypervisor és a switch közötti egyeztetést, különben az STP meg fogja akadályozni az azonos porton történő visszaküldést === Többcsatornás mód === * opcionális kiegészítő funkció * egy Ethernet portot (switch/NIC) több csatornára osztja fel, ezek egyedi kapcsolatok * a hypervisor a hoszton belül ezeket a csatornákat hozzárendelheti VM-hez, VEB-hez (standard VPA esetén VEB művelethez is) * a csatornák különválasztása címkézéssel történik: 802.1ad szabvány * a standard 802.1q VLAN címkén túl egy service tag (S-Tag) is van, így VLAN-on belül is működik (**Q-in-Q**) ==== VN-Tag ==== * **Bridge Port Extension** (**Cisco**): 802.1qbh * 2011 óta **802.1br** * az Ethernet keret fejlécében egy plusz címke van porton belüli virtuális interfészek (VIF) azonosításához (''ethertype'' – címke azonosítója, ''dvif_id'' – annak a portnak az azonosítója, ahová a keretet küldeni kell, ''svif_id'' – annak a portnak az azonosítója, ahonnan keret érkezett)