通常配置系统的QoS(Quality of Service)策略是一项非常艰苦的工作。举个例子,假如我们需要将TCP流量控制在1000Mb/s,在Solaris 10上一般使用IPQoS来解决问题,而在Linux上则使用tc技术,但是需要经历定义队列规则、分类、过滤规则等各种复杂的步骤。本文将介绍如何在 OpenSolaris下使用Crossbow来简化QoS配置,分为Solaris zone和Xen两部分。
  首先介绍在Solaris zone里的配置方法。
   在一个zone里使用crossbow来限制带宽的操作非常简单。你仅仅需要创建一个有带宽限额的VNIC(虚拟网卡),并将它分配给相应的zone即 可。举个例子,如果我们要限制一个zone的带宽不超过100Mb/s的话,只需使用以下命令创建一个最大带宽值为100的VNIC:
  dladm create-vnic -p maxbw=100 -l e1000g0 vnic1
  zone创建以后,我们在配置文件中将vnic1作为它的网卡,这样该zone通过vnic1发送和接收的带宽就被限制在100Mb/s了。这个设置是永久的,即使在系统重启后也有效。如果我们要把带宽修改为200Mb/s,可使用以下命令:
  dladm set-linkprop -p maxbw=200 vnic1
  可以使用以下命令查看VNIC和zone的对应情况:
  dladm show-linkprop -p zone vnic1
   LINK  PROPERTY PERM VALUE
   vnic1 zone         rw    zone1
  接下来介绍如何在Xen里配置QoS。
   当使用OpenSolaris作为dom0时,Crossbow可非常方便地实现对domU带宽限额的设置,其配置过程跟在zone上差不多。我们可以 在domU上跑OpenSolaris、Solaris 10、Linux、Windows或其它Xen支持的操作系统,但是带宽的配置过程却与domU上的OS无关。 当Xen上的一个domU被创建后,Crossbow默认会创建一个VNIC并分配给domU。如果要给domU设置带宽限额,就需要显式地创建一个 VNIC,并在domU创建的时候分配给domU。这时就可以通过设置VNIC的maxbw属性来设置domU的带宽限额了,操作如下:
  dladm create-vnic -p maxbw=300 -l e1000g0 vnic1
  把这块新创建的vnic1配置成domU的网卡,并将以下内容包含在domU的template.xml配置文件中即可。同时,使用dladm show-vnic命令可以显示vnic1的MAC地址。
  <interface type=’bridge’>
  <source bridge=’vnic1’/>
  <mac address=’vnic1’s mac address/>
  <script path=’vif-dedicated’/>
  </interface>
  最后使用命令virsh create template.xml来创建domU。
  当我们将Xen domU的带宽限制在300Mb/s后,又需要将其中的100Mb/s用作TCP通信,可以通过以下命令实现:
  flowadm add-flow -p maxbw=100 -a transport=tcp -l vnic1 tcp-flow1

  为了能方便地发现系统的性能瓶颈,Crossbow提供了一些工具来查看系统各种统计信息,如收包率、丢包率等。
  可以使用dlstat来打印各个vnic的动态数据信息。
  dlstat vnic1
   LINK IPKTS IBYTES OPKTS OBYTES
   vnic1 9.9M 2.3G 4.8M 0.3G
  加上-i 5选项可以实现每5秒钟实时更新数据。同时,dlstat命令还支持统计数据的离线查看和分析,使用acctadm命令将数据写入特定的日志文件,而dlstat -u则可从日志文件中提取出有用的历史数据。
  dlstat命令主要是用来操作vnic,而flowstat命令则用于查询各种数据流的网络统计信息。
  flowstat tcp-flow
   FLOW LINK IBYTES OPKTS OBYTES
   tcp-flow vnic1 2.3G 4.8M 0.3G
参 考文献:Crossbow Virtual Wire: Network in a Box; Sunay Tripathi, Nicolas Droux, Kais Belgaied, Shrikrishna Khare;Solaris Kernel Networking, Sun Microsystems, Inc.



Post a comment
Name: 
Email: 
URL: 
Comments: