I know this is an old thread, but hopefully this has progressed in the roadmap somewhat.
What would be ideal for us would be something like the way cambium does it.
On the C5, you could select the VLAN type, either Q or QinQ.
On the C5, you could then select the default vlan for customer traffic. This would make the ethernet port Native VLAN X.
On the C5, you could select the Provider VLAN. i.e outside tag.
On the C5 or the A5, you can select the QinQ ethertype. For us, 0x8100 is CRITICAL. i.e CVLAN tagged 0x8100, SVLAN tagged 0x8100.
Additional features that are useful but not critical:
When the C5 isn't connected to the A5, the C5 should default to not tagging ingress traffic on the ethernet port and should have a default IP for local management. i.e If it isn't connected, you can always plug into the ethernet port and manage it at 169.254.1.2 or something like that.
Being able to tag by mac address. i.e default port on the C5 set to VLAN 3002. $mac tagged to VLAN 1001.
Being able to support double 0x8100 tags is extra critical because the A5 only has one ethernet port and we need to manage the A5 and connected C5s on a single tagged management VLAN.
Switchport connected to the A5 configured as a trunk port allowing vlans 5 and 500.
Lets say there are 4 C5s connected, each tagging a unique C VLAN (3001, 3002, 3003, 3004, 3005) and putting that traffic inside vlan 500 (0x8100).
A5 and connected C5s managed on VLAN 5.
I would be more then wiling to explain more in detail, send diagrams, explanations of how other vendors do it, lab test, etc. Just let me know. From a L1 perspective, the A5/C5 combo works great, but without basic vlan tagging on the C5, it is really difficult to put it into production and without double tags, it is next to impossible for us to scale it.
Overview of our network model:
BNG connected with VPLS circuits to Core Pops.
0x8100 QinQ connections (SVLANS) to access nodes.
Customer traffic tagged to a unique C VLAN per S VLAN.
So a customer plugs whatever into their SM. Their traffic gets their C tag added to it and then it get s the S tag added to it. (0x8100.500 0x8100.3001 for example). This gets carried through a VPLS circuit to the BNG. The BNG creates interface ge-1/1/1:500-3001 for the customer, then authenticates the circuit vs radius, assigns DHCP from the pool radius tells it to use, and applies filters to the interface for the customer.