Tun / tap vs bridge + vnet vs macvtap arasındaki fark nedir? (KVM sanallaştırma için)


28

KVM ağı kurmak için birçok farklı yol buldum. Ama bunu yapmanın doğru yolu hakkında sıkışıp kaldım. Openstack'ın nötron ağı kurmak için macvtap kullandığını öğrendim. Ve iyi görünüyor.

Ama fark nedir ve neden her şekilde kullanmalı.

1. Yol [ESKİ? TUN / TAP]

http://www.shakthimaan.com/installs/debian-tun-tap-setup.html

/--------\   /----\   /----\   /----\   /--------\
|Internet|---|eth0|---|br0 |---|tap0|---|Guest NIC
\--------/   \----/   \----/   \----/   \--------/

İtiraz edildi, değil mi?

Yol 2 [Köprü + Vnet] <- Virt-manager böyle yapar

http://www.linux-kvm.com/content/using-bridged-networking-virt-manager

Temel olarak, fiziksel arayüzünüzün içinde ve

auto br0
#iface br0 inet dhcp
iface br0 inet static
address 172.16.0.100
network 172.16.0.0
netmask 255.255.0.0
broadcast 172.16.255.255
gateway 172.16.0.1
   bridge_ports eth2
   bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

Sanal bir makineyi virt-manager'dan başlattığınızda bir vnet arayüzü oluşturulur ve köprüye eklenir. En azından bildiğim kadar. Herhangi bir ayar / dokunma arayüzü gerekmez.

Uzun zamandır gayet iyi çalışıyordu ama şimdi sosu ile problemler buldum.

https://bugs.launchpad.net/ubuntu/+source/core-network/+bug/1255516

TAP arayüzü olmayan köprüye neden yeni bir vnet arayüzü ekleyebiliyorsunuz?

3. Yol [MACVTAP]

Son macvtap arayüzü.

http://virt.kernelnewbies.org/MacVTap

TUN / TAP yazılım arayüzünü kopyalar ancak daha iyi bir şekilde yapar. Nasıl olduğunu bilmiyorum ama daha iyi görünüyor.

Macvtap'ın ikinci yoldan avantajı nedir?

Hangisi daha iyi?

Bu konuda herhangi bir yardımın var mı?

Yanıtlar:


4

Gerçekten tam olarak ne elde etmek istediğinize bağlı

  • TAP / TUN

VM veya fiziksel makine olduğu önemli değil. TUN size bir tünel ağı ve TAP'a bir cihaz getiriyor. Kısacası, başka bir ağa ulaşmak için tünelli bir ağdan geçiyorsunuz.

Örneğin, bir OpenVPN ağı yapılandırırken, müşterinize 10.8.0.6 verilecektir. VPN sunucusu 10.8.0.1 isteğinizi arkasındaki başka bir ağa (örneğin 192.168.xx) yönlendirir. TAP kullanırken, doğrudan hedef ağınızdan (192.168.10.x / 24) bir IP (192.168.10.10/24) alırsınız. Basit.

  • Köprü

"Linux Bridge", VNET'i (VM'den) fiziksel etere köprüler. Bir VM (KVM tabanlı) istiyorsanız, köprü ana bilgisayardaki vnet ve ethernet arasında bir zorunluluktur


MMmmm. Cevabınız için teşekkür ederim ama bu şüphelerimi çözmüyor. Bağlantıları görürseniz, birini veya diğerini kullanmak için daha fazla neden olduğunu göreceksiniz. Aslında köprüleme şimdi vm için mevcut linux yığını üzerinde iyi çalışmıyor. Bu yüzden MACVTAP kullanmak zorunda kaldım.
Gonzalo Aguilar Delgado

2

Kullanım çantanıza bağlı olduğunu söyleyebilirim.

Sanal konakların otomatik eklenmesi / silinmesi?

Macvtap'ı dene. Meli macvtap doğrudan musluk karakter cihazı nasılsa ağ yığınını atlar ve ihracat olarak da, ilave bir köprü macvlan daha performanter olmak (kabaca fiziksel bir cihaza başka MAC eklemeye benzer olan gelen infos ağ yığını orada işlenir) veya. Ama beni bunun için mahvetme. İkisinin de (macvlan / macvtap) aynı modları paylaşmasının yanı sıra (VEPA / saç tokası, köprüleme, özel), saç tokası yalnızca düğmeniz yansıtıcı röle modunu destekliyorsa çalışır. (X numaralı bağlantı noktasındaki fiziksel anahtara gelen paketlerin, aynı x numaralı bağlantı noktasından tekrar anahtar bırakmasına izin verilmelidir.)

Bir köprü kullanırken eth0 (veya hangisini kullanırsanız kullanın) karışık moda alındığından, macvXXX modlarının daha yüksek verime sahip olduğu söylenir.

Bu modlar ayrıca 'izolasyon miktarını' da tanımlar (vhosts birbirlerinin trafiğini görebilir mi? Hv'ye ne dersiniz?). Bu başlık altında nasıl çalıştığını henüz bilmiyorum.

veth'in (sanal ethernet çiftleri) yalıtımı için biraz benzerdir, biri sanal köprü için diğeri sanal ağınıza bağlanan iki sanal arayüz tanımlamanız gerekir. Orada, vm-arayüzünü kendi ad boşluğuna koyarak izolasyon yapılır, böylece aygıtlar biraz izole edilir. Tüm trafik köprüde bir araya gelir, ancak bir vhost diğerinin vNIC'lerini göremez.

Bir köprü ile çalışıyorsanız, yapılacak ek bir konfigürasyona sahipsiniz ve köprü kapalıyken, tüm bağlantılarınız da. Köprüyü geri getirirken, tüm sanal arayüzleri tekrar köprüye yeniden bağlamanız gerekebilir (veya sadece tüm hv'yi yeniden başlatmanız gerekebilir ...).

Alt satır: Topolojinizi sık sık değiştirmezseniz, çevrimiçi olarak en fazla bilgiyi bulduğunuzda, çekirdek kodunu okumaktan daha iyi olan bir köprü oluşturmaya devam edin. Heck, iproute2-doc paketinin kendisi bile iproute2'nin sahip olduğu bilgilerin çoğundan yoksundur, hatta siz kanayan sürümleri çalıştırdığınızda bile. Hakkında bulgu deneyin man ip-tcp_metricsmevcut Man sayfalarından veya ip-crefs.ps gelen ...


Bunu yazmayı hatırlamıyorum, tüm bu bilgileri bulduğum yerde daha az. :(
sjas

0

Bu yöntemler temelde farklı şeyler yapıyor. Nedenini anlamak için, katmanlı ağ modelini anlamanız gerekir. Buradaki amaçlarımız için 1., 2. ve 3. katmanlar önemlidir:

  • Katman 1 fiziksel katmandır - bu, hangi kabloları kullanabileceğinizi, hangi voltaj / akım desenlerinin o kablodaki 1s ve 0'ları temsil ettiğini, bir kablonun her bir ucundaki cihazların hangi bit hızında çalıştıklarını vb.
  • Katman 2, link katmanıdır - bu, kablonun her iki ucunda hangi dilin konuşacağını belirler. Bu katmandaki Ethernet cihazlarında kareler ve MAC adresleri gibi şeyler bulunur.
  • Katman 3, ağ katmanıdır - bu, aygıtların doğrudan katman 2'de erişemedikleri üçüncü bir aygıta ulaşmak için başka bir aygıta doğrudan katman 2 bağlantısını nasıl kullandıklarını belirtir. Bu katmandaki aygıtların IP adresleri ve yönlendirme tabloları vardır.

MACVLAN / MACVTAP

MACVLAN, katmanı 1 veya fiziksel katmanı mevcut bir aygıtla paylaşan kendi MAC adresine sahip sanal bir katman 2 veya bağlantı katmanı aygıtı oluşturur. En açık şekilde anlaşılabilir durum, bir ağa bağlı bir Ethernet cihazınızın olduğu ve bu Ethernet cihazını temel alan bir MACVLAN cihazı oluşturduğunuzdur; Artık farklı MAC adreslerine sahip, ancak her ikisi de karelerini aynı kablo üzerinde ileten iki Ethernet "aygıtınız" var. MACVTAP hakkında biraz daha konuşacağım.

MACVLAN arayüzleri mevcut Ethernet arayüzüyle birkaç farklı şekilde etkileşime girebilir, özellikle bir diğeriyle adreslenen arayüzlerden birinde bir çerçeve belirdiğinde:

  • Gelen özel modda, kare atılır; İki arabirimin birbirleriyle, sadece harici cihazlarla iletişim kurması mümkün değildir.
  • Gelen Vepa'ya modunda çerçevesi diğer herhangi bir çerçevenin gibi fiziksel katman üzerinden gönderilir. Aygıtın, çerçevenin daha sonra geldiği bağlantı noktasına geri gönderilmesi gerektiğini anlayacak kadar akıllı bir anahtara takılı olması durumunda, onu gönderen aynı fiziksel katman tarafından alınacak ve daha sonra katman 2 Amaçlanan ağ arayüzüne göndermek için MAC kullanın.
  • In köprü diğer yönelikse bir çerçeve bir cihazda görünen modunda, yapılmadığı kontrol edilir ve eğer öyleyse, o katmanın 1 geçmeden orada gönderilir.
  • Birkaç daha belirsiz mod var.

MACVLAN arayüzlerinin önemli bir kısıtlaması olduğunu unutmayın: Adres öğrenme yeteneğine sahip değiller. Böylece bir MACVLAN arayüzünü ikinci bir fiziksel cihaza köprüleyemezsiniz ve bu ikinci fiziksel cihaza birinciden daha fazla ulaşmayı bekleyemezsiniz. Bu, orijinal Ethernet arayüzü ile çalışır, ancak kendisine bağlı bir MACVLAN arayüzü ile çalışmaz.

TUN / TAP

Bir TAP arayüzü ayrıca yeni bir sanal katman 2 cihazıdır, ancak buna bağlı hiçbir katman 1 yoktur. Bunun yerine, bir program fiziksel katmanı temsil eden bir dosya tanıtıcısını alabilir. Daha sonra ham Ethernet çerçeve verilerini bu dosya tanımlayıcısına yazabilir ve çekirdek, gerçek bir fiziksel arabirimde aldığı diğer Ethernet paketleri gibi davranır.

TAP arayüzleri ile ilgili en büyük şey, fiziksel katmanın kullanıcı modunda olmasıdır; Uygun izinlere sahip herhangi bir yazılım biti herhangi bir şekilde Ethernet çerçeveleri oluşturabilir ve bunları çekirdeğin gerçek bir fiziksel arabirim gibi gördüğü bir şeye sürükleyebilir. Bu, onları VPN'ler ve tünel açma gibi şeyler için çok faydalı kılar; ne olursa olsun hangi tür tünelleme yazılımını kullanıcı alanında yazabilir ve kareleri ağ yığınına sokmak için çekirdek alanına karışmaya gerek yoktur, sadece bir TAP cihazı oluşturun ve kareleri dosya tanımlayıcısına yazın.

TUN aygıtları, 2. katman yerine 3. katmanda çalışması dışında TAP aygıtları gibidir ve kullanıcı modu yazılımı, ham Ethernet paketleri yerine dosya tanımlayıcısına ham IP paketleri yazmak zorundadır.

MACVTAP cihazlarına geri dönersek , bunlar MACVLAN ve TAP arayüzleri arasında bir çeşit karışımdır. TAP arayüzleri gibi, bir kullanıcı modu programı bir dosya tanımlayıcısı alabilir ve içine ham Ethernet çerçeveleri yazabilir. Bir MACVLAN arayüzü gibi, bu kareler daha sonra gerçek bir Ethernet cihazının fiziksel katmanı üzerinden gönderilir. Bu, bunun yerine bir MACVLAN cihazı kullanmak için TAP cihazlarını kullanmak üzere yazılmış bir yazılımı kolayca uyarlamanıza olanak tanır.

VNET

Bu kavramsal olarak TUN / TAP ağına benzer ancak daha gelişmiş bir kontrol düzlemine (bu nedenle onu kullanan kullanıcı modu yazılımı arayüzü daha esnek bir şekilde yapılandırabilir) ve daha optimize edilmiş bir veri düzlemine sahiptir (böylece verileri sanal ağ aygıtında daha fazla taşıyabilirsiniz) etkin bir şekilde).

Bunların hepsi benzer şeyler yapar ancak biraz farklı yetenekleri vardır. Hepsi bir VM'yi bir Ethernet ağına bağlamak için kullanılabilir:

  • Sanallaştırma ürünü konukdan Ethernet çerçeveleri alabilir ve bunları bir TAP cihazının dosya tanımlayıcısına yazabilir. Bu TAP cihazına ana bilgisayar tarafından kendi IP adresi atanabilir veya ana bilgisayarın IP adresini paylaşmak için Ethernet arabirimiyle birlikte bir köprüye bağlanabilir veya iptables NAT üzerinden trafik iletmek üzere yapılandırılabilir.
  • Bir sanallaştırma ürünü, Ethernet'in konuğu çerçevelediğini ve bunları bir MACVTAP cihazı için dosya tanımlayıcısına yazabileceğini; bunlar daha sonra doğrudan bir Ethernet cihazının fiziksel katmanında iletilir, bu da VM'ye etkin bir "gerçek" Ethernet cihazı sağlar (bununla birlikte, köprüler gibi diğer ağ arayüzleri için MACVLAN / MACVTAP cihazları oluşturmanın mümkün olduğunu unutmayın).
  • Sanallaştırma ürünü, çok verimli bir ağ oluşturmak için konuktaki bir virtio sürücüsünü ana bilgisayardaki virtio sürücüsüne bağlayabilir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.