Hi Raj, A sub-interface with "dot1q inner any" can only work with L2 forwarding via cross-connect or bridging where packets are forwarded using MAC header without any changes to MAC header nor VLAN IDs in VLAN tags.
For L3 IP forwarding, any VLAN tags on a packet must be exact match to a sub-interface which means both outer and inner VLAN tag IDs must be exact-matched to specific values defined of that sub-interface. Without exact match on a L3 sub-interface, VPP has no mechanism to know what VLAN tags to use for packet output, such as ARP request packets or IP packets, on that sub-interface. Thus, sub-interface with "inner-dot1q any" is not an exact match sub-interface by definition since no match is present on inner tag. I suppose the CLI: >> create sub-interfaces GigabitEthernet3/0/3 50 dot1ad 50 inner-dot1q any >> exact-match should have been rejected as exact match cannot be supported on the sub-interface. This is something we should ideally fix in the CLI to avoid any confusion with the meaning of exact match. Regards, John -----Original Message----- From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Raj Sent: Tuesday, December 17, 2019 4:39 AM To: vpp-dev <vpp-dev@lists.fd.io> Subject: [vpp-dev] QinQ and dot1ad any Hello all, When an interface is created using a command like: create sub-interfaces GigabitEthernet3/0/3 50 dot1ad 50 inner-dot1q any exact-match I can see that dual tagged packets with outer vlan 50 will be accepted by that interface. But how does a packet goes out from this interface? Is there a means by which I can say that a given IP is with a specific S_VLAN:C_VLAN? During testing VPP could receive an ARP packet, but when it sends it out, entire Ethernet header was missing. I guess there must be some means to add adjacency information so that correct headers can be added. The trace is as follows: 00:01:04:749110: dpdk-input GigabitEthernet3/0/3 rx queue 0 buffer 0x4c7d: current data 0, length 60, free-list 0, clone-count 0, totlen-nifb 0, trace 0x1 ext-hdr-valid l4-cksum-computed l4-cksum-correct PKT MBUF: port 0, nb_segs 1, pkt_len 60 buf_len 2176, data_len 60, ol_flags 0x180, data_off 128, phys_addr 0x26b31fc0 packet_type 0x0 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x0 fdir.hi 0x0 fdir.lo 0x0 Packet Offload Flags PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid ARP: 40:7b:1b:00:11:aa -> ff:ff:ff:ff:ff:ff 802.1ad vlan 50 802.1ad vlan 51 request, type ethernet/IP4, address size 6/4 40:7b:1b:00:11:aa/192.168.25.1 -> 00:00:00:00:00:00/192.168.25.2 00:01:04:749112: ethernet-input frame: flags 0x3, hw-if-index 1, sw-if-index 1 ARP: 40:7b:1b:00:11:aa -> ff:ff:ff:ff:ff:ff 802.1ad vlan 50 802.1ad vlan 51 00:01:04:749113: arp-input request, type ethernet/IP4, address size 6/4 40:7b:1b:00:11:aa/192.168.25.1 -> 00:00:00:00:00:00/192.168.25.2 00:01:04:749116: GigabitEthernet3/0/3-output GigabitEthernet3/0/3.50 0x1235: 00:02:40:7b:1b:00 -> 00:01:08:00:06:04 00:01:04:749116: GigabitEthernet3/0/3-tx GigabitEthernet3/0/3 tx queue 0 buffer 0x4c7d: current data 22, length 38, free-list 0, clone-count 0, totlen-nifb 0, trace 0x1 ext-hdr-valid l4-cksum-computed l4-cksum-correct vlan-2-deep l2-hdr-offset 0 l3-hdr-offset 22 PKT MBUF: port 0, nb_segs 1, pkt_len 38 buf_len 2176, data_len 38, ol_flags 0x180, data_off 150, phys_addr 0x26b31fc0 packet_type 0x0 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x0 fdir.hi 0x0 fdir.lo 0x0 Packet Offload Flags PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid 0x1235: 00:02:40:7b:1b:00 -> 00:01:08:00:06:04 btw, if inner VLAN is specified, everything works fine. Thanks and Regards, Raj
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#14914): https://lists.fd.io/g/vpp-dev/message/14914 Mute This Topic: https://lists.fd.io/mt/68757125/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-