mirror of https://github.com/apache/cloudstack.git
vxlan: arp does not work between hosts as multicast group is communicated over physical nic instead of linux bridge (#5078)
* vxlan: arp does not work between hosts as multicast group is communicated over physical nic instead of linux bridge when linux bridge is setup (refer to http://docs.cloudstack.apache.org/projects/archived-cloudstack-getting-started/en/latest/networking/vxlan.html#configure-product-to-use-vxlan-plugin) and used as the kvm traffic label of physical networks, the vms on different hosts cannot reach each other. (1) does not work: ``` /usr/share/cloudstack-common/scripts/vm/network/vnet/modifyvxlan.sh -v 1001 -p eth1 -b brvx-1001 -o add ``` "bridge fdb" shows ``` 00:00:00:00:00:00 dev vxlan1001 dst 239.0.3.233 via eth1 self permanent ``` (2) this works: ``` /usr/share/cloudstack-common/scripts/vm/network/vnet/modifyvxlan.sh -v 1001 -p cloudbr1 -b brvx-1001 -o add ``` "bridge fdb" shows ``` 00:00:00:00:00:00 dev vxlan1001 dst 239.0.3.233 via cloudbr1 self permanent ``` * vxlan: fix issue if kvm network label is not set
This commit is contained in:
parent
006d0fe4c4
commit
67182dc49b
|
|
@ -224,7 +224,7 @@ public class BridgeVifDriver extends VifDriverBase {
|
|||
String brName = createVnetBr(vNetId, trafficLabel, protocol);
|
||||
intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
|
||||
} else {
|
||||
String brName = createVnetBr(vNetId, "private", protocol);
|
||||
String brName = createVnetBr(vNetId, _bridges.get("private"), protocol);
|
||||
intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -291,7 +291,7 @@ public class BridgeVifDriver extends VifDriverBase {
|
|||
|
||||
private String createVnetBr(String vNetId, String pifKey, String protocol) throws InternalErrorException {
|
||||
String nic = _pifs.get(pifKey);
|
||||
if (nic == null) {
|
||||
if (nic == null || protocol.equals(Networks.BroadcastDomainType.Vxlan.scheme())) {
|
||||
// if not found in bridge map, maybe traffic label refers to pif already?
|
||||
File pif = new File("/sys/class/net/" + pifKey);
|
||||
if (pif.isDirectory()) {
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ public class IvsVifDriver extends VifDriverBase {
|
|||
|
||||
private String createVnetBr(String vNetId, String pifKey, String protocol) throws InternalErrorException {
|
||||
String nic = _pifs.get(pifKey);
|
||||
if (nic == null) {
|
||||
if (nic == null || protocol.equals(Networks.BroadcastDomainType.Vxlan.scheme())) {
|
||||
// if not found in bridge map, maybe traffic label refers to pif already?
|
||||
File pif = new File("/sys/class/net/" + pifKey);
|
||||
if (pif.isDirectory()) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue