Some follow up information:
I've started using TRACE instead of setting up LOG in all the tables. The weird thing is that it shows the packet traversing all the rules correctly. When it comes in it is shows:
[ 5165.938855] TRACE: raw:PREROUTING
olicy:4 IN=black OUT= MAC=<blah> SRC=3333:0000:0000:0000:0000:0000:0000:0010 DST=2222:0000:0000:0000:0000:0000:0000:0010 LEN=104 TC=0 HOPLIMIT=63 FLOWLBL=833520 PROTO=ICMPv6 TYPE=128 CODE=0 ID=14420 SEQ=331 MARK=0x1
and when it exits after all the rules:
[ 5166.698701] TRACE: mangle:POSTROUTING
olicy:2 IN= OUT=red SRC=3333:0000:0000:0000:0000:0000:0000:0010 DST=2222:0000:0000:0000:0000:0000:0000:0010 LEN=104 TC=0 HOPLIMIT=62 FLOWLBL=833520 PROTO=ICMPv6 TYPE=128 CODE=0 ID=14420 SEQ=331 MARK=0xf
The tcpdump on the red-interface above however DOES NOT show any IP6 packet exiting!! (99% of the time, did see it pop out once).
Any ideas? IPv4 is working fine, so I now there is no hardware issue.