Yes, because all the commands inherited from NetworkElement will be delegated to VirtualRoutingResource. See code: } else if (cmd instanceof NetworkElementCommand) { return _virtRouterResource.executeRequest(cmd);
in libvirtcomputingResource.java. > -----Original Message----- > From: Marcus Sorensen [mailto:shadow...@gmail.com] > Sent: Thursday, August 30, 2012 10:32 AM > To: Edison Su > Cc: cloudstack-dev@incubator.apache.org; Anthony Xu; Kelven Yang; > Vijayendra Bhamidipati > Subject: Re: VPC for KVM (was VM router spawning multiple public nics) > > Just want to clarify: > > "We can add implementation of > SetupGuestNetworkCommand/SetNetworkACLCommand/SetSourceNatCommand/Site2 > SiteVpnCfgCommand > in VirtualRoutingResource." > > So the Xen implementation of SetupGuestNetworkCommand is in > CitrixResourceBase.java, and the VMware one is in VmwareResource.java, > but you're saying I should put an implementation of these in > VirtualRoutingResource.java for KVM? Sorry, still trying to piece > together how everything relates. > > On Thu, Aug 30, 2012 at 10:42 AM, Edison Su <edison...@citrix.com> > wrote: > > Yes, it is. > > > >> -----Original Message----- > >> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >> Sent: Thursday, August 30, 2012 8:45 AM > >> To: Edison Su > >> Cc: cloudstack-dev@incubator.apache.org; Anthony Xu; Kelven Yang; > >> Vijayendra Bhamidipati > >> Subject: VPC for KVM (was VM router spawning multiple public nics) > >> > >> I notice there's also an 'IpAssocVpcCommand', I'm assuming that > should > >> be added to the list? > >> > >> On Wed, Aug 29, 2012 at 6:37 PM, Edison Su <edison...@citrix.com> > wrote: > >> > You can find the VPC reference implementation from > >> CitrixResourceBase.java, which is the implementation for Xenserver. > >> Just take a look at how the VPC related commands are implemented. > >> > Take SetNetworkACLCommand as an example: > >> > The function execute(SetNetworkACLCommand cmd) in > citrixResourceBase: > >> > 1. parse SetNetworkACLCommand > >> > 2. call scripts/vm/hypervisor/xenserver/vmops, function > routerProxy > >> > 3. routerproxy will call scripts/network/domr/router_proxy.sh > >> > 4. router_proxy.sh will login into router vm, execute a shell > script > >> inside router VM to program rules. > >> > > >> > In KVM, we can directly call router_proxy.sh or directly login > into > >> router vm, we just need to prepare the parameters for this script. > >> > The reference code is in VirtualRoutingResource.java, all the > network > >> related command(extended from NetworkElementCommand) will be > redirected > >> to VirtualRoutingResource. > >> > We can add implementation of > >> > SetupGuestNetworkCommand/SetNetworkACLCommand/SetSourceNatCommand/Site2 > >> SiteVpnCfgCommand in VirtualRoutingResource. > >> > > >> > > >> >> -----Original Message----- > >> >> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >> >> Sent: Wednesday, August 29, 2012 4:34 PM > >> >> To: cloudstack-dev@incubator.apache.org > >> >> Cc: Edison Su; Anthony Xu; Kelven Yang; Vijayendra Bhamidipati > >> >> Subject: Re: VM router spawning multiple public nics > >> >> > >> >> Great, thanks. I've already got a working implementation of > >> >> adding/removing nics from regular instances that I've been > playing > >> >> with, so I'm getting vaguely familiar with the various data types > >> and > >> >> things surrounding the networking. I don't know if this is quite > >> >> within my reach just yet but I'll see how far I get. > >> >> > >> >> On Wed, Aug 29, 2012 at 3:19 PM, Alena Prokharchyk > >> >> <alena.prokharc...@citrix.com> wrote: > >> >> > On 8/29/12 1:34 PM, "Edison Su" <edison...@citrix.com> wrote: > >> >> > > >> >> >>Hi Anthony & Alena, > >> >> >> Could you help to provide information about VPC, how it > works, > >> >> > > >> >> > > >> >> > Here is the functional spec on the feature: > >> >> > > >> >> > wiki.cloudstack.org/display/RelOps/Inter- > >> VLAN+Routing+functional+spec > >> >> > > >> >> > > >> >> > VpcVirtualNetworkApplianceManagerImpl is the manager > responsible > >> for > >> >> VPC > >> >> > Virtual router operations (plug/unplug nics, etc) > >> >> > > >> >> > > >> >> > > >> >> >> which commands needed to implemented on the hypervisor side? > >> >> > > >> >> > > >> >> > > >> >> > 1) PlugNicCommand/UnplugNicCommand - does Nic hotplug/unplug > >> >> (currently > >> >> > works for VR vm only). In VPC called when add nic for > Public/Guest > >> >> > networks. > >> >> > 2) SetupGuestNetworkCommand - sets up dhcp range, dns > information, > >> >> > networkDomain information on the Nic to make it > >> >> > 3) SetNetworkACLCommand - creates network ACL on the virtual > >> router > >> >> > 4) SetSourceNatCommand - used for setting source nat on the > Public > >> IP > >> >> on > >> >> > the VPC VR. > >> >> > 5) Site2SiteVpnCfgCommand - for setting up S2S VPN > >> >> > > >> >> > > >> >> > Anthony/Kelven/Vijay did implementation for Xen/vmWare > resources, > >> >> they can > >> >> > help you answering all hypervisor related questions. If you > need > >> more > >> >> > details on business logic + Vpc VR management, I can help with > >> that. > >> >> > > >> >> > > >> >> > -Alena. > >> >> > > >> >> >> > >> >> >>> -----Original Message----- > >> >> >>> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >> >> >>> Sent: Wednesday, August 29, 2012 10:16 AM > >> >> >>> To: cloudstack-dev@incubator.apache.org > >> >> >>> Subject: Re: VM router spawning multiple public nics > >> >> >>> > >> >> >>> I'd be willing to give it a shot if someone could point me in > >> the > >> >> >>> right direction and be available to answer questions. > >> >> >>> > >> >> >>> On Wed, Aug 29, 2012 at 10:39 AM, Edison Su > >> <edison...@citrix.com> > >> >> >>> wrote: > >> >> >>> > Yah, KVM doesn't support VPC yet. Will you help to add VPC > >> >> support on > >> >> >>> KVM?:) Just implement a few VPC related commands... > >> >> >>> > > >> >> >>> >> -----Original Message----- > >> >> >>> >> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >> >> >>> >> Sent: Wednesday, August 29, 2012 6:49 AM > >> >> >>> >> To: cloudstack-dev@incubator.apache.org > >> >> >>> >> Subject: Re: VM router spawning multiple public nics > >> >> >>> >> > >> >> >>> >> I can confirm that the patch has fixed my particular issue. > >> >> >>> >> > >> >> >>> >> This is likely unrelated and I think it doesn't even use > the > >> >> same > >> >> >>> >> code, but I began to play with the VPC stuff a bit and > >> noticed > >> >> that > >> >> >>> I > >> >> >>> >> don't get any interfaces except for link local. I'd > probably > >> >> chalk > >> >> >>> >> that up to it not being ready for KVM, but I thought it > was > >> >> worth a > >> >> >>> >> mention. I'd be happy to try to help get it ready if > someone > >> >> has > >> >> >>> time > >> >> >>> >> to nudge me in the right direction. > >> >> >>> >> > >> >> >>> >> On Tue, Aug 28, 2012 at 3:15 PM, Edison Su > >> >> <edison...@citrix.com> > >> >> >>> wrote: > >> >> >>> >> > > >> >> >>> >> > > >> >> >>> >> >> -----Original Message----- > >> >> >>> >> >> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >> >> >>> >> >> Sent: Tuesday, August 28, 2012 2:00 PM > >> >> >>> >> >> To: cloudstack-dev@incubator.apache.org > >> >> >>> >> >> Subject: Re: VM router spawning multiple public nics > >> >> >>> >> >> > >> >> >>> >> >> I thought about this solution myself, but below this > >> portion > >> >> of > >> >> >>> >> code > >> >> >>> >> >> it looks like it uses the hash map to determine which > nic > >> >> number > >> >> >>> to > >> >> >>> >> >> add the IP to, so with multiple 'untagged' networks it > >> would > >> >> have > >> >> >>> no > >> >> >>> >> >> way of knowing which nicnum in the router corresponds > with > >> >> the > >> >> >>> >> correct > >> >> >>> >> >> untagged vlan. > >> >> >>> >> >> > >> >> >>> >> >> nicNum = > >> >> vlanAllocatedToVM.get(ip.getVlanId()); > >> >> >>> >> >> networkUsage(routerIp, "addVif", "eth" > + > >> >> nicNum); > >> >> >>> >> >> result = > >> >> >>> >> >> _virtRouterResource.assignPublicIpAddress(routerName, > >> >> >>> >> >> routerIp, ip.getPublicIp(), > >> >> ip.isAdd(), > >> >> >>> >> >> ip.isFirstIP(), > >> >> >>> >> >> ip.isSourceNat(), > ip.getVlanId(), > >> >> >>> >> >> ip.getVlanGateway(), > >> >> >>> >> >> ip.getVlanNetmask(), > >> >> >>> ip.getVifMacAddress(), > >> >> >>> >> >> ip.getGuestIp(), nicNum); > >> >> >>> >> >> > >> >> >>> >> >> if ip.getVlanId() returns untagged (as it does on > networks > >> >> with > >> >> >>> no > >> >> >>> >> >> vlan id), and we tried to put multiple untagged keys in > >> >> >>> >> >> vlanAllocatedToVM (as with multiple untagged networks), > we > >> >> get > >> >> >>> the > >> >> >>> >> >> wrong nicNum, no? > >> >> >>> >> > > >> >> >>> >> > In the ipassoc case, if there are multiple untagged > >> networks, > >> >> all > >> >> >>> of > >> >> >>> >> them are use the same > >> >> >>> >> > Public bridge. Then multiple ip address will be added on > >> eth2 > >> >> >>> inside > >> >> >>> >> router VM. > >> >> >>> >> > If it works physically, then it works. > >> >> >>> >> > > >> >> >>> >> >> > >> >> >>> >> >> On Tue, Aug 28, 2012 at 2:48 PM, Edison Su > >> >> <edison...@citrix.com> > >> >> >>> >> wrote: > >> >> >>> >> >> > > >> >> >>> >> >> > > >> >> >>> >> >> >> -----Original Message----- > >> >> >>> >> >> >> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >> >> >>> >> >> >> Sent: Tuesday, August 28, 2012 1:40 PM > >> >> >>> >> >> >> To: cloudstack-dev@incubator.apache.org > >> >> >>> >> >> >> Subject: Re: VM router spawning multiple public nics > >> >> >>> >> >> >> > >> >> >>> >> >> >> Yes, that looks like it would work for me, however > >> that's > >> >> not > >> >> >>> >> >> >> something that would ever make it into master, right? > >> >> >>> Essentially > >> >> >>> >> >> >> killing tagging for the public, private, and guest > >> traffic > >> >> >>> labels? > >> >> >>> >> >> >> There's also still the issue of not being able to > >> >> >>> differentiate > >> >> >>> >> >> >> between multiple untagged networks, if we wanted to > add > >> an > >> >> IP > >> >> >>> to > >> >> >>> >> a > >> >> >>> >> >> >> router it might not know which untagged interface to > >> apply > >> >> it > >> >> >>> to. > >> >> >>> >> >> > > >> >> >>> >> >> > Physically, all the "untagged" network will be > created > >> on > >> >> >>> >> >> public/guest/private bridge(the name we put in > >> >> >>> >> >> private/public/guest.bridge.name in agent.properties"). > >> >> >>> >> >> > Because, there is no way to create a new untagged > bridge > >> by > >> >> >>> agent > >> >> >>> >> >> itself. Agent code only knows how to create a new > >> tagged(vlan) > >> >> >>> >> bridge. > >> >> >>> >> >> > So the fix should be pushed into master. > >> >> >>> >> >> > > >> >> >>> >> >> >> > >> >> >>> >> >> >> On Tue, Aug 28, 2012 at 2:32 PM, Edison Su > >> >> >>> <edison...@citrix.com> > >> >> >>> >> >> wrote: > >> >> >>> >> >> >> > > >> >> >>> >> >> >> > > >> >> >>> >> >> >> >> -----Original Message----- > >> >> >>> >> >> >> >> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >> >> >>> >> >> >> >> Sent: Tuesday, August 28, 2012 12:23 PM > >> >> >>> >> >> >> >> To: cloudstack-dev@incubator.apache.org > >> >> >>> >> >> >> >> Subject: Re: VM router spawning multiple public > nics > >> >> >>> >> >> >> >> > >> >> >>> >> >> >> >> Thanks for pointing me in the right direction. > I've > >> >> >>> reviewed > >> >> >>> >> this > >> >> >>> >> >> >> code > >> >> >>> >> >> >> >> in a bit more detail, and it seems like it's > >> >> accomplishing > >> >> >>> the > >> >> >>> >> >> >> >> following: > >> >> >>> >> >> >> >> > >> >> >>> >> >> >> >> 1. get all network interfaces currently connected > to > >> >> the > >> >> >>> >> running > >> >> >>> >> >> VM > >> >> >>> >> >> >> >> (a.k.a vnet devices via libvirt) > >> >> >>> >> >> >> >> 2. find out which vlans these network interfaces > are > >> >> >>> bridged > >> >> >>> >> to, > >> >> >>> >> >> >> store > >> >> >>> >> >> >> >> this in a hash map of vlan ids and nics > >> >> >>> >> >> >> >> 3. get all ip addresses to be added to the VM > >> >> >>> >> >> >> >> 4. for each ip, get the configured vlan id for > the > >> ip, > >> >> >>> compare > >> >> >>> >> it > >> >> >>> >> >> to > >> >> >>> >> >> >> >> the hash map of existing vlan ids and nics > >> >> >>> >> >> >> >> 5. if the required vlan id is not found in the > hash > >> map, > >> >> >>> >> create a > >> >> >>> >> >> >> new > >> >> >>> >> >> >> >> nic > >> >> >>> >> >> >> >> 6. assign the ip to the nic identified by the > vlan > >> id > >> >> key > >> >> >>> in > >> >> >>> >> the > >> >> >>> >> >> >> hash > >> >> >>> >> >> >> >> map > >> >> >>> >> >> >> >> > >> >> >>> >> >> >> >> In this case, we're getting a vlan id returned in > >> step > >> >> 2 > >> >> >>> for a > >> >> >>> >> >> >> bridged > >> >> >>> >> >> >> >> nic whose network is defined as untagged in the > >> >> cloudstack > >> >> >>> db, > >> >> >>> >> >> >> >> therefore in step 5 we never match as already > having > >> a > >> >> nic > >> >> >>> for > >> >> >>> >> >> >> >> 'untagged'. I wrote a big long response > discussing > >> this > >> >> >>> issue, > >> >> >>> >> >> but > >> >> >>> >> >> >> as > >> >> >>> >> >> >> >> I began to dig further I realized that aside from > my > >> >> >>> >> particular > >> >> >>> >> >> case, > >> >> >>> >> >> >> >> untagged vlans in general are just broken (for > >> example > >> >> they > >> >> >>> >> can't > >> >> >>> >> >> be > >> >> >>> >> >> >> >> dealt with uniquely in the current IpAssocCommand > >> code, > >> >> >>> given > >> >> >>> >> the > >> >> >>> >> >> >> hash > >> >> >>> >> >> >> >> map) and it would require more effort than I have > >> time > >> >> for > >> >> >>> now > >> >> >>> >> to > >> >> >>> >> >> >> make > >> >> >>> >> >> >> >> things work. If the code were already in place to > >> >> >>> >> differentiate > >> >> >>> >> >> >> >> between multiple untagged nics I think that > fixing > >> my > >> >> >>> problem > >> >> >>> >> >> would > >> >> >>> >> >> >> be > >> >> >>> >> >> >> >> trivial, but since its not, I'll just find an > >> >> alternative > >> >> >>> >> >> solution. > >> >> >>> >> >> >> >> > >> >> >>> >> >> >> > > >> >> >>> >> >> >> > The untagged network usually means "untagged", no > >> vlan > >> >> on > >> >> >>> the > >> >> >>> >> >> >> bridge... > >> >> >>> >> >> >> > In your case, the untagged network actually has > >> >> vlan(tagged) > >> >> >>> on > >> >> >>> >> >> the > >> >> >>> >> >> >> bridge, thus getting things confused. > >> >> >>> >> >> >> > Will this patch(http://pastebin.com/HJXzZwKp) work > >> for > >> >> you? > >> >> >>> >> >> >> > > >> >> >>> >> >> >> >> On Mon, Aug 27, 2012 at 10:46 PM, Marcus Sorensen > >> >> >>> >> >> >> <shadow...@gmail.com> > >> >> >>> >> >> >> >> wrote: > >> >> >>> >> >> >> >> > ... > >> >> >>> >> >> >> >> > Integer nicPos = 0; > >> >> >>> >> >> >> >> > for (InterfaceDef nic : nics) { > >> >> >>> >> >> >> >> > if > >> >> >>> >> >> >> >> > >> (nic.getBrName().equalsIgnoreCase(_linkLocalBridgeName)) > >> >> { > >> >> >>> >> >> >> >> > > >> vlanAllocatedToVM.put("LinkLocal", > >> >> >>> >> nicPos); > >> >> >>> >> >> >> >> > } else { > >> >> >>> >> >> >> >> > String vlanId = > >> >> >>> >> >> >> >> getVlanIdFromBridge(nic.getBrName()); > >> >> >>> >> >> >> >> > if (vlanId != null) { > >> >> >>> >> >> >> >> > > >> vlanAllocatedToVM.put(vlanId, > >> >> >>> >> nicPos); > >> >> >>> >> >> >> >> > } else { > >> >> >>> >> >> >> >> > > >> >> >>> vlanAllocatedToVM.put(Vlan.UNTAGGED, > >> >> >>> >> >> >> nicPos); > >> >> >>> >> >> >> >> > } > >> >> >>> >> >> >> >> > } > >> >> >>> >> >> >> >> > nicPos++; > >> >> >>> >> >> >> >> > } > >> >> >>> >> >> >> >> > IpAddressTO[] ips = > >> cmd.getIpAddresses(); > >> >> >>> >> >> >> >> > int i = 0; > >> >> >>> >> >> >> >> > String result = null; > >> >> >>> >> >> >> >> > int nicNum = 0; > >> >> >>> >> >> >> >> > for (IpAddressTO ip : ips) { > >> >> >>> >> >> >> >> > if > >> >> >>> >> >> (!vlanAllocatedToVM.containsKey(ip.getVlanId())) > >> >> >>> >> >> >> { > >> >> >>> >> >> >> >> > /* plug a vif into router > */ > >> >> >>> >> >> >> >> > VifHotPlug(conn, routerName, > >> >> >>> >> ip.getVlanId(), > >> >> >>> >> >> >> >> > > ip.getVifMacAddress()); > >> >> >>> >> >> >> >> > > >> >> vlanAllocatedToVM.put(ip.getVlanId(), > >> >> >>> >> >> >> nicPos++); > >> >> >>> >> >> >> >> > } > >> >> >>> >> >> >> >> > ... > >> >> >>> >> >> >> >> > > >> >> >>> >> >> >> >> > Looks like the getVlanIdFromBridge might be a > bit > >> >> >>> misleading. > >> >> >>> >> I > >> >> >>> >> >> am > >> >> >>> >> >> >> >> > running my guest public traffic on a > 'cloudbr470', > >> >> which > >> >> >>> is > >> >> >>> >> a > >> >> >>> >> >> >> bridge > >> >> >>> >> >> >> >> > to eth2.470, yet I configured this network as > >> >> 'untagged' > >> >> >>> >> >> because I > >> >> >>> >> >> >> >> > have a vlan 470 available on eth3 for > cloudstack > >> to > >> >> >>> >> autoassign > >> >> >>> >> >> >> (eth3 > >> >> >>> >> >> >> >> > is where all of my stuff will be autoassigned). > So > >> >> I'm > >> >> >>> not > >> >> >>> >> 100% > >> >> >>> >> >> >> sure > >> >> >>> >> >> >> >> > yet what's going on here but it seems as though > >> the > >> >> above > >> >> >>> is > >> >> >>> >> >> not > >> >> >>> >> >> >> >> > setting any 'Vlan.UNTAGGED', since it finds a > vlan > >> >> number > >> >> >>> >> for > >> >> >>> >> >> >> >> > eth2.470, but when it enumerates the IPs for > the > >> >> router, > >> >> >>> it > >> >> >>> >> >> then > >> >> >>> >> >> >> runs > >> >> >>> >> >> >> >> > ip.getVlanId() and doesn't find a nic for the > >> >> untagged IP > >> >> >>> >> and > >> >> >>> >> >> >> creates > >> >> >>> >> >> >> >> > one. > >> >> >>> >> >> >> >> > > >> >> >>> >> >> >> >> > > >> >> >>> >> >> >> >> > I realize this is perhaps an uncommon case, but > a > >> bug > >> >> >>> >> >> nonetheless. > >> >> >>> >> >> >> >> > I'll play with the code a bit and see if I can > >> come > >> >> up > >> >> >>> with > >> >> >>> >> a > >> >> >>> >> >> >> >> > solution. I'm thinking I can look at the nic's > >> >> broadcast > >> >> >>> URI > >> >> >>> >> >> and > >> >> >>> >> >> >> see > >> >> >>> >> >> >> >> > if it's supposed to be untagged, then add to > >> >> >>> >> vlanAllocatedToVM > >> >> >>> >> >> >> >> > appropriately, off the top of my head something > >> like: > >> >> >>> >> >> >> >> > > >> >> >>> >> >> >> >> > String vlanId = > >> >> >>> >> >> >> >> getVlanIdFromBridge(nic.getBrName()); > >> >> >>> >> >> >> >> > if (vlanId != null && > >> >> >>> >> >> >> >> > >> > !nic.getBroadcastUri().toString().contains("untagged") > >> >> { > >> >> >>> >> >> >> >> > > >> vlanAllocatedToVM.put(vlanId, > >> >> >>> >> nicPos); > >> >> >>> >> >> >> >> > } else { > >> >> >>> >> >> >> >> > > >> >> >>> vlanAllocatedToVM.put(Vlan.UNTAGGED, > >> >> >>> >> >> >> nicPos); > >> >> >>> >> >> >> >> > } > >> >> >>> >> >> >> >> > > >> >> >>> >> >> >> >> > > >> >> >>> >> >> >> >> > > >> >> >>> >> >> >> >> > On Mon, Aug 27, 2012 at 6:42 PM, Edison Su > >> >> >>> >> >> <edison...@citrix.com> > >> >> >>> >> >> >> >> wrote: > >> >> >>> >> >> >> >> >> Possible bug in in kvm code: > >> >> LibvirtComputingResource- > >> >> >>> >> >> >> >> >execute(IpAssocCommand cmd)-> VifHotPlug, which > is > >> >> only > >> >> >>> place > >> >> >>> >> >> >> adding > >> >> >>> >> >> >> >> nic into router vm. > >> >> >>> >> >> >> >> >> Turn on agent log, then take a look what > happened. > >> >> >>> >> >> >> >> >> > >> >> >>> >> >> >> >> >>> -----Original Message----- > >> >> >>> >> >> >> >> >>> From: Marcus Sorensen > >> [mailto:shadow...@gmail.com] > >> >> >>> >> >> >> >> >>> Sent: Monday, August 27, 2012 5:10 PM > >> >> >>> >> >> >> >> >>> To: cloudstack-dev@incubator.apache.org > >> >> >>> >> >> >> >> >>> Subject: VM router spawning multiple public > nics > >> >> >>> >> >> >> >> >>> > >> >> >>> >> >> >> >> >>> I've got two zones running the same build of > >> >> cloudstack > >> >> >>> (a > >> >> >>> >> >> >> recent > >> >> >>> >> >> >> >> copy > >> >> >>> >> >> >> >> >>> of master). One of them creates routers that > >> turn > >> >> into > >> >> >>> >> ugly > >> >> >>> >> >> >> >> >>> multi-headed beasts, and by that I mean that > any > >> >> time I > >> >> >>> >> >> create a > >> >> >>> >> >> >> >> port > >> >> >>> >> >> >> >> >>> forwarding or iptables rule for that router I > >> get a > >> >> new > >> >> >>> >> >> public > >> >> >>> >> >> >> NIC > >> >> >>> >> >> >> >> >>> with an identical IP address, I have an > instance > >> >> with a > >> >> >>> >> few > >> >> >>> >> >> tens > >> >> >>> >> >> >> of > >> >> >>> >> >> >> >> >>> NICs. My guess is that some script isn't > >> detecting > >> >> >>> that > >> >> >>> >> >> there's > >> >> >>> >> >> >> >> >>> already a NIC with the public IP on it. It > >> looks > >> >> fine > >> >> >>> in > >> >> >>> >> the > >> >> >>> >> >> >> >> >>> database, there is only one public NIC > defined > >> in > >> >> the > >> >> >>> nics > >> >> >>> >> >> table. > >> >> >>> >> >> >> >> >>> I'll troubleshoot it tomorrow, but if anyone > >> knows > >> >> >>> where I > >> >> >>> >> >> >> should > >> >> >>> >> >> >> >> >>> begin the headstart would be appreciated. > >> >> >>> >> >> >> >> >>> > >> >> >>> >> >> >> >> >>> Thanks > >> >> >> > >> >> > > >> >> >