IP Multicast FIB (mfib) 09/4709/9
authorNeale Ranns <nranns@cisco.com>
Tue, 22 Nov 2016 17:07:28 +0000 (17:07 +0000)
committerDamjan Marion <dmarion.lists@gmail.com>
Fri, 27 Jan 2017 19:53:46 +0000 (19:53 +0000)
commit32e1c010b0c34fd0984f7fc45fae648a182025c5
tree06a440bdc9dc039ad0dcf866acc9e10a6ea5e2e7
parent6f692d6e5a8ffc920a728372ef773199bc5466c0
IP Multicast FIB (mfib)

 - IPv[46] mfib tables with support for (*,G/m), (*,G) and (S,G) exact and longest prefix match
 - Replication represented via a new replicate DPO.
 - RPF configuration and data-plane checking
 - data-plane signals sent to listening control planes.

The functions of multicast forwarding entries differ from their unicast conterparts, so we introduce a new mfib_table_t and mfib_entry_t objects. However, we re-use the fib_path_list to resolve and build the entry's output list. the fib_path_list provides the service to construct a replicate DPO for multicast.

'make tests' is added to with two new suites; TEST=mfib, this is invocation of the CLI command 'test mfib' which deals with many path add/remove, flag set/unset scenarios, TEST=ip-mcast, data-plane forwarding tests.

Updated applications to use the new MIFB functions;
  - IPv6 NS/RA.
  - DHCPv6
 unit tests for these are undated accordingly.

Change-Id: I49ec37b01f1b170335a5697541c8fd30e6d3a961
Signed-off-by: Neale Ranns <nranns@cisco.com>
90 files changed:
src/scripts/vnet/mcast/ip4 [new file with mode: 0644]
src/vat/api_format.c
src/vnet.am
src/vnet/adj/adj.c
src/vnet/adj/adj.h
src/vnet/adj/adj_internal.h
src/vnet/adj/adj_mcast.c [new file with mode: 0644]
src/vnet/adj/adj_mcast.h [new file with mode: 0644]
src/vnet/adj/adj_nbr.c
src/vnet/adj/adj_rewrite.c [deleted file]
src/vnet/adj/adj_rewrite.h [deleted file]
src/vnet/dhcpv6/proxy_node.c
src/vnet/dpo/dpo.c
src/vnet/dpo/dpo.h
src/vnet/dpo/load_balance.c
src/vnet/dpo/load_balance.h
src/vnet/dpo/replicate_dpo.c [new file with mode: 0644]
src/vnet/dpo/replicate_dpo.h [new file with mode: 0644]
src/vnet/ethernet/arp.c
src/vnet/ethernet/ethernet.h
src/vnet/ethernet/interface.c
src/vnet/fib/fib_attached_export.c
src/vnet/fib/fib_entry.h
src/vnet/fib/fib_entry_delegate.c
src/vnet/fib/fib_entry_src.c
src/vnet/fib/fib_node.h
src/vnet/fib/fib_path.c
src/vnet/fib/fib_path_list.c
src/vnet/fib/fib_path_list.h
src/vnet/fib/fib_table.c
src/vnet/fib/fib_table.h
src/vnet/fib/fib_test.c
src/vnet/fib/fib_types.c
src/vnet/fib/fib_types.h
src/vnet/fib/fib_urpf_list.c
src/vnet/fib/ip4_fib.c
src/vnet/fib/ip4_fib.h
src/vnet/fib/ip6_fib.c
src/vnet/fib/ip6_fib.h
src/vnet/fib/mpls_fib.c
src/vnet/fib/mpls_fib.h
src/vnet/ip/ip.api
src/vnet/ip/ip4.h
src/vnet/ip/ip4_forward.c
src/vnet/ip/ip4_input.c
src/vnet/ip/ip6.h
src/vnet/ip/ip6_forward.c
src/vnet/ip/ip6_input.c
src/vnet/ip/ip6_neighbor.c
src/vnet/ip/ip_api.c
src/vnet/ip/lookup.c
src/vnet/ip/lookup.h
src/vnet/mcast/mcast.c [deleted file]
src/vnet/mcast/mcast.h [deleted file]
src/vnet/mcast/mcast_test.c [deleted file]
src/vnet/mfib/ip4_mfib.c [new file with mode: 0644]
src/vnet/mfib/ip4_mfib.h [new file with mode: 0644]
src/vnet/mfib/ip6_mfib.c [new file with mode: 0644]
src/vnet/mfib/ip6_mfib.h [new file with mode: 0644]
src/vnet/mfib/mfib_entry.c [new file with mode: 0644]
src/vnet/mfib/mfib_entry.h [new file with mode: 0644]
src/vnet/mfib/mfib_forward.c [new file with mode: 0644]
src/vnet/mfib/mfib_itf.c [new file with mode: 0644]
src/vnet/mfib/mfib_itf.h [new file with mode: 0644]
src/vnet/mfib/mfib_signal.c [new file with mode: 0644]
src/vnet/mfib/mfib_signal.h [new file with mode: 0644]
src/vnet/mfib/mfib_table.c [new file with mode: 0644]
src/vnet/mfib/mfib_table.h [new file with mode: 0644]
src/vnet/mfib/mfib_test.c [new file with mode: 0644]
src/vnet/mfib/mfib_types.c [new file with mode: 0644]
src/vnet/mfib/mfib_types.h [new file with mode: 0644]
src/vnet/misc.c
src/vnet/rewrite.h
src/vnet/sr/sr.c
src/vnet/util/radix.c [new file with mode: 0644]
src/vnet/util/radix.h [new file with mode: 0644]
src/vnet/vxlan/vxlan.c
src/vpp/api/api.c
src/vppinfra.am
src/vppinfra/dlist.h
src/vppinfra/format.c
src/vppinfra/format.h
src/vppinfra/unformat.c
test/test_dhcp.py
test/test_ip6.py
test/test_ip_mcast.py [new file with mode: 0644]
test/test_mfib.py [new file with mode: 0644]
test/vpp_interface.py
test/vpp_ip_route.py
test/vpp_papi_provider.py