So here is the working solution...
First of all - bridge-domains are not supported under sub-interfaces!
Test stand looks like this

I've created two logical systems on vMX to simulate two different routers. ls1 contains interfaces ge-0/0/0.200
(tagged, VLAN 200, 192.168.200.1/24) and ge-0/0/0.100
(tagged, VLAN 100, 192.168.100.1/24); ls2 - interface ge-0/0/1.200
(tagged, VLAN 200, 192.168.200.2/24).
- vMX software - 14.1R
- CSRv software - 3.17.01
vMX config
logical-systems {
ls1 {
interfaces {
ge-0/0/0 {
unit 100 {
vlan-id 100;
family inet {
address 192.168.100.1/24;
}
}
unit 200 {
vlan-id 200;
family inet {
address 192.168.200.1/24;
}
}
}
}
}
ls2 {
interfaces {
ge-0/0/1 {
unit 200 {
vlan-id 200;
family inet {
address 192.168.200.2/24;
}
}
}
}
}
}
interfaces {
ge-0/0/0 {
flexible-vlan-tagging;
}
ge-0/0/1 {
flexible-vlan-tagging;
}
}
CSRv config
bridge-domain 100
bridge-domain 200
!
interface GigabitEthernet1
no ip address
negotiation auto
service instance 100 ethernet
encapsulation dot1q 100
rewrite ingress tag pop 1 symmetric
bridge-domain 100
!
service instance 200 ethernet
encapsulation dot1q 200
bridge-domain 200
!
!
interface GigabitEthernet2
no ip address
negotiation auto
service instance 200 ethernet
encapsulation dot1q 200
bridge-domain 200
!
!
interface BDI100
ip address 192.168.100.2 255.255.255.0
RESULT
CSRv#sh bridge-domain
Bridge-domain 100 (2 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
BDI100 (up)
GigabitEthernet1 service instance 100
AED MAC address Policy Tag Age Pseudoport
0 0005.8671.C400 forward dynamic 299 GigabitEthernet1.EFP100
- 001E.BDDB.CABF to_bdi static 0 BDI100
Bridge-domain 200 (2 ports in all)
State: UP Mac learning: Enabled
Aging-Timer: 300 second(s)
GigabitEthernet1 service instance 200
GigabitEthernet2 service instance 200
AED MAC address Policy Tag Age Pseudoport
0 0005.8671.C401 forward dynamic 293 GigabitEthernet2.EFP200
0 0005.8671.C400 forward dynamic 293 GigabitEthernet1.EFP200
root@vMX> ping logical-system ls1 192.168.200.2 count 5 size 1500
PING 192.168.200.2 (192.168.200.2): 1500 data bytes
1508 bytes from 192.168.200.2: icmp_seq=0 ttl=64 time=78.265 ms
1508 bytes from 192.168.200.2: icmp_seq=1 ttl=64 time=78.816 ms
1508 bytes from 192.168.200.2: icmp_seq=2 ttl=64 time=78.931 ms
1508 bytes from 192.168.200.2: icmp_seq=3 ttl=64 time=80.690 ms
1508 bytes from 192.168.200.2: icmp_seq=4 ttl=64 time=84.244 ms
--- 192.168.200.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 78.265/80.189/84.244/2.185 ms
root@vMX> ping logical-system ls1 192.168.100.2 size 1500 count 5
PING 192.168.100.2 (192.168.100.2): 1500 data bytes
1508 bytes from 192.168.100.2: icmp_seq=0 ttl=255 time=6.769 ms
1508 bytes from 192.168.100.2: icmp_seq=1 ttl=255 time=1.886 ms
1508 bytes from 192.168.100.2: icmp_seq=2 ttl=255 time=2.698 ms
1508 bytes from 192.168.100.2: icmp_seq=3 ttl=255 time=2.229 ms
1508 bytes from 192.168.100.2: icmp_seq=4 ttl=255 time=2.940 ms
--- 192.168.100.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.886/3.304/6.769/1.770 ms
You can create multiple service instances under single interface to interconnect more devices via bridge-domains.
Hope that will help!
{}
).