You can limit the outbound bandwidth rate
using the Network Properties QoS option on a per VM basis. That would
prevent of lot of potential abuse. You would not need to limit each one
to 1Mbps, though. You could set it higher than that.
Alternatively, you could write an
application that checked bandwidth stats using the API and then updated the QoS
limit using the API. That would permit you a lot of flexibility when writing
business rules to manage it.
-----Original Message-----
From:
xen-users-bounces@xxxxxxxxxxxxxxxxxxx
[mailto:xen-users-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of msgbox450@xxxxxxxxx
Sent: Friday, May 20, 2011 11:39
AM
To: xen-users@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-users] XCP bandwidth
management
Hi all,
I've got XCP 1.0 up and running nicely and would like
to use it in production. However I'm struggling with the concept of bandwidth
management. It seems like such a common problem that everyone must have, but I
can't find any clear direction in which to go.
The dedicated host I am using (Hetzner) gives me a 5TB
monthly bandwidth quota which needs to be shared between all the VMs on the
XCP.
Ideally I would like something to automatically manage the bandwidth such that
each VM is capable of using the full 100mbps speed of the connection, but will
be throttled back if the throughput is sustained, so we have e.g. 24 x 1GB VMs
on the host with average of 213GB/month bandwidth usage each.
Alternatively it might be easier to just route all the
virtual interfaces though a VM than runs pfsense or use tc on the host to just
set some sort of shaping on the physical interface itself, but I really don't
know the best way to go about it.
Things I've found so far aren't so good:
1 - Limit the interface using the XenCenter GUI... but
that means the VM would never be able to go above about 1mbps, even if it's sat
there and used no bandwidth for the past week and is well within its quota, so
that's not ideal.
2 - Use sFlow in XCP to capture the data. Well this
works for looking at how much bandwidth they are using, but I haven't found any
existing tool that will act on that data to do traffic shaping.
3 - Use the XAPI calls to check the bandwidth usage.
With methods 2 and 3 I guess I could write something
that collects the data and stores it a database table, somehow work out how
much the connection needs to be slowed by and then apply it using the XAPI, but
that seems rather hacky and difficult and there must be a better way?
If anyone could give some tips on how to do this I'd
really appreciate it. Basically I just want the quickest and easiest way to
make it so that the server as a whole doesn't go over its bandwidth limit
without limiting all the guests to a tiny speed individually.