创建附加的Xen虚拟网桥

回复 收藏
关键词: eth0 peth0 eth1 peth1  xenbr0 xenbr1
eth0 eth1 这个是物理网卡的名字,而peth0, peth1 是虚拟机下的物理网卡接口,xenbr0, xenbr1是虚拟的网桥
eth0, peth0以及xenbr0是对应的,三者缺一不可。

brct1 show命令显示了当前网桥配置:

# brctl show
bridge name    bridge id              STP enabled    interfaces
xenbr0              8000.feffffffffff      no                  vif0.0
peth0
vif1.0

Xen网桥配置

首先,我们看看在Xen中用于配置虚拟网桥的一些命令和脚本。第一个脚本是/etc/xen/xend-config.sxp,它可以对虚拟机进行一些普通设置,其中包括了如下两行:
(network-script network-bridge)
(vif-script vif-bridge)

第一行确保网桥脚本(network-bridge script)被执行。网桥脚本是用于设置虚拟网桥的脚本,它使用brct1和ip命令设置网桥。执行该脚本时,会有如下几个执行步骤:

重命名物理接口eth0为peth0。
创建虚拟接口eth0。
复制MAC(媒体访问控制)地址和peth0相关配置到eth0。
禁用ARP协议。实际上是完全禁用了接口的功能。
创建虚拟网桥xenbr0。
将接口peth0和vif0.0连接到网桥。
多网桥操作

对于只有一个以太网接口的服务器,一个网桥就足够了。但是如果服务器有多个接口,可能就需要创建网桥以分散接口间通信了。通过这种方法,可以连接 xenbr0与peth0、xenbr1与peth1,使某个xenbr只能被特定的虚拟机连接,如,xenbr1只能与dom1连接。network- bridge脚本包含了完成这个操作的所有必要内容。例如,如下命令会创建一个连接到eth1网络板的网桥:

# ./etc/xen/scripts/network-bridge netdev=eth1 bridge=xenbr1 start

这条命令尽管很有用,但需要对/etc/xen/xend-config.sxp脚本进行一些调整才能在启动过程中自动创建网桥。默认情况下,这个脚本 会调用network-bridge脚本。不过,这个network-bridge脚本只能被调用一次。要避免这个问题,你需要创建一个network- wrapper脚本,通过配置network-wrapper脚本可以调用network-bridge脚本两次。通过如下步骤配置:

创建脚本/etc/xen/scripts/network-wrapper,使用如下命令:/etc/xen/scripts/network- bridge netdev=eth0 bridge=xenbr0 start /etc/xen/scripts/network-bridge netdev=eth1 bridge=xenbr1 start
调整/etc/xen/xend-config.sxp脚本,以便调用 network-wrapper脚本。在/etc/xen/xend-config.sxp脚本中添加如下内容:# (network-script network-bridge) (network-script network-wrapper_ (vif-script vif-bridge)
确保在每个非特权域的配置文件中指定它使用的网桥。这样,vif行会类似如下内容:vif=[ 'bridge=xenbr1', 'mac=00:16:3e:07:d2:0e', ]
总结

现在的服务器通常会有多个物理网卡。在Xen环境下,为了也有同样的效果,可以额外的配置一些网桥,分别让各虚拟机专用,从而提高虚拟网络的性能。

参考:http://hi.baidu.com/heqk/blog/item/7b520ff49c52eae17709d79a.html
2011-08-10 15:56 举报
已邀请:
0

阿铭 管理员

赞同来自:

另外,有找到一篇这样的帖子来解决:(我在我的试验机器上试过,完美解决问题)
xen提供的脚本/etc/xen/script/network-bridge只能一个个建立,如要开机就启动2个虚拟网桥,按下面方法配置。

解决办法:
1.新建立一文件network-bridge-xen
#vi /etc/xen/script/network-bridge-xen

2.加入以下代码。
  1. #!/bin/sh
  2. # network-xen-custom
  3. # Exit if anything goes wrong
  4. set -e
  5. # First arg is operation.
  6. OP=$1
  7. script=/etc/xen/scripts/network-bridge
  8. case ${OP} in
  9.         start)
  10.         $script start vifnum=0 bridge=xenbr0 netdev=eth0
  11.         $script start vifnum=1 bridge=xenbr1 netdev=eth1
  12.         ;;

  13.         stop)
  14.         $script stop vifnum=0 bridge=xenbr0 netdev=eth0
  15.         $script stop vifnum=1 bridge=xenbr1 netdev=eth1 br1 netdev=eth1
  16.         ;;

  17.         status)
  18.         $script status vifnum=0 bridge=xenbr0 netdev=eth0
  19.         $script status vifnum=1 bridge=xenbr1 netdev=eth1
  20.         ;;

  21.         *) echo "Unknown command:${OP}" echo 'Valid commands are: start, stop, status' exit 1
  22.         ;;
  23. esac
3.更改属性
# chmod 755 network-bridge-xen

4.修改/etc/xen/xend-config.sxp里的代码
把所有的:
    (network-script network-bridge ) →(network-script network-bridge-xen )

在/etc/xen/xend-config.sxp 中添加
     vif = [ 'type=ioemu,bridge=xenbr0','type=ioemu,bridge=xenbr1' ]

添加:(network-script 'network-bridge-xen netdev=eth1')
添加:(network-script 'network-bridge-xen bridge=xenbr1')

cat  /etc/xen/xend-config.sxp    内容做参考:
  1. {# To bridge network traffic, like this:  
  2.     #
  3.     # dom0: ----------------- bridge -> real eth0 -> the network
  4.     #                            |
  5.     # domU: fake eth0 -> vifN.0 -+
  6.     vif = [ 'type=ioemu,bridge=xenbr0','type=ioemu,bridge=xenbr1' ]
  7.     #
  8.     # use
  9.     #
  10.      (network-script network-bridge-xen)
  11.     #
  12.     # Your default ethernet device is used as the outgoing interface, by default.
  13.     # To use a different one (e.g. eth1) use
  14.     #
  15.     (network-script 'network-bridge-xen netdev=eth0')
  16.     (network-script 'network-bridge-xen netdev=eth1')
  17.     #
  18.     # The bridge is named xenbr0, by default.  To rename the bridge, use
  19.     #
  20.     # (network-script 'network-bridge bridge=<name>')
  21.       (network-script 'network-bridge-xen bridge=xenbr0')
  22.       (network-script 'network-bridge-xen bridge=xenbr1')}
5. 最后重启xend服务
#  service  xend  restart

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: