Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
sa1231-coder opened this issue Jan 3, 2023 · 7 comments
Closed

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

sa1231-coder opened this issue Jan 3, 2023 · 7 comments

Comments

@sa1231-coder
Copy link
Collaborator

  • Section 6 on Scaling needs to be expanded to include:

    • Bytes added to BGP UPDATE message for CAR NLRI with SRv6
      • A single 128-bit SRv6 SID or a stack of 128-bit SRv6 SIDs
      • A transposed portion (refer [I-D.ietf-bess-srv6-services]) of the SRv6 SID that MUST be of size in multiples of one octet and less than 16.
    • Compression allowed due to signal multiple per-prefix encapsulation types & values as part of NLRI. e.g. MPLS Label, SRv6 SID and any other encapsulations.
  • 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.

@sa1231-coder
Copy link
Collaborator Author

sa1231-coder commented Jan 23, 2023

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.

@sa1231-coder sa1231-coder reopened this Jan 23, 2023
sa1231-coder added a commit that referenced this issue Mar 25, 2023
#5 
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
Copy link
Collaborator

suehares commented Jun 1, 2023

  • A transposed portion (refer [RFC9252]) of the SRv6 SID that
    MUST be of size in multiples of one octet and less than 16.

Should list the section [3.2.1. ] of RFC9252

@suehares
Copy link
Collaborator

suehares commented Jun 1, 2023

  • Highly efficient transposition scheme (12-14 bytes saved per
    NLRI), also maintaining BGP update prefix packing
  • you may want to think about adding examples (in section 6 perhaps)?

@suehares
Copy link
Collaborator

suehares commented Jun 4, 2023

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
Copy link
Collaborator

dhrao1 commented Jun 9, 2023

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
Copy link
Collaborator

suehares commented Jun 9, 2023

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

As it is described, it indicates a theoretical discussion.

sa1231-coder added a commit that referenced this issue Jun 21, 2023
@sa1231-coder
Copy link
Collaborator Author

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

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

No branches or pull requests

3 participants