DO Ambassadors 2014
DO Ambassadors 2014
DO Ambassadors 2014
By Martin Brown, Petr Klemaj, Steve Puluka, Clay Haynes, Kevin Barker,
Darren OConnor, David Roy, & Scott Ware
ITS DAY ONE AND YOU HAVE A JOB TO DO, SO LEARN HOW TO:
Configure a Q-in-Q tunnel on the EX Series
Use Junos configuration groups to automate network schedules and updates
Deploy firewall policies on multiple devices with Juniper Space Security
Director
Update your QFX Series version of Spanning Tree Protocol (STP) from RSTP
(802.1w) to MSTP (802.1s)
Create independent Micro BFD sessions for LAG
Interop the SRX Series to a variety of vendor devices
Configure a SRX Series integrated firewall
... and eleven more from the Juniper Ambassador playlist, from MX Series port
mirroring to SRX conditional route advertising.
Juniper Networks Books are singularly focused on network productivity and efficiency. Peruse the
complete library at www.juniper.net/books.
Published by Juniper Networks Books
ISBN 978-1936779987
9 781936 779987
51800
Day One:
Juniper Ambassadors Cookbook 2014
By Martin Brown, Petr Klemaj, Steve Puluka, Clay Haynes,
Kevin Barker, Darren OConnor, David Roy, and Scott Ware
iv
Welcome Ambassadors!
Juniper Ambassadors are global technical/brand advocates that actively
participate across Juniper community and social programs. They are a
diverse set of network engineers, consultants, and architects who work
in the field with Juniper technologies on a daily basis. The Juniper
Ambassadors mission is spreading the word about the power of Junos
to the worlds networking and security engineers.
vi
Audience
This book is primarily intended for Enterprise network administrators
and provides field-tested recipes for common network deployment
scenarios, as well as brief background information needed to understand
and deploy these solutions in your own environment.
vii
viii
Recipe 1
Configuring Q-in-Q Tunnels on the EX Series
by Martin Brown
Problem
There are instances in todays modern networks where two
devices need to appear to be directly connected to each other.
This is easily achieved by using a crossover cable if the two
devices are in the same rack, but what if these two devices are in
different racks, the distance between which exceeds the limit of
unshielded twisted pair wiring (UTP)? You could use fiber, but
what if the devices dont support fiber? You could use a UTP-tofiber convertor, but this adds an additional cost. Happily, there is
an answer that allows you to use your existing network infrastructure, normally, with no additional cost. This option is known
as Q-in-Q or dot1q tunneling.
Solution
With dot1q tunneling, a dot1q header is placed onto the frame as
it enters the switch. If the frame originated from another switch,
which has already performed VLAN tagging and has already
placed a dot1q header in the frame, then an additional header is
added so that the frame is tagged twice. This header is then
removed once the frame is sent out the correct port but can be
kept if the frame is sent out a trunk link to another switch,
thereby allowing this tunneled frame to pass over many
switches before reaching its final destination.
10
Figure 1.1
NOTE
root@EX-SWITCH>showconfigurationvlans
MARKETING{
vlan-id10;
interface{
ge-0/0/22.0;
}
}
FINANCE{
vlan-id20;
interface{
ge-0/0/23.0;
}
}
default{
interface{
ge-0/0/0.0;
}
l3-interfacevlan.0;
}
The first step is to create a VLAN whose sole purpose is to carry the
tunneled frame. In this case lets create a VLAN called QINQ and
assign the VLAN ID of 1000 to it. Then lets tell the switch this VLAN
is for dot1q tunneling. The commands for this are:
setvlansQINQvlan-id1000
setvlansQINQdot1q-tunneling
Once this is set, you can then specify that this tunnel will be used for
Layer 2 protocols. By utilizing the context sensitive help, you can see
which options are available:
{master:0}[edit]
root@EX-SWITCH#setvlansQINQdot1q-tunnelinglayer2-protocol-tunneling?
Possiblecompletions:
802.1xTunnel802.1XPDUs
802.3ahTunnel802.3AH(EthernetLinkOAM)PDUs
allTunnelalllayer-2protocolPDUs
+apply-groupsGroupsfromwhichtoinheritconfigurationdata
+apply-groups-exceptDon'tinheritconfigurationdatafromthesegroups
cdpTunnelCDPPDUs
e-lmiTunnelE-LMIPDUs
gvrpTunnelGVRPPDUs
lacpTunnelLACPPDUs
lldpTunnelLLDPPDUs
mmrpTunnelMMRPPDUs
mvrpTunnelMVRPPDUs
stpTunnelSTPPDUs
udldTunnelUDLDPDUs
vstpTunnelVSTPPDUs
vtpTunnelVTPPDUs
As you can see, there are quite a few options including the ability to
tunnel BPDUs for Spanning Tree, LACP frames for aggregated links,
and CDP for Cisco devices. In this instance lets specify all Layer 2
protocols to be allowed through the tunnel:
setvlansQINQdot1q-tunnelinglayer2-protocol-tunnelingall
NOTE
setvlansQINQinterfacege-0/0/10.0
setvlansQINQinterfacege-0/0/11.0
NOTE
11
12
{master:0}
root@EX-SWITCH>showvlansQINQdetail
VLAN:QINQ,802.1QTag:1000,AdminState:Enabled
Dot1qTunnelingstatus:Enabled
Layer2ProtocolTunnelingstatus:Enabled
Numberofinterfaces:2(Active=2)
Untaggedinterfaces:ge-0/0/10.0*,ge-0/0/11.0*
You can also enter the following command to see how many frames of
each protocol have been tunneled:
showethernet-switchinglayer2-protocol-tunnelingstatistics
References
Should you wish to find out more about dot1q tunneling, you may find
the information contained within the following links useful:
http://www.juniper.net/techpubs/en_US/junos13.2/topics/concept/
qinq-tunneling-ex-series.html
http://www.juniper.net/techpubs/en_US/junos13.2/topics/task/configuration/qinq-tunneling-ex-series-cli.html
http://www.ieee802.org/1/pages/802.1ad.html
Recipe 2
Managed Switching for a Small Office Network
by Steve Puluka
Problem
Modern offices employ a diverse array of network-enabled
devices and security requirements. The standard office-networking environment requires Internet access, shared printers, and the
potential for peer-to-peer sharing within the LAN. Even then,
small organizations begin collecting a variety of special purpose
servers for shared applications, files, and resources. While
industrial SCADA controllers are network-enabled to interoperate and control the manufacturing process, each area has its own
traffic patterns and security requirements. Thus, the traditional
single-zone small business firewall is not optimal for these new
configurations despite the relatively small device counts.
Solution
To solve this predicament, managed switching is deployed along
with a full-feature multi-zone firewall using an SRX Series and an
EX Series switch. This permits the full segmentation of devices by
security needs and allows the control of permitted connections
between the device zones.
The design allows direct communications between the end user
computers and printers. All other zones are secured on the SRX
Series and have the ability for tighter security restrictions as
outlined in Table 2.1.
14
Table 2.1
Zone
Source
Zone
Destination
Services
Notes
Office
Engineering
Servers
Untrust
Internet
access
Office
Engineering
Servers
Internal
applications
Office
Engineering
Printers and
peer sharing
Engineering
Office
Printers and
peer sharing
Device
management
No access
Engineering
Server
SCADA
management
Backup
Figure 2.1 illustrates the physical topology and the elements and
connection needs of the design. The configuration for this recipe is
comprised of the following sequential steps:
Configure the EX switch services:
Set up management options and interface
Create the AE (aggregated Ethernet interface) for SRX
connection
Create VLANs
Assign ports to the VLANs
Configure the SRX firewall services
Set up management options and interface
Create the AE (aggregated Ethernet interface) for EX connection
Create VLAN
Assign port fe-0/0/7 to the default VLAN
Internet
SRX - 0/7
Office VLAN
Ports 0/0-0/11
SCADA VLAN
Ports 0/24-0/29
Engineering VLAN
Ports 0/12-0/23
Figure 2.1
EX - me0.0
NAS
Ports 0/42-0/43
Security System
Port 0/39
VmWare Host
Ports 0/44-04/7
The Physical Topology for Managed Switching for a Small Office Network
15
16
Configure EX Services
Step 1: Set up Management Options and Interface
setsystemservicesssh
setsystemservicesweb-managementhttps
setsystemservicesweb-managementhttpssystem-generated-certificate
Step 2: Create the AE (Aggregated Ethernet Interface) for the SRX Series Connection
First create the AE interface and add the two ports to the LAG group
while setting active mode for LACP. Active mode must be on at least
one side of the LAG for the connection to establish. Then you make
the AE bundle a trunk port with all VLANs:
setchassisaggregated-devicesethernetdevice-count1
setinterfacesge-0/0/40ether-options802.3adae0
setinterfacesge-0/0/40ether-optionslink-modefull-duplex
setinterfacesge-0/0/40ether-optionsspeed100m
setinterfacesge-0/0/41ether-options802.3adae0
setinterfacesge-0/0/41ether-optionslink-modefull-duplex
setinterfacesge-0/0/41ether-optionsspeed100m
setinterfacesae0aggregated-ether-optionslacpactiveperiodicfast
setinterfacesae0unit0familyethernet-switchingport-modetrunkvlanmembersall
The backup VLAN connects to both the VMware server and the NAS
for access to backup storage from the secondary server NIC:
setvlansbackupinterfacege-0/0/42
setinterfacesge-0/0/42.0familyethernet-switching
setvlansbackupinterfacege-0/0/46
setinterfacesge-0/0/46.0familyethernet-switching
17
18
confirmthedeletefortheentirestanza
top
setvlansdefaultvlan-id1
setvlansbackupvlan-id2
setvlansservervlan-id3
setvlansscadavlan-id4
setvlansofficevlan-id10
setvlansengineeringvlan-id20
19
20
setsecurityzonessecurity-zonemgmthost-inbound-trafficsystem-servicesall
setsecurityzonessecurity-zonebackup
setsecurityzonessecurity-zonebackuphost-inbound-trafficsystem-servicesping
setsecurityzonessecurity-zoneserver
setsecurityzonessecurity-zoneserverhost-inbound-trafficsystem-servicesping
setsecurityzonessecurity-zonescada
setsecurityzonessecurity-zonescadahost-inbound-trafficsystem-servicesping
setsecurityzonessecurity-zoneoffice
setsecurityzonessecurity-zoneofficehost-inbound-trafficsystem-servicesping
setsecurityzonessecurity-zoneengineering
setsecurityzonessecurity-zoneengineeringhost-inbound-trafficsystemservicesping
setsecurityzonessecurity-zoneuntrust
setsecurityzonessecurity-zoneuntrusthost-inbound-trafficsystem-servicesping
Create the policy list outlined in Table 2.1 to allow the zone-to-zone
communications desired and block all others.
Allow Internet access from office zone:
editsecuritypoliciesfrom-zoneofficeto-zoneuntrustpolicyinternet
setmatchsource-addressoffice-lan
setmatchdestination-addressany
setmatchapplicationany
setthenpermit
setthenlogsession-close
top
21
22
setmatchapplicationany
setthenpermit
setthenlogsession-close
top
Step 11: Set up DHCP for the Office and Engineering VLANs
Remove the default DHCP server settings:
deletesystemservicesdhcprouter
deletesystemservicesdhcppool192.168.1.0/24
Verification
Step 1: Aggregated Interface Verification
This will confirm that the AE link is up and active between the SRX
and EX:
showlacpinterfacesae0
On the EX:
Aggregatedinterface:ae0
LACPstate:RoleExpDefDistColSynAggrTimeoutActivity
ge-0/0/40ActorNoNoYesYesYesYesFastActive
ge-0/0/40PartnerNoNoYesYesYesYesFastActive
ge-0/0/41ActorNoNoYesYesYesYesFastActive
ge-0/0/41PartnerNoNoYesYesYesYesFastActive
LACPprotocol:ReceiveStateTransmitStateMuxState
ge-0/0/40CurrentFastperiodicCollectingdistributing
ge-0/0/41CurrentFastperiodicCollectingdistributing
On the SRX:
Aggregatedinterface:ae0
LACPstate:RoleExpDefDistColSynAggrTimeoutActivity
fe-0/0/1ActorNoNoYesYesYesYesFastActive
fe-0/0/1PartnerNoNoYesYesYesYesFastActive
fe-0/0/2ActorNoNoYesYesYesYesFastActive
fe-0/0/2PartnerNoNoYesYesYesYesFastActive
LACPprotocol:ReceiveStateTransmitStateMuxState
fe-0/0/1CurrentFastperiodicCollectingdistributing
fe-0/0/2CurrentFastperiodicCollectingdistributing
VLAN Verification
These commands verify the port configurations for the multiple
VLANs: showvlans.
23
24
EX2200:
NameTagInterfaces
backup2ae0.0*,ge-0/0/42.0,ge-0/0/46.0
default1ae0.0*
engineering20ae0.0*,ge-0/0/12.0*,ge-0/0/13.0,ge-0/0/14.0,
ge-0/0/15.0,ge-0/0/16.0,ge-0/0/17.0,ge-0/0/18.0,
ge-0/0/19.0,ge-0/0/ge-0/0/21.0,ge-0/0/22.0,
ge-0/0/23.0
office10ae0.0*,ge-0/0/0.0,ge-0/0/1.0,ge-0/0/2.0,ge-0/0/3.0,
ge-0/0/4.0,ge-0/0/5.0,ge-0/0/6.0,ge-0/0/7.0,
ge-0/0/8.0,ge-0/0/9.0,ge-0/0/10.0,ge-0/0/11.0
scada4a/0/25.0,ge-0/0/26.0,
ge-0/0/27.0,ge-0/0/28.0,ge-0/0/29.0
server30/0/43.0,ge-0/0/44.0,
ge-0/0/45.0,ge-0/0/47.0
SRX100:
NameTagInterfaces
backup2ae0.0*
default1ae0.0*,fe-0/0/7.0*
engineering20ae0.0*
office10ae0.0*
scada4ae0.0*
server3ae0.0*
References
Security Policies:
http://www.juniper.net/techpubs/en_US/junos11.4/topics/concept/
policy-overview.html
NAT Policies:
http://kb.juniper.net/library/CUSTOMERSERVICE/technotes/Junos_
NAT_Examples.pdf
Aggregated Ethernet:
http://www.juniper.net/techpubs/en_US/junos12.1/topics/concept/
interface-security-aggregated-ethernet-understanding.html
VLANs:
http://www.juniper.net/techpubs/en_US/junos12.3/topics/task/configuration/bridging-vlans-ex-series-cli.html
DHCP:
http://www.juniper.net/techpubs/en_US/junos11.4/topics/concept/
security-dhcp-server-operation-understanding.html
Recipe 3
Configuring a SRX Series Integrated Firewall
by Kevin Barker
Problem
Customers are looking for enhanced security controls prior to
granting access to protected resources. Prior to Junos 12.1X47,
this could only be achieved if an SRX Series was deployed in
conjunction with a Juniper UAC appliance, which increased both
the complexity and cost of an SRX deployment.
Solution
Junos 12.1X47 provides on-box authentication and authorization (AA). Authentication is done against an Active Directory
(AD) server with the SRX polling the AD device for login information through the Windows Management Instrumentation
(WMI) interface. Access to resources is then granted through
source-identity policy statements, which can be either user or
group-based. Group-based access requires establishing a second
connection to the AD server through LDAP.
NOTE
While simple and easy to execute, this solution does not scale well
and is best used for smaller environments.
The mechanics of what happens during the authentication and
authorization (application of policy) process are illustrated in
Figure 3.1.
26
Windows ADs
Data
3
Internet
Finance
SRX Series
Client
4
Video
1. Domain user log ins into domain from domain member device.
2. User attempts to make a connection through the SRX.
3. SRX Checks local tables to see if user is already authenticated.
1. If so, user continues
2. If no local authentication, then SRX queries AD
3. If AD has an entry it will be used
4. If no AD entry then fallback to captive portal
Apps
Corporate
Data Center
Figure 3.1
27
28
Discussion
NOTE
Verifying user identity prior to granting access to resources is becoming an essential business requirement for most companies today. Prior
to the release of this feature it was only possible through SRX Series
and UAC integration. Now companies can leverage their Active
Directory infrastructure and provide additional authentication and
authorization capabilities directly from the SRX!
The X47 release requires a minimum hardware specification of
H2-based units for the branch platform (SRX100H2 through
SRX240H2). See the release notes for the Junos 12.1X47 code.
Up to five AD severs can be specified for the lower-level branch devices
(SRX100H2 SRX240H2) and up to ten for all other SRX devices.
References
Recipe 4
Deploying Firewall Policies on Multiple Devices
with Junos Space Security Director
by Petr Klemaj
Problem
The Junos Space Security Director application is well-suited for
managing several firewalls to many hundreds of firewalls, depending on your network. Thats because firewall policies, VPNs,
NAT, and IPS policies are centrally managed and the settings
configured in one place can apply to many devices.
The problem is that this is a change to our industry. Some network engineers get nervous without the Junos CLI, and the
thought of configuring hundreds of firewalls all at once, is, well,
nerve-racking. While you can deploy multiple devices at the same
time there is a lot of flexibility in Space Security Director, so
settings for each individual device can be fine-tuned.
In this recipe, a simple network (see Figure 4.1) is used to show
how Security Director allows for centralized security policy
configuration. There are only two SRX devices (SRX-A and
SRX-B) here for the sake of instruction, but the example can be
easily scaled. The task is as follows:
Allow communication for all users from the Trust to Untrust zone
on both firewalls using HTTP, HTTPS, and SSH services;
And, allow Host-1 (having an IP address of 10.37.0.1) in the
SRX-A devices Trust zone to communicate to an external server
(with an IP of 5.5.5.5) in the Untrust zone using HTTP service on
non-standard port 8080.
NOTE
30
External Server
5.5.5.5
UNTRUST zone
UNTRUST zone
1.38.1.1
1.37.1.1
SRX-A
10.37.0.254
Host-1
10.37.0.1
Figure 4.1
TRUST zone
Office A
10.37.0.0/24
SRX-B
10.38.0.254
TRUST zone
Office B
10.38.0.0/24
Topology Used for Deploying Firewall Policies on Multiple Devices with Junos
Space Security Director. Junos Space is managing SRX-A and SRX-B Using
Out-of-band Management Network (not shown).
Solution
This recipe assumes that the SRX-A and SRX-B devices have already
been added to Junos Space. In this case, you should see them in Devices
> Device Management (Figure 4.2). To learn how to add devices to
Junos Space please see its technical documentation, the links for which
are at the end of this recipe.
Now, in the Security Director application (choose Security Director in
the drop-down list in the upper-left corner of the screen), navigate to
the Firewall Policies menu item (see Figure 4.3):
Recipe 4: Deploying Firewall Policies on Multiple Devices with Junos Space Security Director
Figure 4. 2
Figure 4.3
31
32
You will see that All Devices Policy is already present in the list. Its
rules apply to all Security Director devices, so you could use it for our
task. However, in the future you may want to add more devices that do
not need the rules of our task, so instead of using All Devices Policy
lets create a new group policy just for our recipes SRX-A and SRX-B
devices. Click on the Create Policy button (green button that looks like
a folder with a plus sign). A separate window opens (see Figure 4.4):
Figure 4.4
Recipe 4: Deploying Firewall Policies on Multiple Devices with Junos Space Security Director
For this recipe, lets use Post-Rules at the group level so that devicespecific rules can override them (if needed).
In the newly created rule, select Source/Zone as Trust and Destination/
Zone as Untrust. Change the Destination/Action from Deny to Permit
by clicking on it and making the selection from a list. Click on Service
to choose HTTP, HTTPS, and SSH for this policy rule (see Figure 4.5).
Click on the OK button:
Figure 4.5
Now that the rule is created, click the Save button at the bottom of the
screen and also click the green lock button to unlock the policy (this is
a best practice routine that allows other administrators to edit the
policy if needed).
Note that at this time, the policy has been saved in Security Director,
but it has not been pushed to the SRX devices yet.
For the second task HTTP on custom port 8080 between Host-1 and
External Server) lets create several custom objects. Go to Object
Builder > Addresses, click a green plus sign (Create Address appears
when moused over) and create an entry for Host-1 (see Figure 4.6):
33
34
Figure 4.6
Press the Create button. The entry for Host-1 should now be in the list
under Object Builder > Addresses. Repeat the process for Ext-Server
(enter IP 5.5.5.5 for it).
Now go to Object Builder > Services, click the green plus sign (Create
Service) and create a service here with the name http8080. Under service,
create a Protocol (use the same name) that uses TCP port 8080 and
HTTP ALG, and an inactivity timeout of 300 seconds (see Figure 4.7):
Figure 4.7
Recipe 4: Deploying Firewall Policies on Multiple Devices with Junos Space Security Director
Go back to the Firewall Policies menu item and expand the GroupFirewallPolicy with a plus sign that is to the left of it (it will show SRX-A
and SRX-B device policies under the group policy GroupFirewallPolicy
see Figure 4.8). Click SRX-A policy and lock it for edit with the lock
sign. Click on Create Device Rule. Select Trust and Untrust as source
and destination zones, respectively. Select Host-1 as a source address,
Ext-Server as a destination address, and select the action as Permit.
Select http8080 as a service. Now save the policy and unlock it:
Figure 4.8
35
36
Figure 4.9
Figure 4.10
You will now need to publish the SRX-A policy (which is under
GroupFirewallPolicy in the policy tree) in a way that is similar to what
you did it for GroupFirewallPolicy. Just use the Publish and Update
button at the end.
Now you can see the results of your work on your firewalls. On
SRX-A, the configuration created by Security Director is as follows:
lab@SRX-A#showsecuritypolicies
from-zoneTRUSTto-zoneUNTRUST{
policyDevice-Zone-1{
match{
source-addressHost-1;
Recipe 4: Deploying Firewall Policies on Multiple Devices with Junos Space Security Director
destination-addressExt-Server;
applicationhttp8080;
}
then{
permit;
}
}
policyGroupFirewallPolicy-Zone-Post-1{
match{
source-addressany;
destination-addressany;
application[junos-httpjunos-httpsjunos-ssh];
}
then{
permit;
}
}
}
[edit]
lab@SRX-A#showapplications
applicationhttp8080{
application-protocolhttp;
protocoltcp;
destination-port8080;
inactivity-timeout300;
}
[edit]
lab@SRX-A#showsecurityaddress-book
global{
addressExt-Server5.5.5.5/32;
addressHost-110.37.0.1/32;
}
You can see that the rule for communication of Host-1 to Ext-Server is
before GroupFirewallPolicys rule because post-rules were used in the
group-level policy. On SRX-B, the configuration is as follows:
lab@SRX-B#showsecuritypolicies
from-zoneTrustto-zoneUntrust{
policyGroupFirewallPolicy-Zone-Post-1{
match{
source-addressany;
destination-addressany;
application[junos-httpjunos-httpsjunos-ssh];
}
then{
permit;
}
}
}
Your policies have been created as expected, just like using the CLI, but
now you can manage and scale devices easily.
37
38
References
Junos Space technical documentation, including Security Director
application documentation, is available at:
https://www.juniper.net/techpubs/en_US/release-independent/junosspace/index.html
Juniper Learning Bytes contain several useful Junos Space-related
videos:
https://learningportal.juniper.net/juniper/user_activity_info.
aspx?id=5853
In case you have a question or problem, try searching the Knowledge
Base:
http://kb.juniper.net
Recipe 5
Deploying NAT Policies with Junos Space
Security Director
by Petr Klemaj
Problem
Most enterprises today use Network Address Translation (NAT)
for IPv4 traffic leaving their networks but continue to deploy and
configure devices on a case-by-case basis. Junos Space Security
Director allows an administrator to centrally manage NAT
policies (or rules) on many devices allowing your network to be
more nimble and flexible.
To show off the flexibility of Junos Space Security Director, this
recipe configures both the source and destination NAT in our
example network (see Figure 5.1) according to the following
tasks:
All communication from Trust to Untrust zone must be
source-NATed using egress interface IP address of the
corresponding SRX device;
And, for traffic entering the external interfaces address
1.37.1.1 of SRX-A on destination port 9090, destination
NAT must be assigned to the address 10.37.0.1 of Host-1.
NOTE
40
External Server
5.5.5.5
UNTRUST zone
UNTRUST zone
1.38.1.1
1.37.1.1
SRX-A
10.37.0.254
Host-1
10.37.0.1
Figure 5.1
TRUST zone
Office A
10.37.0.0/24
SRX-B
10.38.0.254
TRUST zone
Office B
10.38.0.0/24
The Topology for Deploying NAT Policies with Junos Space Security Director.
Junos Space is Managing SRX-A and SRX-B Using Out-of-band Management
Network (not shown).
Solution
Before starting with the actual NAT configuration, note that for
successful traffic processing, you need to configure the corresponding
security (firewall) policies to permit the traffic.
NOTE
This recipe assumes that the SRX-A and SRX-B devices in Figure 5.1
have already been added to Junos Space and the corresponding
security policies have been configured. See the previous recipe, Recipe
4, Deploying Firewall Policies on Multiple Devices with Junos Space
Security Director for more on how to use Space to add policies.
To begin, open Space, and in the left margin select NAT Policies and
click on the green Create NAT Policy button (the green folder icon
with a plus sign). This is about creating a group policy so leave Group
as a default selection for the policy type. Enter a policy name (SRXNAT is used in the example). Select the SRX-A and SRX-B devices in
the list and click the Create button (see Figure 5.2).
Figure 5.2
Now click on the green lock button to lock the SRX-NAT policy for
your editing, preventing others from altering it at the same time. Click
on the Create Source Rule link that appears and this will create the first
rule in this policy. In this rule, select TRUST as the ingress zone and
UNTRUST as the egress zone. Select Interface as the translation type
and click on the OK button (see Figure 5.3).
Figure 5.3
After creating the source NAT rule, click on the Save button at the
bottom of the screen, and then unlock the policy so others can access it.
Now you need to create a destination NAT rule on only the SRX-A
device. To do so, click on the Policies list, and expand the SRX-NAT
policy with the plus sign that sits left of it. You will see the SRX-A and
SRX-B device policies. Click on SRX-A policy and lock it for edit. Now
click on Create Destination Rule (see Figure 5.4).
41
42
Figure 5.4
Select UNTRUST as the ingress zone and port 9090 as the original
packet destination port. In the Translated Packet Destination tab,
select the Translation Type as Pool. Now create a NAT pool (with
name Host-1-pool) using the green plus sign and use Host-1 as a pool
address (see Figure 5.5). Host-1 is an address book entry corresponding to the 10.37.0.1 address so if it doesnt exist yet in your Security
Director, create it here, on-the-fly, with the green plus button). Click
Save and then unlock the policy:
Figure 5.5
By clicking on the SRX-A and SRX-B device policies, you can now see
that SRX-A has the source NAT rule from a group policy and a
destination NAT rule configured, and SRX-B only has a source NAT
rule (see Figure 5.6).
You now need to publish your NAT policies and update the devices.
Right-click on the SRX-A policy and select Publish NAT Policy. Click
on the Publish and Update button in the window that appears to
publish the SRX-A policy. You should soon see a success message in
the Job Manager window (in case of an error, details of the error will
be presented).
Repeat the process for the group SRX-NAT policy (its rules will not be
pushed to the devices during previous step). Again, you should see a
success window:
Figure 5.6
Now lets check the results of your work on your devices. On SRX-A,
the configuration created by Security Director is as follows:
lab@SRX-A>showconfigurationsecuritynat
source{
rule-setZone_TRUST-Zone_UNTRUST{
fromzoneTRUST;
tozoneUNTRUST;
ruleSRX-NAT-1{
match{
source-address0.0.0.0/0;
destination-address0.0.0.0/0;
}
then{
source-nat{
interface;
}
}
}
}
}
destination{
poolHost-1-pool{
address10.37.0.1/32;
}
rule-setZone_UNTRUST{
fromzoneUNTRUST;
ruleDevice-1{
match{
source-address0.0.0.0/0;
43
44
destination-address0.0.0.0/0;
destination-port9090;
}
then{
destination-nat{
pool{
Host-1-pool;
}
}
}
}
}
}
You can see that the NAT policies were created as expected. The policy
on SRX-B is just the same but without the destination NAT part (not
shown here for the sake of brevity).
References
Junos Space technical documentation, including Security Director
application documentation, is available at:
https://www.juniper.net/techpubs/en_US/release-independent/junosspace/index.html
Recipe 6
Conditional Route Advertising
with NAT on the SRX Series
by Clay Haynes
Problem
In the topology below, the SRX needs to advertise the network
1.1.1.0/24 to AS1111. However the SRX must only advertise the
1.1.1.0/24 route only when it receives 192.168.1.0/24 from its
peer in AS65100. Moreover, individual hosts need to be statically
NATed from the 1.1.1.0/24 to the 192.168.1.0/24 network.
NAT: 1.1.1.1-> 192.168.1.1
AS1111
AS65100
MPLS
200.200.200.1/30
ge-0/0/4
200.200.200.2/30
ge-0/0/8
172.16.0.1/30
Figure 6.1
172.16.0.2/30
BGP: 192.168.1.0/24
46
Solution
Configuring conditional route advertisements is a straightforward
process, and can be implemented prior to completing the NAT translation. Once the static NAT and security policies are in place traffic
should flow without any issues.
There are five steps to configuring conditional route advertisements
and static NAT policies:
Configure iBGP Peering in AS65100
Configure eBGP Peering to AS1111
Configure the conditional route advertisement
Configure static NAT and security policies
Verify conditional route advertisements work as intended
Lets get going and drill down into these configuration steps.
To Configure iBGP Peering in AS65100
1. Log in to the router, and enter configuration mode:
root@SRX1%cli
root@SRX1>configure
root@SRX1#
wan:
[edit]
root@SRX1#editprotocolsbgpgroupwan
[editprotocolsbgpgroupwan]
root@SRX1#setpeer-as65100
[editprotocolsbgpgroupwan]
root@SRX1#settypeinternal
[editprotocolsbgpgroupwan]
root@SRX1#setneighbor172.16.0.2
6. Verify that BGP peering is up, and the SRX is receiving the route
192.168.1.0/24 from its neighbor:
root@SRX1>showrouteprotocolbgp
inet.0:17destinations,17routes(17active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
192.168.1.0/24*[BGP/170]11w1d04:31:28,MED1376000,localpref100
ASpath:?
>to172.16.0.2viage-0/0/8.0
root@SRX1>
[edit]
root@SRX1#editinterfacesge-0/0/4
[editinterfacesge-0/0/4]
root@SRX1#setunit0familyinetaddress200.200.200.2/30
47
48
[editinterfacesge-0/0/4]
root@SRX1#topeditsecurityzonessecurity-zoneuntrust
[editsecurityzonessecurity-zoneuntrust]
root@SRX1#setinterfacesge-0/0/4.0host-inbound-trafficprotocolsbgp
3. Jump to the top of the hierarchy and apply the export policy to
group partner:
[editpolicy-optionsconditioncheck_route]
root@SRX1#topeditprotocolsbgpgrouppartner
[editprotocolsbgpgrouppartner]
root@SRX1#setexportconditional_route
4. One more jump to the top of the hierarchy and configure a discard
route to ensure that 1.1.1.0/24 is present in the routing table:
[editpolicy-optionsconditioncheck_route]
root@SRX1#top
[edit]
root@SRX1#setrouting-optionsstaticroute1.1.1.0/24discard
49
50
[editsecuritynatstaticrule-setuntrust]
root@SRX1#topeditsecuritynatproxy-arpinterfacege-0/0/4.0
[editsecuritynatproxy-arpinterfacege-0/0/4.0]
root@SRX1#setaddress1.1.1.1/32
3. Show the routes for 192.168.1.0/24, and check the routes being
advertised to 200.200.200.1 they should now be empty:
root@SRX-1>showrouteprotocolbgp192.168.1.0/24
root@SRX-1>showrouteadvertising-protocolbgp200.200.200.1
5. Show the routes for 192.168.1.0/24, and check the routes being
advertised to 200.200.200.1 they should reappear:
root@SRX-1>showrouteprotocolbgp192.168.1.0/24
inet.0:17destinations,17routes(17active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
192.168.1.0/24*[BGP/170]11w1d04:31:28,MED1376000,localpref100
ASpath:?
>to172.16.0.2viage-0/0/8.0
root@SRX-1>showrouteadvertising-protocolbgp200.200.200.1
inet.0:17destinations,17routes(17active,0holddown,0hidden)
Prefix Nexthop MEDLclprefASpath
*1.1.1.0/24SelfI
51
52
Discussion
In a typical Junos-based router, setting the discard route would usually
drop all traffic in the 1.1.1.0/24 network, but here on the SRX flowbased Junos performs the route lookup. In Figure 6.2,the SRX will
first NAT to the destination address of 192.168.1.1, and then perform
the route lookup! Because of this the packet is treated as routable, and
the SRX will forward the packet.
Forwarding Lookup
Screens Static
NAT
Dest
NAT
Route
Zones
Policy
Static
NAT
YES
Source
NAT
Services Session
ALG
YES
NO
First Packet
Match
Session?
YES
Screens
TCP
NAT
Services
ALG
Figure 6.2
References
Look for more information on configuring static NAT here:
http://www.juniper.net/techpubs/en_US/junos12.1/topics/example/
nat-security-static-single-address-translation-configuring.html
Configuring Conditional Installation of Prefixes in a Routing Table:
http://www.juniper.net/techpubs/en_US/junos13.3/topics/example/
conditional-prefix-installing-configuring.html
Recipe 7
Basic IS-IS Implementation
by Martin Brown
Problem
Networking professionals typically know how to configure OSPF
and RIP, and most have had exposure to EIGRP, but the number
of network professionals who know about IS-IS isnt as large.
This recipe uses a small topology shown in Figure 7.1.
54
IS-IS
10.0.0.0/24
SRX210
Figure 7.1
30.0.0.0/24
J2320
Solution
The first step is to create a loopback interface on the devices. These
interfaces need an IP address with a /32 prefix. In this instance we will
give the SRX loopback interface an address of 192.168.1.1/32 and the
J2320 will have an address of 192.168.1.2/32.
For the SRX:
setinterfaceslo0.0familyinetaddress192.168.1.1/32
Next, its important to understand that IS-IS does not use TCP/IP as
the transport layer, but instead it uses a protocol called ISO. One
major difference between ISO and TCP/IP is that ISO gives an address
to the router as opposed to TCP/IP which has an address per interface.
The address for ISO is made up as follows:
49.0001.0001.0001.0001.00
AFI Area ID
System ID
n-selector
setinterfaceslo0.0familyisoaddress49.0001.0001.0001.0001.00
55
56
By adding the ISO address to the loopback interface, you have in fact
given the router its unique address. The next step would be to tell
which interfaces are to be included in the routing advertisements.
In our scenario, fe-0/0/7.0 on the SRX connects to subnet 10.0.0.0/24,
and ge-0/0/3.0 on the J2320 is part of subnet 30.0.0.0/24. In addition,
the interfaces that connect the two devices also need to be included,
and fe-0/0/0.0 on the SRX is directly connected to ge-0/0/0.0 on the J
series. These would be added as follows.
On the SRX:
setprotocolsisisinterfacefe-0/0/0.0
setprotocolsisisinterfacefe-0/0/7.0
setprotocolsisisinterfacelo0.0
On the J2320:
setprotocolsisisinterfacege-0/0/0.0
setprotocolsisisinterfacege-0/0/3.0
setprotocolsisisinterfacelo0.0
This still wont be enough, however, as you have not told the devices to
use the ISO protocol on the interfaces that are being advertised.
Okay, youve already done this on the loopback interface by adding the
address, however you need to add this to fe-0/0/0.0 and fe-0/0/7.0 on
the SRX and ge-0/0/0.0 and ge-0/0/3.0 on the J series.
On the SRX:
setinterfacesfe-0/0/7unit0familyiso
setinterfacesfe-0/0/0unit0familyiso
On the J2320:
setinterfacesge-0/0/3unit0familyiso
setinterfacesge-0/0/0unit0familyiso
Once you have committed the configuration, you can check whether
IS-IS is running and on which interfaces. This is done as follows:
root@SRX>showisisinterface
IS-ISinterfacedatabase:
InterfaceLCirIDLevel1DRLevel2DRL1/L2Metric
fe-0/0/0.030x2SRX.02SRX.0210/10
fe-0/0/7.030x1SRX.00SRX.0010/10
lo0.000x1PassivePassive0/0
root@JSERIES>showisisinterface
IS-ISinterfacedatabase:
InterfaceLCirIDLevel1DRLevel2DRL1/L2Metric
ge-0/0/0.030x1SRX.02SRX.0210/10
ge-0/0/3.030x1JSERIES.00JSERIES.0010/10
lo0.000x1PassivePassive0/0
You can also check to see if the devices are neighbors or have formed
adjacencies:
root@SRX>showisisadjacency
InterfaceSystemLStateHold(secs)SNPA
fe-0/0/0.0JSERIES1Up230:1b:c0:53:13:0
fe-0/0/0.0JSERIES2Up210:1b:c0:53:13:0
root@JSERIES>showisisadjacency
InterfaceSystemLStateHold(secs)SNPA
ge-0/0/0.0SRX1Up62c:21:72:27:76:0
ge-0/0/0.0SRX2Up62c:21:72:27:76:0
You may have noticed Level 1 and Level 2 being mentioned in the
output. IS-IS would use Level 2 routers for the backbone, similar to
OSPF area 0 and Level 1 routers in the connected subnets, similar to
OSPF areas, and you also have Level 1-2 routers, which are performing
both roles. In this scenario you are staying with the defaults, which are
Levels 1-2.
NOTE
root@SRX>showrouteprotocolisis
inet.0:12destinations,12routes(12active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
30.0.0.0/24*[IS-IS/15]00:11:03,metric20
>to20.0.0.2viafe-0/0/0.0
192.168.1.2/32*[IS-IS/15]00:07:04,metric10
>to20.0.0.2viafe-0/0/0.0
iso.0:1destinations,1routes(1active,0holddown,0hidden)
root@JSERIES>showrouteprotocolisis
inet.0:14destinations,14routes(14active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
10.0.0.0/24*[IS-IS/15]00:12:56,metric20
>to20.0.0.1viage-0/0/0.0
57
58
192.168.1.1/32*[IS-IS/15]00:09:04,metric10
>to20.0.0.1viage-0/0/0.0
iso.0:1destinations,1routes(1active,0holddown,0hidden)
Finally, issue a ping from the SRX to the subnet, accessible from
ge-0/0/3.0 on the J2320, and you should receive a response, thereby
confirming routes are being advertised both ways:
root@SRX>ping30.0.0.1
PING30.0.0.1(30.0.0.1):56databytes
64bytesfrom30.0.0.1:icmp_seq=0ttl=64time=2.394ms
64bytesfrom30.0.0.1:icmp_seq=1ttl=64time=2.456ms
64bytesfrom30.0.0.1:icmp_seq=2ttl=64time=3.871ms
64bytesfrom30.0.0.1:icmp_seq=3ttl=64time=2.314ms
References
Should you wish to find out more about IS-IS, try the following links:
http://tools.ietf.org/html/rfc1195
http://tools.ietf.org/html/rfc5302
http://www.juniper.net/techpubs/en_US/junos13.3/topics/example/
routing-protocol-is-is-security-configuring-cli.html
Recipe 8
Redistributing RIP into IS-IS
by Martin Brown
IS-IS is a powerful routing protocol that can scale to a considerable size and allow for fast reconvergence, adapting quickly to
route changes and additions. The modular nature of IS-IS also
allows developers to easily add advertisements for additional
routed protocols, as was done recently for IPv6. There is, as
always, a downside, and in this case the downside is that not all
devices support IS-IS.
Problem
It would be a perfect world if every network device spoke the
same language and supported the same features. The brutal truth,
however, is the world isnt perfect and when network devices
dont support a common set of features it is our job as networking
professionals to make them work together to achieve connectivity.
This recipe guides you through a sceneraio where a Juniper
branch SRX is connected to a J Series 2320 router, and the J2320
is in turn connected to an EX2200 Layer 3 switch as shown in
Figure 8.1.
60
RIP
IS-IS
10.0.0.0/24
SRX210
Figure 8.1
40.0.0.0/24
20.0.0.0/24
J2320
50.0.0.0/24
EX2200
You can see in Figure 8.1 that port fe-0/0/0 on the SRX connects to
ge-0/0/0 on the J2320, and ge-0/0/1 on the J2320 connects to ge-0/1/0
on the EX switch. The default VLAN on the EX2000 is part of subnet
50.0.0.0/24, and fe-0/0/7 on the SRX is used to connect to subnet
10.0.0.0/24.
You need to give devices connected to the default VLAN on the EX
switch reachability to 10.0.0.0/24, however, the EX2200 doesnt
support IS-IS and because this particular EX2200 doesnt have the
enhanced feature license, it only supports RIP. Because of these
limitations, you will need to redistribute RIP into IS-IS and IS-IS back
into RIP. This recipe will show you how.
The devices currently have the following configuration:
root@SRX>showconfigurationinterfaces
fe-0/0/0{
unit0{
familyinet{
address20.0.0.1/24;
}
familyiso;
}
}
fe-0/0/7{
unit0{
familyinet{
address10.0.0.2/24;
}
familyiso;
}
}
lo0{
unit0{
familyinet{
address192.168.1.1/32;
}
familyiso{
address49.0001.0001.0001.0001.00;
}
}
}
root@SRX>showconfigurationprotocols
isis{
interfacefe-0/0/0.0;
interfacefe-0/0/7.0;
interfacelo0.0;
}
root@JSERIES>showconfigurationinterfaces
ge-0/0/0{
unit0{
familyinet{
address20.0.0.2/24;
}
familyiso;
}
}
ge-0/0/1{
unit0{
familyinet{
address40.0.0.1/24;
}
}
}
lo0{
unit0{
familyinet{
address192.168.1.2/32;
}
familyiso{
address49.0001.0001.0001.0002.00;
}
}
}
root@JSERIES>showconfigurationprotocols
isis{
interfacege-0/0/0.0;
interfacege-0/0/3.0;
interfacelo0.0;
}
root@EX-SWITCH>showconfigurationinterfaces
ge-0/1/0{
unit0{
familyinet{
address40.0.0.2/24;
}
}
}
61
62
vlan{
unit0{
familyinet{
address50.0.0.1/24;
}
}
}
{master:0}
root@EX-SWITCH>showconfigurationprotocols
rip{
groupRIP{
exportRIP;
neighborvlan.0;
neighborge-0/1/0.0;
}
}
{master:0}
root@EX-SWITCH>showconfigurationpolicy-options
policy-statementRIP{
term1{
fromprotocol[directrip];
thenaccept;
}
}
Solution
The first step is to add RIP to the J2320 and ensure it forms a neighborship with the EX2200. RIP under Junos has a rather unique configuration requirement when compared to IS-IS, or OSPF, in that when
adding RIP to Junos devices, a policy statement needs to be created to
tell the router which routes to advertise to neighbors. So lets create
such a policy statement to include RIP and directly connected routes
and tell RIP to use this statement. Give the policy statement the name
of RIPADVERT and tell RIP to use this statement in addition to telling
it which interface to use to send out RIP hello packets. This would be
achieved as follows:
setpolicy-optionspolicy-statementRIPADVERTterm1fromprotocolrip
setpolicy-optionspolicy-statementRIPADVERTterm1fromprotocoldirect
setpolicy-optionspolicy-statementRIPADVERTterm1thenaccept
setprotocolripgroupRIPexportRIPADVERT
setprotocolripgroupRIPneighborge-0/0/1.0
NOTE
Since the SRX already has IS-IS and the EX has RIP, you only need to
add the configuration changes to the J Series router. There are no
configuration changes to either the firewall or the switch in this recipe.
As IS-IS can scale considerably larger than RIP it may not be a good
idea to redistribute IS-IS routes numbering in their hundreds into RIP.
As this scenario uses a small IS-IS network, it is perfectly acceptable to
redistribute in this instance.
In order to redistibute IS-IS into RIP, you need to tell the policy
statement to include IS-IS updates also. You could, in theory, use the
same term and just add IS-IS as a protocol option, however, in this
case, youll create a new term called term 2 and use this to advertise
IS-IS instead:
63
64
setpolicy-optionspolicy-statementRIPADVERTterm2fromprotocolisis
setpolicy-optionspolicy-statementRIPADVERTterm2thenaccept
After performing another commit, routes should now be being exchanged into both RIP and into IS-IS. To confirm this, look at the
routing tables of each device:
root@SRX>showrouteprotocolisis
inet.0:11destinations,11routes(11active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
0.0.0.0/0*[IS-IS/160]06:40:24,metric13
>to20.0.0.2viafe-0/0/0.0
40.0.0.0/24*[IS-IS/160]00:05:37,metric20
>to20.0.0.2viafe-0/0/0.0
50.0.0.0/24*[IS-IS/160]06:45:21,metric12
>to20.0.0.2viafe-0/0/0.0
192.168.1.2/32*[IS-IS/15]07:15:38,metric10
>to20.0.0.2viafe-0/0/0.0
iso.0:1destinations,1routes(1active,0holddown,0hidden)
root@JSERIES>showrouteprotocolisis
inet.0:13destinations,13routes(13active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
10.0.0.0/24*[IS-IS/15]07:16:20,metric20
>to20.0.0.1viage-0/0/0.0
192.168.1.1/32*[IS-IS/15]07:16:32,metric10
>to20.0.0.1viage-0/0/0.0
iso.0:1destinations,1routes(1active,0holddown,0hidden)
root@JSERIES>showrouteprotocolrip
inet.0:13destinations,13routes(13active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
0.0.0.0/0*[RIP/100]06:41:24,metric3,tag0
>to40.0.0.2viage-0/0/1.0
50.0.0.0/24*[RIP/100]06:46:21,metric2,tag0
>to40.0.0.2viage-0/0/1.0
iso.0:1destinations,1routes(1active,0holddown,0hidden)
{master:0}
root@EX-SWITCH>showrouteprotocolrip
inet.0:12destinations,12routes(12active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
0.0.0.0/0*[RIP/100]06:42:03,metric2,tag0
>to50.0.0.2viavlan.0
10.0.0.0/24*[RIP/100]07:16:54,metric2,tag0
>to40.0.0.1viage-0/1/0.0
20.0.0.0/24*[RIP/100]07:16:54,metric2,tag0
>to40.0.0.1viage-0/1/0.0
192.168.1.1/32*[RIP/100]07:16:54,metric2,tag0
>to40.0.0.1viage-0/1/0.0
192.168.1.2/32*[RIP/100]07:16:54,metric2,tag0
>to40.0.0.1viage-0/1/0.0
Finally, by issuing a ping from the SRX fe-0/0/7 interface to the subnet
connected to the default VLAN on the EX switch, you should you have
full connectivity both ways:
root@SRX>ping50.0.0.1source10.0.0.2
PING50.0.0.1(50.0.0.1):56databytes
64bytesfrom50.0.0.1:icmp_seq=0ttl=63time=4.307ms
64bytesfrom50.0.0.1:icmp_seq=1ttl=63time=4.293ms
64bytesfrom50.0.0.1:icmp_seq=2ttl=63time=4.761ms
64bytesfrom50.0.0.1:icmp_seq=3ttl=63time=3.969ms
As you saw in the routing tables, the EX switch has also picked up a
default route from the ADSL router connected to it. This default route
has been advertised back to the SRX, so in theory this means you
should be able to ping to an external address. Lets attempt to ping the
Google DNS server:
root@SRX>ping8.8.8.8
PING8.8.8.8(8.8.8.8):56databytes
64bytesfrom8.8.8.8:icmp_seq=0ttl=41time=38.721ms
64bytesfrom8.8.8.8:icmp_seq=1ttl=41time=38.167ms
64bytesfrom8.8.8.8:icmp_seq=2ttl=41time=39.134ms
64bytesfrom8.8.8.8:icmp_seq=3ttl=41time=37.117ms
65
66
References
Should you wish to find out more about IS-IS, you may find the
information in the following links very useful:
http://www.juniper.net/techpubs/en_US/junos13.3/topics/example/
routing-protocol-is-is-security-configuring-cli.html
http://www.juniper.net/techpubs/en_US/junos13.3/topics/topic-map/
rip-basic.html
http://www.juniper.net/techpubs/en_US/junos13.3/topics/topic-map/
isis-redistributing-routes.html
Recipe 9
Configuring Active/Active MC-LAG on MX Series
by Clay Haynes
Problem
In the topology illustrated in Figure 9.1, a client switch needs to
be configured with a logical aggregate group (LAG) to two
separate MX chassis. The MX Chassis will not be used in a
Virtual Chassis configuration, meaning that each MX will have
separate Control and Forwarding Planes.
68
MX
MX Interface
Switch
MX
MX Interface
Switch
MX-01
xe-1/1/1
xe-0/1/0
MX-01
xe-7/1/1
xe-2/1/0
MX-01
xe-2/1/1
xe-1/1/0
MX-01
xe-8/1/1
xe-3/1/0
MX-02
xe-1/1/1
xe-0/1/2
MX-02
xe-7/1/1
xe-2/1/2
MX-02
xe-1/1/1
xe-1/1/2
MX-02
xe-8/1/1
xe-3/1/2
vcp
EX VC FPC0
EX VC FPC2
vcp
EX VC FPC1
EX VC FPC3
ICCP
(ae20)
ICL
(ae21)
ICCP Address: 10.19.211.1/30
Figure 9.1
MC-LAG Topology
Solution
Since Virtual Chassis will not be configured on the MXs then the MXs
must be configured as MC-LAG peers. The EX Virtual Chassis in the
topology will be configured with a single LAG interface, and connected to two xe interfaces on each MX chassis.
There are five steps to configure MC-LAG:
1. Configure the Interchassis Link-Protection Link (ICL-PL)
2. Configure Interchassis Link (ICL)
3. Configure an Integrated Routing and Bridging (IRB) L3
Interface with mac-synchronization
4. Configure the EX Virtual Chassis LAG
5. Verify the ICL-PL and ICL are operational
Lets drill down into these five configuration steps.
69
70
[editprotocolsiccp]
root@MX01#setpeer10.19.211.2
MX02:
[edit]
root@MX01#editprotocolsiccp
[editprotocolsiccp]
root@MX01#setlocal-address10.19.211.2
[editprotocolsiccp]
root@MX01#setpeer10.19.211.1
5. Additionally, on each respective peer, configure the redundancygroup-list and liveliness-detection for fast failover of the ICL-PL
link on both MXs:
MX01:
[editprotocolsiccp]
root@MX01#setpeer10.19.211.2redundancy-group-list1
[editprotocolsiccp]
root@MX01#setpeer10.19.211.2liveliness-detectionminimum-interval150
[editprotocolsiccp]
root@MX01#setpeer10.19.211.2liveliness-detectionminimum-receive-interval60
[editprotocolsiccp]
root@MX01#setpeer10.19.211.2liveliness-detectionmultiplier3
MX02:
[editprotocolsiccp]
root@MX01#setpeer10.19.211.1redundancy-group-list1
[editprotocolsiccp]
root@MX01#setpeer10.19.211.1liveliness-detectionminimum-interval150
[editprotocolsiccp]
root@MX01#setpeer10.19.211.1liveliness-detectionminimum-receive-interval60
[editprotocolsiccp]
root@MX01#setpeer10.19.211.1liveliness-detectionmultiplier3
2. Next, configure ae21 as a trunk port on both MXs. In order for the
ICL to function correctly be sure to specify all VLANs that are in use
on the entire interface configuration:
[edit]
root@MX01#editinterfacesae21
[editinterfacesae21]
root@MX01#setflexible-vlan-tagging
[editinterfacesae21]
root@MX01#setencapsulationflexible-ethernet-services
[editinterfacesae21]
root@MX01#setaggregated-ether-options
[editinterfacesae21]
root@MX01#setlacp
[editinterfacesae21]
root@MX01#setunit0familybridgeinterface-modetrunk
[editinterfacesae21]
root@MX01#setunit0familybridgevlan-id-list1-4094
3. Jump to the top of the hierarchy and set the service-id to 1 under the
switch-options hierarchy:
[editinterfacesae21]
root@MX01#top
[edit]
root@MX01#setswitch-optionsservice-id1
71
72
2. Next, configure the bridge domain vlan_1254 under the bridgedomains hierarchy on both MXs. In this step be sure to also configure
the routing interface and enable MAC-Address Synchronization:
[edit]
root@MX01#editbridge-domainsvlan_1254
[editbridge-domainsvlan_1254]
root@MX01#setvlan-id1254
[editbridge-domainsvlan_1254]
root@MX01#setmcae-mac-synchronize
[editbridge-domainsvlan_1254]
root@MX01#setrouting-interfaceirb.1254
Lag Configuration
multi-chassis-protection
Match
multi-chassis-protection interface
ICL (ae21)
Match
lacp system-id
mc-ae mc-ae-id
mc-ae redundancy-group
N/A
mc-ae chassis-id
MX01 chassis-id is 0
N/A
MX02 chassis-id is 1
mc-ae mode
N/A
mc-ae status-control
MX01 is active
MX02 is standby
N/A
73
74
MX01:
[editinterfacesae0]
root@MX01#setmulti-chassis-protection10.19.211.2interfaceae21
MX02:
[editinterfacesae0]
root@MX01#setmulti-chassis-protection10.19.211.1interfaceae21
4. Next, set a unique System ID for each LACP Bundle that matches
on both MXs:
[editinterfacesae0]
root@MX01#setaggregated-ether-optionslacpsystem-id00:00:00:00:00:01
iccp
75
76
Discussion
Configuring MC-LAG is fairly straightforward once the ICL-PL and
ICCP interfaces are configured and operational. Adding additional
interfaces is a snap by repeating Step 4. The MX MC-LAG is a step
forward in providing redundancy the enterprise needs, while ensuring
that the MXs still remain independent of each other.
References
Look for more information on configuring MC-LAG here:
http://www.juniper.net/techpubs/en_US/junos13.2/topics/usage-guidelines/interfaces-configuring-multi-chassis-link-aggregation.html
Recipe 10
SRX Series OSPF Interop VPN with
Palo Alto Networks
by Steve Puluka
Problem
IPsec VPN is the workhorse for enterprise site connections because
it allows Internet connections to provide secure private transport.
Both PanOS (Palo Alto Networks) and Junos support deploying
route-based VPNs with tunnel interfaces for creating neighbor
relationships, allowing a smooth integration of existing PanOS
VPN infrastructure to the SRX Series. The problem is how build the
interop tunnel.
Solution
The basic steps of the interop configuration are:
Configure the SRX for Needed
Services
NOTE
78
Vlan.0 - 10.0.1.1/24
OSPF Area 0
SRX100
st0.0
10.0.0.1/24
trust
untrust
e0/0 - 1.1.1.1/24
Tunnel Interfaces
OSPF Area 0
Internet
untrust
ethernet3 - 2.2.2.2/24
trust
tun.1
10.0.0.2/24
Ethernet4 - 10.0.2.1/24
Figure 10.1
PA-200
OSPF Area 0
The Topology of SRX Series OSPF Interop VPN with Palo Alto Networks
Configuration
Recipe 10: SRX Series OSPF Interop VPN with Palo Alto Networks
Now set the default route for the local Internet service in the primary
routing instance:
setrouting-optionsstaticroute0.0.0.0/0next-hop1.1.1.254
Place the gateway interface into the untrust zone in the primary
routing instance:
setsecurityzonessecurity-zoneuntrustinterfacesfe-0/0/0.0
Now, allow management services on this interface for the VPN IKE
connections. You can also allow management services as needed on
this interface, but the IKE services are required to establish the VPN
connection. Since this is an Internet-facing interface, you will not
enable any other system services for now:
setsecurityzonessecurity-zoneuntrusthost-inbound-trafficsystem-servicesike
Next, configure the remote gateway IKE parameters for policy and a
preshared key:
setsecurityikepolicyike-policy1modemain
setsecurityikepolicyike-policy1proposal-setstandard
79
80
setsecurityikepolicyike-policy1pre-shared-keyascii-text"sharedsecret"
Follow these steps to create the route-based VPN using the tunnel
interface you just created:
setsecurityikegatewayike-gate1ike-policyike-policy1
setsecurityikegatewayike-gate1address2.2.2.2
setsecurityikegatewayike-gate1external-interfacefe-0/0/0.0
Then use the existing policy to create the IPsec Phase 2 connection and
tie this to the tunnel interface:
setsecurityipsecvpnike-vpn1ikegatewayike-gate1
setsecurityipsecvpnike-vpn1ikeipsec-policyvpn-policy1
setsecurityipsecvpnike-vpn1bind-interfacest0.0
setsecurityipsecvpnike-vpn1establish-tunnelsimmediately
Finally, set the VPN MTU to the most common value to prevent
fragmentation issues of traffic across the tunnel:
setsecurityflowtcp-mssipsec-vpnmss1350
You can also place the tunnel interface into a separate zone to allow
separation of policies for communications with the VPN, as opposed
to the local zone.
Recipe 10: SRX Series OSPF Interop VPN with Palo Alto Networks
81
82
Create the interface management policy to allow ping on the interfaces. Menu:Networktab>NetworkProfiles>InterfaceManagement:Selectnew:
Recipe 10: SRX Series OSPF Interop VPN with Palo Alto Networks
Create default route for the Internet access on the WAN interface.
Menu:Networks>virtualrouters:selectDefaultandStaticRoutetab:Addbutton:
83
84
Recipe 10: SRX Series OSPF Interop VPN with Palo Alto Networks
Create the VPN tunnel interface and assign an IP range and address.
Menu:Network>interfaces>Tunnel:Addbutton:
Enable OSPF and assign the local interface and the tunnel interface to
OSPF area 0 on the interfaces tab. The LAN interface is passive and
broadcast:
85
86
Menu:Network>IPSecTunnels:SelectAddbuttonthenaddanewtunnelinterface:
Recipe 10: SRX Series OSPF Interop VPN with Palo Alto Networks
87
88
References
Understanding IPsec VPN:
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/topic-collections/security/software-all/security/index.
html?topic-54272.html
Configuring Route-based VPNs:
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/topic-collections/security/software-all/security/index.
html?topic-52842.html
OSPF:
http://kb.juniper.net/InfoCenter/index?page=content&id=KB16570
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/pathway-pages/config-guide-ospf/config-guide-ospf.html
Recipe 11
SRX Series Interop VPN with Sonicwall
by Steve Puluka
Problem
IPsec VPN is the workhorse for enterprise site connections
because it allows Internet connections to provide secure private
transport. This recipe provides an interoperable configuration
using a route-based VPN on the SRX Series to the policy-based
VPN on the Sonicwall, allowing a smooth integration of existing
SonicOS VPN infrastructure to SRX.
Solution
The basic steps of the interop configuration are:
Configure the SRX for needed
services
NOTE
90
Vlan.0 - 10.0.1.1/24
SRX100
st0.0
10.0.0.1/24
trust
untrust
e0/0 - 1.1.1.1/24
Internet
untrust
WAN - 2.2.2.2/24
trust
Sonicwall
LAN - 10.0.2.1/24
Figure 11.1
Create a static route to the tunnel interface for the remote site address:
setrouting-optionsstaticroute10.0.2.0/24next-hopst0.0
setvlansvlan-trustl3-interfacevlan.0
setvlansvlan-trustinterfacefe-0/0/1.0
setsecurityzonessecurity-zonetrusthost-inbound-trafficsystem-servicesall
setsecurityzonessecurity-zonetrustinterfacesvlan.0
Now set the default route for the local Internet service in the primary
routing instance:
setrouting-optionsstaticroute0.0.0.0/0next-hop1.1.1.254
Place the gateway interface into the untrust zone in the primary
routing instance:
setsecurityzonessecurity-zoneuntrustinterfacesfe-0/0/0.0
Now allow management services on this interface for the VPN IKE
connections. You can also allow management services as needed on
this interface, but the IKE services are required to establish the VPN
connection. Since this is an Internet-facing interface, you will not
enable any other system services for now:
setsecurityzonessecurity-zoneuntrusthost-inbound-trafficsystem-servicesike
Next, configure the remote gateway IKE parameters for policy and a
preshared key:
setsecurityikepolicyike-policy1modemain
setsecurityikepolicyike-policy1proposal-setstandard
setsecurityikepolicyike-policy1pre-shared-keyascii-text"sharedsecret"
Follow these steps to create the route-based VPN using the tunnel
interface you just created:
setsecurityikegatewayike-gate1ike-policyike-policy1
setsecurityikegatewayike-gate1address2.2.2.2
setsecurityikegatewayike-gate1external-interfacefe-0/0/0.0
Then use the existing policy to create the IPsec Phase 2 connection and
tie this to the tunnel interface:
91
92
setsecurityipsecvpnike-vpn1ikegatewayike-gate1
setsecurityipsecvpnike-vpn1ikeipsec-policyvpn-policy1
setsecurityipsecvpnike-vpn1ikeproxyidentitylocal10.0.1.0/24remote10.0.2.0/24serviceany
setsecurityipsecvpnike-vpn1bind-interfacest0.0
setsecurityipsecvpnike-vpn1establish-tunnelsimmediately
Finally, set the VPN MTU to the most common value to prevent fragmentation issues of traffic across the tunnel:
setsecurityflowtcp-mssipsec-vpnmss1350
You can also place the tunnel interface into a separate zone to allow a
separation of policies for communications with the VPN as opposed to
the local zone.
93
94
Next, use the Add VPN dialog box and the settings noted below. The
first screen is where you select a Policy Type of Site-to-Site.
Menu:VPN>Settings>VPNPolicies:Addbutton:
The next tab is for the network parameters. This sets the proxy-id
values for the VPN:
On the advanced tab, remove the keep alive because you are using the
same feature on the SRX side in establish tunnels immediately. If both
sides are configured with this parameter it can cause issues with tunnel
establishment because both sides are trying to be the initiator but not
the responder for the IPsec communications.
95
96
References
Understanding IPsec VPNs:
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/topic-collections/security/software-all/security/index.
html?topic-54272.html
Configuring Route-based VPNs:
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/topic-collections/security/software-all/security/index.
html?topic-52842.html
OSPF:
http://kb.juniper.net/InfoCenter/index?page=content&id=KB16570
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/pathway-pages/config-guide-ospf/config-guide-ospf.html
Recipe 12
SRX Series Interop OSPF VPN with SSG
by Steve Puluka
Problem
IPsec VPN is the workhorse for enterprise site connections
because it allows Internet connections to provide secure private
transport. Both ScreenOS on the SSG device and Junos on the
SRX Series support creating a route-based VPN with tunnel
interfaces for creating neighbor relationships. This recipe provides the steps to overcome the minor compatibility issues that
arise when using OSPF across route-based VPNs between
ScrenOS and Junos, allowing a smooth migration of existing
ScreenOS VPN infrastructure to the SRX Series.
Solution
The basic steps of the interop configuration are:
NOTE
98
Vlan.0 - 10.0.1.1/24
OSPF Area 0
SRX100
st0.0
10.0.0.1/24
trust
untrust
e0/0 - 1.1.1.1/24
Tunnel Interfaces
OSPF Area 0
Internet
untrust
e0/0 - 2.2.2.2/24
trust
SSG5
bgroup0- 10.0.2.1/24
Figure 12.1
OSPF Area 0
The Topology of SRX Series Interop OSPF VPN with SSG Configuration
Now set the default route for the local Internet service in the primary
routing instance:
setrouting-optionsstaticroute0.0.0.0/0next-hop1.1.1.254
Place the gateway interface into the untrust zone in the primary
routing instance:
setsecurityzonessecurity-zoneuntrustinterfacesfe-0/0/0.0
Now allow management services on this interface for the VPN IKE
connections. You can also allow management services as needed on
this interface, but the IKE services are required to establish the VPN
connection. Since this is an Internet-facing interface, you will not
enable any other system services for now:
setsecurityzonessecurity-zoneuntrusthost-inbound-trafficsystem-servicesike
Next, configure the remote gateway IKE parameters for policy and a
preshared key:
99
100
setsecurityikepolicyike-policy1modemain
setsecurityikepolicyike-policy1proposal-setstandard
setsecurityikepolicyike-policy1pre-shared-keyascii-text"sharedsecret"
Follow these steps to create the route-based VPN using the tunnel
interface you just created:
setsecurityikegatewayike-gate1ike-policyike-policy1
setsecurityikegatewayike-gate1address2.2.2.2
setsecurityikegatewayike-gate1external-interfacefe-0/0/0.0
Now use the existing policy to create the IPsec Phase 2 connection and
tie this to the tunnel interface:
setsecurityipsecvpnike-vpn1ikegatewayike-gate1
setsecurityipsecvpnike-vpn1ikeipsec-policyvpn-policy1
setsecurityipsecvpnike-vpn1bind-interfacest0.0
setsecurityipsecvpnike-vpn1establish-tunnelsimmediately
Finally, set the VPN MTU to the most common value to prevent
fragmentation issues of traffic across the tunnel:
setsecurityflowtcp-mssipsec-vpnmss1350
Enable OSPF and assign the local interface and the tunnel interface to
OSPF area 0:
setinterfacebgroup0protocolospfarea0
setinterfacebgroup0protocolospfpassive
setinterfacebgroup0protocolospfenable
setinterfacetun.1protocolospfarea0
setinterfacetun.1protocolospflink-typep2p
setinterfacetun.1protocolospfenable
101
102
Now set the default route for the local Internet service in the primary
routing instance:
setroute0.0.0.0/0interfaceethernet0/0gateway2.2.2.254
Next, configure the remote gateway IKE parameters for policy and a
preshared key:
setikegatewayike-policy1address1.1.1.1outgoinginterfaceeth0/0presharesharedsecretsec-levelstandard
Then create the IPsec Phase 2 connection and tie this to the tunnel
interface:
setvpnike-vpn1gatewayike-policy1sec-levelstandard
setvpnike-vpn1bindinterfacetun.1
References
Understanding IPsec VPNs:
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/topic-collections/security/software-all/security/index.
html?topic-54272.html
Configuring Route-based VPNs:
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/topic-collections/security/software-all/security/index.
html?topic-52842.html
OSPF:
http://kb.juniper.net/InfoCenter/index?page=content&id=KB16570
http://www.juniper.net/techpubs/en_US/junos11.4/information-products/pathway-pages/config-guide-ospf/config-guide-ospf.html
Recipe 13
Port Mirroring
by David Roy
Problem
How to mirror traffic when there are two bidirectional flows?
Solution
Figure 13.1 shows you the simple network of this recipe,which
involves four MX routers and three probes. Lets focus on the R2
router whose physical interfaces (xe-0/0/2 and xe-11/0/2) support
two types of family:
unit 0: family inet vlan-id 10
unit 100: family bridge vlan-id 100
There are two bidirectional flows with a fixed rate sent through
R2. The aim is to mirror traffic, both the routed (Flow 1) and the
bridged (Flow 2) traffic. The mirrored traffic on R2 should be sent
to the two local probes (Probe 1 and 2) and to the remote Probe 3.
104
Probe 1
172.16.22.2/24
Probe 2
172.16.23.2/24
ge-2/0/6.100
R1
Flow 1
Flow 2
xe-11/0/2.0
xe-11/0/2.100
Probe 3
172.16.24.2/24
ge-2/0/9
Figure 13.1
ge-2/0/7
R2
xe-0/0/2.0
R3
Flow
Type
Rate (pps)
Flow 1
UDP
10000
Flow 2
TCP
20000
Router / Interface
Family
Vlan-ID
IPv4 Address
R2 / xe-0/0/2.0
inet
10
172.16.20.5/30
R2 / xe-0/0/2.100
bridge
100
NA
R2 / xe-11/0/2.0
inet
10
172.16.20.1/30
xe-0/0/2.100
ae0
R4
R2 / xe-11/0/2.100
bridge
100
NA
R2 / ae0.0
inet
NA
172.16.20.9/30
R2 / lo0.0
inet
NA
172.16.16.1/32
R2 / irb.100
inet
NA
192.168.36.1/24
R4 /lo0.0
inet
NA
172.16.16.2/32
}
}
xe-11/0/2{
description"To_R1";
vlan-tagging;
encapsulationflexible-ethernet-services;
unit0{
vlan-id10;
familyinet{
address172.16.20.1/30;
}
familympls;
}
unit100{
encapsulationvlan-bridge;
vlan-id100;
familybridge;
}
}
ge-2/0/6{
description"To_Probe_1";
unit0{
familyinet{
address172.16.22.1/24;
}
familympls;
}
}
ge-2/0/7{
description"To_Probe_2";
unit0{
familyinet{
address172.16.23.1/24;
}
}
}
ae0{
description"To_R4";
unit0{
familyinet{
address172.16.20.9/30;
}
familympls;
}
}
lo0{
unit0{
familyinet{
address172.16.16.1/32;
}
}
}
irb{
unit100{
familyinet{
105
106
address192.168.36.1/24;
}
}
}
}
bridge-domains{
mydommain{
vlan-id100;
interfacexe-11/0/2.100;
interfacexe-0/0/2.100;
routing-interfaceirb.100;
}
}
Now check the rates on xe-0/0/2 and xe-11/0/2. You can see the
bidirectional 30kpps global traffic (inet + bridge):
droydavi@ncdib102>showinterfacesxe-0/0/2|match"Physical|rate"
Physicalinterface:xe-0/0/2,Enabled,PhysicallinkisUp
Inputrate:126482992bps(30000pps)
Outputrate:126483520bps(30000pps)
droydavi@ncdib102>showinterfacesxe-11/0/2|match"Physical|rate"
Physicalinterface:xe-11/0/2,Enabled,PhysicallinkisUp
Inputrate:126479296bps(30000pps)
Outputrate:126475072bps(30000pps)
port-mirror-instanceMY_MIRROR;
}
}
forwarding-options{
port-mirroring{
mirror-once;
instance{
MY_MIRROR{
input{
rate1;
}
familyinet{
output{
next-hop-groupGROUP_1;
}
}
}
}
}
}
As you can see, you mirror every packet (rate = 1). The mirror-once
knob is sometimes needed when you want to mirror traffic in both
directions and it avoids having duplicate packets on the destination
mirroring interface.
Lets have a look at the output statement under family inet level.
Output means on which destination(s) the router has to send the
mirrored packets.
Remember the aim is to send mirrored traffic toward two probes.
When you have only one local probe connected, you can easily specify
the destination interface under the output statement like this:
familyinet{
output{
interfacege-0/0/6.0{
next-hop172.16.22.2;
}
}
}
Here, you sent the mirrored traffic to ge-2/0/6.0 interface. On nonpoint-to-point interfaces you must specify the next-hop address to
allow the ARP resolution. Without the next-hop configuration the port
mirroring will still remain down. If the probe is not configured to reply
to the ARP request you also need to configure a static ARP entry with
the MAC address of the probe or a fake MAC in case of the probe
working in promiscuous mode:
ge-2/0/6{
unit0{
familyinet{
address172.16.22.1/24{
arp172.16.22.2mac00:00:00:11:22:33;
107
108
}
}
}
}
This is not our case as Probe 1 and Probe 2 can reply to ARP requests,
therefore static ARP entries are unnecessary. Moreover, as the requirement is to send mirrored traffic toward the two probes, use the nexthop-group feature under the output level. Next-hop-group is also
defined at the forwarding-options level. You can also define under this
statement several destination interfaces. Lets have a look at the
GROUP_1 next-hop-group configuration:
forwarding-options{
next-hop-groupGROUP_1{
group-typeinet;
interfacege-2/0/6.0{
next-hop172.16.22.2;
}
interfacege-2/0/7.0{
next-hop172.16.23.2;
}
}
}
You can see that the two destination interfaces and their associated
next-hop are well defined. Moreover, dont forget to specify the type of
next-hop to use: here it was inet. Its time to check the status of your
port mirroring configuration. To do that use this CLI command:
user@R2>showforwarding-optionsport-mirroring
InstanceName:MY_MIRROR
InstanceId:2
Inputparameters:
Rate:1
Run-length:0
Maximum-packet-length:0
Outputparameters:
FamilyStateDestinationNext-hop
inetupGROUP_1
accept;
port-mirror-instanceMY_MIRROR;
}
}
term2{
thenaccept;
}
}
}
}
Finally, lets apply the filter on the xe-11/0/2.0 for both directions:
xe-11/0/2{
vlan-tagging;
encapsulationflexible-ethernet-services;
unit0{
vlan-id10;
familyinet{
filter{
inputMIRROR;
outputMIRROR;
}
address172.16.20.1/30;
}
familympls;
}
unit100{
encapsulationvlan-bridge;
vlan-id100;
familybridge;
}
}
Now, you can check the traffic rate on the two interfaces (ge-2/0/6 and
ge-2/0/7) to verify that Flow 1 is mirrored and sent toward the two
probes:
user@R2>showinterfacesge-2/0/6|matchrate
Inputrate:712bps(1pps)
Outputrate:82400232bps(20000pps)
user@R2>showinterfacesge-2/0/7|matchrate
Inputrate:352bps(0pps)
Outputrate:82400232bps(20000pps)
You can see a 20Kpps output rate on both interfaces. Why 20kpps
whereas Flow 1 is a 10Kpps stream? Remember, Flow 1 is bidirectional
and you mirror the input and output directions. This is why you see
20kpps : 10K for input direction and 10K for output direction.
Great, your job is completed and the first requirement is covered with
this first configuration. Now, lets have a look at the local Layer 2
mirroring configuration.
109
110
To keep the IPv4 mirrored traffic untagged, you add vlan-id 1 on the
unit 0 and the flexible-vlan-tagging and native-vlan-id knobs are
used to complete the task. Then you just have to add a new unit, here
unit 2, and configure the vlan-bridge encapsulation on it. Finally, add
the two bridged sub-interfaces within a dedicated bridge-domain to
avoid commit failure.
Great! Your two probe interfaces are ready to forward Layer 2 mirrored traffic. Lets now add the Layer 2 port mirroring configuration:
also known as the VPLS family under the port mirroring statement
(family vpls includes VPLS and bridge encapsulations):
forwarding-options{
port-mirroring{
mirror-once;
instance{
MY_MIRROR{
input{
rate1;
}
familyinet{
output{
next-hop-groupGROUP_1;
}
}
familyvpls{
output{
next-hop-groupGROUP_2;
}
}
}
}
}
next-hop-groupGROUP_1{
group-typeinet;
interfacege-2/0/6.0{
next-hop172.16.22.2;
}
interfacege-2/0/7.0{
next-hop172.16.23.2;
}
}
next-hop-groupGROUP_2{
group-typelayer-2;
interfacege-2/0/6.2;
interfacege-2/0/7.2;
}
}
111
112
droydavi@ncdib102>showforwarding-optionsport-mirroring
InstanceName:MY_MIRROR
InstanceId:2
Inputparameters:
Rate:1
Run-length:0
Maximum-packet-length:0
Outputparameters:
FamilyStateDestinationNext-hop
inetupGROUP_1
vplsupGROUP_2
Now you have both families enabled but Flow 2 is not yet mirrored.
Actually, you need to specify, with a firewall filter, which traffic you
want to mirror. Then, you need to apply the filter on a specific interface
and for a specific direction. The firewall filter is a bridged filter and is
configured and applied on the xe-11/0/2.100 sub-interface as follows:
firewall{
familybridge{
filterMIRROR_L2{
term1{
then{
accept;
port-mirror-instanceMY_MIRROR;
}
}
}
}
}
xe-11/0/2{
unit0{
vlan-id10;
familyinet{
filter{
inputMIRROR;
outputMIRROR;
}
address172.16.20.1/30;
}
familympls;
}
unit100{
encapsulationvlan-bridge;
vlan-id100;
familybridge{
filter{
inputMIRROR_L2;
outputMIRROR_L2;
}
}
}
}
The filter is the simplest one. You should mirror all the Layer 2 traffic
received and forwarded by the xe-11/0/2.100 sub-interface. That
traffic includes the Flow 2 and also the traffic destined to irb.100
interface. But what about the outbound traffic sent by the R2 irb.100
interface? This traffic is a Layer 3 traffic not covered by the family
VPLS port mirroring configuration. To mirror the irb.100 output
traffic, you need to enable family inet mirroring. But this task is
already done. Nevertheless, you still need to add a firewall filter on the
irb.100 in output direction to finalize the second requirement. Here
you can see the specific IRB inet filter and its configuration on the
IRB interface:
firewall{
family inet {
filterMIRROR_IRB_OUT{
term 1 {
from {
source-address 192.168.36.1/24;
}
then {
port-mirror-instance MY_MIRROR;
accept;
}
}
term 2 {
then accept;
}
}
}
interface{
irb{
unit100{
familyinet{
filter{
outputMIRROR_IRB_OUT;
}
address192.168.36.1/24;
}
}
}
}
Lets check the rate of the two interfaces connected to Probe 1 and
Probe 2. As expected, the router now sends 60Kpps toward the two
local probes: 10Kpps IN Flow 1 + 10Kpps OUT Flow 1 + 20Kpps IN
Flow 2 + 20Kpps OUT Flow 2:
user@R2>showinterfacesge-2/0/6|matchrate
Inputrate:0bps(0pps)
Outputrate:252961456bps(60000pps)
user@R2>showinterfacesge-2/0/7|matchrate
Inputrate:0bps(0pps)
Outputrate:252962432bps(60000pps)
113
114
Remote Mirroring
You have successly completed the first two requirements of this recipe.
The last configuration step should allow the remote Probe 3 to receive
a copy of the Layer 2 and Layer 3 mirrored traffic. To do that, tunnels
are used between R2 and R4 router, which is directly connected to
Probe 3. Two types of tunnels will be used:
GRE tunnel: to convey Layer 3 traffic
L2circuit: to convey Layer 2 traffic
The first configuration is the activation of tunnel service knob on both
the R2 and R4 routers in order to have available tunnel interfaces.
NOTE
chassis{
fpc0{
pic0{
tunnel-services{
bandwidth10g;
}
}
}
}
Now, lets start the configuration of the GRE tunnel. Use the lo0
addresses of R2 and R4 as tunnel end points. Also assign a private IP
address on the GRE tunnel logical interface. Heres the configuration
of the GRE interface on R2:
interfaces{
gr-0/0/0{
unit0{
tunnel{
source172.16.16.1;
destination172.16.16.2;
}
familyinet{
address172.16.30.1/30;
}
}
}
}
}
familyinet{
address172.16.30.2/30;
}
}
}
}
115
116
interfacegr-0/0/0.0{
next-hop172.16.30.2;
}
interfacege-2/0/6.0{
next-hop172.16.21.6;
}
interfacege-2/0/7.0{
next-hop172.16.21.2;
}
}
}
Now, check traffic statistics of the R4 GRE interfaces. Youll notice the
GRE interface receives the IPv4 mirrored traffic well (2x 10Kpps):
user@R4>showinterfacesgr-0/0/0|matchrate
Inputrate:82402376bps(20000pps)
Outputrate:0bps(0pps)
Then check that this traffic is well decap. and routed (in the routing
instance) to the Probe 3 interface (the default route):
user@R4>showinterfacesge-2/0/9|matchrate
Inputrate:0bps(0pps)
Outputrate:82403455bps(20000pps)
bridge-domains{
MIRRORING_DOMAIN{
interfacege-2/0/6.2;
interfacege-2/0/7.2;
interfacelt-0/0/0.0;
}
}
After that you can start the configuration of the L2circuit on R2 and
R4 router. On R2:
protocols{
ldp{
interfaceall;
}
l2circuit{
neighbor172.16.16.2{
interfacelt-0/0/0.1{
virtual-circuit-id513;
}
}
}
}
On R4:
protocols{
ldp{
interfaceall;
}
l2circuit{
117
118
neighbor172.16.16.1{
interfacege-2/0/9.2{
virtual-circuit-id513;
}
}
}
}
To finish this recipe lets add the unit 0 of the R2. lt interfaces within
the next-hop-group GROUP_2 to start sending Layer 2 mirrored traffic
within the pseudowire:
forwarding-options{
next-hop-groupGROUP_2{
group-typelayer-2;
interfacelt-0/0/0.0;
interfacege-2/0/6.2;
interfacege-2/0/7.2;
}
}
Lets make a last check to validate that Probe 3 receives all R2 mirrored
traffic:
user@R4>showinterfacesge-2/0/9|matchrate
Inputrate:0bps(0pps)
Outputrate:255522520bps(60000pps)
Recipe 14
Configuring Multiple Proxy-IDs on
an SRX IPsec VPN
by Scott Ware
Problem
Previously, there was no way to define having multiple proxy-ID
support like the equipment of other vendors when setting up an
IPsec VPN on an SRX. This sometimes made setting up a VPN on
an SRX a little more challenging, but not impossible.
With the release of the 12.1X46 line of the Junos OS earlier this
year, Juniper added support for this feature which essentially
removes any type of lingering incompatibility with setting up
an IPsec VPN tunnel no matter what hardware device is on the
other end.
NOTE
This feature is only available in Junos 12.1X46 and higher for the
SRX. Currently you can only use it on route-based VPNs.
Solution
Using traffic selectors helps with the compatibility and robustness
of your VPN tunnel. For example, in a route-based VPN you will
typically have static route statements in your configuration
directing the traffic through a certain tunnel interface (st0.x). By
using traffic selectors to match up your SAs, the SRX automatically injects the route into the routing table for the VPN for each
traffic selector you have configured.
120
NOTE
[editsecurityike]
proposalSite-A{
authentication-methodpre-shared-keys;
dh-groupgroup2;
authentication-algorithmsha1;
encryption-algorithm3des-cbc;
lifetime-seconds86400;
}
policySite-A{
modemain;
proposalsSite-A;
pre-shared-keyascii-text"juniper123";
}
gatewaySite-A{
ike-policySite-A;
address100.1.1.50;
no-nat-traversal;
external-interfacereth1.0;
}
The new traffic selector setting resides under the edit security ipsec
vpn vpn-name hierarchy. The syntax for configuring a traffic-selector is
as follows:
traffic-selectortraffic-selector-name{
local-ipip-address/netmask;
remote-ipip-address/netmask;
}
192.168.4.5/32
172.16.1.0/24
10.5.5.0/23
172.16.4.0/23
10.5.10.0/24
121
122
}
traffic-selectorTS6{
local-ip
10.5.10.0/24;
remote-ip
172.16.4.0/23;
}
establish-tunnelsimmediately;
}
NOTE
If you are using NAT, then your local-ip option within your trafficselector needs to be the IP address that the remote end is targeting. For
more on how the SRX processes traffic flows, visit the following URL:
http://kb.juniper.net/InfoCenter/index?page=content&id=KB16110
As you can see, the configuration of traffic selectors is really quite
simple and can make setting up your IPsec VPNs much easier.
References
To find out more about traffic selectors and using them in IPsec VPNs,
visit the following resources:
http://www.juniper.net/techpubs/en_US/junos12.1x46/topics/concept/
ipsec-vpn-traffic-selector-understanding.html
http://www.juniper.net/techpubs/en_US/junos12.1x46/topics/reference/configuration-statement/traffic-selector-edit-security.html
Recipe 15
Scheduling Configuration Changes
with Apply-groups
by Petr Klimaj
Problem
A common network administrators task is to apply network
changes at particular times and dates. Junos allows you to
schedule and apply changes using configuration groups.
Solution
Configuration groups are a Junos methodolgy for creating general
configuration blocks (think of templates) from one place of the
devices configuration and applying them into another place. The
archetypal usage is changing the MTU on all interfaces: you can
create a group with a MTU value and then apply it to all interfaces with one command. And starting with Junos 11.3, you can
use configuration groups to apply changes based on time, allowing for scheduling of any configuration changes.
Lets look at an example where you have OSPF configured on the
device with two GE interfaces participating:
124
lab@srxE-1#showprotocolsospf
area0.0.0.0{
interfacege-0/0/1.0;
interfacege-0/0/2.0{
metric10;
}
interfacelo0.0;
}
Routing to remote hosts (such as 10.0.0.2) now goes via the ge-0/0/1
interface due to its smaller metric (default OSPF metric for a GE
interface is 1):
lab@srxE-1>showroute10.0.0.2
inet.0:9destinations,9routes(9active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
10.0.0.2/32*[OSPF/10]00:00:31,metric1
>to10.1.0.222viage-0/0/1.0
Lets assume you want to transition traffic to the ge-0/0/2 interface (by
increasing the metric of ge-0/0/1) at some time, for example, from
12:10 to 12:20 am. This is how you can do it.
First, create a configuration group and use the when option to specify
the time:
[edit]
lab@srxE-1#setgroupsMOVE-TRAFFICwhentime12:10to12:20
[edit]
lab@srxE-1#setgroupsMOVE-TRAFFICprotocolsospfarea0.0.0.0interfacege0/0/1.0metric100
Lets check how it works with the following set of commands (note
that the set cli timestamp operational mode command is used to
make Junos write the time of execution of any command):
lab@srxE-1>setclitimestamp
Jun2312:08:56
CLItimestampsetto:%b%d%T
lab@srxE-1>showroute10.0.0.2
Jun2312:09:06
inet.0:9destinations,9routes(9active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
10.0.0.2/32*[OSPF/10]00:00:41,metric1
>to10.1.0.222viage-0/0/1.0
lab@srxE-1>showconfigurationprotocolsospf|displayinheritance
Jun2312:10:34
area0.0.0.0{
interfacege-0/0/1.0{
##
##'100'wasinheritedfromgroup'MOVE-TRAFFIC'
##
metric100;
}
interfacege-0/0/2.0{
metric10;
}
interfacelo0.0;
}
lab@srxE-1>showroute10.0.0.2
Jun2312:11:17
inet.0:9destinations,10routes(9active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
10.0.0.2/32*[OSPF/10]00:00:04,metric10
>to10.2.0.222viage-0/0/2.0
lab@srxE-1>showroute10.0.0.2
Jun2312:21:26
inet.0:9destinations,9routes(9active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
10.0.0.2/32*[OSPF/10]00:00:31,metric1
>to10.1.0.222viage-0/0/1.0
As you can see, changes specified by the group have been applied and
released as per the when configuration.
Discussion
This is a simple lab example of a time-based group application.
Undertaking similar actions in a production environment requires best
practice care due to possible asymmetric routing in the scenario.
However, you should find this feature useful in other applications
during your work week.
125
126
Reference
More information about conditions in apply-groups can be found in
the technical documentation here:
http://www.juniper.net/techpubs/en_US/junos12.1/topics/topic-map/
junos-cli-using-conditions-config-groups-example.html
Recipe 16
Configuring MSTP on the QFX5100 Series
by Martin Brown
Problem
The decision as to which version of STP is most suitable for your
network should be made during the design phase of any network
implementation. Many corporate IT departments use Multiple
Spanning Tree Protocol (MSTP), also known as 802.1s, due to the
way it can load balance VLANs across uplinks and remember,
an unused link is wasted bandwidth.
The purpose of this recipe is to guide you through a scenario
where two QFX5100 switches are connected to each other via
their QSFP+ uplink ports and you want to change the version of
STP from RSTP, or 802.1w, to MSTP.
In this recipe, as shown in Figure 16.1, QFX5100-1 is connected
via ports xe-0/0/48 and xe-0/0/49 to ports xe-0/0/48 and xe0/0/49 respectively on QFX5100-2.
128
QFX5100
QFX5100
As the title suggests, these are not traditional EX Series switches, but
QFX Series switches. These switches offer a level of flexibility not
available on EX switches, but in return they require a little more
consideration and configuration than their EX counterparts. For
example, if the above commands were committed to a QFX5100 you
would very quickly lose connectivity and your QFX5100 would suffer
from a 40Gb/s bridging loop.
NOTE
Solution
The first step is to look at how RSTP is currently configured. Run the
following command and you should see the following output:
[edit]
root@QFX5100-1#runshowconfigurationprotocolsrstp
interfacexe-0/0/1.0{
}
interfacexe-0/0/2.0{
}
interfacexe-0/0/3.0{
}
interfacexe-0/0/4.0{
}
!linesomittedforbrevity
!
interfacexe-0/0/46.0{
}
interfacexe-0/0/47.0{
}
interfacexe-0/0/48.0{
}
interfacexe-0/0/49.0{
}
!linesomittedforbrevity
As you can see, under the RSTP configuration, all the interfaces are
assigned. This is interesting because you need to tell Junos which
interfaces you should include in the Spanning Tree Protocol, as
opposed to an EX switch, in which you would tell Junos which
interfaces not to include.
At first, the change in how to configure STP may seem counterintuitive; however, what it allows you to do is add some interfaces to one
version of spanning tree and other interfaces to another version of
spanning tree. For example:
deleteprotocolsrstpinterfacexe-0/0/5
setprotocolsstpinterfacexe-0/0/5
129
130
setprotocolsmstprevision-level1
setprotocolsmstp1vlan10
setprotocolsmstp2vlan20
setprotocolsmstpinterfaceall
NOTE
root@QFX5100-1>showspanning-treeinterfacemsti1
Spanningtreeinterfaceparametersforinstance1
InterfacePortIDDesignatedDesignatedPortStateRole
portIDbridgeIDCost
xe-0/0/48128:1128:132769.0070680b4cd22000FWDDESG
xe-0/0/49128:2128:232769.0070680b4cd22000FWDDESG
References
Should you wish to find out more about the QFX Series, or details on
the Spanning Tree Protocol, you may find the following information
useful:
http://www.juniper.net/us/en/products-services/switching/qfx-series/
http://www.ieee802.org/1/pages/802.1D.html
http://www.juniper.net/techpubs/en_US/junos13.2/topics/task/configuration/stp-qfx-series-cli.html
Recipe 17
Creating Independent Micro BFD Sessions for LAG
by Darren O'Connor
Problem
BFD is used to detect link failures very quickly with low overhead. Up until now, when enabling BFD to run over a LAG
interface, there is only a single BFD session that runs over one of
the member interfaces, and other member links could fail in this
time and you would need either LACP to timeout, or your IGP to
time out. Both of which are significantly slower than BFD.
In this topology, three member interfaces have been configured
for LAG.
ge-0/0/0
ge-0/0/1
ge-0/0/2
vMX0
Figure 17.1
vMX1
132
The configuration of both devices is very similar. Here is the configuration for VMX0:
chassis{
aggregated-devices{
ethernet{
device-count1;
}
}
}
interfaces{
ge-0/0/0{
gigether-options{
802.3adae0;
}
}
ge-0/0/1{
gigether-options{
802.3adae0;
}
}
ge-0/0/2{
gigether-options{
802.3adae0;
}
}
ae0{
aggregated-ether-options{
lacp{
active;
}
}
unit0{
familyinet{
address10.0.0.0/31;
}
}
}
}
protocols{
ospf{
area0.0.0.0{
interfaceae0.0{
interface-typep2p;
bfd-liveness-detection{
minimum-interval100;
minimum-receive-interval100;
multiplier3;
}
}
}
}
}
OSPF and BFD have been configured, but BFD is only running over
one of the interfaces. To prove this, you can view the traffic on each
interface:
juniper@VMX0>monitortrafficinterfacege-0/0/0no-resolve
verboseoutputsuppressed,use<detail>or<extensive>forfullprotocoldecode
AddressresolutionisOFF.
Listeningonge-0/0/0,capturesize96bytes
03:04:58.666117OutIP10.0.0.0.49152>10.0.0.1.3784:BFDv1,OnehopControl,StateUp,Flags:[none],length:24
03:04:58.756095OutIP10.0.0.0.49152>10.0.0.1.3784:BFDv1,OnehopControl,StateUp,Flags:[none],length:24
Ge-0/0/1 and ge-0/0/2 only have LACP frames entering and exiting the
interfaces:
juniper@VMX0>monitortrafficinterfacege-0/0/1no-resolve
verboseoutputsuppressed,use<detail>or<extensive>forfullprotocoldecode
AddressresolutionisOFF.
Listeningonge-0/0/1,capturesize96bytes
03:05:24.836493OutLACPv1,length60
03:05:25.388932InLACPv1,length60
03:05:25.846179OutLACPv1,length60
03:05:26.400433InLACPv1,length60
The issue here is that if ge-0/0/1 or ge-0/0/2 cant reach the other side,
it will not be found out until LACP times out. In the meantime, the
router will continue to hash traffic over the affected link, which will
blackhole those frames. Lets fix it.
Solution
RFC7130 was created to address this issue. The RFC specifies that a
separate BFD session is run over each LACP member interface. Juniper
added support for this RFC in Junos OS 13.3, by enabling BFD under
the aggregated interface. Each member interface then runs a separate
BFD session to its neighbors member interface.
The configuration:
juniper@VMX0>showconfigurationinterfacesae0
aggregated-ether-options{
bfd-liveness-detection{
minimum-interval50;
minimum-receive-interval50;
multiplier3;
neighbor10.0.0.1;
local-address10.0.0.0;
}
lacp{
133
134
active;
}
}
unit0{
familyinet{
address10.0.0.0/31;
}
}
If you check the BFD sessions, youll notice a separate session for each
member interface as well as the original OSPF BFD session. Checking
the session detail youll notice the client is LACPD and the session is
micro BFD. All three member interfaces show the same output:
juniper@VMX0>showbfdsessiondetail
DetectTransmit
AddressStateInterfaceTimeIntervalMultiplier
10.0.0.1Upge-0/0/20.3000.0503
ClientLACPD,TXinterval0.050,RXinterval0.050
Sessionuptime00:01:13,previousdowntime00:00:01
LocaldiagnosticNone,remotediagnosticNone
RemotestateUp,version1
Sessiontype:MicroBFD
DetectTransmit
AddressStateInterfaceTimeIntervalMultiplier
10.0.0.1Upge-0/0/10.3000.0503
ClientLACPD,TXinterval0.050,RXinterval0.050
Sessionuptime00:01:13,previousdowntime00:00:01
LocaldiagnosticNone,remotediagnosticNone
RemotestateUp,version1
Sessiontype:MicroBFD
DetectTransmit
AddressStateInterfaceTimeIntervalMultiplier
10.0.0.1Upge-0/0/00.3000.1003
ClientLACPD,TXinterval0.050,RXinterval0.050
Sessionuptime00:02:24,previousdowntime00:00:00
LocaldiagnosticNone,remotediagnosticNone
RemotestateUp,version1
Sessiontype:MicroBFD
Discussion
If you are following best practice, then you will have a control plane
filter on your device. Micro BFD uses a different port number than
BFD so you need to ensure youre allowing that traffic to get though.
Micro BFD uses UDP port 6784:
juniper@VMX0>...wallfamilyinetfilterPROTECT_REtermMICRO_BFD
from{
protocoludp;
port6784;
}
then{
accept;
}
Recipe 18
Quick Configuration of the Juniper-Kaspersky
Antivirus on the SRX
by Petr Klimaj
Problem
The Junos Unified Threat Management (UTM) suite includes
such features as Antispam, Web Filtering, and Content Filtering,
as well as Antivirus. These features are powerful in offering
additional protection on the edge of your network. However, a
significant portion of network administrators do not take advantage of these features for several reasons, such as the need to
purchase a license and the need to create additional configuration,
as well as concerns about possible performance issues.
Solution
This recipe shows you how to quickly generate trial license keys
(which are good for 30 days) and how to just as quickly configure
and check the work of one of the key UTM features, the JuniperKaspersky full file-based antivirus, which allows for antivirus
protection using one of the industrys best engines, including
protection from different sorts of malware and polymorphic
viruses in your HTTP, FTP, and mail traffic. Using a trial license
allows you to try and then buy, if you deem appropriate, as well
as helping you to become familiar with the antivirus and its
deployment for when you do purchase this item. Note that you
can only obtain a trial license once per year for each device serial
number.
This recipe should work on any high-memory SRX branch model
136
Which will show all licenses installed on the device. Now, to actually
generate the trial keys, use this command:
pk@inet-gw> request system license update trial
NOTE
Expiry
2014-07-04 00:00:00 UTC
137
138
settings in the default profile will depend on the hardware. You can
create your own feature profiles and policies (using the default ones as
the examples), or just use the defaults. If you do so, the only thing you
need to enable UTM is to add reference to the UTM policy in all your
security policies that you want to process traffic with antivirus.
For example, if you have a policy permitting HTTP and FTP from
Trust to Untrust zone:
pk@inet-gw# show security policies from-zone Trust to-zone Untrust
policy Trust-to-Untrust {
match {
source-address any;
destination-address any;
application [ junos-http junos-ftp ];
}
then {
permit;
}
}
}
Use the following command to enable antivirus, then check the result:
pk@inet-gw# set security policies from-zone Trust to-zone Untrust policy Trust-toUntrust then permit application-services utm-policy junos-av-policy
pk@inet-gw# show security policies from-zone Trust to-zone Untrust
from-zone Trust to-zone Untrust {
policy Trust-to-Untrust {
match {
source-address any;
destination-address any;
application [ junos-http junos-ftp ];
}
then {
permit {
application-services {
utm-policy junos-av-policy;
}
}
}
}
}
As you should see, the file was not downloaded (actually, its content
was replaced with a virus warning, and the same warning was presented to you by the FTP client). You could also check the logs and stats:
139
140
Clean
0
0
0
0
1
0
Threat-found
1
Fallback
0
You can see that at this point the antivirus is working fine.
Discussion
The use of Juniper-Kaspersky antivirus on your firewall is advantageous even if you already have another antivirus solution deployed on
the end hosts. The basic configuration of Kaspersky antivirus on the
Juniper SRX is extremely simple, and you can even test the feature at
any time with a trial license key.
References
For more information about antivirus configuration on the SRX and
available options, see, for example, these application notes:
http://www.juniper.net/us/en/local/pdf/app-notes/3500158-en.pdf
http://www.juniper.net/us/en/local/pdf/app-notes/3500153-en.pdf
Or review these Knowledge Base articles:
http://kb.juniper.net/InfoCenter/index?page=content&id=KB16620
http://kb.juniper.net/InfoCenter/index?page=content&id=KB17283
For the full Juniper technical documentation, go to:
http://www.juniper.net/techpubs/