Danke für die Denkanstöße
Durch das tcpdump bin ich drauf gekommen dass das KVM wirklich nur mit der ens3 MAC-Adresse redet. Die Container hängen wie oben besprochen an der Bridge von ens3. Vom Container aus wird IPv4 auf die Haupt-IP der VM geroutet, damit die Pakete mit der MAC vom ens3 Device zum Router geschickt werden. So weit so klar.
Im Bezug auf IPv6 heisst das: die proxy ndp Einstellungen vom Linux Kernel helfen hier nicht weiter. Die Container können zwar auf die Frage welche MAC Adresse zu einer IPv6-Adresse gehören antworten. Die kommen aber von der Container MAC und erreichen damit den Router gar nicht.
Ohne den ndppd kommt man an der Stelle dann also nicht weiter. Das schöne ist, dass die aktuelle ndppd Version in Ubuntu 16.04 eine neue Option static hat. Darüber können dann für Einzel IPv6 (/128) oder auch kleine Netze die NDP Anfragen mit der ens3 MAC beantwortet werden, ohne dass das komplette Subnetz mit allen IPs aufgelöst werden kann. Das könnte ja die internen Tabellen sprengen.
Wenn man den ndppd verwendet muss man aber trotzdem noch proxy ndp im Kernel für alle Devices erlauben. Ich habe nicht verstanden wieso, aber nur mit der Option klappt es.
Generell habe ich noch nicht verstanden ob mit der Methode irgendwelche Pakete doppelt im Container ankommen können. Auf jeden Fall war ich mit der Erreichbaren Datenrate im Container ganz zufrieden.
Und wo ich noch drüber gestolpert bin: in ufw muss man natürlich die Default Regeln für die FORWARD Queue auf ACCEPT stellen, sonst geht auch kein Traffic durch.
Insgesamt funktioniert nun LXD prima in dem Root-Server. Ich werde nun die Container mit meinen Diensten aufsetzen und dann mal weiter sehen wie der Root-Server so läuft.