1:N

Hi all,

I am trying to modify the MUX sample so that it can handle multiple real
adapters and just show one interface. Something like connection pooling. To
user apps there would be just one adapter(virtual?), that would at it’s
level distribute he load across teh actual N adapters below it.

I found a thread on OSR discussing something of this sort.

http://www.osronline.com/showThread.cfm?link=77727

Can some one throw some light on this matter please. May be if Pankaj Garg
is still a member of this grouop he can guide me.

Others also, who have idea about these things, kindly suggest soem approach
to procede.

I am new to NDIS!

A P

A P wrote:

I am trying to modify the MUX sample so that it can handle multiple
real adapters and just show one interface. Something like connection
pooling. To user apps there would be just one adapter(virtual?), that
would at it’s level distribute he load across teh actual N adapters
below it.

At a protocol level, how would you do that? I certainly believe it is
possible on a point-to-point level, where you have modified drivers on
both ends, but the general Ethernet protocols want one IP to map to one MAC.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

To the OP:

I am trying to modify the MUX sample so that it can handle multiple
real adapters and just show one interface. Something like connection
pooling. To user apps there would be just one adapter(virtual?), that
would at it’s level distribute he load across teh actual N adapters
below it.

What are you trying to do??? If you just want to do load-balancing… well, think it over again.
The task is not as simple as you may think. First of all, you would need to implement your own routing table - you have to make sure that a packet is actually going to reach its final
destination. Furthermore, don’t forget about media - specific details - sending a packet that is meant to be sent via NIC X via NIC Y may be more complex that just swapping NDIS_HANDLEs
and modifying MAC address. The funniest thing that you are going to waste your time anyway -
in most cases your analysis will show that the route that TCPIP.SYS has chosen is optimal one,
so that there is no need to change anything.

However, if you are writing something like VPN adapter, then it is a totally different story…

To Tim:

… the general Ethernet protocols want one IP to map to one MAC

If this was the case, the very idea of routing table would be just pointless, in the first place…

Therefore, your statement is true only for the system with the network stack based upon so-called “Strong E/S Model” (i.e. Vista). All previous versions of Windows NT are based upon “Weak E/S Model”, which does *NOT* imply one-to-one correspondence between physical NICs and logical addresses …

Anton Bassov

xxxxx@hotmail.com wrote:

> … the general Ethernet protocols want one IP to map to one MAC
>

If this was the case, the very idea of routing table would be just pointless, in the first place…

No, actually, I think he’s right. If you have ever watched what happens
when more than one address answers “ARP who-has” for a given IP on the
same segment, you’d agree :slight_smile: And it’s not Windows-specific at all.

However, it’s possible that the original requester is, for example,
trying to get double the throughput by pairing up two network devices,
knowing that the other end will have the same drivers. Thus, I think
he’d be better served by trying to answer his question, than trying to
second-guess his motives. That’s just me, though.

Cheers,

/ h+

>>> … the general Ethernet protocols want one IP to map to one MAC

> If this was the case, the very idea of routing table would be just pointless,
> in the first place…

No, actually, I think he’s right. If you have ever watched what happens
when more than one address answers “ARP who-has” for a given IP on the
same segment, you’d agree :slight_smile: And it’s not Windows-specific at all.

I am afraid you just did not understand what we are speaking about…

We are not speaking about multiple responses to the same ARP request on the same
segment - we are speaking about “logical transport address - physical NIC” correspondence on multihomed machine. This is why the OP speaks about MUX, in the first place…

When it comes to “logical transport address - physical NIC” correspondence, everything depends
on the “E/S Model” network stack is based upon - if it is “Weak E/S Model” , the same physical NIC
may send and receive packets with logical (i.e. IP) addresses that correspond to different
NICs on the machine, i.e. there is no “logical transport address - physical NIC” correspondence
whatsoever…

I think he’d be better served by trying to answer his question, than trying to
second-guess his motives.

In fact, I used to think the way you do when I just started posting to MSFT NGs.
However, later I found out that this is not always the case - I learnt it “the hard way”…

Anton Bassov

xxxxx@hotmail.com wrote:

>>> … the general Ethernet protocols want one IP to map to one MAC
>>>

I am afraid you just did not understand what we are speaking about…

I believe I understand Ethernet protocols pretty well. They are not
Windows specific, and I’ve been inside them more than I’d care for at
times. If you’re talking about something else, like an “Ethernet
protocol implementation” then that’s something different, and confusion
could have been avoided by being more specific. Now I think we are in
agreement, though; I’ll go back to lurking.

Cheers,

/ h+

>> I am afraid you just did not understand what we are speaking about…

I believe I understand Ethernet protocols pretty well. They are not
Windows specific, and I’ve been inside them more than I’d care for at
times. If you’re talking about something else, like an “Ethernet
protocol implementation” then that’s something different, and confusion
could have been avoided by being more specific.

Actually, we are speaking about multihomed machine and packet multiplexer (MUX)- this is what the the original question is all about, in the first place. Therefore, we are not speaking about “Ethernet
protocol implementation” either. In fact, the very term “Strong (or Weak) E/S Model” speaks for itself, so that I don’t really know what made you confused…

However, once you started steaking about precision… could you please explain the
statement below:

[begin quote]

If you have ever watched what happens
when more than one address answers “ARP who-has” for a given IP on the
same segment, you’d agree :slight_smile:
[end quote]

What does ARP have to do with “Ethernet protocol”, in the strict meaning of this term???

Let’ face it - “Ethernet protocol” is all about exchanging raw Ethernet frames, so that it has no
idea about logical transport addresses whatsoever…

Anton Bassov

xxxxx@hotmail.com wrote:

> I believe I understand Ethernet protocols pretty well. They are not
> Windows specific, and I’ve been inside them more than I’d care for at
> times. If you’re talking about something else, like an “Ethernet
> protocol implementation” then that’s something different, and confusion
> could have been avoided by being more specific.
>

Actually, we are speaking about multihomed machine and packet multiplexer (MUX)- this is what the the original question is all about, in the first place. Therefore, we are not speaking about “Ethernet
protocol implementation” either. In fact, the very term “Strong (or Weak) E/S Model” speaks for itself, so that I don’t really know what made you confused…

I think you are choosing to redirect the conversation in the direction
you want it to go. The original poster asked about a way to have two
NICs appear as one device and level the load between them. In such an
arrangement, the Ethernet protocols ARE important. The two NICs will
appear on the wire with two different MACs. That’s a problem for IP,
which is certainly “an Ethernet protocol”.

What does ARP have to do with “Ethernet protocol”, in the strict meaning of this term???

I have no idea what “the strict meaning of” the term “Ethernet protocol”
might be. IEEE 802.3 certainly includes the concept of the MAC address,
and ARP is all about finding a MAC address. It is this mapping to a MAC
address that will be problematic in the load-levelling scheme the OP
asked about.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Tim,

I think you are choosing to redirect the conversation in the direction you want it to go.

Not at all…

The original poster asked about a way to have two NICs appear as one device and level the
load between them.

… which is done by multiplexer, and applies only if the target machine is multihomed. Therefore, from the very,very beginning we are supposed to speak about multihomed machines and multiplexers, so that I speak strictly about them. This is why I mentioned " E/S Model - it is of crucial importance to the topic that you have raised. More on this below…

I have no idea what “the strict meaning of” the term “Ethernet protocol” might be.
IEEE 802.3 certainly includes the concept of the MAC address, and ARP is all about
finding a MAC address.

“Ethernet protocol” in the strict meaning is all about delivering raw frame from location
X to the location Y under the condition that underlying media is Ethernet, so that it deals with the details that are specific to Ethernet media. In terms of OSI definitions, “Ethernet protocol” is at the Data Link Layer. It has no clue about logical transport addresses, and does not require packet to have ones, in the first place - the only thing “Ethernet protocol” cares about are MAC addresses.
ARP it is all about translating logical transport (i.e. IP) addresses to MAC ones. In terms of OSI definitions, ARP is at the Network Layer - at this level logical transport addresses come into play…

In other words, you just misused the term “Ethernet protocol”. Certainly, it is not a big deal. However, Jon reused this term, plus requested “precision”. Therefore, I just pointed out that he is not that precise either…

The two NICs will appear on the wire with two different MACs. That’s a problem for IP…

Please read the link below carefully:

http://support.microsoft.com/kb/175396

At this point you will see that Windows may send and receive packets with the logical local transport address, corresponding to NIC X, via NIC Y (i.e. it relies upon so-called “Weak E/S Model”)…

…which is certainly “an Ethernet protocol”.

Hopefully, by now you already understand that “Ethernet protocol” and IP are different layers
of network architecture, i.e. respectively Data Link Layer and Network Layer, so that the latter is built upon the former…

Anton Bassov

it is NOT “Ethernet protocol” - instead,