问题:

    假设有两台物理机A和B,IP地址分别为192.168.1.11和192.168.1.12,在物理机A上安装一台虚拟机C,C的IP地址为192.168.1.13,网络连接方式为桥接,它们三个在一个局域网。那么物理机B向虚拟机C发送消息时,是应该发送给物理机A,然后由A发送给C吗?它们三个都位于同一个网段,B是如何知道C是安装在A上的虚拟机呢?

 

 

我个人的解释如下,不当之处,请多指正:

1、局域网内通信,采用的是广播机制,B向C发送的消息,A当然会看到。

2、B并不知道C是安装在A上的虚拟机。

3、A和C通过软件模拟的网桥连接,A上的虚拟网桥接收到消息后,将它转发给虚拟机C。所以,简单地可以理解成发送给物理机A,然后由A发送给C,但A只是转发,并没有接收。

【note】我把Dom 0说成了物理机A,不知道是否合适。

如下图:

桥接方式下虚拟机在局域网的通信

 

关于Dom 0:

 

    Dom 0是一个修改过的Linux kernel,是唯一运行在Xen Hypervisor之上的虚拟机,它拥有访问物理I/O资源的权限,同时和系统上运行的其它虚拟机进行交互。Dom 0需要在其它Domain启动之前启动。

    Dom 0中包含两个驱动:Netword Backend Driver 和Block Backend Driver,分别负责处理来自Dom U的网络和本地磁盘请求。Netword Backend Driver 直接和本地网络硬件进行通信以处理所有来自Dom U上客户操作系统的网络请求。Block Backend Driver和本地存储设备进行通信处理来自Dom U的读写请求。

关于虚拟网桥:

执行brctl show命令,

 

[root@localhost ~]# brctl show

bridge name        bridge id                        STP enabled     interfaces

virbr0                 8000.000000000000       yes

xenbr0               8000.feffffffffff                 no                     peth0

                                                                                        vif0.0

可以看到:网桥xenbr0有两个接口,分别连接物理网卡和虚拟网卡。

xen网桥更多请参考:

http://hi.baidu.com/chenghui2050/blog/item/80cb323df7dcd9e73d6d97e3.html

http://blog.csdn.net/zhuliting/archive/2010/02/26/5328326.aspx

 

xen网络设备请参考 :http://blog.csdn.net/zhuliting/archive/2009/12/27/5087541.aspx

 

bridged、host-only和NAT的虚拟机用法 :http://cloud.csdn.net/a/20090812/4071.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐