Home Up Contents Search
PCASIM

Rawether for Windows PCASIM NDIS PIM 9X TDI Samples Redirector 95/98 License & Warranty Customer Comments

 

Release Notes

Sample NDIS Intermediate Driver
For Windows NT 4.0
(PCASIM)

 

PCASIM Overview

The Network Driver Interface Specification (NDIS) version 4.0 and Windows NT 4.0 SP3 introduced a new type of NDIS driver that is layered between an NDIS transport driver (such as MSTCP) and the underlying NIC drivers.

There are several potential uses for NDIS Intermediate (IM) drivers, including:

LAN Emulation - Where the NDIS IM driver is used to make a non-LAN NIC driver (e.g., ATM) look like a LAN NIC driver (e.g., Ethernet).
Packet Filtering - The ability to intercept and possibly alter the flow of packets between the higher-level transport and lower-level NIC drivers.
Selectively Pass/Drop Packets
Selectively Delay/Reorder Packets
Packet Encryption/Decryption
Packet Compression/Decompression
Route Packets
Network Address Translation
Adapter Load Balancing And Fail-Over

Now don't set your expectations too high. PCASIM doesn't include samples that illustrate all of these potential uses for NDIS IM drivers. For example, while PCASIM could conceivably be used as a point of departure for LAN Emulation, that use is too complex to be treated with a general-purpose sample. In addition, PCASIM doesn't include crypto, compression or NAT samples.

What PCASIM does offer is...
a healthy, stable and well documented (internally) baseline NDIS IM driver suite
intended to be a good starting point for NDIS IM development.

 

Microsoft has actively sought to improve the usefulness of their NDIS samples. Microsoft now has useful sample NDIS Intermediate driver samples for both Windows NT and Windows 2000. So, it is reasonable to ask:

Why even consider PCAUSA NDIS Intermediate driver samples
when Microsoft offers working pass-through driver
samples for free???

The answer is simple: The Microsoft NDIS IM driver samples are fundamental "pass-through" drivers that provide only the simplest possible illustration of NDIS IM functionality. It has been PCAUSA's experience, as well as the experience of others, that:

The gap between a passive "pass-through" filter
and
a filter that actively observes and modifies data is
LARGE!!!

 

PCASIM includes variations of an NDIS IM driver for Windows NT 4.0:

PassThru – The base NDIS IM sample.
IPPass – Adds a simple framework for performing protocol-specific per-packet filtering.
IPBlock – A working example that illustrates use of the protocol-specific filtering framework to block sends and receives on a list of IP addresses. Includes a simple Win32 console application that can be used to pass a list of IP addresses to block to a specified virtual adapter IPBlock filter.
IPDelay - A second working example. This example delays sends and receives of IP packets by a selectable amount. Includes a simple MFC application that can be used to select the delays for each virtual adapter.

In addition to the driver samples themselves, the PCASIM framework includes:

PCAImApi.DLL - A DLL that exports support functions that simplify access to the PCASIM driver from Win32 applications. Also includes the Binding Review pruning function.
Test Applications - That illustrate DeviceIoControl communication between a Win32 application and the PCASIM driver.
Internet Protocol Header Files - These header files are useful for manipulating information in IP packets. These headers were originally developed for the Unix operating system by the University of California, Berkeley and its contributors.
Internet Protocol Support Functions - Including IP checksum calculation function, byte order conversion functions, etc.

 

PassThru NDIS IM Driver Sample

This is the base NDIS IM sample. It is loosely based on the ImSamp (Thanks, Jim Mateer!) and PassThru samples from Microsoft. The driver most closely resembles ImSamp, and if you have looked at ImSamp, then you will probably recognize some similarity.

Can be installed/removed safely as a Protocol
Sane OEMSETUP.INF file
BindingReview/Prune DLL does not allow fatal circular binding to self
Naming conventions makes installation on multi-adapter hosts possible
Bug fixes
Simpler than ImSamp, more functional than PassThru
Allows binding with other Protocol drivers, like the NT DDK Packet driver
Working DeviceIoControl interface
Companion DLL exports access API
Sample Win32 applications illustrate use of DeviceIoControl API
Functional NDIS IM driver samples
Illustrate useful packet filtering operations such as blocking/delaying packets
Works with MACADDR DDK sample
Support Functions

 

IPPass NDIS IM Driver Sample

The IPPass variation of PCASIM extends the functionality of the base PassThru sample by adding a simple framework for performing protocol-specific filtering.

Although still a "pass through" sample, the architecture allows all the real work of filtering to be performed in one fairly simple driver module.

 

IPBlock NDIS IM Driver Sample

The IPBlock variation of PCASIM illustrates the use of the protocol-specific framework developed in the preceding IPPass sample.

In operation, the IPBlock PCASIM driver is passed a list of IP addresses to block from a Win32 application. The IPBlock filter examines each IP packet to be sent or received against this list. IP packets whose IP address are found in the list of addresses to block are tossed by the filter.

 

IPDelay NDIS IM Driver Sample

The IPBlock variation of PCASIM illustrates the use of the protocol-specific framework developed in the preceding IPPass sample.

The IPDelay version of the PCASIM driver works in conjunction with a MFC application. The MFC application allows the user to independently specify a delay to be introduced in the send and receive paths for IP packets.

Here is an illustration of the Control IP Packet Delay dialog that is used to specify send/receive IP delays:

As each IP packet enters the IPDelay filter, its scheduled send or receive time is calculated based on the user's delay settings. The IP packet is then simply placed on a queue for later processing.

A periodic timer callback function examines the queue of waiting IP packets, and performs the actual send/receive operation when the scheduled time is reached.

The following Ping capture is representative of what you may see on your system as the delay settings are varied:

Pinging server166.PCAHOME.COM [172.16.1.32] with 32 bytes of data:

Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128

Reply from 172.16.1.32: bytes=32 time=110ms TTL=128
Reply from 172.16.1.32: bytes=32 time=110ms TTL=128
Reply from 172.16.1.32: bytes=32 time=110ms TTL=128

Reply from 172.16.1.32: bytes=32 time=219ms TTL=128
Reply from 172.16.1.32: bytes=32 time=219ms TTL=128
Reply from 172.16.1.32: bytes=32 time=219ms TTL=128

Reply from 172.16.1.32: bytes=32 time=110ms TTL=128
Reply from 172.16.1.32: bytes=32 time=110ms TTL=128
Reply from 172.16.1.32: bytes=32 time=110ms TTL=128

Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128

 

Download PCASIM Sample Executables

If you would like, you can download the PCASIM Sample Executables for evaluation.

[ PCASIM Sample Executables Download Page ] icodownl.gif (151 bytes)

 

PCASIM Development Environment

PCASIM Applications - PCASIM sample applications are currently built using Microsoft Visual C++ V5.0. PCASIM Applications - PCASIM sample applications are currently built using Microsoft Visual C++ V5.0. - PCASIM sample applications are currently built using Microsoft Visual C++ V5.0.

PCASIM Windows NT Device Drivers - Are built using Microsoft Visual C++ V5.0 and the Microsoft Windows NT 4.0 DDK on the Windows NT 4.0 platform. PCASIM Windows NT Device Drivers - Are built using Microsoft Visual C++ V5.0 and the Microsoft Windows NT 4.0 DDK on the Windows NT 4.0 platform. - Are built using Microsoft Visual C++ V5.0 and the Microsoft Windows NT 4.0 DDK on the Windows NT 4.0 platform. 

warning.gif (151 bytes) In order to compile the PCASIM Windows NT device driver you must also have the Windows NT 4.0 Device Driver Kit (DDK) from Microsoft.

Visual C/C++ V6.0 may be used instead of V5.0.

If you are unfamiliar with installing and using the Microsoft Windows NT DDK, then please read topics on this subject in the PCASIM Programmers Guide.

 

PCASIM Limitations

There are several limitations of the current PCASIM sample that you should understand:

PCASIM only works on Windows NT 4.0.
PCASIM does not support operation on the RAS/PPP adapters.
PCASIM does not include samples that illustrate packet fragmentation/defragmentation.

It is probable that PCASIM will be enhanced to work on Windows 2000 in the near future.

There are no plans to support PCASIM on Windows 9X. However, PCAUSA offers NDIS Pseudo-Intermediate (PIM) driver technology for Windows 9X.

PCAUSA NDIS PIM drivers provide functional capabilities similar to NDIS IM drivers, and work on all variations of Windows 9X.

[ More information on PCAUSA NDIS PIM technology... ].

 

Pricing And Ordering Information

PCASIM NDIS Intermediate (IM) Driver Samples For Windows NT

SKU

Description

Documentation
Source Code
License

Product Updates

Technical Support

Satisfaction Guarantee

Price

030

PCASIM Driver Samples
- Basic -

Yes

90 Days

90 Days

Yes!

US$595.00

031

PCASIM Driver Samples
- Subscription (New) -

Yes

1 Year

1 Year

Yes!

US$795.00

032

PCASIM Driver Samples
- Subscription (Renewal) -

Yes

1 Year

1 Year

Yes!

US$500.00

Ordering Information...

  Prices good through February 28, 2001.

.

 
 

PCAUSA Home · Privacy Statement · Products · Ordering · Support · Utilities · Resources
Rawether for Windows and WinDis 32 are trademarks of Printing Communications Assoc., Inc. (PCAUSA)
Microsoft, MS, Windows, Windows 95, Windows 98, Windows Millennium, Windows 2000, and Win32 are registered trademarks and Visual C++ and Windows NT are trademarks of the Microsoft Corporation.
Send mail to webmaster@pcausa.com with questions or comments about this web site.
Copyright © 1996-2001 Printing Communications Assoc., Inc. (PCAUSA)
Last modified: September 13, 2000