ietf-wg-idr / draft-ietf-idr-bgp-car

0 stars 0 forks source link

F3-CAR-Issue-5: BGP Update Packing #5

Closed sa1231-coder closed 8 months ago

sa1231-coder commented 1 year ago
sa1231-coder commented 1 year 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.

suehares commented 1 year ago

Should list the section [3.2.1. ] of RFC9252

suehares commented 1 year ago
suehares commented 1 year ago

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.

dhrao1 commented 1 year ago

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
suehares commented 1 year ago

Do you have a measurement or is this a theoretical discussion?

As it is described, it indicates a theoretical discussion.

sa1231-coder commented 8 months ago

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