Juniper Routing Policy and Firewall Filters
The JUNOS Internet software provides a policy framework, which is a collection of JUNOS policies that allows you to control flows of routing information and packets. The policy framework is composed of routing policy, which allows you to control the routing information or change between the routing protocols and the routing tables and between the routing tables and the forwarding table and firewall filter policy, which allows you to control packets transiting the router to a network destination and packets destined for and sent by the router.
The term firewall filter policy is used here to emphasize that a firewall filter is a policy and shares some fundamental similarities with a routing policy. However, when referring to a firewall filter policy in the remainder of this book, the term firewall filter is used.
The JUNOS policies affect the following router flows:
Flow of routing information between the routing protocols and the routing tables and between the routing tables and the forwarding table. The Routing Engine handles this flow. Routing information is the information about routes learned by the routing protocols from a router's neighbors. This information is stored in routing tables and is subsequently advertised by the routing protocols to the router's neighbors. Routing policies allow you to control the flow of this information.
Flow of data packets in and out of the router physical interfaces. The Packet Forwarding Engine handles this flow. Data packets are chunks of data that transit the router as they are being forwarded from a source to a destination. When a router receives a data packet on an interface, the router determines where to forward the packet by looking in the forwarding table for the best route to a destination. The router then forwards the data packet toward its destination through the appropriate interface. Firewall filters allow you to control the flow of these data packets.
Flow of local packets from the router physical interfaces and to the Routing Engine. The Routing Engine handles this flow. Local packets are chunks of data that are destined for or sent by the router. Local packets usually contain routing protocol data, data for IP services such as telnet or secure shell (ssh), and data for administrative protocols such as the Internet Control Message Protocol (ICMP). When the Routing Engine receives a local packet, it forwards the packet to the appropriate daemon or to the kernel, which are both part of the Routing Engine, or to the Packet Forwarding Engine. Firewall filters allow you to control the flow of these local packets.
Figure 8.1 illustrates the flows of routing information and packets through the router. Although the flows are very different from each other, they are also interdependent. Routing policies determine which routes are placed in the forwarding table. The forwarding table in turn has an integral role in determining the appropriate physical interface through which to forward a packet.
Figure 8.1 Flows of Routing Information and Packets
You can configure routing policies to control which routes the routing protocols place in the routing tables and to control which routes the routing protocols advertise from the routing tables (see Figure 8.2). The routing protocols advertise active routes only from the routing tables. (An active route is a route that is chosen from all routes in the routing table to reach a destination.)
Figure 8.2 Routing Policies to Control Routing Information Flow
For more information about the active route selection process, see "How the Active Route Is Determined," on page 376.
You can also use routing policies to change specific route characteristics, which allow you to control which route is selected as the active route to reach a destination, to effect changes to the default BGP route flap-damping values, to perform per-packet load balancing, and to enable class of service (CoS).
Firewall filters provide a means of protecting your router from excessive traffic transiting the router to a network destination or destined for the Routing Engine. Firewall filters that control local packets can also protect your router from external aggressions such as denial-of-service (DoS) attacks. You can configure firewall filters to control which data packets are accepted on and transmitted from the physical interfaces and which local packets are transmitted from the physical interfaces to the Routing Engine (see Figure 8.3).
Figure 8.3 Firewall Filters to Control Packet Flow
A policy is a mechanism in the JUNOS policy framework that allows you to configure criteria against which something can be compared and an action that is performed if the criteria are met.
All policies provide two points at which you can control routing information or packets through the router (see Figure 8.4). These control points allow you to control routing information before and after it is placed in the routing table, data packets before and after a forwarding table lookup, and local packets before and after they are received by the Routing Engine. (Figure 8.4 appears to depict only one control point, but because of the bidirectional flow of the local packets, two control points actually exist.)
Figure 8.4 Policy Control Points
Because there are two control points, you can configure policies that control the routing information or data packets before and after their interaction with their respective tables and local packets before and after their interaction with the Routing Engine. Import routing policies control the routing information that is placed in the routing tables, while export routing policies control the routing information that is advertised from the routing tables. Input firewall filters control packets that are received on a router interface, while output firewall filters control packets that are transmitted from a router interface.
All policies consist of the following configurable components:
Match conditionsCriteria against which a route or packets are compared. You can configure one or more criteria. If all criteria match, one or more actions are applied.
ActionsWhat happens if all criteria match. You can configure one or more actions.
TermsNamed structures in which match conditions and actions are defined. You can define one or more terms.
The policy framework software evaluates each incoming and outgoing route or packet against the match conditions in a term. If the criteria in the match conditions are met, the defined action is taken. In general, the policy framework software compares the route or packet against the match conditions in the first term in the policy, then goes on to the next term, and so on. Therefore, the order in which you arrange terms in a policy is relevant. However, the order of match conditions within a term is not relevant because a route or packet must match all match conditions in a term for an action to be taken.
If an incoming or outgoing route or packet arrives and an explicitly configured policy related to the route or to the interface upon which the packet arrives is not configured, the action specified by the default policy is taken. A default policy is a rule or a set of rules that determine whether the route is placed in or advertised from the routing table, or whether the packet is accepted into or transmitted from the router interface. All policies also have default actions in case a policy does not specify a match condition, a match occurs, but a policy does not specify an action, a match does not occur with a term in a policy and subsequent terms in the same policy exist, or a match does not occur by the end of a policy.
All policies share a two-step configuration process:
Define the policyDefine the policy components, including criteria against which routes or packets are compared and actions that are performed if the criteria are met.
Apply the policyApply the policy to whatever moves the routing information or packets through the router, for example, the routing protocol or router interface.
The JUNOS policy architecture is simple and straightforward. However, the actual implementation of each policy adds layers of complexity to the respective policies as well as power and flexibility to your router's capabilities. Configuring a policy has a major impact on the flow of routing information or packets within and through the router. For example, you can configure a routing policy that does not allow routes associated with a particular customer to be placed in the routing table. As a result of this routing policy, the customer routes are not used to forward data packets to various destinations, and the routes are not advertised by the routing protocol to neighbors. Before configuring a policy, determine what you want to accomplish with it and thoroughly understand how to achieve your goal using the various match conditions and actions. Also, make sure that you understand the default policies and actions for the policy you are configuring.