Release notes for VPP 17.04
===========================

More than 500 commits since the 1701 release.

Features
--------

-  Infrastructure

   -  make test improvements
   -  vnet: add device-input threadplacement infra
   -  64 bit per-thread counters
   -  process restart cli
   -  High performance timer wheels
   -  Plugin infrastructure improvements

      -  Support for .default_disabled, .version_required

   -  Added MAINTAINERS file

-  Host stack

   -  TCP stack (experimental)
   -  DHCPv4 / DHCPv6 relay multi-destination
   -  DHCPv4 option 82
   -  ND proxy
   -  Attached hosts
   -  Consolidated DHCPv4 and DHCPv6 implementation

-  Interfaces

   -  DPDK 17.02 (retire support for DPDK 16.07)
   -  Add memif - packet memory interface for intra-host communication
   -  vhost: support interrupt mode
   -  DPDK as plugin (retired vpp_lite)
   -  DPDPK input optimizations
   -  Loopback interface allocation scheme

-  Network features

   -  IP Multicast FIB

   -  Bridging

      -  Learning on local interfaces
      -  Flushing of MACs from the L2 FIB

   -  SNAT

      -  CGN (Deterministic and dynamic)
      -  CGN configurable port allocation algorithm
      -  ICMP support
      -  Tentant VRF id for SNAT outside addresses
      -  Session dump / User dump
      -  Port allocation per protocol

   -  Security groups

      -  Routed interface support
      -  L2+L3 unified processing node
      -  Improve fragment handling

   -  Segement routing v6

      -  SR policies with weighted SID lists
      -  Binding SID
      -  SR steering policies
      -  SR Local SIDs
      -  Framework to expand local SIDs w/plugins
      -  Documentation

   -  IOAM

      -  UDP Pinger w/path fault isolation
      -  IOAM as type 2 metadata in NSH
      -  IAOM raw IPFIX collector and analyzer
      -  Anycast active server selection
      -  Documentation
      -  SRv6 Local SID
      -  IP6 HBH header and SR header co-existence
      -  Active probe

   -  LISP

      -  Statistics collection
      -  Generalize encap for overlay transport (vxlan-gpe support)
      -  Improve data plane speed

   -  GPE

      -  CLI
      -  NSH added to encap/decap path
      -  Renamed LISP GPE API to GPE

   -  MPLS

      -  Performance improvements (quad loop)

   -  BFD

      -  Command line interface
      -  Echo function
      -  Remote demand mode
      -  SHA1 authentication

   -  IPsec

      -  IKEv2 initiator features

   -  VXLAN

      -  unify IP4/IP6 control plane handling

API changes
-----------

-  Python API: To avoid conflicts between VPP API messages names and the
   Python API binding function names, VPP API methods are put in a
   separate proxy object. https://gerrit.fd.io/r/#/c/5570/ The api
   methods are now referenced as: vpp_handle = VPP(jsonfiles)
   vpp_handle.connect(…) vpp = vpp_handle.api vpp.show_version()
   vpp_handle.disconnect()

   For backwards compatibility VPP API methods are left in the main name
   space (VPP), but will be removed from 17.07.

   -  Python API: Change from cPython to CFFI.

-  create_loopback message to be replaced with create_loopback_instance
   create_loopback will be removed from 17.07.
   https://gerrit.fd.io/r/#/c/5572/

Known issues
------------

For the full list of issues please refer to fd.io
`JIRA <https://jira.fd.io>`__.

Issues fixed
------------

For the full list of fixed issues please refer to:

- fd.io `JIRA <https://jira.fd.io>`__
- git `commit log <https://git.fd.io/vpp/log/?h=stable/1704>`__
