macvtap direct
Laine Stump
laine at redhat.com
Tue May 19 03:19:58 UTC 2020
On 5/18/20 10:51 PM, Subhendu Ghosh wrote:
>
>
> On Thu, May 14, 2020 at 1:32 PM Laine Stump <laine at redhat.com
> <mailto:laine at redhat.com>> wrote:
>
> On 5/13/20 12:52 AM, Subhendu Ghosh wrote:
> > Hi
> >
> > Couple of questions around macvtap direct usage:
> >
> > 1) is the document here current?
> > https://libvirt.org/formatnetwork.html#examplesDirect
>
> Yes. None of that has changed in any major way in many years.
>
>
> kernelNewbies documents mactap bridge as VMs can host can all talk to
> each other without an external bridge
Correct. The VMs can talk to each other, but they can't talk to the host.
> External bridge/switch is only needed for VEPA mode with hairpin.
VEPA is a special IBM thing that requires a particular kind of switch.
bridge mode macvtap still doesn't allow direct communication between
host and guest - it requires a switch that hairpins traffic, or for the
host to have a separate macvlan interface that is attached to the
ethernet device (so that it is a peer to the guests' macvtap devices,
and they can communicate with it).
>
> https://virt.kernelnewbies.org/MacVTap
>
> Perhaps the original development of macvtap to support VEPA influenced
> the early docs and was never reviewed after bridge mode matured?
No.
If you are able to communicate between your host and guests that are
connected only via a macvtap bridge mode connection, then either your
switch is hairpinning the traffic, or you have a separate macvlan
interface for the host that is attached to the ethernet. There was no
"change in design after early docs that was never reviewed" - the
design/implementation of macvtap is as it is documented.
(Just because your claim made me doubt myself, I checked again on a
Fedora 32 host and verified that it still works as it always has).
>
>
>
> >
> > I have been able to get host to guest network traffic without any
> > special configuration or switch since Fedora 28 when I first started
> > using it. Using <forward mode=vepa> requires switch port
> mirroring, but
> > just using <forward mode=bridge> doesn't.
>
>
> If that is the case, then either your guest and host have a secondary
> network connection, or your switch is mirroring traffic and you just
> didn't know about it. The inability to do direct host<->guest
> communication is inherent in the design of macvtap interfaces.
>
>
> >
> > 2) do any of the language libraries make assumptions that libvirt
> > networks must have a <bridge name=xx> attribute? Foreman's Ruby
> > interface to libvirt errors out with attempting to build a VM on
> a KVM
> > host with a network defined with <forward mode=bridge>
> > https://projects.theforeman.org/issues/25890
>
> The 2nd line in the log attached to that issue report says this:
>
> >Call to virNetworkGetBridgeName failed: internal error: network
> 'macvtap-net' does not have a bridge name.
>
> So, your application (or whatever this "Foreman's Ruby interface to
> libvirt" is) has called virNetworkGetBridgeName() (whatever it's called
> in the Ruby bindings), and since you have a macvtap network, which has
> no bridge device, libvirt sent back an error. You need to find whatever
> in your code is calling virNetworkGetBridgeName().
>
More information about the libvirt-users
mailing list