EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

Recommendation requird for NIC

Started by Unknown January 3, 2006
Hello all,

I am working on a real-time application that requires very
deterministic
data communication between its different modules.

All the communication shall use Ethernet and TCP/IP.

While googling on industrial networking I came to know that there are
many vendors manufacturing NICs for industrial communication.

I need to know if I require any specific kind of NIC card in
computer to achieve deterministic communication using Ethernet.
Card should be able to work on both windows and Linux.

Please tell me if I should go for some industrial network based NIC
or the two I currently have in my computer i.e. Realtek/Intel.


Regards

Sara

sara_michael77@yahoo.com wrote:
> > I am working on a real-time application that requires very > deterministic data communication between its different modules. > > All the communication shall use Ethernet and TCP/IP. > > While googling on industrial networking I came to know that > there are many vendors manufacturing NICs for industrial > communication. > > I need to know if I require any specific kind of NIC card in > computer to achieve deterministic communication using Ethernet. > Card should be able to work on both windows and Linux.
What do you mean by deterministic? IP is fundamentally "best efforts", and Ethernet is subject to statistical delays due to collisions. TCP is dependant on IP. I suspect you may be asking for something innately impossible. -- "If you want to post a followup via groups.google.com, don't use the broken "Reply" link at the bottom of the article. Click on "show options" at the top of the article, then click on the "Reply" at the bottom of the article headers." - Keith Thompson More details at: <http://cfaj.freeshell.org/google/>
sara_michael77@yahoo.com wrote:

> I am working on a real-time application that requires very > deterministic data communication between its different modules.
At what level of precision: seconds, milliseconds, microseconds?
> All the communication shall use Ethernet and TCP/IP.
"Very deterministic" and "TCP/IP over Ethernet" don't mix. If you need deterministic behaviour, CSMA/CD is exactly the kind of multi-master network protocol you do *not* want. IP doesn't change anything about that, whereas TCP introduces even *more* non-determinism into the communication's timing --- that's why networked multi-player games and audio/video streaming services typically use UDP instead of TCP.
> I need to know if I require any specific kind of NIC card in > computer to achieve deterministic communication using Ethernet.
No. You need something else than Ethernet. The internal network of a *good* Ethernet switch running a private network or this application only may do, but that could be hard to control. Sooner or later some smart guy will decide that a real switch is too expensive for this smallish network, and "optimize" it away. -- Hans-Bernhard Broeker (broeker@physik.rwth-aachen.de) Even if all the snow were burnt, ashes would remain.
On 2 Jan 2006 23:50:01 -0800, sara_michael77@yahoo.com wrote:

>Hello all, > >I am working on a real-time application that requires very >deterministic >data communication between its different modules. > >All the communication shall use Ethernet and TCP/IP.
Deterministic communication and TCP/IP do not match. You either have a reliable but non-deterministic communication such as TC/IP or deterministic but unreliable (such as UDP). If you need deterministic communication, the easiest way would be to use UDP and plan what to do when occasional frames are missing (e.g. hold the previous value or interpolate). By using a dedicates 10/100baseT network with switches (not hubs) and assigning a single station as the master polling system and rest as slaves, quite good performance is possible.
>While googling on industrial networking I came to know that there are >many vendors manufacturing NICs for industrial communication. > >I need to know if I require any specific kind of NIC card in >computer to achieve deterministic communication using Ethernet. >Card should be able to work on both windows and Linux.
Windows or Linux without a real time extension is not going to be very deterministic.
>Please tell me if I should go for some industrial network based NIC >or the two I currently have in my computer i.e. Realtek/Intel.
In the late 1990's some Ethernet cards had very bad drivers hogging the CPU for extended periods of time, thus destroying the performance of the already bad OS timing, but I have not heard of such problems in recent years. You should definitively use a dedicated network card and network for your application, but "industrial NIC" is likely just a different connectors and/or better protection. The situation is different if e.g. Ethernet Powerlink is used, but this requires special chips at each slave. Paul
On 2 Jan 2006 23:50:01 -0800, sara_michael77@yahoo.com wrote:

>Hello all, > >I am working on a real-time application that requires very >deterministic >data communication between its different modules. > >All the communication shall use Ethernet and TCP/IP. > >While googling on industrial networking I came to know that there are >many vendors manufacturing NICs for industrial communication. > >I need to know if I require any specific kind of NIC card in >computer to achieve deterministic communication using Ethernet. >Card should be able to work on both windows and Linux. > >Please tell me if I should go for some industrial network based NIC >or the two I currently have in my computer i.e. Realtek/Intel. >
I read a whitepaper some time ago, where the author developed a low level NIC driver (For ECOS If I recall correftly), that enables deterministic communications using ethernet hardware. The low-level driver ensured that raw packets are only sent at specific time intervals. Some of these timeslots are then allocated to specific processes which can then communicate with very deterministic timing. The traditional TCP/IP stack then get allocated the unused time slots. This of course only works when all devices connected to the network uses a similar low-level driver. Also look at IEEE 1588 Precision Time Protocol. The IEEE 1588 precision time protocol (PTP) provides a standard method to synchronize devices on a network with submicrosecond precision. Regards Anton Erasmus

If you need a deterministic timing, you should not use Ethernet.
The packet timeslot allocation will fail after the very first hub in the 
route of the packet.
The way to accomplish more or less deterministic timing (using the 
standard equipment) is implementing a software PLL and deep buffers.

Vladimir Vassilevsky

DSP and Mixed Signal Design Consultant

http://www.abvolt.com


>>I am working on a real-time application that requires very >>deterministic >>data communication between its different modules. >> >>All the communication shall use Ethernet and TCP/IP. >> >>While googling on industrial networking I came to know that there are >>many vendors manufacturing NICs for industrial communication. >> >>I need to know if I require any specific kind of NIC card in >>computer to achieve deterministic communication using Ethernet. >>Card should be able to work on both windows and Linux. >> >>Please tell me if I should go for some industrial network based NIC >>or the two I currently have in my computer i.e. Realtek/Intel. >> > > > I read a whitepaper some time ago, where the author developed a low > level NIC driver (For ECOS If I recall correftly), that enables > deterministic communications using ethernet hardware. The low-level > driver ensured that raw packets are only sent at specific time > intervals. Some of these timeslots are then allocated to specific > processes which can then communicate with very deterministic timing. > The traditional TCP/IP stack then get allocated the unused time > slots. This of course only works when all devices connected to the > network uses a similar low-level driver. > > Also look at IEEE 1588 Precision Time Protocol. The IEEE 1588 > precision time protocol (PTP) provides a standard method to > synchronize devices on a network with submicrosecond precision. > > Regards > Anton Erasmus >
On Tue, 03 Jan 2006 16:30:37 GMT, Vladimir Vassilevsky
<antispam_bogus@hotmail.com> wrote:

> > >If you need a deterministic timing, you should not use Ethernet. >The packet timeslot allocation will fail after the very first hub in the >route of the packet. >The way to accomplish more or less deterministic timing (using the >standard equipment) is implementing a software PLL and deep buffers.
Deterministic comms is possible using ethernet hardware IF certain constraints are adhered to. For a point to point link using special low level drivers, one can get deterministic timing. Whether using ethernet is actually cost effective, once all the constraints are factored in is of course higly debatable. Using a more appropriate technology is probably more cost effective at the end of the day. I have used arcnet quite succesfully where the required data rate was not too high. Regards Anton Erasmus
>Vladimir Vassilevsky > >DSP and Mixed Signal Design Consultant > >http://www.abvolt.com > > >>>I am working on a real-time application that requires very >>>deterministic >>>data communication between its different modules. >>> >>>All the communication shall use Ethernet and TCP/IP. >>> >>>While googling on industrial networking I came to know that there are >>>many vendors manufacturing NICs for industrial communication. >>> >>>I need to know if I require any specific kind of NIC card in >>>computer to achieve deterministic communication using Ethernet. >>>Card should be able to work on both windows and Linux. >>> >>>Please tell me if I should go for some industrial network based NIC >>>or the two I currently have in my computer i.e. Realtek/Intel. >>> >> >> >> I read a whitepaper some time ago, where the author developed a low >> level NIC driver (For ECOS If I recall correftly), that enables >> deterministic communications using ethernet hardware. The low-level >> driver ensured that raw packets are only sent at specific time >> intervals. Some of these timeslots are then allocated to specific >> processes which can then communicate with very deterministic timing. >> The traditional TCP/IP stack then get allocated the unused time >> slots. This of course only works when all devices connected to the >> network uses a similar low-level driver. >> >> Also look at IEEE 1588 Precision Time Protocol. The IEEE 1588 >> precision time protocol (PTP) provides a standard method to >> synchronize devices on a network with submicrosecond precision. >> >> Regards >> Anton Erasmus >>
On Tue, 03 Jan 2006 23:27:51 +0200, Anton Erasmus
<nobody@spam.prevent.net> wrote:

>On Tue, 03 Jan 2006 16:30:37 GMT, Vladimir Vassilevsky ><antispam_bogus@hotmail.com> wrote: > >> >> >>If you need a deterministic timing, you should not use Ethernet.
Ethernet hardware is OK, but you should not use CSMA/CD, but handle the arbitration differently.
>>The packet timeslot allocation will fail after the very first hub in the >>route of the packet.
This is only a problem as long as you rely on CSMA/CD.
>>The way to accomplish more or less deterministic timing (using the >>standard equipment) is implementing a software PLL and deep buffers.
Deep buffers and deterministic timing does not match very well.
>Deterministic comms is possible using ethernet hardware IF certain >constraints are adhered to. For a point to point link using special >low level drivers, one can get deterministic timing.
This also depends on the operating system latencies. Assuming you are querying node X for data and system X needs to perform a task switch to build the response message and start sending it, the node OS needs to be deterministic and also have a very short latencies (to avoid degrading the bus average throughput). One way around this is that node X knows all possible queries and periodically builds all possible responses and stores in the driver space. When a query arrives, the interrupt service routine simply starts sending the requested ready built frame, thus keeping the latency low. This also applies to multiple node networks, provided that there is only one master.
>Whether using ethernet is actually cost effective, once all the >constraints are factored in is of course higly debatable. Using a more >appropriate technology is probably more cost effective at the end of >the day.
Ethernet hardware is available from multiple sources and is cheap. In 10/100/1000BaseT network is connection between two devices is a separate transmission line. However, with shared medium busses, such as CANbus or Profibus-DP, connecting multiple nodes into a single transmission line can be quite critical due to branch length limitations and connector quality, since all connectors are in series. The connector quality issue can be quite critical in industrial applications with not so clean environment and a lot of vibrations. Ethernet is usable for deterministic systems as long as you do not use CSMA/CD and TCP/IP. Paul

The 2024 Embedded Online Conference