Routing

Expand all | Collapse all

BGP AS Path Prepend Query

  • 1.  BGP AS Path Prepend Query

    Posted 05-24-2021 15:52
    Hello,

    I have a question regarding AS path prepend.  I have an EBGP with a another customer and I am advertising all routes in my routing table to this BGP neighbour.
    We are also learning several /24s from this customer and advertising those out to upstream carriers. The customer has come back to say they are also using several other ISPs to advertise these ranges  out to internet therefore would like to check if we  would allow AS Path prepend. 

    I have limited knowledge of AS PATH prepend therefore would like to know how can we achieve this or if in my config below is there anything that is blocking AS path prepend.

    set protocols bgp group customers neighbor 2.2.2.2 description Customer-Transit
    set protocols bgp group customers neighbor 2.2.2.2 local-address 2.2.2.1
    set protocols bgp group customers neighbor 2.2.2.2 import CUST_ASCustomer-AS
    set protocols bgp group customers neighbor 2.2.2.2 export CUST_ASCustomer-AS-export
    set protocols bgp group customers neighbor 2.2.2.2 export default
    set protocols bgp group customers neighbor 2.2.2.2 peer-as Customer-AS


    set policy-options prefix-list customer_ASCustomer-AS 3.3.3.0/22



    set policy-options policy-statement CUST_ASCustomer-AS term valid-prefixes from prefix-list-filter customer_ASCustomer-AS orlonger
    set policy-options policy-statement CUST_ASCustomer-AS term valid-prefixes then local-preference 900
    set policy-options policy-statement CUST_ASCustomer-AS term valid-prefixes then community set MY-transit-customer
    set policy-options policy-statement CUST_ASCustomer-AS term valid-prefixes then accept
    set policy-options policy-statement CUST_ASCustomer-AS then reject



    set policy-options policy-statement CUST_ASCustomer-AS-export term transit-routes from protocol bgp
    set policy-options policy-statement CUST_ASCustomer-AS-export term transit-routes from community MY-transit-route
    set policy-options policy-statement CUST_ASCustomer-AS-export term transit-routes then community delete all-communities
    set policy-options policy-statement CUST_ASCustomer-AS-export term transit-routes then accept

    set policy-options policy-statement CUST_ASCustomer-AS-export term public-peering-routes from protocol bgp
    set policy-options policy-statement CUST_ASCustomer-AS-export term public-peering-routes from community MY-public-peer
    set policy-options policy-statement CUST_ASCustomer-AS-export term public-peering-routes then community delete all-communities
    set policy-options policy-statement CUST_ASCustomer-AS-export term public-peering-routes then accept

    set policy-options policy-statement CUST_ASCustomer-AS-export term private-peering-routes from protocol bgp
    set policy-options policy-statement CUST_ASCustomer-AS-export term private-peering-routes from community MY-private-peer
    set policy-options policy-statement CUST_ASCustomer-AS-export term private-peering-routes then community delete all-communities
    set policy-options policy-statement CUST_ASCustomer-AS-export term private-peering-routes then accept
    set policy-options policy-statement CUST_ASCustomer-AS-export then next policy


    Please can someone advise how to make sure we are not filtering AS path prepend using above.


  • 2.  RE: BGP AS Path Prepend Query

    Posted 05-25-2021 03:55
    Assuming you're not making any amendments on your upstream transit peering sessions, then your customer should be able to pre-pend without an issue based on your policy.  If the customer updates their export policy towards you then you'll see your customers prefixes with a longer as-path. Your policies will not impact this behaviour. :)

    ------------------------------
    DANIEL HEARTY
    Principal Engineer
    ------------------------------



  • 3.  RE: BGP AS Path Prepend Query

     
    Posted 05-25-2021 06:32
    There is a catch here.

    If you are getting full tables from the upstream ISP, this will include the prefix your customer is advertising to their primary ISP.

    You then receive that same prefix directly from the customer so you need to choose which one is active in your table.

    If your customer prepends the ISP route will be active and not the customer one.

    You will NOT be able to advertise a route you learn from the ISP BACK to that same ISP.

    To overcome this you need the customer route to be active in your table so your customer needs to NOT prepend.

    Then you need to choose an option to do the prepending on your end.
    Option 1: Create a specific policy statement for this customer to prepend when you advertise to the ISP
    Option 2: Create a community that your customer can use to add to their routes on their side asking for prepend per route.  Then your policy reads the community options and acts accordingly.

    Option 2 is then extendable to other routing options and is common among ISP.
    example from centurylink: https://onestep.net/communities/as209/

    ------------------------------
    Steve Puluka BSEET - Juniper Ambassador
    IP Architect - DQE Communications Pittsburgh, PA (Metro Ethernet & ISP)
    http://puluka.com/home
    ------------------------------