Saya baru saja menemukan banyak cara berbeda untuk melakukan jejaring KVM. Tapi saya terjebak tentang apa cara yang benar untuk melakukannya. Saya menemukan bahwa openstack menggunakan macvtap untuk melakukan jaringan neutron. Dan itu terlihat bagus.
Tapi apa bedanya dan mengapa harus menggunakan setiap cara.
Cara 1 [LAMA? TUN / TAP]
http://www.shakthimaan.com/installs/debian-tun-tap-setup.html
/--------\ /----\ /----\ /----\ /--------\
|Internet|---|eth0|---|br0 |---|tap0|---|Guest NIC
\--------/ \----/ \----/ \----/ \--------/
Sudah usang, kan?
Way 2 [Bridge + Vnet] <- Itulah yang dilakukan virt-manager
http://www.linux-kvm.com/content/using-bridged-networking-virt-manager
Pada dasarnya Anda membuat antarmuka jembatan dengan antarmuka fisik Anda di dalam dan
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
Dan ketika Anda memulai mesin virtual dari virt-manager, antarmuka vnet dibuat dan ditambahkan ke bridge. Setidaknya sampai di mana aku tahu. Tidak diperlukan antarmuka tun / tap.
Ini bekerja cukup baik untuk waktu yang lama, tetapi sekarang dengan cakep saya menemukan masalah.
https://bugs.launchpad.net/ubuntu/+source/core-network/+bug/1255516
Mengapa Anda dapat menambahkan antarmuka vnet baru ke jembatan tanpa antarmuka TAP?
Cara 3 [MACVTAP]
Terakhir adalah antarmuka macvtap.
http://virt.kernelnewbies.org/MacVTap
Ini menyalin antarmuka perangkat lunak TUN / TAP tetapi tidak dengan cara yang lebih baik. Tidak tahu bagaimana, tapi sepertinya lebih baik.
Apa kelebihan macvtap dibanding cara kedua?
Apa yang lebih baik?
Ada bantuan untuk ini?
sumber
Saya akan mengatakan itu tergantung pada kasus penggunaan Anda.
Otomatis menambah / menghapus host virtual?
Cobalah macvtap. Harus juga menjadi performanter dari macvlan (yang kira-kira seperti menambahkan MAC lain untuk perangkat fisik, infos tiba ada ditangani oleh tumpukan jaringan) atau jembatan tambahan, seperti macvtap melewati tumpukan jaringan entah bagaimana dan ekspor perangkat karakter tap langsung. Tapi jangan memaku saya pada itu. Selain keduanya (macvlan / macvtap) memiliki mode yang sama (VEPA / hairpin, bridging, private) yang sama, hairpinning hanya berfungsi jika switch Anda mendukung mode relay reflektif. (Paket yang tiba di sakelar fisik di port x harus dibiarkan meninggalkan sakelar di port yang sama x.)
Karena eth0 (atau yang mana pun yang Anda gunakan) dimasukkan ke mode promiscuous ketika menggunakan bridge, mode macvXXX dikatakan memiliki throughput yang lebih tinggi.
Mode juga menentukan 'jumlah' isolasi (dapatkah vhosts saling melihat lalu lintas? Bagaimana dengan hv?). Bagaimana ini bekerja di bawah tenda saya belum tahu.
veth (pasangan ethernet virtual) agak mirip untuk isolasi, Anda mendefinisikan dua antarmuka virtual, satu terhubung ke jembatan, yang lain ke VM Anda. Di sana isolasi dilakukan dengan menempatkan antarmuka-vm ke dalam namespace itu sendiri sehingga perangkat agak terisolasi. Semua lalu lintas berkumpul di jembatan, tetapi satu vhost tidak dapat melihat vNIC orang lain.
Jika Anda bekerja dengan jembatan, Anda memiliki konfigurasi tambahan yang harus dilakukan, dan ketika jembatan turun, demikian juga semua koneksi Anda. Saat membawa kembali jembatan, Anda mungkin harus menghubungkan kembali semua antarmuka virtual ke jembatan lagi (atau hanya me-reboot lengkap hv ...).
Intinya: Jika Anda tidak sering mengubah topologi Anda, pergilah dengan menjembatani saat Anda menemukan sebagian besar informasi di internet, yang lebih baik daripada membaca kode kernel. Heck, bahkan paket iproute2-doc itu sendiri tidak memiliki sebagian besar informasi yang sebenarnya dimiliki iproute2, bahkan ketika Anda menjalankan versi terbaru. Coba cari tahu tentang
man ip-tcp_metrics
dari halaman manual yang tersedia atau ip-crefs.ps ...sumber
Metode-metode ini melakukan hal-hal yang secara fundamental berbeda. Untuk memahami alasannya, Anda perlu memahami model jejaring berlapis. Untuk tujuan kita di sini, layer 1, 2 dan 3 penting:
MACVLAN / MACVTAP
MACVLAN membuat perangkat layer 2 atau link layer virtual, dengan alamat MAC-nya sendiri, yang membagikan layer 1 atau layer fisik dengan perangkat yang ada. Kasus yang paling jelas dimengerti adalah di mana Anda memiliki perangkat Ethernet yang terhubung ke jaringan dan Anda membuat perangkat MACVLAN berdasarkan pada perangkat Ethernet itu; sekarang Anda memiliki dua "perangkat" Ethernet dengan alamat MAC yang berbeda tetapi keduanya mengirimkan frame mereka pada kabel yang sama. Saya akan berbicara tentang MACVTAP sedikit lebih jauh ke bawah.
Antarmuka MACVLAN dapat berinteraksi dalam beberapa cara berbeda dengan antarmuka Ethernet yang ada, khususnya ketika sebuah bingkai muncul di salah satu antarmuka yang merupakan alamat yang lain:
Perhatikan bahwa antarmuka MACVLAN memiliki batasan penting: Mereka tidak mampu belajar alamat. Jadi Anda tidak dapat menjembatani antarmuka MACVLAN ke perangkat fisik kedua dan berharap dapat menjangkau perangkat fisik kedua itu dari yang pertama. Ini berfungsi dengan antarmuka Ethernet asli tetapi tidak dengan antarmuka MACVLAN yang menyertainya.
TUN / TAP
Antarmuka TAP juga merupakan perangkat lapisan 2 virtual baru tetapi tanpa lapisan 1 yang melekat padanya. Sebagai gantinya, sebuah program bisa mendapatkan deskriptor file yang mewakili lapisan fisik. Ia kemudian dapat menulis data frame Ethernet mentah ke dalam deskriptor file tersebut dan kernel akan memperlakukannya seperti paket Ethernet lain yang diterimanya pada antarmuka fisik nyata.
Hal besar tentang antarmuka TAP adalah lapisan fisik berada dalam mode pengguna; setiap perangkat lunak dengan izin yang sesuai dapat menghasilkan frame Ethernet dengan cara apa pun yang disukainya dan mendorongnya menjadi sesuatu yang oleh kernel diperlakukan sama seperti antarmuka fisik nyata. Ini membuatnya sangat berguna untuk hal-hal seperti VPN dan tunneling; Anda dapat menulis perangkat lunak tunneling apa pun yang Anda suka di ruang pengguna dan tidak perlu mencampuri ruang kernel untuk memasukkan frame ke dalam tumpukan jaringan, Anda cukup membuat perangkat TAP dan menulis frame ke deskriptor file-nya.
Perangkat TUN sama seperti perangkat TAP kecuali mereka beroperasi pada layer 3, bukan layer 2 dan perangkat lunak mode pengguna harus menulis paket IP mentah ke dalam deskriptor file, bukan frame Ethernet mentah.
Kembali ke perangkat MACVTAP , ini adalah semacam campuran antara antarmuka MACVLAN dan TAP. Seperti antarmuka TAP, program mode pengguna bisa mendapatkan deskriptor file dan menulis frame Ethernet mentah ke dalamnya. Seperti antarmuka MACVLAN, frame-frame tersebut kemudian dikirim melalui lapisan fisik perangkat Ethernet yang sebenarnya. Ini memungkinkan Anda untuk dengan mudah menyesuaikan perangkat lunak yang ditulis untuk menggunakan perangkat TAP untuk menggunakan perangkat MACVLAN.
VNet
Ini secara konseptual mirip dengan jaringan TUN / TAP tetapi memiliki bidang kontrol yang lebih maju (sehingga perangkat lunak mode pengguna yang menggunakannya dapat mengkonfigurasi antarmuka lebih fleksibel) dan bidang data yang lebih optimal (sehingga Anda dapat memindahkan data melalui perangkat jaringan virtual lebih lanjut efisien).
Semua ini melakukan hal yang serupa tetapi memiliki kemampuan yang sedikit berbeda. Semuanya dapat digunakan untuk menghubungkan VM ke jaringan Ethernet:
sumber