Releases: ipdk-io/networking-recipe
Releases · ipdk-io/networking-recipe
P4CP Release v3.4.0
What's Changed
Breaking change
- Updated to use stratum-deps v1.3.5, which makes re2 an independent component
mev-ts-2.0
- Pin workflow scripts to Ubuntu-22.04 (#722) by @5abeel in #744
- Update codeowners file by @ffoulkes in #740
- Bump nosborn/github-action-markdown-cli from 3.3.0 to 3.4.0 by @dependabot in #741
- Bump actions/setup-go from 5.0.2 to 5.3.0 by @dependabot in #742
- Update codeowners by @5abeel in #745
- Update Stratum submodule for vPort gNMI feature support by @5abeel
- Update workflow file to use stratum-deps-v1.3.5 by @5abeel in #746
- update Stratum submodule for TDI ID Mapper bug fix by @5abeel in #750
Full Changelog: v3.3.0...v3.4.0
P4CP Release v3.3.0
What's Changed
mev-ts-1.9
- Update networking-recipe version to 3.2.0 by @ffoulkes in #671
- Run all unit tests in CI pipeline by @ffoulkes in #668
- [ovsp4rt] Disable unused function in DPDK builds by @ffoulkes in #669
- Bump tj-actions/changed-files from 44 to 45 by @dependabot in #673
- [ovsp4rt] Update geneve_encap_v6_vlan_pop_test by @ffoulkes in #676
- [ovsp4rt] Delete unused GetVlanPushTableEntry() function by @ffoulkes in #675
- [ovsp4rt] JSON encoder updates by @ffoulkes in #672
- [ovsp4rt] Improve l2_to_v6_tunnel_test by @ffoulkes in #686
- [ovsp4rt] Implement 24-bit VNI values by @ffoulkes in #663
- Add security policy by @ffoulkes in #687
- Update submodule references by @ffoulkes in #688
- [ovsp4rt] Reference issues in TODO comments by @ffoulkes in #690
- Update stratum submodule reference by @ffoulkes in #691
Full Changelog: v3.2.0.0...v3.3.0
P4CP Release v3.2.0.0
Highlights
- Added ES2K and DPDK unit test suites for the ovs-p4rt component.
- Updated module requirements for the P4Runtime Python wheel.
Revision History
mev-ts-1.7 (contd)
- Rename ovs_p4rt namespace to ovsp4rt by @ffoulkes in #570
- Define ovsp4rt-unit-tests build target by @ffoulkes in #571
- [ovsp4rt] Move session source files to their own folder by @ffoulkes in #572
- Rename libgrpc_proto to libgoogle_rpc_proto by @ffoulkes in #574
- Update stratum submodule reference by @ffoulkes in #575
- Improve extract_table_ids script help text by @ffoulkes in #577
- [ovsp4rt] Fix byte-order bug in EncodeVniValue() by @ffoulkes in #579
- [ovsp4rt] Move stubs library to its own folder by @ffoulkes in #576
- [ovsp4rt] Implement EncodeBaseTest class by @ffoulkes in #578
mev-ts-1.8
- [ovsp4rt] Add comment headers to public functions by @ffoulkes in #580
- Update ovs submodule reference by @ffoulkes in #582
- Update P4Info.txt artifact for unit testing by @5abeel in #583
- [ovsp4rt] Annotate ovsp4rt.cc by @ffoulkes in #581
- Script to generate p4info_text.h from p4Info.txt by @ffoulkes in #584
- [ovsp4rt] Specify tunnel type in unit tests by @ffoulkes in #587
- [ovsp4rt] Refine preprocessor conditionals by @ffoulkes in #586
- [ovsp4rt] Export list of unit tests to parent scope by @ffoulkes in #588
- [ovsp4rt] Add prepare_fdb_smac_entry_test by @ffoulkes in #589
- [ovsp4rt] Improve fdb_smac_entry_test by @ffoulkes in #590
- [ovsp4rt] Implement fdb_tx_vlan_entry_test by @ffoulkes in #592
- [ovsp4rt] Implement fdb_rx_vlan_entry_test by @ffoulkes in #593
- [ovsp4rt] Split prepare_l2_to_tunnel_test into two tests by @ffoulkes in #594
- [ovsp4rt] Implement vxlan_decap_mod_entry_test by @ffoulkes in #595
- [ovsp4rt] Remove scenarios.md file by @ffoulkes in #596
- [ovsp4rt] Unit test template file by @ffoulkes in #597
- [ovsp4rt] Streamline unit test cmake listfile by @ffoulkes in #600
- [ovsp4rt] Implement tunnel_term_v6_table_test by @ffoulkes in #598
- [ovsp4rt] Implement tunnel_term_v4_table_test by @ffoulkes in #599
- [ovsp4rt] Implement fdb_tx_vxlan_entry_test by @ffoulkes in #602
- [ovsp4rt] Implemented fdb_tx_geneve_entry_test by @ffoulkes in #603
- [ovsp4rt] Implement rx_tunnel_v4_table_test by @ffoulkes in #605
- [ovsp4rt] Implement vlan_pop_table_test by @ffoulkes in #604
- [ovsp4rt] Update unit_test_template by @ffoulkes in #606
- [ovsp4rt] Implement base_table_test class by @ffoulkes in #591
- [ovsp4rt] Update tunnel_term_table tests with BaseTableTest class by @ffoulkes in #609
- [ovsp4rt] Implement rx_tunnel_v6_table_test by @ffoulkes in #607
- [ovsp4rt] Eliminate --check_src_port option by @ffoulkes in #610
- [ovsp4rt] Implement EncodeTunnelId() function by @ffoulkes in #611
- [ovsp4rt] Revise geneve and vxlan encap tests by @ffoulkes in #612
- [ovsp4rt] Update tests to use BaseTableTest class by @ffoulkes in #613
- [ovsp4rt] Support 24-bit VNIs in unit tests by @ffoulkes in #614
- [ovsp4rt] Add methods to core test classes by @ffoulkes in #621
- [ovsp4rt] Update fdb_rx_vlan_entry_test by @ffoulkes in #623
- [ovsp4rt] Update fdb_tx_geneve_entry_test by @ffoulkes in #624
- [ovsp4rt] Implement dst_ip_mac_map_table_test by @ffoulkes in #625
- [ovsp4rt] Implement src_ip_mac_map_table_test by @ffoulkes in #626
- [ovsp4rt] Implement src_port_table_test by @ffoulkes in #627
- [ovsp4rt] Rename tests for consistency by @ffoulkes in #628
- [ovsp4rt] Implement geneve_decap_mod_table_test by @ffoulkes in #629
- [ovsp4rt] Minor improvements to vxlan_decap_mod_entry_test by @ffoulkes in #630
- [ovsp4rt] Implement vlan_push_mod_table_test by @ffoulkes in #631
- [ovsp4rt] Update unit test template by @ffoulkes in #622
- [ovsp4rt] Base class for tunnel tests by @ffoulkes in #633
- [ovsp4rt] Update geneve_encap_v4_table_test by @ffoulkes in #634
- [ovsp4rt] Implement vxlan_decap_mod_vlan_push_test by @ffoulkes in #635
- [ovsp4rt] Implement geneve_encap_v6_vlan_pop_test by @ffoulkes in #636
- Fix compile error in geneve_encap_v4_table_test by @ffoulkes in #642
- [ovsp4rt] Update unit test template by @ffoulkes in #637
- [ovsp4rt] Implement tx_acc_vsi_table_test by @ffoulkes in #638
- [ovsp4rt] Rename unit tests by @ffoulkes in #639
- [ovsp4rt] Make TODO comments easier to grep by @ffoulkes in #640
- [ovsp4rt] Update fdb_tx_vxlan_entry_test by @ffoulkes in #641
- [ovsp4rt] Update fdb_tx_geneve_entry_test by @ffoulkes in #644
- [ovsp4rt] Update unit tests for wide VNIs by @ffoulkes in #643
- [ovsp4rt] Rename BaseTunnelTest to IpTunnelTest by @ffoulkes in #645
- [ovsp4rt] Enable unit test code coverage measurement by @ffoulkes in #654
- [ovsp4rt] Implement geneve_decap_mod_vlan_push_test by @ffoulkes in #655
- [ovsp4rt] Update geneve_encap_v4_vlan_pop_test by @ffoulkes in #646
- [ovsp4rt] Update vxlan_encap_v4_table_test by @ffoulkes in #647
- [ovsp4rt] Update vxlan_encap_v4_vlan_pop_test by @ffoulkes in #648
- [ovsp4rt] Update geneve_encap_v6_table_test by @ffoulkes in #649
- [ovsp4rt] Update vxlan_encap_v6_table_test by @ffoulkes in #651
- [ovsp4rt] Update vxlan_encap_v6_vlan_pop_test by @ffoulkes in #650
- [ovsp4rt] Revise vlan_pop_mod_table_test to use BaseTableTest by @ffoulkes in #656
- [ovsp4rt] Unit test housekeeping by @ffoulkes in #657
- [ovsp4rt] Revise l2_to_v4_tunnel_test to use BaseTableTest by @ffoulkes in #652
- [ovsp4rt] Revise l2_to_v6_tunnel_test to use BaseTableTest by @ffoulkes in #653
- [ovsp4rt] Adapt fdb_smac_entry_test to BaseTableTest by @ffoulkes in #658
- [ovsp4rt] Adapt fdb_tx_vlan_entry_test to BaseTableTest by @ffoulkes in #659
- [ovsp4rt] Update FunctionsWithUnitTests spreadsheet by @ffoulkes in #660
- [ovsp4rt] Restructure unit tests folder by @ffoulkes in #661
- [ovsp4rt] Make function prototypes extern by @ffoulkes in #665
- [ovsp4rt] Add 20-bit VNI (tunnel_id) test case by @ffoulkes in #664
- Fi...
P4CP Release v3.1.0.0 (baseline)
Baseline for canonical releases.
Highlights
- Remove support for Linux Networking V2.
- Update Linux Networking V3.
- Introduce ovs-p4rt unit tests.
Revision History
mev-ts-1.5
- Add support for combined recipe and linux networking version 3 by @nupuruttarwar in #425
- Update ptf-tests submodule reference by @5abeel in #436
- Fix condition for insecure mode check in sgnmi_cli by @5abeel in #439
- Update p4runtime proto version to 2024.3.0 by @ffoulkes
- Update Stratum submodule reference to reduce log noise reduction by @5abeel in #442
- Check if entry exists before inserting to avoid duplicate entry errors by @nupuruttarwar in #444
- Fix ES2K library directory list by @ffoulkes in #446
- Define Linux Networking version for ovs-p4rt by @ffoulkes in #447
- Remove stratum dependencies from setup directory by @ffoulkes in #331
- Rename libp4_role_config to libp4_role_config_proto by @ffoulkes in #449
mev-ts-1.6
- Update p4runtime in requirements.txt file by @ffoulkes in #451
- Add support for option to specify grpc server address for ovs-p4rt by @nupuruttarwar in #452
- Restructure ovs-p4rt by @ffoulkes in #456
- Simplify generation of ovs build artifacts by @ffoulkes in #460
- Implement --lnw-version parameter in make-all.sh by @ffoulkes in #464
- Refine ovs-p4rt build by @ffoulkes in #465
- Display Tofino SDE version number at config time by @ffoulkes in #466
- Make LNW_VERSION error message more informative by @ffoulkes in #474
- Implement basic logging for OVSP4RT by @ffoulkes in #478
- Implement --lnw-version option in config-cross-recipe.sh by @ffoulkes in #482
- Update krnlmon submodule reference by @5abeel in #488
- Rename ovsp4rt public functions by @ffoulkes in #485
- Address LNWv2 discrepancy in ovsp4rt by @ffoulkes in #486
- ovsp4rt housekeeping by @ffoulkes in #494
- Enable status checks on mev-ts branches by @ffoulkes in #501
- Update ovs submodule to pick up buffer overflow fix by @5abeel in #505
- Adding MAC addresses to logs when failure occurs (#498) by @5abeel in #506
- Build ovs-p4rt as a shared library by @ffoulkes in #495
- Implement basic logging for OVSP4RT by @ffoulkes in #508
- Fix l2_to_tunnel_v6 table delete by @n-sandeep in #510
- Update krnlmon submodule reference to pick up LACP bug fix by @5abeel in #511
mev-ts-1.7
- Restore ovsp4rt updates by @ffoulkes in #493
- ovsp4rt housekeeping by @ffoulkes in #494
- Adding MAC addresses to logs when failure occurs (#498) cherry-pick @5abeel in #506
- Build ovs-p4rt as a shared library by @ffoulkes in #495
- Reimplement basic logging for OVSP4RT by @ffoulkes in #508
- Add support for OVSP4RT unit testing by @ffoulkes in #509
- Rename the 'lib' directory to 'logging' by @ffoulkes in #512
- Remove Linux Networking v2 from networking-recipe by @5abeel in #517
- Update CI workflow to run shellcheck on bash scripts by @ffoulkes in #519
- Define ovsp4rt_spies library by @ffoulkes in #520
- Define ovsp4rt_stubs library by @ffoulkes in #522
- Fix a couple of aberrant include guards by @ffoulkes in #526
- Support P4OVS build modes by @ffoulkes in #515
- Fix VNI issue of setting only 1 byte by @5abeel in #530
- Modify prepare_l2_to_tunnel_test to support --dump_json flag by @ffoulkes in #532
- Set RPATH on openconfig_proto library by @ffoulkes in #529
- Begin development of Tracker class by @ffoulkes in #533
- Rename Tracker class to Journal by @ffoulkes in #535
- Implement encode_host_port_value_test by @ffoulkes in #537
- Expose ovs-p4rt functions for testing by @ffoulkes in #538
- Implement geneve_encap_table_entry_test by @ffoulkes in #539
- Revise src_port verification by @ffoulkes in #542
- Move set_install_rpath() to its own file by @ffoulkes in #541
- Set ovsp4rt label on ovsp4rt unit tests by @ffoulkes in #551
- Document anomalous src_port param values by @ffoulkes in #545
- Annotate members with P4 bit widths by @ffoulkes in #544
- [ovsp4rt] Implement unit test base classes by @ffoulkes in #553
- [ovsp4rt] Define ipv4_test_utils and ipv6_test_utils by @ffoulkes in #558
- [ovsp4rt] Revise IPv4 and IPv6 test values by @ffoulkes in #562
- [ovsp4rt] Fix byte order error in VNI encapsulation by @ffoulkes in #564
- [ovsp4rt] Tunnel encapsulation unit test suite by @ffoulkes in #563
- [ovsp4rt] Make the spies library optional by @ffoulkes in #565
- [ovsp4rt] Improve isolation of spies library build by @ffoulkes in #566
- Catch unhandled exceptions in sgnmi_cli by @ffoulkes in #567
- Update README and remove obsolete folders by @ffoulkes in #568
New Contributors
- @Hoooao made their first contribution in #219
- @satish153 made their first contribution in #267
- @aashishkuma made their first contribution in #324
- @ipdksw made their first contribution in #340
- @dependabot made their first contribution in #342
- @smittal-bf made their first contribution in #384
- @umohi made their first contribution in #420
Full Changelog: v0.9.1...v3.1.0.0
IPDK v24.01 Release
Networking Recipe
The networking recipe enhances and extends the functionality enabled in 23.07
release.
Features and enhancements
- Exception packet handling - Enhanced Linux Networking with multiple VNI
support, port to bridge association and VLAN traffic offload (Intel IPU E2100
target only). - Link Aggregation Group (LAG) - Supports active-backup use case of LAG on IDPF
interfaces done via bonding driver. This LAG interface is used only for underlay
connectivity in Exception packet handling feature. (Intel IPU E2100 target only). - Packet IO - Facilitates the exchange of packets between control plane
applications and P4 dataplane (Intel IPU E2100 target only). - Indexed and direct meters in policer mode - Metering along with policer
allows the users to determine the amount of data used and then control the
usage. (Intel IPU E2100 target only). - Security enhancements
- Upgrade from OpenSSL 1.1.1x to 3.x
- Library updates to address security issues
- Upgraded gRPC to 1.59.2 to address CVE-2023-33953, CVE-2023-4785
- Upgraded
protobuf
to version 25.0 - Upgraded
abseil-cpp
to version 20230802.0 - Upgraded
zlib
to version 1.3
- Build script updates
- Documentation updates
- Bug fixes
Limitations
- Exception packet handling feature limitations:
- VLAN configuration on OvS is supported only for NATIVE-TAG and NATIVE-UNTAG
modes. - Physical port's port representor should be added as the 1st port in Tunnel
TEP bridge. - Only OvS bridges are supported
- Configure p4rt-ctl runtime rules before OvS configuration.
- Double vlan tag is not supported.
- For VxLAN underlay connectivity, IPv6 Link Local as nexthop is not
supported. - For non FRR usecase, add a route with remote TEP IPv4/IPv6 as nexthop.
- IPv4-in-IPv6 and IPv6-in-IPv4 is not supported.
- VXLAN destination port should always be standard port i.e. 4789 to satisfy
parser limitation. - Any ofproto rules altering FDB learning on OVS are not supported.
- East-west traffic for fast path is not supported.
- Local IP for VxLAN configuration need to be provided.
- VLAN configuration on OvS is supported only for NATIVE-TAG and NATIVE-UNTAG
- Link Aggregation Group(LAG) feature limitations:
- LAG configuration to be done via bonding driver
- LAG configuration mode supported from infrap4d is active-backup
- For active-backup at least 2 links should be part of one lag group
- ECMP and LAG functionality are mutually exclusive, they cannot co-exist
in the same .p4 profile - Number of nexthop table entries cannot go beyond 8K because nexthop table
is of type WCM and hardware limits the no. of entries to 8K. - To encap VxLAN outer header for non underlay LAG interfaces, we need to
manually add entries in tx_lag_table with action as bypass. - Underlay LAG interface/members should not be associated with any OvS bridge
- Packet IO feature limitations:
- Supports maximum of 2 vports and each port supports maximum of 4 rx and tx
queues
- Supports maximum of 2 vports and each port supports maximum of 4 rx and tx
IPDK v23.07 Release
Networking Recipe
Feature support
- Re-architecture of the Networking Recipe. The recipe is now modular and
launched as theinfrap4d
process - Support for underlay traffic hashing with ECMP
- Support for dynamic underlay traffic via FRR, including routes learned with
ECMP - Flow dump support (including direct counters)
- TLS enablement to authenticate gRPC traffic
Limitations
- Linux Networking limitations are summarized here:
https://github.com/ipdk-io/networking-recipe/blob/main/p4src/linux_networking/README_LINUX_NETWORKING.md#limitations - Unable to delete OVS bridge using command
ovs-vsctl del-br
while actively
running traffic. User needs to stop all the networking recipe processes to
proceed
with bridge deletion - Flow dump & counters: A table-id/counter-id=0 is not yet supported
- TLS feature: Custom certificate location is unsupported for P4RT gRPC client.
Certificates are expected in default location (/usr/share/stratum/certs) - TLS feature: If infrap4d is operating in insecure mode, gRPC clients may fail
connecting
to the server. Move the certificates out of the default location
(/usr/share/stratum/certs/ folder) in order to use insecure communication
between gRPC clients and server