Skip to content

Commit 43b62ce

Browse files
committed
Network rate must be multiplied by 125 not 128
In a libvirt domain xml when nw_rate=5000 the kilobytes per second configured in the interface is 640000 which is 5.12 Gbit/s. Which is more than the configured network rate of 5Gbit/s. So instead multiply by 125.
1 parent 2dfe6a6 commit 43b62ce

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,9 @@ public LibvirtVMDef.InterfaceDef plug(NicTO nic, String guestOsType, String nicA
206206
}
207207
String trafficLabel = nic.getName();
208208
Integer networkRateKBps = 0;
209+
Integer bitsPerMbpsToKbps = 125;
209210
if (libvirtVersion > ((10 * 1000 + 10))) {
210-
networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
211+
networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * bitsPerMbpsToKbps : 0;
211212
}
212213

213214
if (nic.getType() == Networks.TrafficType.Guest) {

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/DirectVifDriver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ public LibvirtVMDef.InterfaceDef plug(NicTO nic, String guestOsType, String nicA
4848

4949
if (Sets.newHashSet(Networks.TrafficType.Guest,
5050
Networks.TrafficType.Public).contains(nic.getType())) {
51-
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
51+
Integer bitsPerMbpsToKbps = 125;
52+
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * bitsPerMbpsToKbps : 0;
5253
intf.defDirectNet(_libvirtComputingResource.getNetworkDirectDevice(), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter),
5354
_libvirtComputingResource.getNetworkDirectSourceMode(), networkRateKBps);
5455
}

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/IvsVifDriver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ public InterfaceDef plug(NicTO nic, String guestOsType, String nicAdapter, Map<S
9393
vlanId = NetUtils.getPrimaryPvlanFromUri(nic.getBroadcastUri());
9494
}
9595
String trafficLabel = nic.getName();
96-
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
96+
Integer bitsPerMbpsToKbps = 125;
97+
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * bitsPerMbpsToKbps : 0;
9798
if (nic.getType() == Networks.TrafficType.Guest) {
9899
if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan || nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) &&
99100
!vlanId.equalsIgnoreCase("untagged")) {

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,9 @@ public InterfaceDef plug(NicTO nic, String guestOsType, String nicAdapter, Map<S
129129
vlanId = NetUtils.getPrimaryPvlanFromUri(nic.getBroadcastUri());
130130
}
131131
String trafficLabel = nic.getName();
132+
Integer bitsPerMbpsToKbps = 125;
132133
if (nic.getType() == Networks.TrafficType.Guest) {
133-
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
134+
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * bitsPerMbpsToKbps : 0;
134135
if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan || nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) &&
135136
!vlanId.equalsIgnoreCase("untagged")) {
136137
if (trafficLabel != null && !trafficLabel.isEmpty()) {
@@ -162,7 +163,7 @@ public InterfaceDef plug(NicTO nic, String guestOsType, String nicAdapter, Map<S
162163
createControlNetwork(_bridges.get("linklocal"));
163164
intf.defBridgeNet(_bridges.get("linklocal"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
164165
} else if (nic.getType() == Networks.TrafficType.Public) {
165-
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
166+
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * bitsPerMbpsToKbps : 0;
166167
if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan && !vlanId.equalsIgnoreCase("untagged")) {
167168
if (trafficLabel != null && !trafficLabel.isEmpty()) {
168169
logger.debug("creating a vlan dev and bridge for public traffic per traffic label " + trafficLabel);

0 commit comments

Comments
 (0)