[j-nsp] "community set" vs "community add"

Harry Reynolds harry at juniper.net
Thu Oct 31 15:50:33 EDT 2013


Perhaps when you use set, which strips the existing comm. set as mentioned, this includes the "Layer2 Info Extended Community" as per rfc 4761, which is needed to signal bgp based vpls.  

Seems you go from this:

                 Communities: target:10:10 Layer2-info: encaps: VPLS, control flags:[0x0] , mtu: 0, site preference: 100

To this:


                Communities: target:10:10

I belive that would explain why add, which leaves the existing set intact, is working.

Regards



-----Original Message-----
From: Mihai [mailto:mihaigabriel at gmail.com] 
Sent: Thursday, October 31, 2013 12:19 PM
To: Harry Reynolds
Cc: EXT - ipv6freely at gmail.com; juniper-nsp at puck.nether.net
Subject: Re: [j-nsp] "community set" vs "community add"

I agree, but I don't think you understand what I am trying to do.
Let's take it step by step:

- z advertises l2vpn route to RR q


z> show route advertising-protocol bgp 20.20.20.3 detail

mihai-vpls.l2vpn.0: 2 destinations, 2 routes (2 active, 0 holddown, 0
hidden)
*  20:20:2:1/96 (1 entry, 1 announced)
  BGP group ibgp type Internal
      Route Distinguisher: 20:20
      Label-base: 800000, range: 8
      Nexthop: Self
      Flags: Nexthop Change
      Localpref: 100
      AS path: [65550] I
      Communities: target:20:20 Layer2-info: encaps: VPLS, control flags:[0x0] , mtu: 0, site preference: 100

- the RR should replace the community "target:20:20" advertised by z with "target:10:10" and the advertise the prefix to x (RR client)

q# run show route table bgp.l2vpn.0 detail

bgp.l2vpn.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
  10:10:1:1/96 (1 entry, 1 announced)
         *BGP    Preference: 170/-101
                 Route Distinguisher: 10:10
                 Next hop type: Indirect
                 Address: 0x26ec814
                 Next-hop reference count: 1
                 Source: 20.20.20.1
                 Protocol next hop: 20.20.20.1
                 Indirect next hop: 2 no-forward INH Session ID: 0x0
                 State: <Active Int Ext>
                 Local AS: 65550 Peer AS: 65550
                 Age: 3:13:27 	Metric2: 1
                 Validation State: unverified
                 Task: BGP_65550.20.20.20.1+58349
                 Announcement bits (1): 0-BGP_RT_Background
                 AS path: I
                 Communities: target:10:10 Layer2-info: encaps: VPLS, control flags:[0x0] , mtu: 0, site preference: 100
                 Accepted
                 Label-base: 800000, range: 8
                 Localpref: 100
                 Router ID: 20.20.20.1


- x accepts the l2vpn route from RR and place it in the vrf-l2vpn table

x> show route receive-protocol bgp 20.20.20.3 table mihai-vpls.l2vpn.0 
detail

mihai-vpls.l2vpn.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 
hidden)
*  20:20:2:1/96 (1 entry, 0 announced)
      Import Accepted
      Route Distinguisher: 20:20
      Label-base: 800000, range: 8, status-vector: 0x0
      Nexthop: 20.20.20.2
      Localpref: 100
      AS path: I (Originator)
      Cluster list:  0.0.0.1
      Originator ID: 20.20.20.2
      Communities: target:10:10

Now, x should have a vpls connection up,but this is not the case when 
the policy used on RR for changing the community target:20:20 to 
target:10:10 is this:

q# show policy-statement from-z
term 10 {
     from {
         protocol bgp;
         community vpls-z;
     }
     then {
         community set vpls-x;
         accept;
     }
}

q# top show protocols bgp
group ibgp {
     type internal;
     local-address 20.20.20.3;
     family l2vpn {
         signaling;
     }
     cluster 0.0.0.1;
     neighbor 20.20.20.1;
     neighbor 20.20.20.2 {
         import from-z;
         export to-z;
     }
}


x> show vpls connections

Legend for interface status
Up -- operational
Dn -- down

Instance: mihai-vpls
   Local site: a (1)
No connections found.




If I change the policy to:

q# show policy-statement from-z
term 10 {
     from {
         protocol bgp;
         community vpls-z;
     }
     then {
         community delete vpls-z;
         community add vpls-x;
         accept;
     }
}

then vpls comes up:

Legend for interface status
Up -- operational
Dn -- down

Instance: mihai-vpls
   Local site: a (1)
     connection-site           Type  St     Time last up          # Up trans
     2                         rmt   Up     Oct 31 21:23:39 2013           1
       Remote PE: 20.20.20.2, Negotiated control-word: No
       Incoming label: 800001, Outgoing label: 800000
       Local interface: vt-1/0/10.235929856, Status: Up, Encapsulation: VPLS
         Description: Intf - vpls mihai-vpls local site 1 remote site 2





On 10/31/2013 08:58 PM, Harry Reynolds wrote:
> If memory serves, the add adds to what is there, while set replaces what was there with what you are now adding. One appends, the other replaces, so not the same.
>
> Regards
>
>
>
> -----Original Message-----
> From: juniper-nsp [mailto:juniper-nsp-bounces at puck.nether.net] On Behalf Of Mihai
> Sent: Thursday, October 31, 2013 11:53 AM
> To: EXT - ipv6freely at gmail.com
> Cc: juniper-nsp at puck.nether.net
> Subject: Re: [j-nsp] "community set" vs "community add"
>
> Aren't these 2 policies  the same thing?
>
>
>    policy-statement from-z {
>            term 10 {
>                 from {
>                     protocol bgp;
>                     community vpls-z;
>                 }
>                 then {
>                     community delete vpls-z;
>                     community add vpls-x;
>                     accept;
>                 }
>             }
>        }
>
>
>
> policy-statement from-z {
>             term 10 {
>                 from {
>                     protocol bgp;
>                     community vpls-z;
>                 }
>                 then {
>                     community set vpls-x;
>                     accept;
>                 }
>             }
>        }
>
>
>
> On 10/31/2013 08:46 PM, Chris Jones wrote:
>> set replaces all values with just the one specified.
>> add adds the specified community to the already existing list
>>
>>
>> On Thu, Oct 31, 2013 at 9:25 AM, Mihai <mihaigabriel at gmail.com
>> <mailto:mihaigabriel at gmail.com>> wrote:
>>
>>      Hello,
>>
>>        Using a simple topology with 2 PE's and one RR I am trying to
>>      establish a vpls connection between PE's using different route-targets.
>>      I am using the RR to rewrite the communities, but using "community
>>      set" instead of "community add" results in a "No connections found"
>>      message on both PE's.
>>
>>      x and z are PE's, q is RR
>>
>>      x> show configuration routing-instances mihai-vpls
>>      instance-type vpls;
>>      vlan-id 880;
>>      interface ge-1/1/6.880;
>>      route-distinguisher 10:10;
>>      vrf-target target:10:10;
>>      protocols {
>>           vpls {
>>               site a {
>>                   site-identifier 1;
>>               }
>>           }
>>      }
>>
>>      z> show configuration routing-instances mihai-vpls
>>      instance-type vpls;
>>      vlan-id 880;
>>      interface ge-1/1/7.980;
>>      route-distinguisher 20:20;
>>      vrf-target target:20:20;
>>      protocols {
>>           vpls {
>>               site b {
>>                   site-identifier 2;
>>               }
>>           }
>>      }
>>
>>      q# show policy-options
>>      policy-statement from-z {
>>           term 10 {
>>               from {
>>                   protocol bgp;
>>                   community vpls-z;
>>               }
>>               then {
>>                   community set vpls-x;
>>                   accept;
>>               }
>>           }
>>      }
>>      policy-statement to-z {
>>           term 10 {
>>               from {
>>                   protocol bgp;
>>                   community vpls-x;
>>               }
>>               then {
>>                   community set vpls-z;
>>                   accept;
>>               }
>>           }
>>      }
>>      community vpls-x members target:10:10;
>>      community vpls-z members target:20:20;
>>
>>
>> ------------------------------__------------------------------__----
>>
>>
>>      x> show vpls connections
>>      Layer-2 VPN connections:
>>
>>      Legend for connection status (St)
>>      EI -- encapsulation invalid      NC -- interface encapsulation not
>>      CCC/TCC/VPLS
>>      EM -- encapsulation mismatch     WE -- interface and instance encaps
>>      not same
>>      VC-Dn -- Virtual circuit down    NP -- interface hardware not present
>>      CM -- control-word mismatch      -> -- only outbound connection is up
>>      CN -- circuit not provisioned    <- -- only inbound connection is up
>>      OR -- out of range               Up -- operational
>>      OL -- no outgoing label          Dn -- down
>>      LD -- local site signaled down   CF -- call admission control failure
>>      RD -- remote site signaled down  SC -- local and remote site ID
>>      collision
>>      LN -- local site not designated  LM -- local site ID not minimum
>>      designated
>>      RN -- remote site not designated RM -- remote site ID not minimum
>>      designated
>>      XX -- unknown connection status  IL -- no incoming label
>>      MM -- MTU mismatch               MI -- Mesh-Group ID not available
>>      BK -- Backup connection          ST -- Standby connection
>>      PF -- Profile parse failure      PB -- Profile busy
>>      RS -- remote site standby        SN -- Static Neighbor
>>      LB -- Local site not best-site   RB -- Remote site not best-site
>>      VM -- VLAN ID mismatch
>>
>>      Legend for interface status
>>      Up -- operational
>>      Dn -- down
>>
>>      Instance: mihai-vpls
>>         Local site: a (1)
>>      No connections found.
>>
>>      x> show route table mihai-vpls.l2vpn.0 detail
>>
>>      mihai-vpls.l2vpn.0: 2 destinations, 2 routes (2 active, 0 holddown,
>>      0 hidden)
>>        10:10:1:1/96 (1 entry, 1 announced)
>>               *L2VPN  Preference: 170/-101
>>                       Next hop type: Indirect
>>                       Address: 0x26d8270
>>                       Next-hop reference count: 2
>>                       Protocol next hop: (null)
>>                       Indirect next hop: 0 - INH Session ID: 0x0
>>                       State: <Active Int Ext>
>>                       Age: 22:36      Metric2: 1
>>                       Validation State: unverified
>>                       Task: mihai-vpls-l2vpn
>>                       Announcement bits (1): 1-BGP_RT_Background
>>                       AS path: I
>>                       Communities: Layer2-info: encaps: VPLS, control
>>      flags:[0x0] , mtu: 0, site preference: 100
>>                       Label-base: 800000, range: 8, status-vector: 0x7F
>>
>>        20:20:2:1/96 (1 entry, 0 announced)
>>               *BGP    Preference: 170/-101
>>                       Route Distinguisher: 20:20
>>                       Next hop type: Indirect
>>                       Address: 0x26d8990
>>                       Next-hop reference count: 2
>>                       Source: 20.20.20.3
>>                       Protocol next hop: 20.20.20.2
>>                       Indirect next hop: 2 no-forward INH Session ID: 0x0
>>                       State: <Secondary Active Int Ext>
>>                       Local AS: 65550 Peer AS: 65550
>>                       Age: 3:10       Metric2: 1
>>                       Validation State: unverified
>>                       Task: BGP_65550.20.20.20.3+179
>>                       AS path: I (Originator)
>>                       Cluster list:  0.0.0.1
>>                       Originator ID: 20.20.20.2
>>                       Communities: target:10:10
>>                       Import Accepted
>>                       Label-base: 800000, range: 8, status-vector: 0x0
>>                       Localpref: 100
>>                       Router ID: 20.20.20.3
>>                       Primary Routing Table bgp.l2vpn.0
>>
>>
>>      z> show route table mihai-vpls.l2vpn.0 detail
>>
>>      mihai-vpls.l2vpn.0: 2 destinations, 2 routes (2 active, 0 holddown,
>>      0 hidden)
>>        10:10:1:1/96 (1 entry, 0 announced)
>>               *BGP    Preference: 170/-101
>>                       Route Distinguisher: 10:10
>>                       Next hop type: Indirect
>>                       Address: 0x26d8990
>>                       Next-hop reference count: 2
>>                       Source: 20.20.20.3
>>                       Protocol next hop: 20.20.20.1
>>                       Indirect next hop: 2 no-forward INH Session ID: 0x0
>>                       State: <Secondary Active Int Ext>
>>                       Local AS: 65550 Peer AS: 65550
>>                       Age: 2:55       Metric2: 1
>>                       Validation State: unverified
>>                       Task: BGP_65550.20.20.20.3+62459
>>                       AS path: I (Originator)
>>                       Cluster list:  0.0.0.1
>>                       Originator ID: 20.20.20.1
>>                       Communities: target:20:20
>>                       Import Accepted
>>                       Label-base: 800000, range: 8
>>                       Localpref: 100
>>                       Router ID: 20.20.20.3
>>                       Primary Routing Table bgp.l2vpn.0
>>
>>        20:20:2:1/96 (1 entry, 1 announced)
>>               *L2VPN  Preference: 170/-101
>>                       Next hop type: Indirect
>>                       Address: 0x26d8270
>>                       Next-hop reference count: 2
>>                       Protocol next hop: (null)
>>                       Indirect next hop: 0 - INH Session ID: 0x0
>>                       State: <Active Int Ext>
>>                       Age: 22:21      Metric2: 1
>>                       Validation State: unverified
>>                       Task: mihai-vpls-l2vpn
>>                       Announcement bits (1): 1-BGP_RT_Background
>>                       AS path: I
>>                       Communities: Layer2-info: encaps: VPLS, control
>>      flags:[0x0] , mtu: 0, site preference: 100
>>                       Label-base: 800000, range: 8, status-vector: 0xBF
>>
>>
>>      -----------------------------
>>
>>
>>      If I change the policies on RR then vpls comes up:
>>
>>      q# show policy-options
>>      policy-statement from-z {
>>           term 10 {
>>               from {
>>                   protocol bgp;
>>                   community vpls-z;
>>               }
>>               then {
>>                   community delete vpls-z;
>>                   community add vpls-x;
>>                   accept;
>>               }
>>           }
>>      }
>>      policy-statement to-z {
>>           term 10 {
>>               from {
>>                   protocol bgp;
>>                   community vpls-x;
>>               }
>>               then {
>>                   community delete vpls-x;
>>                   community add vpls-z;
>>                   accept;
>>               }
>>           }
>>      }
>>      community vpls-x members target:10:10;
>>      community vpls-z members target:20:20;
>>
>>      x> show vpls connections | find connection-site
>>           connection-site           Type  St     Time last up          #
>>      Up trans
>>           2                         rmt   Up     Oct 31 18:22:35 2013
>>             1
>>             Remote PE: 20.20.20.2, Negotiated control-word: No
>>             Incoming label: 800001, Outgoing label: 800000
>>             Local interface: vt-1/1/10.235929600, Status: Up,
>>      Encapsulation: VPLS
>>               Description: Intf - vpls mihai-vpls local site 1 remote
>> site 2
>>
>>
>>      I can't understand what's the problem here.
>>
>>      Regards,
>>      Mihai
>>      _________________________________________________
>>      juniper-nsp mailing list juniper-nsp at puck.nether.net
>>      <mailto:juniper-nsp at puck.nether.net>
>>      https://puck.nether.net/__mailman/listinfo/juniper-nsp
>>      <https://puck.nether.net/mailman/listinfo/juniper-nsp>
>>
>>
>>
>>
>> --
>> Chris Jones
>> JNCIE-ENT #272
>> CCIE# 25655 (R&S)
> _______________________________________________
> juniper-nsp mailing list juniper-nsp at puck.nether.net https://puck.nether.net/mailman/listinfo/juniper-nsp
>
>
>





More information about the juniper-nsp mailing list