Skip to content

Conversation

@nrybowski
Copy link
Contributor

@nrybowski nrybowski commented Oct 1, 2024

This PR adds basic elements for BIER packets processing.

First, it adds the Bier Forwarding Table (BIFT) which is implemented as the IPv6 forwarding table. That is, Fastclick is extended with a 'biertable' that defines the basic operations on the BIFT. The 'bierroutetable' element defines handlers allowing external interactions and the 'lookupbiertable' is the element representing the BIFT.

Second, two simple filtering elements are added, (i) 'checkbierheader' that verifies the header of a BIER packet and (ii) 'checkbierin6header' that filters IPv6 packet to detect BIERin6 encapsulated BIER packets.

TODO

  • Batch routes addition
  • Allow routes suppression via handler
  • Add elements documentation
  • (Support Bitstring length greater than 256 bits)
  • Implement BIER forwarding

@tbarbette
Copy link
Owner

Well, everything seems good and 'standard' to me so far.

@nrybowski
Copy link
Contributor Author

Thanks for the review! I will open the PR for merge once I have a functional BIER data-plane.

@tbarbette
Copy link
Owner

One thing you can also do is add a few tests (see the tests folder). So you're sure elements behave as expected. The easiest is probably to use some FromIPSum.* (look at other examples) so you can easily add some payload and verify what you get. Unit testing is done through specific Test element in elements/tests. For such a big project it's generally a good idea.

This commit adds basic elements for BIER packets processing.

First, it adds the Bier Forwarding Table (BIFT) which is implemented as the IPv6 forwarding table.
That is, Fastclick is extended with a 'biertable' that defines the basic operations on the BIFT.
The 'bierroutetable' element defines handlers allowing external interactions and the
'lookupbiertable' is the element representing the BIFT.

Second, two simple filtering elements are added, (i) 'checkbierheader' that verifies the header of
a BIER packet and (ii) 'checkbierin6header' that filters IPv6 packet to detect BIERin6 encapsulated
BIER packets.
@nrybowski
Copy link
Contributor Author

Rebase on 91a3454.

@nrybowski nrybowski marked this pull request as ready for review October 31, 2024 17:59
@nrybowski
Copy link
Contributor Author

I will add some tests in subsequent commits but in the current state of the PR, the BIFT is correctly populated by the holo control-plane and the duplication as well as the forwarding works as expected on a simple test topology.

@nrybowski nrybowski temporarily deployed to GITLAB_PASSWORD March 13, 2025 23:04 — with GitHub Actions Inactive
The 'output' value corresponds to the interface id kernel-wise
and not to the output id of the element
@nrybowski nrybowski temporarily deployed to GITLAB_PASSWORD March 13, 2025 23:44 — with GitHub Actions Inactive
@tbarbette tbarbette closed this Apr 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants