Closed sa1231-coder closed 8 months ago
Section 2.9.2.3 (SRv6 SID TLV) updated with BGP-CAR NLRI design update packing benefits with complete SID and transposition part in NLRI without compromise on robustness.
Should list the section [3.2.1. ] of RFC9252
Appendix C needs to have more detail on tests.
See benchmarking WG on BGP convergence tests.
https://github.com/ietf-wg-idr/draft-ietf-idr-bgp-ct/blob/main/update-packing-test-results.txt
As an example of the full detail.
I'm struggling to determine if we need to put these results into an informational document. Since these are experimental protocols, these type of informational documents are useful later in going from experimental to proposed standards.
Added analysis for SRv6 cases.
Appendix C. CAR SAFI NLRI update packing efficiency calculation
CAR SAFI NLRI encoding is optimized for BGP update packing i.e. it allows per prefix information (example label index, SRv6 SID) to be carried in non key TLV part of NLRI. This allows multiple NLRIs to be packed in single update message when other attributes are shared. Example below shows gain convergence time and reduction in total BGP data on the wire.
Consider 1.5 million routes and average 5 NLRIs sharing attributes: Number of update messages: 1.5M/5 = 300K update messages instead of 1.5M without packing
Convergence time presuming 10k updates/second
300k/10k = 30 seconds instead of 2.5 minutes without packing
Reduction of BGP data:
Case 1: Label tlv and Label Index tlv
Consider 200 bytes of shared attributes
Each NLRI size for AFI 1 = 12(key) + 5(label) + 9(Index) = 26 bytes
Update message size = (26 * 5 NLRIs) + 200 = 330 bytes;
Total BGP bytes with packing = 330 * 300k = 99MB
Total BGP bytes without packing (200 + 26) * 1.5M = 339MB
Result: Update packing reduces data exchange by 3.5 times
Case 2: Single 128-bit SRv6 SID tlv
Consider 200 bytes of shared attributes
Each NLRI size for AFI 1 = 12(key) + 18(SRv6 SID) = 30 bytes
Update message size = (30 * 5 NLRIs) + 200 = 350 bytes;
Total BGP bytes with packing = 350 * 300k = 105MB
Total BGP bytes without packing (200 + 30) * 1.5M = 345MB
Result: Total BGP data, packing efficiency similar to MPLS case
Case 3: Transposed SRv6 SID tlv
16 bytes SRv6 SID has locator part and function part. 4 bytes function
part is unique per NLRI and hence transposed into 4 byte SRv6 SID TLV
and rest carried in prefix SID attribute as per RFC 9252 section 3.2.1
and 4
Consider 200 bytes of shared attributes
Each NLRI size for AFI 1 = 12(key) + 6(function part of SRv6 SID) = 18 bytes
Update message size = (18 * 5 NLRIs) + 200 = 290 bytes;
Total BGP bytes with packing = 290 * 300k = 87MB
Result: Transposition saves approximately 20% BGP data compared to previous
Do you have a measurement or is this a theoretical discussion?
As it is described, it indicates a theoretical discussion.
Addressed the comments regarding the theoretical analysis. Also attached (https://github.com/ietf-wg-idr/draft-ietf-idr-bgp-car/blob/working_tree/bgp_car_update_packing_result_gh.pdf)) with test results
Section 6 on Scaling needs to be expanded to include:
Section 2.9.2.3 needs to be upgraded to point to examples in Appendices of carrying single 128-bit SRv6 SID and Stack of SRv6-SIDs. The examples in the appendices should also reference back to scaling in section 6.