Hi Dave
firstly thanks for your response. I know my post didn’t deserve one.
We can’t use WPF for several reasons, since we do things with ARP etc,
and need MAC level access to packets, including the ability to inject
packets, also override routing (change outbound interface) etc.
Our code-base is also evolved from a driver that supported windows 95.
It could be argued that the main reason it’s difficult for us to support
raw IP packets is our own fault, because of our packet buffer usage (we
flatten the packet out including ethernet headers) which doesn’t allow
us the luxury of simply omitting to chain an ethernet header buffer on
the front. There’s a lot of code however, and refactoring it for this
purpose would be very risky = delays.
Our inf file specifies a media type of “ethernet, wan” which used to be
all that was required (e.g. Vista, and 2k8) to bind to all adapters (not
sure about fddi or token ring, but they are not in common use in our
customer base - we’ve had no requests for them).
With the introduction of raw IP, we have now had customer complaints our
driver doesn’t bind to things like 3G modems on Windows 7. I also can’t
get it binding to simple dialup.
I’ve been trying a variety of advertised media types (in
FilterMediaTypes) including ppip, vwifi (long story - only available
installable service on dialup has this type). To no avail. I tried
messing with the version number reported by the filter when it
registers. I think however the OS makes a decision on whether it will
allow something to be bound to an adapter purely on content of the inf file?
This is the relevant (I’m presuming) section.
HKR, Ndi,FilterClass, compression
HKR, Ndi,FilterType,0x00010001,0x00000002
HKR, Ndi\Interfaces,UpperRange,“noupper”
HKR, Ndi\Interfaces,LowerRange,“nolower”
HKR, Ndi\Interfaces, FilterMediaTypes,“ethernet, wan”
HKR, Ndi,FilterRunType, 0x00010001, 1 ;this filter must run before any
protocol can bind to the below miniport
As for whether it was a good thing to introduce raw IP, I guess we
disagree on that. My question is what dire problem did it fix, cos it
sure caused a few (even if only relating to MB). We now have to
a) maintain and deploy separate drivers / infs for windows 7, 2k8 R2 vs
Vista
b) switch packet processing based on the media type of the interface.
Everyone else now also has to write a new miniport for 7 as well and
therefore maintain an extra code-base. You’d think this would have put
MS off - lack of initial hardware support due to MB vendors playing
catch-up with a new driver for 7.
In fact since we do NAT, routing and VPN, we adopt a common packet
format internally anyway - with an ethernet header.
I guess my point is, that it worked well for decades for other media to
emulate ethernet in NDIS. This I believe was a fantastic thing. It
made it simple for interop, and writing packet processing software.
Introducing this change broke all that. I’m struggling to see the
benefit. It’s not like the ethernet header would have been sent over the
wire anyway (for mobile broadband or PPP). So we saved the MB miniport
the task of stripping the ethernet header off, but it has to do major
processing on the packet to get it into an on-the-air format anyway.
They took away the ethernet header, and then had to store the frame type
in another field of the NBL. So all they saved was 12 bytes. 2 MAC
addresses. These bytes were only transported from the top of NDIS to
the bottom anyway. So it’s not like it was a bandwidth / memory / CPU hog.
I just think the benefits of such a change are nebulous, but the costs
are large and real. Every miniport and intermediary developer has to do
a bunch of work to make things function again. It impacts customers
also due to the impact on their suppliers (devs). There have been a lot
of changes in Vista / 7 lately that have broken compatibility. Whilst I
understand this is sometimes necessary, it is an onerous thing, and I
don’t believe should be done without very good reason, and without
consideration to the work it causes others.
Thanks again Dave, if you’re ever in Auckland, I owe you a beer.
Regards
Adrien
On 25/01/2011 4:50 a.m., Dave Cattley wrote:
> I’m having all sorts of fun getting my LWF to be available to bind to
> dialup networking on Windows 7.
Please explain what the [fun] trouble is.
> I found out recently some genius at MS decided to break every firewall
> on the planet by devising “raw IP packets” (which saves the OS nothing
> but costs software devs a refactor).
I am pretty sure that WFP based firewalls are impervious and
nonplussed by this change.
> http://www.microsoft.com/whdc/connect/mb/mbchangeswin7.mspx
>
> anyway, does this also now affect dialup networking? the MS documents
> only refer to mobile broadband.
Not that I have observed. How about you? Does it affect the virtual
ethernet edge of NDISWAN that your LWF is attaching to? I could see
that MSFT *could* go this way in modifying the NDISWAN but I don’t see
the motiviation to take something that is working and has quite a bit
of legacy expectation around the entire NDISWAN / WANARP interface
with reverse compability to NDIS5 IM drivers and more recent LWF
drivers and break that just for fun.
> Still can’t believe they let some numbskull do this.
Well, I think you just ensured that the priority of assitance coming
from the NDIS team could not be made any lower. Way to make friends.
But seriously, back to the problem and put aside the hystrionics:
What is the issue? Your LWF needs to deal with a specific media
type. The world is not all ethernet and ethernet emulation. The
Mobile Broadband world is just IP based and point-to-point. Getting
rid of all of the nonsense of trying to make it look like PPP or 802.3
is a great simplification. Too bad it took until Win 7 to get
it. A LWF either deals with range of media encodings or not.
What do you do with FDDI?
But really, if it is IP firewalling on NT6 you want to do, why did you
create a LWF to begin with? Do you need to know MAC level information?
Help us understand where the issue is and maybe someone on the list
can help you find a solution.
Good Luck,
Dave Cattley
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer