FC0 (fc_nc) Traffic in Versa SD-WAN


Description

Versa SD-WAN appliances place a defined set of control-plane traffic — tunnel establishment, keepalives, routing protocols, telemetry export, and SLA probes to Controllers — into forwarding class FC0 (fc_nc, Network Control) by default. This happens independent of any configured QoS policy, rewrite rule, or copy-from-inner setting, which is why this traffic is frequently mistaken for a misconfiguration when it shows up unexplained in a WAN capture. This article explains the mechanism, lists what lands in FC0 and why, and shows how to confirm it in a packet capture.

Symptom

A WAN interface shows a steady baseline of traffic carrying the DSCP/TOS value associated with FC0 (commonly CS6, TOS byte 0xC0), even though there's no obvious explanation for it in the configuration:

Because the marking can't be traced to anything in the LAN-side or policy configuration, it's easy to assume something is being mis-tagged. A quick way to confirm the traffic is genuinely FC0 rather than something else riding the same DSCP value: change the FC0 rewrite target on that WAN interface to a different value. If the traffic in question moves with it, it confirms the traffic originates in FC0 internally — the DSCP value on the wire was just a rewrite artifact, not a classification.

Expected By Design

This is expected behavior, not a defect. fc_nc is Versa's forwarding class for network control traffic, and VOS enforces it through three independent mechanisms that all sit outside the normal policy/rewrite pipeline a customer would configure. Because none of these three paths touch the rules we write, there's nothing in the policy configuration that will explain the traffic.

Traffic placed into FC0 (fc_nc) by default:

Hard-coded by the system, regardless of DSCP or policy:

Self-marks CS6, which VOS maps to FC0 (CS6 and CS7 are the only two code points that map to fc_nc):

Lands in FC0 because it's host-originated out of the Control VR:

Set by SLA path configuration:

This traffic is expected fabric overhead and is not something a rewrite or classification rule can redirect — it's enforced ahead of the policy pipeline. If it's causing a practical problem (e.g., saturating a low-bandwidth WAN circuit):