[j-nsp] Parameters/variables in policy-statements
Jason Lixfeld
jason-jnsp at lixfeld.ca
Thu Aug 2 14:45:02 EDT 2018
Hey there,
I’m somewhat green to JunOS coming from a primarily IOS/IOS XR background. IOS XR’s route-policy language supports the use of variables, or parameters, which essentially allows me to create a template that accepts some variables, and adjust the parameters that set those variables at various levels in the config.
For example:
!
route-policy GLOBAL-POLICY($LP, $MED, $SERVICE)
set local-preference $LP
set med $MED
set community (21949:$SERVICE) additive
end-policy
!
route-policy IXP-OUT($IXP, $IXP_RTBH_ASN, $IXP_RTBH_ID)
apply GLOBAL-FILTER
if community matches-any ANNOUNCE--UPSTREAM then
pass
if community matches-any (21949:666) then
set community ($IXP_RTBH_ASN:$IXP_RTBH_ID)
done
elseif community matches-any (21949:2000) then
drop
elseif community matches-any (21949:$IXP) then
drop
else
delete community all
done
endif
drop
endif
end-policy
!
route-policy IXP-IN($IXP, $LP, $MED, $SERVICE)
set community (21949:$IXP)
apply GLOBAL-FILTER
apply GLOBAL-POLICY($LP, $MED, $SERVICE)
end-policy
!
neighbor-group IXP-V4
address-family ipv4 unicast
route-policy IXP-IN($IXP, $LP, $MED, $SERVICE) in
maximum-prefix 100000 90 restart 5
route-policy IXP-OUT(2010, 0, 0) out
!
!
…
…
…
neighbor 1.2.3.4
remote-as 1234
use neighbor-group IXP-V4(2010, 390, 0, 2000)
neighbor 2.3.4.5
remote-as 2345
route-policy IXP-V4(2020, 190, 0, 3000) in
route-policy IXP-OUT(2020, 2345, 666) out
…
…
I don’t believe JunOS supports the same functionally directly, so I think I’d have to use commit scripts to accomplish something similar. As I’m trying to familiarize myself with it all, I can’t seem to determine the various ways that the parameters could be pulled from the config for the commit scripts to utilize.
2 possibilities come to mind:
- Create a BGP group for each different set of parameter combinations and have the commit script set parameters for the neighbor based on what group they are in.
or,
- Come up with a standard convention for defining the neighbor description, such that the parameters could be encoded into the description. The commit script could then set parameters based on the values in the appropriate positions within the description.
Both of these seem somewhat complex, but perhaps only because they are unfamiliar. Are there other ways of doing this that might prove to be (more) effective?
Thanks in advance.
More information about the juniper-nsp
mailing list