Correct, good guess.
Wow, I never thought that NIC can be attached to VM not on topmost, thanks for the tip!
But, as I was setting up the network you described, the same weird weird problem happened again which I've been dealing with for 2 days and still have no clue...
That is, it seems that a qube couldn't UNDERSTAND the packets coming through its vif+ interface with source ip address not of the qube directly connected to its vif+. By "understand" I mean the packet can be seen by tcpdump and wireshark on the corresponding vif, but never reaches the application, as if dropped by kernel.
In your networking:
i <---- i can't deliver packets generated from outside to C
/ \
/ \
C W <---> outside
i,W,C can ping each other OK
W pings outside: OK
i/C pings outside: ICMP reply seen by tcpdump on i's right side vif, but ping failed.
Same thing happens in this situation:
a
|
|
b
|
|
c
c/b pings a: OK
a pings c: reply seen by tcpdump, but ping fails
Iptables are all empty and rp_filter is 0, so it kinda narrows it down to kernel and XEN. But I don't see any packet-dropping in statistics.
This strange behavior strikes me as some kinds of security mechanism. Do you have the same problem?
Oh my! Looked into every other table except for the raw one... What a shame!
Anyways, upon removal of that sneaky one helluva rule, everything works like a charm now.
Thanks a million, sir!