Each row in this table specifies a binding from an IP address to
an Ethernet address that has been discovered through ARP (for
IPv4) or neighbor discovery (for IPv6). This table is primarily
used to discover bindings on physical networks, because IP-to-MAC
bindings for virtual machines are usually populated statically
into the Port_Binding
table.
This table expresses a functional relationship:
MAC_Binding
(logical_port
, ip
) = mac
.
In outline, the lifetime of a logical router's MAC binding looks
like this:
1. On hypervisor 1, a logical router determines that a
packet should be forwarded to IP address A on one of
its router ports. It uses its logical flow table to
determine that A lacks a static IP-to-MAC binding and
the get_arp
action to determine that it lacks a
dynamic IP-to-MAC binding.
2. Using an OVN logical arp
action, the logical router
generates and sends a broadcast ARP request to the
router port. It drops the IP packet.
3. The logical switch attached to the router port
delivers the ARP request to all of its ports. (It
might make sense to deliver it only to ports that have
no static IP-to-MAC bindings, but this could also be
surprising behavior.)
4. A host or VM on hypervisor 2 (which might be the same
as hypervisor 1) attached to the logical switch owns
the IP address in question. It composes an ARP reply
and unicasts it to the logical router port's Ethernet
address.
5. The logical switch delivers the ARP reply to the
logical router port.
6. The logical router flow table executes a put_arp
action. To record the IP-to-MAC binding,
ovn-controller
adds a row to the MAC_Binding
table.
7. On hypervisor 1, ovn-controller
receives the updated
MAC_Binding
table from the OVN southbound database.
The next packet destined to A through the logical
router is sent directly to the bound Ethernet address.
Summary:
logical_port
string
ip
string
mac
string
datapath Datapath_Binding
Details:
logical_port
: string
The logical port on which the binding was discovered.
ip
: string
The bound IP address.
mac
: string
The Ethernet address to which the IP is bound.
datapath
: Datapath_Binding
The logical datapath to which the logical port belongs.