EVC stands for Ethernet Virtual Connection and in Cisco's platforms it's used to represent Cisco's software architecture to address Carrier Ethernet Services. In MEF (Metro Ethernet Forum) terminology EVC means "Ethernet Virtual Connection/Circuit", but here EVC represents also the whole Carrier Ethernet software infrastructure developed by Cisco.
EVC has many advantages (which i will try to describe in future posts), one of them being the Flexible Frame Matching. Flexible Frame Matching is a functionality that allows each service instance to match frames with either a unique single vlan, or a list/range of vlans. It can also match single/double tagged frames, untagged frames, or everything else that belongs to the default category.
Flexible Frame Matching is the first major step after configuring a service instance. This is the complete idea:
1) Service Instance definition (create the service instance)
2) Flexible frame matching (configure what frames need to be matched based on vlan match criteria)
3) Flexible VLAN tag rewrite (configure the action to do on the matched frames' vlan tags)
4) Flexible Service Mapping (map the service instance to a service)
5) Extra service features (apply some extra features on the service instance, i.e. QoS)
The middle 3 most important steps can also be described as:
a) Frame matching
b) Frame rewrite
c) Frame forwarding
interface Gi1/1 ! Service Instance definition ! ID is local port significant service instance 10 ethernet ! Flexible frame matching encapsulation dot1q 10 second-dot1q 20 ! Flexible VLAN tag rewrite rewrite ingress tag pop 1 symmetric ! Service Mapping xconnect 10.10.10.10 100 encapsulation mpls ! Extra service features service-policy input TEST-INPUT-POLICY
The current EVC implementation supports matching only on vlan tags, but in future we may see matching on other L2 fields too, since the hardware is quite capable.
These are the current supported vlan matching configurations:
• Single tagged frames, where match criteria can be a single vlan, a list/range of vlans, or any vlan (1-4094)
encapsulation dot1q <vlan-id> encapsulation dot1q <vlan-id>, <vlan-id> encapsulation dot1q <vlan-id> - <vlan-id> encapsulation dot1q any
• Double tagged frames, where first VLAN tag can be only single (software limitation), while second VLAN tag can be single, list/range, or any
encapsulation dot1q <vlan-id> second-dot1q <vlan-id> encapsulation dot1q <vlan-id> second-dot1q <vlan-id>, <vlan-id> encapsulation dot1q <vlan-id> second-dot1q <vlan-id> - <vlan-id> encapsulation dot1q <vlan-id> second-dot1q any
• Untagged frames, where all untagged frames are matched
• Default tag frames, where all tagged/untagged frames that are not matched by other more specific service instances are matched
interface Gi1/1 ! service instance 10 ! single tagged frames with a specific tag encapsulation dot1q 10 ! service instance 20 ! single tagged frames with multiple tags encapsulation dot1q 20,22,24,26-28 ! service instance 30 ! single tagged frames with any tag encapsulation dot1q any ! service instance 40 ! frames with a specific single outer tag and specific single inner tag encapsulation dot1q 10 second-dot1q 20 ! service instance 50 ! frames with a specific single outer tag and multiple inner tags encapsulation dot1q 10 second-dot1q 20,22,24,26-28 ! service instance 60 ! frames with a specific single outer tag and any inner tag encapsulation dot1q 10 second-dot1q any ! service instance 70 ! frames without a tag encapsulation untagged ! service instance 80 ! frames that do not match under any other service instance encapsulation default
There are some important things to keep in mind when configuring Flexible Frame Matching.
1) When you have multiple vlan match criteria configured under different service instances of a single physical interface, the most specific is the one that wins (it's like the longest match rule used in the routing table). So the order of service instances under an interface doesn't have the same effect like the classes in MQC. This is because frame matching is done by hardware using the linecard's TCAM table, where each frame matching configuration gets converted to 1 or more TCAM entries (vlan lists/ranges in matching criteria are the most TCAM consuming configurations). The number of 16000 service instances per ES20 module is based on the assumption that each service instance uses a single TCAM entry.
2) When you don't get any match according to the above longest match rule, matching is done according to a looser match algorithm, where a single tag configuration matches all frames that have a common outer tag (regardless of the number of inner tags) and a double tag configuration matches all frames that have common the first 2 tags (regardless of the number of 2+ inner tags; btw, i'm planning of doing a triple-tag test soon).
interface G1/1 service instance 10 ethernet encapsulation dot1q 10 service instance 20 ethernet encapsulation dot1q 10 second-dot1q 20 service instance 30 ethernet encapsulation default
On the above configuration:
10/20 will be matched by service instance 20 (both tags matched)
10/30 will be matched by service instance 10 (outer tag matched)
20/30 will be matched by service instance 30 (no tag matched)
"encapsulation dot1q 10" matches "10", "10/20", "10/30" and so on.
"encapsulation dot1q 10 second-dot1q 20" matches "10/20", "10/20/30", "10/20/40" and so on.
Note: The above examples were done on a 7600 with ES+ cards running 12.2(33)SRB IOS.