云计算虚拟化技术与开发
上QQ阅读APP看书,第一时间看更新

2.4.1 Linux Bridge网桥

Bridge网桥是Linux系统上用来做TCP/IP二层协议交换的设备,与现实世界中的交换机功能相似。Bridge设备实例可以和Linux上其他网络设备实例连接,既附加一个从设备,类似于现实世界中的交换机和一个用户终端之间连接一根网线。当有数据到达时,网桥会根据报文中的MAC地址信息进行广播、转发、丢弃等处理。

Linux内核通过一个虚拟的网桥设备来实现桥接,这个设备可以绑定若干个以太网接口设备,从而将它们桥接起来。例如,网桥设备br0既能绑定eth0这样的物理网络设备,又能桥接虚拟机VM对应的虚拟设备vnet0,实现虚拟机网络与外部网络的连通。对于网络协议栈的上层来说,只看得到br0,因为桥接是在数据链路层实现的,上层不需要关心桥接的细节。于是,协议栈上层需要发送的报文被送到br0,网桥设备的处理代码再来判断报文该被转发到eth0或者eth1,或者两者皆是;反过来,从eth0或eth1接收到的报文被提交给网桥的处理代码,在这里会判断报文该转发、丢弃或者提交到协议栈上层。图2-18中网桥br0实现VM1与物理网卡eth0的通信。当有数据到达eth0时,br0会将数据转发给vnet0,这样VM1就能接收到来自外网的数据;反过来,VM1发送数据给vnet0,br0也会将数据转发到eth0,从而实现了VM1与外网的通信。

如图2-19所示,现在增加一个虚拟机VM2,将VM2的虚拟网卡vnet1桥接到br0上,这样就可以实现VM1和VM2之间的网络通信,同时保证VM1、VM2和外部网络互通。

图2-18 网桥br0桥接vnet0与eth0

图2-19 网桥br0桥接vnet0、vnet1与eth0