[j-nsp] Community matching policy
Andrew Khan
good1uzi at outlook.com
Mon Mar 31 08:13:46 EDT 2014
Thanks, Dave! Your table is awesome and clarified my doubts and clicked into my mind :) On your query, "It may be possible to add the two communities into one community statement. I'm unsure how exactly that will behave though"
let's say something like
community A members [ 100:100 101:101 ]; // pretty much (100:100 AND 101:101) //
In that case, the route must have a community that matches 100:100 and a community that matches 101:101
http://www.juniper.net/techpubs/en_US/junos10.0/information-products/topic-collections/config-guide-policy/policy-bgp-communities-extended-communities-evaluation-in-routing-policy-match-conditions.html
Kind regards,
Date: Mon, 31 Mar 2014 12:59:57 +0100
Subject: Re: [j-nsp] Community matching policy
From: me at geordish.org
To: good1uzi at outlook.com
CC: krasi at smartcom.bg; juniper-nsp at puck.nether.net
The logic of !A OR !B makes my head hurt, so its simple to write out a truth table to work out exactly what it does.
A | B | !A OR !B
-----------------------
T | T | F
T | F | T
F | T | T
F | F | T
This makes it clear that !A OR !B is identical to !(A AND B)
I don't think there is any way to do what you are interested in with the invert-match statement. I would just do something like this
term A {
from {
community [ A B ];
}
then accept;
}
reject;
community A {
members 100:100;
}
community B {
members 101:101;
}
It may be possible to add the two communities into one community statement. I'm unsure how exactly that will behave though.
Regards,
Dave
On 31 March 2014 12:47, Andrew Khan <good1uzi at outlook.com> wrote:
In addition to my last question, what I don't understand is that !A OR !B <=> !(A AND B) /// how come it became AND operation rather than logical OR///
>From Juniper documentation:
You can include the names of multiple communities in the community match condition. If you do this, only one community needs to match for a match to occur (matching is effectively a logical OR operation).
Is it invert-match causing this behavior? What if I don't use invert-match, will it be a logical OR operation e.g. A OR B <=> A OR B or will it be A OR B <=> (A AND B)
Thanks
> From: good1uzi at outlook.com
> To: krasi at smartcom.bg
> Date: Mon, 31 Mar 2014 11:00:48 +0000
> CC: juniper-nsp at puck.nether.net
> Subject: Re: [j-nsp] Community matching policy
>
>
>
>
> Hello Krasi,
> Thanks for the reply, appreciated. Sorry I did not mention in my first email that I'm trying to find a workaround while using invert-match. Any idea on achieving the same results when using invert-match.
>
> Kind regards,
>
>
> Date: Mon, 31 Mar 2014 13:41:40 +0300
> Subject: Re: [j-nsp] Community matching policy
> From: krasi at smartcom.bg
> To: good1uzi at outlook.com
> CC: juniper-nsp at puck.nether.net
>
> A match 100:100B match 101:101 Your TEST1 term match on !A OR !B <=> !(A AND B), so it effectively rejects every route that has NO communities 100:100 AND 101:101 (at the same time)
> Your target is to accept A OR B, so you can first match and accept on these communities (TEST1 OR TEST2 defined without invert-match) and then reject everything else.
> Best Regards,
> Krasi
>
> On 31 March 2014 12:10, Andrew Khan <good1uzi at outlook.com> wrote:
>
> Hi -
>
>
>
> Let's say I want to reject everything except the following communities:
>
>
>
> Either 100:100
>
> OR 101:101
>
> OR both 100:100 101:100
>
>
>
> Tried to setup something:
>
>
>
> [edit policy-options]
>
> policy-statement TEST {
>
> term TEST1 {
>
> from community [ TEST1 TEST2 ]; ///////Is not it logical OR, and matching everything except what I want because of invert-match//////
>
> then reject;
>
> }
>
> term TEST2 {
>
> then accept; //// And then this should accept what I wanted /////
>
> }
>
> }
>
>
>
> [edit policy-options]
>
> community TEST1 {
>
> invert-match;
>
> members 100:100;
>
> }
>
> community TEST2 {
>
> invert-match;
>
> members 101:101;
>
> }
>
>
>
> However it is rejecting everything. Any thoughts what I'm missing here or perhaps the approach is not correct.
>
>
>
> Thanks in advance.
>
>
>
>
>
> _______________________________________________
>
> juniper-nsp mailing list juniper-nsp at puck.nether.net
>
> https://puck.nether.net/mailman/listinfo/juniper-nsp
>
>
>
>
> _______________________________________________
> juniper-nsp mailing list juniper-nsp at puck.nether.net
> https://puck.nether.net/mailman/listinfo/juniper-nsp
_______________________________________________
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