2.39. test_l2_fib module

L2 FIB Test Case HLD:

config 1
  • add 4 pg-l2 interfaces
  • configure them into l2bd
  • configure 100 MAC entries in L2 fib - 25 MACs per interface
  • L2 MAC learning and unknown unicast flooding disabled in l2bd
  • configure 100 MAC entries in L2 fib - 25 MACs per interface
test 1
  • send L2 MAC frames between all 4 pg-l2 interfaces for all of 100 MAC entries in the FIB
verify 1
  • all packets received correctly
config 2
  • delete 12 MAC entries - 3 MACs per interface
test 2a
  • send L2 MAC frames between all 4 pg-l2 interfaces for non-deleted MAC entries
verify 2a
  • all packets received correctly
test 2b
  • send L2 MAC frames between all 4 pg-l2 interfaces for all of 12 deleted MAC entries
verify 2b
  • no packet received on all 4 pg-l2 interfaces
config 3
  • configure new 100 MAC entries in L2 fib - 25 MACs per interface
test 3
  • send L2 MAC frames between all 4 pg-l2 interfaces for all of 188 MAC entries in the FIB
verify 3
  • all packets received correctly
config 4
  • delete 160 MAC entries, 40 MACs per interface
test 4a
  • send L2 MAC frames between all 4 pg-l2 interfaces for all of 28 non-deleted MAC entries
verify 4a
  • all packets received correctly
test 4b
  • try send L2 MAC frames between all 4 pg-l2 interfaces for all of 172 deleted MAC entries
verify 4b
  • no packet received on all 4 pg-l2 interfaces
class test_l2_fib.TestL2fib(methodName='runTest')

Bases: framework.VppTestCase

L2 FIB Test Case

classmethod bd_ifs(bd_id)
config_l2_fib_entries(bd_id, hosts)

Config required number of L2 FIB entries.

Parameters:
  • bd_id (int) – BD’s id
  • count (int) – Number of L2 FIB entries to be created.
  • start (int) – Starting index of the host list. (Default value = 0)
create_hosts(n_hosts_per_if, subnet)

Create required number of host MAC addresses and distribute them among interfaces. Create host IPv4 address for every host MAC address.

Parameters:n_hosts_per_if (int) – Number of per interface hosts to

create MAC/IPv4 addresses for.

create_stream(src_if, packet_sizes, if_src_hosts, if_dst_hosts)

Create input packet stream for defined interface using hosts or deleted_hosts list.

Parameters:
  • src_if (object) – Interface to create packet stream for.
  • packet_sizes (list) – List of required packet sizes.
  • deleted (boolean) – Set to True if deleted_hosts list required.
Returns:

Stream of packets.

delete_l2_fib_entry(bd_id, hosts)

Delete required number of L2 FIB entries.

Parameters:count (int) – Number of L2 FIB entries to be created.
flush_all()

Flush All L2 FIB entries.

flush_bd(bd_id, learned_hosts)

Flush bd_id L2 FIB entries.

Parameters:bd_id (int) – Bridge Domain id.
flush_int(swif, learned_hosts)

Flush swif L2 FIB entries.

Parameters:swif (int) – sw if index.
learn_hosts(bd_id, hosts)

Create and send per interface L2 MAC broadcast packet stream to let the bridge domain learn these MAC addresses.

Parameters:
  • bd_id (int) – BD to teach
  • hosts (dict) – dict of hosts per interface
run_verify_negat_test(bd_id, src_hosts, dst_hosts)
run_verify_test(bd_id, src_hosts, dst_hosts)
setUp()
classmethod setUpClass()

Perform standard class setup (defined by class method setUpClass in class VppTestCase) before running the test case, set test case related variables and configure VPP.

Variables:bd_id (int) – Bridge domain ID.
split_hosts(hosts, n)
tearDown()

Show various debug prints after each test.

test_l2_fib_add100_add100()

L2 FIB - program 100 + 100 MACs

test_l2_fib_delete12()

L2 FIB - program 100 + delete 12 MACs

test_l2_fib_flush_all()

L2 FIB - flush all

test_l2_fib_flush_bd()

L2 FIB - flush BD

test_l2_fib_flush_int()

L2 FIB - flush interface

test_l2_fib_mac_learn_evs()

L2 FIB - mac learning events

test_l2_fib_macs_learn_max()

L2 FIB - mac learning max macs in event

test_l2_fib_program100()

L2 FIB - program 100 MACs

test_l2_fib_program10_learn10()

L2 FIB - Program 10 MACs, learn 10

verify_capture(pg_if, capture)

Verify captured input packet stream for defined interface.

Parameters:
  • pg_if (object) – Interface to verify captured packet stream for.
  • capture (list) – Captured packet stream.