虛擬交換器(virtual switch)
實體網路交換器是一個有許多埠的盒子,它學會每個埠背後坐著哪台裝置、據此轉送訊框,就像一位學會了大家座位、把信件送到正確桌位的接待員。現在假設一台實體伺服器跑著二十台虛擬機器,每台都假裝自己是獨立的電腦。它們全共用一張真實網路卡,卻各自需要自己看似獨立的網路埠。虛擬交換器就是答案:一個由軟體構成、跑在伺服器內的交換器,把所有那些虛擬機器彼此連起來、也連向實體網路。
具體來說,虛擬交換器跑在伺服器的 hypervisor(或主機作業系統)裡。每台虛擬機器都有一個虛擬網路介面,插進這個軟體交換器上的一個虛擬埠;交換器的上行就是伺服器的真實網路卡。它做的是一般交換器的工作——MAC 學習、在本機虛擬機器之間轉送訊框而完全不碰實體線路、套用 VLAN 標籤、執行存取規則——但全都用程式碼完成。關鍵在於,這也是覆疊被實作的地方:虛擬交換器扮演 VXLAN 通道端點,把離開的虛擬機器訊框包進外層標頭、把抵達的拆開,所以覆疊的封裝工作就發生在這裡、在最邊緣、在伺服器本身,而不是在實體結構裡。
為什麼重要:虛擬交換器才是雲端網路真正的邊界——租戶隔離、覆疊封裝、安全政策、以及對每台 VM 的流量塑形,都在這一點被執行。把這份智慧推進邊緣的軟體裡,正是讓營運者能不碰任何硬體就即時重設網路的原因,也與 SDN 自然搭配。誠實的取捨是成本:在伺服器的通用 CPU 上做完所有這些封包處理,會從客戶的工作負載偷走運算週期、並增加延遲。正是這份負擔,讓營運者越來越常把虛擬交換器的工作卸載到 SmartNIC 上,把重活搬回邊緣的專用硬體裡。
同一台實體伺服器上的兩台虛擬機器互相送封包。它們的訊框從未到達真實網路卡或任何實體交換器——hypervisor 裡的虛擬交換器直接在記憶體中、以微秒級轉送它們,這比繞到機架頂端交換器再回來快得多。
同一主機上的 VM 流量在軟體中被交換,完全不碰實體線路。
虛擬交換器是一台真正的交換器——它學習 MAC 位址、轉送訊框——但它跑在伺服器的 CPU 上,所以它的封包處理會與客戶工作負載爭奪運算週期。這份成本正是把它卸載到 SmartNIC 的主要動機。