- play_arrow Overview
- play_arrow Understanding How Class of Service Manages Congestion and Defines Traffic Forwarding Behavior
- Understanding How Class of Service Manages Congestion and Controls Service Levels in the Network
- How CoS Applies to Packet Flow Across a Network
- The Junos OS CoS Components Used to Manage Congestion and Control Service Levels
- Mapping CoS Component Inputs to Outputs
- Default Junos OS CoS Settings
- Packet Flow Through the Junos OS CoS Process Overview
- Configuring Basic Packet Flow Through the Junos OS CoS Process
- Example: Classifying All Traffic from a Remote Device by Configuring Fixed Interface-Based Classification
- Interface Types That Do Not Support Junos OS CoS
-
- play_arrow Configuring Platform-Specific Functionality
- play_arrow Configuring Class of Service on ACX Series Universal Metro Routers
- CoS on ACX Series Routers Features Overview
- Understanding CoS CLI Configuration Statements on ACX Series Routers
- DSCP Propagation and Default CoS on ACX Series Routers
- Configuring CoS on ACX Series Routers
- Classifiers and Rewrite Rules at the Global, Physical, and Logical Interface Levels Overview
- Configuring Classifiers and Rewrite Rules at the Global and Physical Interface Levels
- Applying DSCP and DSCP IPv6 Classifiers on ACX Series Routers
- Schedulers Overview for ACX Series Routers
- Shared and Dedicated Buffer Memory Pools on ACX Series Routers
- CoS for PPP and MLPPP Interfaces on ACX Series Routers
- CoS for NAT Services on ACX Series Routers
- Hierarchical Class of Service in ACX Series Routers
- Storm Control on ACX Series Routers Overview
- play_arrow Configuring Class of Service on MX Series 5G Universal Routing Platforms
- Junos CoS on MX Series 5G Universal Routing Platforms Overview
- CoS Features and Limitations on MX Series Routers
- Configuring and Applying IEEE 802.1ad Classifiers
- Scheduling and Shaping in Hierarchical CoS Queues for Traffic Routed to GRE Tunnels
- Example: Performing Output Scheduling and Shaping in Hierarchical CoS Queues for Traffic Routed to GRE Tunnels
- CoS-Based Interface Counters for IPv4 or IPv6 Aggregate on Layer 2
- Enabling a Timestamp for Ingress and Egress Queue Packets
- play_arrow Configuring Class of Service on PTX Series Packet Transport Routers
- CoS Features and Limitations on PTX Series Routers
- CoS Feature Differences Between PTX Series Packet Transport Routers and T Series Routers
- Understanding Scheduling on PTX Series Routers
- Virtual Output Queues on PTX Series Packet Transport Routers
- Example: Configuring Excess Rate for PTX Series Packet Transport Routers
- Identifying the Source of RED Dropped Packets on PTX Series Routers
- Configuring Queuing and Shaping on Logical Interfaces on PTX Series Routers
- Example: Configuring Queuing and Shaping on Logical Interfaces in PTX Series Packet Transport Routers
- Example: Configuring Strict-Priority Scheduling on a PTX Series Router
- CoS Support on EVPN VXLANs
- Understanding CoS CLI Configuration Statements on PTX Series Routers
- Classification Based on Outer Header of Decapsulation Tunnel
-
- play_arrow Configuring Line Card-Specific and Interface-Specific Functionality
- play_arrow Feature Support of Line Cards and Interfaces
- play_arrow Configuring Class of Service for Tunnels
- play_arrow Configuring Class of Service on Services PICs
- CoS on Services PICs Overview
- Configuring CoS Rules on Services PICs
- Configuring CoS Rule Sets on Services PICs
- Example: Configuring CoS Rules on Services PICs
- Packet Rewriting on Services Interfaces
- Multiservices PIC ToS Translation
- Fragmentation by Forwarding Class Overview
- Configuring Fragmentation by Forwarding Class
- Configuring Drop Timeout Interval for Fragmentation by Forwarding Class
- Example: Configuring Fragmentation by Forwarding Class
- Allocating Excess Bandwidth Among Frame Relay DLCIs on Multiservices PICs
- Configuring Rate Limiting and Sharing of Excess Bandwidth on Multiservices PICs
- play_arrow Configuring Class of Service on IQ and Enhanced IQ (IQE) PICs
- CoS on Enhanced IQ PICs Overview
- Calculation of Expected Traffic on IQE PIC Queues
- Configuring the Junos OS to Support Eight Queues on IQ Interfaces for T Series and M320 Routers
- BA Classifiers and ToS Translation Tables
- Configuring ToS Translation Tables
- Configuring Hierarchical Layer 2 Policers on IQE PICs
- Configuring Excess Bandwidth Sharing on IQE PICs
- Configuring Rate-Limiting Policers for High Priority Low-Latency Queues on IQE PICs
- Applying Scheduler Maps and Shaping Rate to Physical Interfaces on IQ PICs
- Applying Scheduler Maps to Chassis-Level Queues
- play_arrow Configuring Class of Service on Ethernet IQ2 and Enhanced IQ2 PICs
- CoS on Enhanced IQ2 PICs Overview
- CoS Features and Limitations on IQ2 and IQ2E PICs (M Series and T Series)
- Differences Between Gigabit Ethernet IQ and Gigabit Ethernet IQ2 PICs
- Shaping Granularity Values for Enhanced Queuing Hardware
- Ethernet IQ2 PIC RTT Delay Buffer Values
- Configuring BA Classifiers for Bridged Ethernet
- Setting the Number of Egress Queues on IQ2 and Enhanced IQ2 PICs
- Configuring the Number of Schedulers per Port for Ethernet IQ2 PICs
- Applying Scheduler Maps to Chassis-Level Queues
- CoS for L2TP Tunnels on Ethernet Interface Overview
- Configuring CoS for L2TP Tunnels on Ethernet Interfaces
- Configuring LNS CoS for Link Redundancy
- Example: Configuring L2TP LNS CoS Support for Link Redundancy
- Configuring Shaping on 10-Gigabit Ethernet IQ2 PICs
- Configuring Per-Unit Scheduling for GRE Tunnels Using IQ2 and IQ2E PICs
- Understanding Burst Size Configuration on IQ2 and IQ2E Interfaces
- Configuring Burst Size for Shapers on IQ2 and IQ2E Interfaces
- Configuring a CIR and a PIR on Ethernet IQ2 Interfaces
- Example: Configuring Shared Resources on Ethernet IQ2 Interfaces
- Configuring and Applying IEEE 802.1ad Classifiers
- Configuring Rate Limits to Protect Lower Queues on IQ2 and Enhanced IQ2 PICs
- Simple Filters Overview
- Configuring a Simple Filter
- play_arrow Configuring Class of Service on 10-Gigabit Ethernet LAN/WAN PICs with SFP+
- CoS on 10-Gigabit Ethernet LAN/WAN PIC with SFP+ Overview
- BA and Fixed Classification on 10-Gigabit Ethernet LAN/WAN PIC with SFP+ Overview
- DSCP Rewrite for the 10-Gigabit Ethernet LAN/WAN PIC with SFP+
- Configuring DSCP Rewrite for the 10-Gigabit Ethernet LAN/WAN PIC
- Queuing on 10-Gigabit Ethernet LAN/WAN PICs Properties
- Mapping Forwarding Classes to CoS Queues on 10-Gigabit Ethernet LAN/WAN PICs
- Scheduling and Shaping on 10-Gigabit Ethernet LAN/WAN PICs Overview
- Example: Configuring Shaping Overhead on 10-Gigabit Ethernet LAN/WAN PICs
- play_arrow Configuring Class of Service on Enhanced Queuing DPCs
- Enhanced Queuing DPC CoS Properties
- Configuring Rate Limits on Enhanced Queuing DPCs
- Configuring WRED on Enhanced Queuing DPCs
- Configuring MDRR on Enhanced Queuing DPCs
- Configuring Excess Bandwidth Sharing
- Configuring Customer VLAN (Level 3) Shaping on Enhanced Queuing DPCs
- Simple Filters Overview
- Configuring Simple Filters on Enhanced Queuing DPCs
- Configuring a Simple Filter
- play_arrow Configuring Class of Service on MICs, MPCs, and MLCs
- CoS Features and Limitations on MIC and MPC Interfaces
- Dedicated Queue Scaling for CoS Configurations on MIC and MPC Interfaces Overview
- Verifying the Number of Dedicated Queues Configured on MIC and MPC Interfaces
- Scaling of Per-VLAN Queuing on Non-Queuing MPCs
- Increasing Available Bandwidth on Rich-Queuing MPCs by Bypassing the Queuing Chip
- Flexible Queuing Mode
- Multifield Classifier for Ingress Queuing on MX Series Routers with MPC
- Example: Configuring a Filter for Use as an Ingress Queuing Filter
- Ingress Queuing Filter with Policing Functionality
- Ingress Rate Limiting on MX Series Routers with MPCs
- Rate Shaping on MIC and MPC Interfaces
- Per-Priority Shaping on MIC and MPC Interfaces Overview
- Example: Configuring Per-Priority Shaping on MIC and MPC Interfaces
- Configuring Static Shaping Parameters to Account for Overhead in Downstream Traffic Rates
- Example: Configuring Static Shaping Parameters to Account for Overhead in Downstream Traffic Rates
- Traffic Burst Management on MIC and MPC Interfaces Overview
- Understanding Hierarchical Scheduling for MIC and MPC Interfaces
- Configuring Ingress Hierarchical CoS on MIC and MPC Interfaces
- Configuring a CoS Scheduling Policy on Logical Tunnel Interfaces
- Per-Unit Scheduling and Hierarchical Scheduling for MPC Interfaces
- Managing Dedicated and Remaining Queues for Static CoS Configurations on MIC and MPC Interfaces
- Excess Bandwidth Distribution on MIC and MPC Interfaces Overview
- Bandwidth Management for Downstream Traffic in Edge Networks Overview
- Scheduler Delay Buffering on MIC and MPC Interfaces
- Managing Excess Bandwidth Distribution on Static Interfaces on MICs and MPCs
- Drop Profiles on MIC and MPC Interfaces
- Intelligent Oversubscription on MIC and MPC Interfaces Overview
- Jitter Reduction in Hierarchical CoS Queues
- Example: Reducing Jitter in Hierarchical CoS Queues
- CoS on Ethernet Pseudowires in Universal Edge Networks Overview
- CoS Scheduling Policy on Logical Tunnel Interfaces Overview
- Configuring CoS on an Ethernet Pseudowire for Multiservice Edge Networks
- CoS for L2TP LNS Inline Services Overview
- Configuring Static CoS for an L2TP LNS Inline Service
- CoS on Circuit Emulation ATM MICs Overview
- Configuring CoS on Circuit Emulation ATM MICs
- Understanding IEEE 802.1p Inheritance push and swap from a Transparent Tag
- Configuring IEEE 802.1p Inheritance push and swap from the Transparent Tag
- CoS on Application Services Modular Line Card Overview
- play_arrow Configuring Class of Service on Aggregated, Channelized, and Gigabit Ethernet Interfaces
- Limitations on CoS for Aggregated Interfaces
- Policer Support for Aggregated Ethernet Interfaces Overview
- Understanding Schedulers on Aggregated Interfaces
- Examples: Configuring CoS on Aggregated Interfaces
- Hierarchical Schedulers on Aggregated Ethernet Interfaces Overview
- Configuring Hierarchical Schedulers on Aggregated Ethernet Interfaces
- Example: Configuring Scheduling Modes on Aggregated Interfaces
- Enabling VLAN Shaping and Scheduling on Aggregated Interfaces
- Class of Service on demux Interfaces
- Example: Configuring Per-Unit Schedulers for Channelized Interfaces
- Applying Layer 2 Policers to Gigabit Ethernet Interfaces
-
- play_arrow Configuration Statements and Operational Commands
Policer Overhead to Account for Rate Shaping in the Traffic Manager
Policer Overhead to Account for Rate Shaping Overview
If you configure ingress or egress traffic-shaping overhead values for an interface, the traffic manager cannot apply these values to any rate-limiting also applied to the interface. To enable the router to account for the additional Ethernet frame length when policing actions are being determined, you must configure the ingress or egress overhead values for policers separately.
When a policer overhead value is changed, the PIC or DPC goes offline and then comes back online.
For Gigabit Ethernet Intelligent Queuing 2 (IQ2) and Enhanced IQ2 (IQ2E) PICs or interfaces on Dense Port Concentrators (DPCs) in MX Series routers, you can control the rate of traffic that passes through all interfaces on the PIC or DPC by configuring a policer overhead. You can configure a policer ingress overhead and a policer egress overhead, each with values from 0 through 255 bytes. The policer overhead values are added to the length of the final Ethernet frame when determining ingress and egress policer actions.
See Also
Example: Configuring Policer Overhead to Account for Rate Shaping
This example shows how to configure overhead values for policers when rate-shaping overhead is configured.
Requirements
Before you begin, make sure that interface for which you are applying ingress or egress policer overhead is hosted on one of the following:
Gigabit Ethernet IQ2 PIC
IQ2E PIC
DPCs in MX Series routers
Overview
This example shows how to configure policer overhead values for all physical interfaces on a supported PIC or MPC so that the rate shaping value configured on a logical interface is accounted for in any policing on that logical interface.
Topology
The router hosts a Gigabit Ethernet IQ2 PIC, installed in PIC location 3 of the Flexible PIC Concentrator (FPC) in slot number 1. The physical interface on port 1 on that PIC is configured to receive traffic on logical interface 0 and send it back out on logical interface 1. Class-of-service scheduling includes 100 Mbps of traffic rate-shaping overhead for the output traffic. A policer egress overhead of 100 bytes is configured on the entire PIC so that, for any policers applied to the output traffic, 100 bytes are added to the final Ethernet frame length when determining ingress and egress policer actions.
Traffic rate-shaping and corresponding policer overhead are configured separately:
You configure rate shaping at the
[edit class-of-service interfaces interface-name unit unit-number]
hierarchy level.You configure policer overhead at the
[edit chassis fpc slot-number pic pic-number]
hierarchy level.
When a policer overhead value is changed, the PIC or DPC goes offline and then comes back online.
Configuration
The following example requires you to navigate various levels in the configuration hierarchy. For information about navigating the CLI, see Using the CLI Editor in Configuration Mode.
To configure this example, perform the following tasks:
- CLI Quick Configuration
- Configuring the Logical Interfaces
- Configuring Traffic Rate-Shaping on the Logical Interface That Carries Output Traffic
- Configuring Policer Overhead on the PIC or DPC That Hosts the Rate-Shaped Logical Interface
- Applying a Policer to the Logical Interface That Carries Input Traffic
CLI Quick Configuration
To quickly configure this example, copy the following
configuration commands into a text file, remove any line breaks, and
then paste the commands into the CLI at the [edit]
hierarchy
level.
set interfaces ge-1/3/1 per-unit-scheduler set interfaces ge-1/3/1 vlan-tagging set interfaces ge-1/3/1 unit 0 vlan-id 100 set interfaces ge-1/3/1 unit 0 family inet address 10.10.10.1/30 set interfaces ge-1/3/1 unit 1 vlan-id 101 set interfaces ge-1/3/1 unit 1 family inet address 20.20.20.1/30 arp 20.20.20.2 mac 00:00:11:22:33:44 set class-of-service schedulers be transmit-rate percent 5 set class-of-service schedulers ef transmit-rate percent 30 set class-of-service schedulers af transmit-rate percent 30 set class-of-service schedulers nc transmit-rate percent 35 set class-of-service scheduler-maps my-map forwarding-class best-effort scheduler be set class-of-service scheduler-maps my-map forwarding-class expedited-forwarding scheduler ef set class-of-service scheduler-maps my-map forwarding-class network-control scheduler nc set class-of-service scheduler-maps my-map forwarding-class assured-forwarding scheduler af set class-of-service interfaces ge-1/3/1 unit 1 scheduler-map my-map set class-of-service interfaces ge-1/3/1 unit 1 shaping-rate 100m set firewall policer 500Kbps logical-interface-policer set firewall policer 500Kbps if-exceeding bandwidth-limit 500k set firewall policer 500Kbps if-exceeding burst-size-limit 625k set firewall policer 500Kbps then discard set chassis fpc 1 pic 3 ingress-policer-overhead 100 set chassis fpc 1 pic 3 egress-policer-overhead 100 set interfaces ge-1/3/1 unit 0 family inet policer input 500Kbps
Configuring the Logical Interfaces
Step-by-Step Procedure
To configure the logical interfaces:
Enable configuration of the interface
content_copy zoom_out_map[edit] user@host# edit interfaces ge-1/3/1
Enable multiple queues for each logical interface (so that you can associate an output scheduler with each logical interface).
content_copy zoom_out_map[edit interfaces ge-1/3/1] user@host# set per-unit scheduler user@host# set vlan-tagging
Note:For Gigabit Ethernet IQ2 PICs only, use the
shared-scheduler
statement to enable shared schedulers and shapers on a physical interface.Configure logical interface
ge-1/3/1.0
.content_copy zoom_out_map[edit interfaces ge-1/3/1] user@host# set unit 0 vlan-id 100 user@host# set unit 0 family inet address 10.10.10.1/30
Configure logical interface
ge-1/3/1.1
.content_copy zoom_out_map[edit interfaces ge-1/3/1] user@host# set unit 1 vlan-id 101 user@host# set unit 1 family inet address 20.20.20.1/30 arp 20.20.20.2 mac 00:00:11:22:33:44
Results
Confirm the configuration of the interfaces by entering
the show interfaces
configuration mode command. If
the command output does not display the intended configuration, repeat
the instructions in this procedure to correct the configuration.
[edit] user@host# show interfaces ge-1/3/1 { per-unit-scheduler; vlan-tagging; unit 0 { vlan-id 100; family inet { address 10.10.10.1/30; } } unit 1 { vlan-id 101; family inet { address 20.20.20.1/30 { arp 20.20.20.2 mac 00:00:11:22:33:44; } } } }
Configuring Traffic Rate-Shaping on the Logical Interface That Carries Output Traffic
Step-by-Step Procedure
To configure traffic rate-shaping on the logical interface that carries output traffic:
Enable configuration of class-of-service features.
content_copy zoom_out_map[edit] user@host# edit class-of-service
Configure packet scheduling on logical interface
ge-1/3/1.0
.Configure schedulers that specify the percentage of transmission capacity.
content_copy zoom_out_map[edit class-of-service] user@host# edit schedulers [edit class-of-service schedulers] user@host# set be transmit-rate percent 5 user@host# set ef transmit-rate percent 30 user@host# set af transmit-rate percent 30 user@host# set nc transmit-rate percent 35
A percentage of zero drops all packets in the queue. When the
rate-limit
option is specified, the transmission rate is limited to the rate-controlled amount. In contrast with theexact
option, a scheduler with therate-limit
option shares unused bandwidth above the rate-controlled amount.Configure a scheduler map to associate each scheduler with a forwarding class.
content_copy zoom_out_map[edit class-of-service] user@host# edit scheduler-maps my-map [edit class-of-service scheduler-maps my-map] user@host# set forwarding-class best-effort scheduler be user@host# set forwarding-class expedited-forwarding scheduler ef user@host# set forwarding-class network-control scheduler nc user@host# set forwarding-class assured-forwarding scheduler af
Associate the scheduler map with logical interface
ge-1/3/1.0
.content_copy zoom_out_map[edit class-of-service] user@host# edit interfaces ge-1/3/1 unit 1 [edit class-of-service interfaces ge-1/3/1 unit 1] user@host# set scheduler-map my-map
Configure 100 Mbps of traffic rate-shaping overhead on logical interface
ge-1/3/1.1
.content_copy zoom_out_map[edit class-of-service interfaces ge-1/3/1 unit 1] user@host# set shaping-rate 100
Alternatively, you can configure a shaping rate for a logical interface and oversubscribe the physical interface by including the
shaping-rate
statement at the[edit class-of-service traffic-control-profiles]
hierarchy level. With this configuration approach, you can independently control the delay-buffer rate.
Results
Confirm the configuration of the class-of-service features
(including the 100 Mbp of shaping of the egress traffic) by entering
the show class-of-service
configuration mode command. If
the command output does not display the intended configuration, repeat
the instructions in this procedure to correct the configuration.
[edit] user@host# show class-of-service interfaces { ge-1/3/1 { unit 1 { scheduler-map my-map; shaping-rate 100m; } } } scheduler-maps { my-map { forwarding-class best-effort scheduler be; forwarding-class expedited-forwarding scheduler ef; forwarding-class network-control scheduler nc; forwarding-class assured-forwarding scheduler af; } } schedulers { be { transmit-rate percent 5; } ef { transmit-rate percent 30; } af { transmit-rate percent 30; } nc { transmit-rate percent 35; } }
Configuring Policer Overhead on the PIC or DPC That Hosts the Rate-Shaped Logical Interface
Step-by-Step Procedure
To configure policer overhead on the PIC or MPC that hosts the rate-shaped logical interface:
Enable configuration of the supported PIC or MPC.
content_copy zoom_out_map[edit] user@host# set chassis fpc 1 pic 3
Configure 100 bytes of policer overhead on the supported PIC or MPC.
content_copy zoom_out_map[edit chassis fpc 1 pic 3] user@host# set ingress-policer-overhead 100 user@host# set egress-policer-overhead 100
Note:These values are added to the length of the final Ethernet frame when determining ingress and egress policer actions for all physical interfaces on the PIC or MPC.
You can specify policer overhead with values from 0 through 255 bytes.
Results
Confirm the configuration of the policer overhead on
the physical interface to account for rate-shaping by entering the show chassis
configuration mode command. If the command
output does not display the intended configuration, repeat the instructions
in this procedure to correct the configuration.
[edit] user@host# show chassis chassis { fpc 1 { pic 3 { egress-policer-overhead 100; ingress-policer-overhead 100; } } }
Applying a Policer to the Logical Interface That Carries Input Traffic
Step-by-Step Procedure
To apply a policer to the logical interface that carries input traffic:
Configure the logical interface (aggregate) policer.
content_copy zoom_out_map[edit] user@host# edit firewall policer 500Kbps [edit firewall policer 500Kbps] user@host# set logical-interface-policer user@host# set if-exceeding bandwidth-limit 500k user@host# set if-exceeding burst-size-limit 625k user@host# set then discard
Apply the policer to Layer 3 input on the IPv4 logical interface.
content_copy zoom_out_map[edit] user@host# set interfaces ge-1/3/1 unit 0 family inet policer input 500Kbps
Note:The 100 Mbps policer overhead is added to the length of the final Ethernet frame when determining ingress and egress policer actions,
Results
Confirm the configuration of the policer with rate-shaping
overhead by entering the show firewall
and show interfaces
configuration mode commands. If the command output does not display
the intended configuration, repeat the instructions in this procedure
to correct the configuration.
[edit] user@host# show firewall policer 500Kbps { logical-interface-policer; if-exceeding { bandwidth-limit 500k; burst-size-limit 625k; } then discard; } [edit] user@host# show interfaces ge-1/3/1 { per-unit-scheduler; vlan-tagging; unit 0 { vlan-id 100; layer2-policer { input-policer 500Kbps; } family inet { address 10.10.10.1/30; } } unit 0 { vlan-id 101; family inet { address 20.20.20.1/30 { arp 20.20.20.2 mac 00:00:11:22:33:44; } } } }
If you are done configuring the device, enter commit
from configuration mode.
Verification
Confirm that the configuration is working properly.
- Displaying Traffic Statistics and Policers for the Logical Interface
- Displaying Statistics for the Policer
Displaying Traffic Statistics and Policers for the Logical Interface
Purpose
Verify the traffic flow through the logical interface and that the policer is evaluated when packets are received on the logical interface.
Action
Use the show interfaces
operational mode command
for logical interface ge-1/3/1.0
, and include the detail
or extensive
option. The command output section
for Traffic statistics lists the number
of bytes and packets received and transmitted on the logical interface,
and the Protocol inet section contains
a Policer field that would list the policer 500Kbps
as an input or output policer as follows:
Input: 500Kbps-ge-1/3/1.0-log_int-i
Output: 500Kbps-ge-1/3/1.0-log_int-o
The log_int-i suffix denotes a logical interface policer applied to input traffic, while the log_int-o suffix denotes a logical interface policer applied to output traffic. In this example, the logical interface policer is applied to Input traffic only.
Displaying Statistics for the Policer
Purpose
Verify the number of packets evaluated by the policer.
Action
Use the show policer
operational mode command
and optionally specify the name of the policer. The command output
displays the number of packets evaluated by each configured policer
(or the specified policer), in each direction. For the policer 500Kbps
, the input and output policer names are displayed as
follows:
500Kbps-ge-1/3/1.0-log_int-i
500Kbps-ge-1/3/1.0-log_int-o
The log_int-i suffix denotes a logical interface policer applied to input traffic, while the log_int-o suffix denotes a logical interface policer applied to output traffic. In this example, the logical interface policer is applied to input traffic only.