cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CLOUDSTACK-9717) [VMware] RVRs have mismatching MAC addresses for extra public NICs
Date Mon, 13 Mar 2017 14:57:41 GMT

    [ https://issues.apache.org/jira/browse/CLOUDSTACK-9717?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15907603#comment-15907603
] 

ASF GitHub Bot commented on CLOUDSTACK-9717:
--------------------------------------------

Github user rafaelweingartner commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1878#discussion_r105678507
  
    --- Diff: plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
---
    @@ -1928,6 +1929,54 @@ protected StartAnswer execute(StartCommand cmd) {
                 VirtualDevice nic;
                 int nicMask = 0;
                 int nicCount = 0;
    +
    +            if (vmSpec.getType() == VirtualMachine.Type.DomainRouter) {
    +                int extraPublicNics = mgr.getRouterExtraPublicNics();
    +                if (extraPublicNics > 0 && vmSpec.getDetails().containsKey("PeerRouterInstanceName"))
{
    +                    //Set identical MAC address for RvR on extra public interfaces
    +                    String peerRouterInstanceName = vmSpec.getDetails().get("PeerRouterInstanceName");
    +
    +                    VirtualMachineMO peerVmMo = hyperHost.findVmOnHyperHost(peerRouterInstanceName);
    +                    if (peerVmMo == null) {
    +                        peerVmMo = hyperHost.findVmOnPeerHyperHost(peerRouterInstanceName);
    +                    }
    +
    +                    if (peerVmMo != null) {
    +                        StringBuffer sbOldMacSequence = new StringBuffer();
    +                        for (NicTO oldNicTo : sortNicsByDeviceId(nics)) {
    +                            sbOldMacSequence.append(oldNicTo.getMac()).append("|");
    +                        }
    +                        if (!sbOldMacSequence.toString().isEmpty()) {
    +                            sbOldMacSequence.deleteCharAt(sbOldMacSequence.length() -
1); //Remove extra '|' char appended at the end
    +                        }
    +
    +                        for (int nicIndex = nics.length - extraPublicNics; nicIndex <
nics.length; nicIndex++) {
    +                            VirtualDevice nicDevice = peerVmMo.getNicDeviceByIndex(nics[nicIndex].getDeviceId());
    +                            if (nicDevice != null) {
    +                                String mac = ((VirtualEthernetCard)nicDevice).getMacAddress();
    +                                if (mac != null) {
    +                                    s_logger.info("Use same MAC as previous RvR, the
MAC is " + mac + " for extra NIC with device id: " + nics[nicIndex].getDeviceId());
    +                                    nics[nicIndex].setMac(mac);
    +                                }
    +                            }
    +                        }
    +
    +                        String bootArgs = vmSpec.getBootArgs();
    +                        if (!StringUtils.isEmpty(bootArgs)) {
    +                            StringBuffer sbNewMacSequence = new StringBuffer();
    --- End diff --
    
    This method is still quite big.
    What about extracting lines 1966-1971 to a method? These lines are used to generate/create
the `sbNewMacSequence`. Then we could have a documentation describing its workings and test
cases.


> [VMware] RVRs have mismatching MAC addresses for extra public NICs
> ------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-9717
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9717
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the default.) 
>          Components: Network Controller, VMware
>            Reporter: Suresh Kumar Anaparti
>            Assignee: Suresh Kumar Anaparti
>             Fix For: 4.10.0.0
>
>
> [CLOUDSTACK-985|https://issues.apache.org/jira/browse/CLOUDSTACK-985] doesn't seem to
be completely fixed.
> ISSUE
> ==================
> If there are two public networks on two VLANs, and a pair redundant VRs acquire IPs from
both, the associated NICs on the redundant VRs will have mismatching MAC addresses.  
> The example below shows the eth2 NICs for the first public network (210.140.168.0/21)
have matching MAC addresses (06:c4:b6:00:03:df) as expected, but the eth3 NICs for the second
one (210.140.160.0/21) have mismatching MACs (02:00:50:e1:6c:cd versus 02:00:5a:e6:6c:d5).
> *r-43584-VM (Master)*
> 6: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen
1000 
> link/ether 06:c4:b6:00:03:df brd ff:ff:ff:ff:ff:ff 
> inet 210.140.168.42/21 brd 210.140.175.255 scope global eth2 
> inet 210.140.168.20/21 brd 210.140.175.255 scope global secondary eth2 
> 8: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen
1000 
> link/ether 02:00:50:e1:6c:cd brd ff:ff:ff:ff:ff:ff 
> inet 210.140.162.124/21 brd 210.140.167.255 scope global eth3 
> inet 210.140.163.36/21 brd 210.140.167.255 scope global secondary eth3 
> *r-43585-VM (Backup)*
> 6: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 
> link/ether 06:c4:b6:00:03:df brd ff:ff:ff:ff:ff:ff 
> inet 210.140.168.42/21 brd 210.140.175.255 scope global eth2 
> inet 210.140.168.20/21 brd 210.140.175.255 scope global secondary eth2 
> 8: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 
> link/ether 02:00:5a:e6:6c:d5 brd ff:ff:ff:ff:ff:ff 
> inet 210.140.162.124/21 brd 210.140.167.255 scope global eth3 
> inet 210.140.163.36/21 brd 210.140.167.255 scope global secondary eth3 
> CloudStack should ensure that the NICs for all public networks have matching MACs.
> REPRO STEPS
> ==================
> 1) Set up redundant VR.
> 2) Set up multiple public networks on different VLANs.
> 3) Acquire IPs in the RVR network until the VRs get IPs in the different public networks.
> 4) Confirm the mismatching MAC addresses.
> EXPECTED BEHAVIOR
> ==================
> Redundant VRs have matching MACs for all public networks.
> ACTUAL BEHAVIOR
> ==================
> Redundant VRs have matching MACs only for the first public network.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message