Skip to content

Commit e57e8cf

Browse files
Network rate must be multiplied by 125 not 128 (#10645)
* 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. * Apply suggestions from code review Co-authored-by: Suresh Kumar Anaparti <[email protected]>
1 parent 1994511 commit e57e8cf

File tree

5 files changed

+15
-6
lines changed

5 files changed

+15
-6
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ public LibvirtVMDef.InterfaceDef plug(NicTO nic, String guestOsType, String nicA
211211
String trafficLabel = nic.getName();
212212
Integer networkRateKBps = 0;
213213
if (libvirtVersion > ((10 * 1000 + 10))) {
214-
networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
214+
networkRateKBps = getNetworkRateKbps(nic);
215215
}
216216

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

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
public class DirectVifDriver extends VifDriverBase {
3232

33-
3433
/**
3534
* Experimental driver to configure direct networking in libvirt. This should only
3635
* be used on an LXC cluster that does not run any system VMs.
@@ -42,13 +41,14 @@ public class DirectVifDriver extends VifDriverBase {
4241
* @throws InternalErrorException
4342
* @throws LibvirtException
4443
*/
44+
4545
@Override
4646
public LibvirtVMDef.InterfaceDef plug(NicTO nic, String guestOsType, String nicAdapter, Map<String, String> extraConfig) throws InternalErrorException, LibvirtException {
4747
LibvirtVMDef.InterfaceDef intf = new LibvirtVMDef.InterfaceDef();
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 networkRateKBps = getNetworkRateKbps(nic);
5252
intf.defDirectNet(_libvirtComputingResource.getNetworkDirectDevice(), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter),
5353
_libvirtComputingResource.getNetworkDirectSourceMode(), networkRateKBps);
5454
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ 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 networkRateKBps = getNetworkRateKbps(nic);
9797
if (nic.getType() == Networks.TrafficType.Guest) {
9898
if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan || nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) &&
9999
!vlanId.equalsIgnoreCase("untagged")) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public InterfaceDef plug(NicTO nic, String guestOsType, String nicAdapter, Map<S
130130
}
131131
String trafficLabel = nic.getName();
132132
if (nic.getType() == Networks.TrafficType.Guest) {
133-
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
133+
Integer networkRateKBps = getNetworkRateKbps(nic);
134134
if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan || nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) &&
135135
!vlanId.equalsIgnoreCase("untagged")) {
136136
if (trafficLabel != null && !trafficLabel.isEmpty()) {
@@ -162,7 +162,7 @@ public InterfaceDef plug(NicTO nic, String guestOsType, String nicAdapter, Map<S
162162
createControlNetwork(_bridges.get("linklocal"));
163163
intf.defBridgeNet(_bridges.get("linklocal"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
164164
} else if (nic.getType() == Networks.TrafficType.Public) {
165-
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
165+
Integer networkRateKBps = getNetworkRateKbps(nic);
166166
if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan && !vlanId.equalsIgnoreCase("untagged")) {
167167
if (trafficLabel != null && !trafficLabel.isEmpty()) {
168168
logger.debug("creating a vlan dev and bridge for public traffic per traffic label " + trafficLabel);

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public abstract class VifDriverBase implements VifDriver {
4040
protected Map<String, String> _pifs;
4141
protected Map<String, String> _bridges;
4242

43+
protected static final int bitsPerMbpsToKbps = 125;
44+
4345
@Override
4446
public void configure(Map<String, Object> params) throws ConfigurationException {
4547
_libvirtComputingResource = (LibvirtComputingResource)params.get("libvirt.computing.resource");
@@ -78,4 +80,11 @@ protected LibvirtVMDef.InterfaceDef.NicModel getGuestNicModel(String platformEmu
7880
public boolean isExistingBridge(String bridgeName) {
7981
return false;
8082
}
83+
84+
protected static int getNetworkRateKbps(NicTO nic) {
85+
if (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) {
86+
return nic.getNetworkRateMbps().intValue() * bitsPerMbpsToKbps;
87+
}
88+
return 0;
89+
}
8190
}

0 commit comments

Comments
 (0)