mbox series

[ovs-dev,v6,0/2] Add support for periodic router advertisements

Message ID 20171129215948.4879-1-mmichels@redhat.com
Headers show
Series Add support for periodic router advertisements | expand

Message

Mark Michelson Nov. 29, 2017, 9:59 p.m. UTC
This patch series adds support for sending periodic router
advertisements from OVN. The patch is divided into two commits

* Commit 1 introduces a method to ensure that multicast packets are sent
  only to targets on the local hypervisor
* Commit 2 adds the ability to actually send the periodic RAs.

This patch series builds on the work in Numan Siddique's "ovn IPv6: Add
Router Solicitation responder support and generate Neighbor Solicitation
request for unknown" (patch series 11416 if using git-pw). Thus this
patch series cannot be merged until that patch series is merged first.

There are a couple of points I'd like to bring up with regards to this
patch that I would like addressed in reviews:

* I placed the logic for sending periodic RAs in pinctrl.c. My reasoning
  for this was that the closest thing that exists in OVN today is the
  periodic sending of gratuitous ARP requests, and that is in pinctrl.c.
  If periodic sending of RAs should be placed into a separate file,
  please let me know.
* In this patch, you will notice that a copy of the put_load() function
  from ovn/controller/physical.c has been placed in pinctrl.c. My choice
  was either to make the function public or duplicate it. Given that the
  function is so small, I see no reason why it would be modified, I went
  with the duplication choice. However, if it should be done the other
  way, let me know and I'll go that direction instead.


v5 -> v6:
Patch 1:
* s/MLF_KEEP_LOCAL/MLF_LOCAL_ONLY/
* Enclose "ovn-controller" in <code> tags in ovn-nb.xml.
Patch 2:
* Use host byte order for MTU parameter to compose_nd_ra. This also
  results in using host byte order in IPV6 RA structures.
* Don't enclose initialization of values in ovs_assert() since it
  can result in values being uninitialized in production builds.
* Use ETH_ADDR_C to initialize constant ethernet address.
* Apply a patch of Ben's that alters some formatting. Thanks Ben!

v4 -> v5:
* Changed "deleteme" ipv6_ra_state struct member to "delete_me" in
  pinctrl.c
* Used extract_ip_addresses instead of manually parsing IPv6 networks
  in pinctrl.c
* Used pre-existing defaults for address prefix valid lifetime and
  preferred lifetime instead of using RFC-defined ones.

v3 -> v4:
* Annotated default preferred lifetime and valid lifetime declarations.
* Ensure that MTU < 1280 is not advertised.

v2 -> v3:
Updated patch 2 based on feedback from Jakub Sitnicki
* Fixed typo in ovn-nb.xml
* Fixed function declaration of ipv6_ra_config_delete
* Used ipv6_parse_cidr() instead of manually parsing
* Added comments explaining some non-obvious items.
* Made destructor of ipv6_ra_state NULL-safe

v1 -> v2:
* The patchset has been applied on top of patch series 11416. The cover
  letter above has been adjusted for that change.
* Patch 1 has been updated by adding new information to the
  ovn-architecture manpage that mentions the MLF_KEEP_LOCAL flows
  installed in table 32.

Mark Michelson (2):
  OVN: Add multicast local-only flag.
  OVN: Add support for periodic router advertisements.

 lib/packets.c              |   4 +-
 lib/packets.h              |   7 ++
 ovn/controller/physical.c  |  15 +++
 ovn/controller/pinctrl.c   | 300 +++++++++++++++++++++++++++++++++++++++++++++
 ovn/lib/logical-fields.h   |   6 +
 ovn/northd/ovn-northd.c    |  75 +++++++++++-
 ovn/ovn-architecture.7.xml |  10 ++
 ovn/ovn-nb.xml             |  20 +++
 tests/ovn-northd.at        | 110 +++++++++++++++++
 tests/ovn.at               | 150 +++++++++++++++++++++++
 10 files changed, 694 insertions(+), 3 deletions(-)