QoS Policy Propagation
Cisco Express Forwarding (CEF) and the forwarding information base (FIB) were discussed in Chapter 2. A FIB leaf has three policy parameters:
Precedence
QoS-group ID
Traffic index
All three parameters can be used to provide differential treatment to an IP packet in forwarding or accounting. The precedence is as defined in the IPv4 header. After it is reset in IP packets, it can influence QoS treatment in other routers. The other two parameters are used by the local router only to differentiate traffic.
BGP can set these parameters when certain BGP prefixes and attributes are matched. With this information in CEF, policies can be created and accounted. Policy accounting using BGP is discussed in the section "BGP Policy Accounting."
QoS Policy Propagation via BGP (QPPB) lets you map BGP prefixes and attributes to CEF parameters that can be used to enforce traffic policing. Compared to other QoS methods, QPPB allows BGP policy set in one location of the network to be propagated via BGP to other parts of the network, where appropriate QoS policies can be created.
Configuring QPPB generally involves the following steps:
Step 1 |
Identify BGP prefixes that require preferential treatment, and tag them with appropriate BGP attributes. |
Step 2 |
Set appropriate FIB policy parameters for each type of traffic. |
Step 3 |
Configure FIB address lookups for the tagged prefixes as packets are received on an interface, and set appropriate QoS policies. |
Step 4 |
Enforce policing based on the lookups and settings done in Step 3 for packets received or transmitted. |
The following sections describe each step in greater detail. Configuration examples appear later.
Identifying and Tagging BGP Prefixes That Require Preferential Treatment
Figure 4-8 shows how this process works. Assume that AS 100 wants to create a special forwarding policy for traffic between AS 200 and AS 300 for prefix 172.16.0.0/16. When the prefix is first received from R1 via BGP, R2 tags the prefix with special BGP attributes, such as a specific community value.
Figure 4-8 How QoS Policy Propagation via BGP Works
Setting FIB Policy Entries Based on BGP Tagging
As the prefix is propagated via BGP inside AS 100 to R4, the attributes are propagated as well. When R4 receives the prefix with the matching attributes, it can set various FIB policy entries using the table-map command in BGP. For QPPB, either or both Precedence and QoS-group ID (a parameter internal to the router) can be set. The Precedence can have eight values, 0 to 7, and the QoS-group ID can have 99 values, 1 to 99. Each value or a combination of both values can represent one class of traffic. Note that these settings have no impact on traffic forwarding until they are used to classify and police the traffic (as discussed next).
NOTE
Changes to the FIB/RIB tables are made when the IP RIB is cleared using clear ip route *, the BGP session is reset, or a router is reloaded. All of these actions can be disruptive to the traffic.
Within the FIB entry for the prefix 172.16.0.0/16, the following mappings are possible, depending on the table map configuration:
172.16.0.0 Precedence
172.16.0.0 QoS-group ID
172.16.0.0 Precedence and QoS-group ID
Configuring Traffic Lookup on an Interface and Setting QoS Policies
The next step is to classify the incoming traffic from an interface based on the FIB policy entries. The definition of the incoming interface depends on the traffic's direction. If traffic is destined for 172.16.0.0/16 from AS 300, the incoming interface is the link between R4 and R5; if the traffic is destined for AS 300 from 172.16.0.0/16 (the return traffic), the incoming interface is the link between R3 and R4. On the incoming interfaces on R4, enable FIB policy lookup using the following command:
bgp-policy {source | destination} {ip-prec-map | ip-qos-map}
The keywords source and destination indicate whether to use the source or the destination IP address of an incoming packet to look up the FIB entries. On the link between R4 and R5, the incoming traffic is destined for 172.16.0.0/16, so you should use destination. On the link between R3 and R4, the incoming traffic is sourced from 172.16.0.0/16, so you should use source.
With this configuration command, appropriate QoS policies are also set if there is a match for both the address and QoS parameters. The interface map keyword specifies which of the two policy FIB entries to set for the packet. If ip-prec-map is specified, the IP precedence bits are set for the matching packets; if ip-qos-map is specified, the QoS-group ID is set. Note that setting IP precedence bits here might affect the QoS treatment of these packets on other routers.
Enforcing Policing on an Interface as Traffic Is Received and Transmitted
The last step of QPPB configuration is to create traffic policing on the interface to AS 300. This can be accomplished by using Committed Access Rate (CAR) and Weighted Random Early Detection (WRED). The policing can be done on the input to the router for traffic destined for 172.16.0.0 or on the output from the router for the return traffic sourced from 172.16.0.0. The policing is created based on the result of the policy lookup and settings done previously.
An Example of QPPB
Figure 4-9 shows a simple topology that demonstrates how to configure QPPB. Within AS 100, special treatment is needed for traffic between AS 200 and AS 300 to and from the prefix 172.16.0.0/16. On R2, prefix 172.16.0.0/16 from R1 is tagged with a community of 100:200, and the prefix is propagated to R3 via iBGP. The FastEthernet 10/0 interface on R3 is used to demonstrate how QoS policing can be set for traffic destined for 172.16.0.0/16.
Figure 4-9 Example of QoS Policy Propagation
Example 4-31 shows a sample BGP configuration on R3. The router number is used as the host address. The route map Set-policy sets the FIB QoS-group ID to 2 for prefixes matching the community 100:200, which is tagged for 172.16.0.0/16 by R2.
Example 4-31 Sample BGP Configuration on R3
router bgp 100 table-map Set-policy neighbor 192.168.23.2 remote-as 100 neighbor 192.168.34.4 remote-as 300 ! ip community-list 1 permit 100:200 ! route-map Set-policy permit 10 match community 1 set ip qos-group 2
Examples 4-32 and 4-33 show the IP RIB and FIB entries, respectively. Note that prefix 172.16.0.0/16 is now set with qos-group 2.
Example 4-32 IP RIB Entry for 172.16.0.0
R3#show ip route 172.16.0.0 Routing entry for 172.16.0.0/16 Known via "bgp 200", distance 200, metric 0, qos-group 2, type internal
Last update from 192.168.23.2 00:32:34 ago Routing Descriptor Blocks: * 192.168.23.2, from 192.168.23.2, 00:32:34 ago Route metric is 0, traffic share count is 1 AS Hops 1, BGP network version 0
Example 4-33 FIB Entry for 172.16.0.0
R3#show ip cef 172.16.0.0 172.16.0.0/16, version 23, cached adjacency 192.168.12.2 0 packets, 0 bytes, qos-group 2
via 192.168.23.2, 0 dependencies, recursive next hop 192.168.23.2, GigabitEthernet6/0 via 192.168.23.2/32 valid cached adjacency
To enable FIB lookup for the traffic destined for 172.16.0.0/16, policy lookup is enabled on the interface of FastEthernet 10/0. The keyword destination is used in the command. If there is a match for the destination address, a check is made into the FIB to determine if there are any matching QoS entries. In this example, ip-qos-map is configured for the interface, and QoS-group ID is set to 2 in FIB, which means that the QoS-group ID can be used to set QoS policies. An input CAR is configured for traffic matching a QoS-group ID of 2. A sample configuration is shown in Example 4-34.
Example 4-34 Sample Interface Configuration for QPPB
interface FastEthernet10/0 ip address 192.168.34.3 255.255.255.0 no ip directed-broadcast bgp-policy destination ip-qos-map rate-limit input qos-group 2 5000000 4000 8000 conform-action transmit exceed-action drop
Example 4-35 shows the IP interface status. Example 4-36 shows traffic policing using CAR. A similar configuration can be made for the traffic sourced from 172.16.0.0 to AS 300 (not shown). The incoming interface then is GigabitEthernet 6/0. An outbound CAR should be configured on the interface of FastEthernet 10/0 to enforce the QoS policy.
Example 4-35 IP Interface Status of FastEthernet 10/0
R3#show ip interface FastEthernet 10/0 | include BGP BGP Policy Mapping is enabled (output ip-qos-map)
Example 4-36 Interface CAR Status
R3#show interface FastEthernet 10/0 rate-limit FastEthernet10/0 Input matches: qos-group 2 params: 5000000 bps, 4000 limit, 8000 extended limit conformed 112 packets, 168448 bytes; action: transmit exceeded 0 packets, 0 bytes; action: drop last packet: 1300ms ago, current burst: 0 bytes last cleared 00:13:15 ago, conformed 1694 bps, exceeded 0 bps