03/14/2011 11:57 AM
Multiple ethernet interfaces bridged to one ("virtual" internal) IP interface?
My searches for answers to this question have come up a bit short, so I'm now posing the question directly. Can QNX
Neutrino support the following scenario:
- Two (or more?) physical ethernet interfaces, all connected to the same Layer 2 network (e.g. two or more
interconnected physical ethernet switches). This Layer 2 network also represents a single IP subnet, say 192.168.1.0/24
- One ("virtual"?) IP interface under QNX, with a single IP address (say 192.168.1.100/24).
- A software Layer 2 bridge function that bridges the one IP interface to the outside world. Ideally, it would NOT
forward packets from one physical ethernet interface to another, only between the many physical interfaces and the one
virtual IP interface.
It would look something like this:
+-------- ethernet 1
IP interface ---- bridge
+-------- ethernet 2
The bridge would NOT forward packets _between_ ethernets 1 and 2. When the IP interface sends outgoing packets, the
bridge would flood broadcasts, multicasts, and unknown unicasts out both ethernet interfaces. The bridge would listen
to and learn source MAC addresses (of external nodes) that it hears on ethernets 1 and 2. For example, the bridge might
learn that the MAC address of some external host A lives on ethernet 1, and the MAC address of another external host B
lives on ethernet 2. In the normal way, the internal IP interface learns (via ARP) the mapping between A's IP address
and A's MAC address, and between B's IP address and B's MAC address. When the internal IP interface sends an outgoing
IP datagram destined to A, the bridge knows to send the packet out ethernet 1. Similarly, when the internal IP
interface sends an outgoing IP datagram destined to B, the bridge knows to send the packet out ethernet 2. If changes
occur in the external network (links go down, the spanning tree topology changes, etc.), the bridge re-learns the
various MAC address locations, so that connectivity is maintained.
Does Neutrino support this kind of arrangement? (As far as I know, QNX4 does not. We are likely transitioning from
QNX4 to Neutrino for other reasons, and I'm hoping that Neutrino can help us with the above problem as well.)