[ovs-dev] [PATCH RFC v3 0/3] ovn: add SLAAC support for IPv6

Zongkai LI zealokii at gmail.com
Fri Aug 12 07:58:29 UTC 2016


This serial patches try to support Stateless Address Autoconfiguration (SLAAC)
for IPv6, via Router Solicitation (RS) responder, who will reply Router
Advertisement (RA) message for received RS message.

User case:
  After this serial patches, a user can follow the following steps to let all
  VMs/VIFs on a logical switch has IPv6 prefix/CIDR, configure their IPv6
  addresses automatically:
   - add Logical_Switch.other_config new key-pair 'mtu=N', while N should be a
     valid MTU for IPv6(per RFC2460, consider 1280 as minimum MTU.)
   - add lsp and lrp for Logical_Switch to make it attached onto a router, the
     lsp and lrp should have IPv6 prefix/CIDR in their addresses and networks
     columns,
   - set Logical_Router_Port.slaac column to true.
  Then, next time VM/VIF sends RS packet, RA packets will be replied by
  ovn-controller. When VM/VIF receives that RA packet, it can configure its
  IPv6 address(es) and route(s) via that RA packet.

There will be logical flows in table lr_in_rs_rsp(20) to work as RS
responder, with:
 - match: inport == "a-lrp-port-name" && ip6.dst == ff02::2 && nd_rs
   (nd_rs: icmp6.type == 133 && icmp6.code == 0 && ttl == 255)
 - action: nd_ra{slaac(fa:16:3e:32:3c:e0,1450,fdad:a0f9:a012::/64,...);
           outport = inport; flags.loopback = 1; output;};
   (nd_ra is a new action which will compose a RA packet to respond a RS
    packet.
    slaac is a new action which has the following parameters to tell
    ovn-controller to compose RA packet with SLAAC flags, with these
    parameters:
     - LLA: router port link-layer address, such as fa:16:3e:32:3c:e0.
     - MTU: logical switch MTU, such as 1450.
     - IPv6 prefix(es): such as fdad:a0f9:a012::/64.
After a RA packet is composed, the left nested actions will make RA packet
transmitted back to the inport, where Router Solicitation (RS) packet comes.

LI Zong Kai (3):
  ovs packet: add compose RA packet support
  ovn-controller: add RS responder for SLAAC
  ovn-northd: add RS responder for SLAAC

 include/ovn/actions.h    |  15 +++++
 include/ovn/expr.h       |   4 ++
 lib/flow.c               |  26 ++++----
 lib/odp-execute.c        |  20 +++---
 lib/packets.c            | 168 ++++++++++++++++++++++++++++++++++++++--------
 lib/packets.h            |  86 ++++++++++++++++++++----
 ovn/controller/pinctrl.c | 169 +++++++++++++++++++++++++++++++++++++++++++++++
 ovn/lib/actions.c        |  73 ++++++++++++++++++++
 ovn/lib/expr.c           |  27 ++++++++
 ovn/lib/logical-fields.c |  11 ++-
 ovn/northd/ovn-northd.c  |  93 ++++++++++++++++++++++++--
 ovn/ovn-nb.ovsschema     |   5 +-
 ovn/ovn-nb.xml           |  11 +++
 ovn/ovn-sb.xml           |  30 ++++++++-
 tests/ovn.at             | 116 +++++++++++++++++++++++++++++++-
 15 files changed, 781 insertions(+), 73 deletions(-)

-- 
1.9.1




More information about the dev mailing list