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

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to