วิธีการเหล่านี้กำลังทำสิ่งที่แตกต่างกันโดยพื้นฐาน เพื่อให้เข้าใจว่าทำไมคุณต้องเข้าใจโมเดลเครือข่ายแบบเลเยอร์ เพื่อจุดประสงค์ของเราที่นี่เลเยอร์ 1, 2 และ 3 มีความสำคัญ:
- เลเยอร์ 1 เป็นเลเยอร์ทางกายภาพ - สิ่งนี้ระบุสิ่งต่าง ๆ เช่นสายเคเบิลที่คุณสามารถใช้รูปแบบแรงดันไฟฟ้า / กระแสไฟฟ้าที่แสดงถึง 1s และ 0s บนสายเคเบิลนั้นอุปกรณ์ที่ปลายแต่ละด้านของสายเคเบิลใช้เจรจาอัตราบิตที่ทำงาน
- เลเยอร์ 2 เป็นลิงค์เลเยอร์ - นี่เป็นการระบุว่าภาษาใดที่ปลายสายเคเบิลเชื่อมต่อกัน อุปกรณ์อีเธอร์เน็ตในชั้นนี้มีสิ่งต่าง ๆ เช่นเฟรมและที่อยู่ MAC
- เลเยอร์ 3 เป็นเลเยอร์เครือข่าย - นี่เป็นการระบุวิธีที่อุปกรณ์ใช้ลิงก์โดยตรงเลเยอร์ 2 ไปยังอุปกรณ์อื่นเพื่อเข้าถึงอุปกรณ์ที่สามซึ่งพวกเขาไม่สามารถเข้าถึงได้โดยตรงที่เลเยอร์ 2 อุปกรณ์ในเลเยอร์นี้มีที่อยู่ IP และตารางเส้นทาง
MACVLAN / MACVTAP
MACVLAN สร้างอุปกรณ์เลเยอร์เสมือน 2 หรือลิงค์เลเยอร์พร้อมที่อยู่ MAC ของตัวเองซึ่งใช้เลเยอร์ 1 หรือเลเยอร์ทางกายภาพร่วมกับอุปกรณ์ที่มีอยู่ กรณีที่เข้าใจได้ชัดเจนที่สุดคือที่ที่คุณเสียบอุปกรณ์อีเธอร์เน็ตเข้ากับเครือข่ายและคุณสร้างอุปกรณ์ MACVLAN ตามอุปกรณ์อีเธอร์เน็ตนั้น ตอนนี้คุณมี "อุปกรณ์" อีเธอร์เน็ตสองตัวที่มีที่อยู่ MAC ที่แตกต่างกัน ฉันจะพูดเกี่ยวกับ MACVTAP อีกเล็กน้อย
อินเตอร์เฟส MACVLAN สามารถโต้ตอบได้หลายวิธีกับอินเตอร์เฟสอีเทอร์เน็ตที่มีอยู่โดยเฉพาะอย่างยิ่งเมื่อเฟรมปรากฏบนหนึ่งในอินเตอร์เฟสซึ่งอยู่กับอีกอินเตอร์เฟสหนึ่ง:
- ในโหมดส่วนตัวเฟรมจะถูกโยนทิ้งไป เป็นไปไม่ได้ที่อินเทอร์เฟซสองรายการจะสื่อสารกันเฉพาะกับอุปกรณ์ภายนอกเท่านั้น
- ในโหมดvepaเฟรมจะถูกส่งไปยังเลเยอร์ทางกายภาพเหมือนกับเฟรมอื่น ๆ หากคุณเสียบอุปกรณ์เข้ากับสวิตช์ที่ฉลาดพอที่จะมองเห็นว่าเฟรมนั้นจำเป็นต้องส่งกลับไปที่พอร์ตเดิมที่มาถึงมันจะได้รับโดยเลเยอร์ทางกายภาพเดียวกันที่ส่งไปแล้วเลเยอร์ 2 จะ ใช้ MAC เพื่อส่งไปยังอินเตอร์เฟสเครือข่ายที่ต้องการ
- ในโหมดบริดจ์เมื่อเฟรมปรากฏบนอุปกรณ์หนึ่งมันจะถูกตรวจสอบเพื่อดูว่ามันมีไว้สำหรับอุปกรณ์อื่นและถ้าเป็นเช่นนั้นมันจะถูกส่งไปที่นั่นโดยไม่ต้องผ่านเลเยอร์ 1
- นอกจากนี้ยังมีโหมดปิดบังอีกสองสามโหมด
โปรดทราบว่าอินเทอร์เฟซ MACVLAN มีข้อ จำกัด ที่สำคัญ: พวกเขาไม่สามารถเรียนรู้ที่อยู่ ดังนั้นคุณจึงไม่สามารถเชื่อมต่ออินเตอร์เฟส MACVLAN กับอุปกรณ์ฟิสิคัลที่สองและคาดว่าจะสามารถเข้าถึงอุปกรณ์ฟิสิคัลที่สองผ่านอุปกรณ์แรกได้ สิ่งนี้ใช้ได้กับอินเตอร์เฟส Ethernet ดั้งเดิม แต่ไม่ได้ต่อกับอินเตอร์เฟส MACVLAN ที่ต่ออยู่
TUN / TAP
อินเตอร์เฟส TAP ยังเป็นอุปกรณ์เลเยอร์เสมือน 2 ใหม่ แต่ไม่มีการเชื่อมต่อกับเลเยอร์ 1 แต่โปรแกรมสามารถรับไฟล์ descriptor ที่แทนเลเยอร์ทางกายภาพ จากนั้นมันสามารถเขียนข้อมูลเฟรมอีเทอร์เน็ตดิบลงในตัวให้คำอธิบายไฟล์นั้นและเคอร์เนลจะปฏิบัติต่อมันเหมือนแพ็กเก็ตอีเทอร์เน็ตอื่น ๆ ที่ได้รับบนอินเตอร์เฟสจริง
สิ่งที่สำคัญเกี่ยวกับอินเตอร์เฟส TAP คือเลเยอร์ทางกายภาพอยู่ในโหมดผู้ใช้ ซอฟต์แวร์ใด ๆ ที่มีการอนุญาตที่เหมาะสมสามารถสร้างเฟรมอีเธอร์เน็ตได้ในทุกทางที่มันชอบและผลักมันให้เป็นสิ่งที่เคอร์เนลปฏิบัติเช่นเดียวกับอินเทอร์เฟซทางกายภาพจริง สิ่งนี้ทำให้มีประโยชน์มากสำหรับสิ่งต่างๆเช่น VPN และการสร้างช่องสัญญาณ คุณสามารถเขียนซอฟแวร์ทันเนลที่คุณต้องการในพื้นที่ผู้ใช้และไม่จำเป็นต้องเข้าไปยุ่งเกี่ยวกับพื้นที่เคอร์เนลเพื่อให้เฟรมเข้าสู่เครือข่ายสแต็คคุณเพียงแค่สร้างอุปกรณ์ TAP และเขียนเฟรมลงในไฟล์อธิบายของมัน
อุปกรณ์ TUN นั้นเหมือนกับอุปกรณ์ TAP ยกเว้นว่าทำงานที่เลเยอร์ 3 แทนเลเยอร์ 2 และซอฟต์แวร์โหมดผู้ใช้จะต้องเขียนแพ็กเก็ต IP แบบดิบลงในไฟล์อธิบายแทนเฟรมอีเทอร์เน็ตแบบดิบ
กลับไปที่อุปกรณ์MACVTAPสิ่งเหล่านี้เป็นการผสมผสานระหว่าง MACVLAN และอินเตอร์เฟส TAP เช่นเดียวกับอินเตอร์เฟส TAP โปรแกรมโหมดผู้ใช้สามารถรับไฟล์ descriptor และเขียนเฟรมอีเทอร์เน็ตแบบ raw เข้าไป เช่นเดียวกับอินเตอร์เฟส MACVLAN เฟรมเหล่านั้นจะถูกส่งไปยังเลเยอร์ทางกายภาพของอุปกรณ์อีเธอร์เน็ตจริง สิ่งนี้ช่วยให้คุณสามารถดัดแปลงซอฟต์แวร์ที่เขียนขึ้นเพื่อใช้อุปกรณ์ TAP เพื่อใช้อุปกรณ์ MACVLAN แทนได้อย่างง่ายดาย
วีเน็ต
สิ่งนี้คล้ายกับแนวคิดของเครือข่าย TUN / TAP แต่มีระนาบควบคุมที่พัฒนาขึ้น (ดังนั้นซอฟต์แวร์โหมดผู้ใช้ที่ใช้มันสามารถกำหนดค่าส่วนต่อประสานที่ยืดหยุ่นได้มากกว่า) และระนาบข้อมูลที่ปรับให้เหมาะสมยิ่งขึ้น (เพื่อให้คุณสามารถย้ายข้อมูลผ่านอุปกรณ์เครือข่ายเสมือน ได้อย่างมีประสิทธิภาพ)
ทั้งหมดนี้ทำสิ่งที่คล้ายกัน แต่มีความสามารถแตกต่างกันเล็กน้อย ทั้งหมดนี้สามารถใช้เชื่อมต่อ VM กับเครือข่ายอีเธอร์เน็ต:
- ผลิตภัณฑ์เวอร์ช่วลไลเซชันสามารถนำอีเทอร์เน็ตเฟรมจากแขกและเขียนลงในไฟล์อธิบายสำหรับอุปกรณ์ TAP อุปกรณ์ TAP นั้นสามารถกำหนดที่อยู่ IP ของตัวเองได้โดยโฮสต์หรือสามารถเชื่อมต่อกับบริดจ์พร้อมกับอีเธอร์เน็ตอินเตอร์เฟสเพื่อแชร์ที่อยู่ IP ของโฮสต์หรือสามารถกำหนดค่า iptables ให้ส่งต่อทราฟฟิกโดยใช้ NAT
- ผลิตภัณฑ์เวอร์ช่วลไลเซชันสามารถอีเทอร์เน็ตเฟรมจากแขกแล้วเขียนลงในไฟล์ descriptor สำหรับอุปกรณ์ MACVTAP สิ่งเหล่านี้จะถูกส่งโดยตรงบนเลเยอร์ทางกายภาพของอุปกรณ์อีเธอร์เน็ตทำให้ VM เป็นอุปกรณ์อีเธอร์เน็ต "ของจริง" (แม้ว่าโปรดทราบว่ามันเป็นไปได้ที่จะสร้างอุปกรณ์ MACVLAN / MACVTAP สำหรับอินเตอร์เฟสเครือข่ายประเภทอื่นเช่นบริดจ์)
- ผลิตภัณฑ์เวอร์ช่วลไลเซชันสามารถเชื่อมต่อไดรเวอร์ virtio ในเกสต์เข้ากับไดรเวอร์ virtio ในโฮสต์สำหรับการเชื่อมต่อเครือข่ายที่มีประสิทธิภาพมาก