How does a network host route packets to different network namespaces?
Hi, I have been reading up on Neutron networking on this webpage: http://docs.openstack.org/admin-guide-cloud/content/under_the_hood_openvswitch.html (http://docs.openstack.org/admin-guide...) .
I am wondering how a network host routes packets to different OVS internal ports with the same IP address in different network namespaces. To better illustrate my question, here is an example picture from the webpage: http://imgur.com/eelU5gX . Sorry that I can't upload the picture directly into this question as I don't have enough points yet.
Consider that there are 2 OVS internal ports, each in its own separate network namespace, on br-int: tapXXX (in qdhcp-aaaa) and tapWWW (in qdhcp-cccc). One dnsmasq process is attached to each port for 2 different tenants (and thus 2 different Neutron networks). Suppose that both tenants define the same Neutron subnet range of 192.168.1.0/24, and that both the tapXXX and tapWWW have the same IP address of 192.168.1.1.
Now, given that each tenant has VMs running on separate hosts that are the compute nodes, how does the network host route a received packet with IP address 192.168.1.1?
In the webpage, it seems that the VM data network is segmented by VLAN, and I understand how br-int (and other virtual bridges) modify the VLAN tag for incoming and outgoing traffic according to each tenant's VMs. But I am not too sure how network namespaces fit into the whole neutron networking logic.
It would be best if someone could explain the path taken by a packet starting from eth0 of the VM of each tenant and ending at their own respective dnsmasq processes. Thanks!