RASPPPOE ReadMe for Windows 98/98SE/ME Users
RASPPPOE
PPP over Ethernet Protocol
for Windows 98/98SE/ME
(If you are using Windows
2000/XP/2002, please click here)
written by Robert Schlabbach
Version 0.96, May 29th, 2001
Contents
1. Introduction
Welcome to RASPPPOE, a PPP over Ethernet
(short: PPPoE) implementation for Windows
98/98SE/ME/2000/XP/2002. PPPoE as a method for establishing PPP
connections through Ethernet adapters is described in RFC 2516
and is used by many broadband service providers to allow authentication and
maintain the familiar "dial-up experience" when connecting to the Internet
through a broadband modem. Although there are other PPPoE implementations for
Windows, this one still has its unmatched strong points:
- Designed exclusively for Windows 2000
from ground up and then ported to Windows
98/98SE/ME, not the other way around.
- Seamless integration into the operating system. This
protocol makes Ethernet Adapters appear as
"modems", allowing PPPoE to be easily used within the
standard Dial-Up Networking framework.
- Compatibility: This protocol supports Internet
Connection Sharing (including on-demand dialing),
power management (Standby and
Hibernate) as well as multiprocessor
systems.
- Completeness: This protocol can not only act as a PPPoE
Host (client), but also as an Access
Concentrator (server), fully implementing RFC 2516.
- Compactness: The complete protocol is less than
200 KB. Yet no concessions were made in the
implementation.
To install this protocol, please follow the installation
instructions carefully. If you have problems using it, see Troubleshooting
for help. If you are successfully using this protocol, you can check if you find
any of the advanced
features useful. You may also want to know about the known
issues. Users upgrading from a previous version of this protocol should
check the Revision
History to find out what changed. If you want to get in touch with me, see
Contacting
the Author.
- Robert Schlabbach
License and Disclaimer
This driver, installation files and documentation is all Copyright
(C) 2000-2001 by Robert Schlabbach. All rights reserved. It is
distributed without any warranty. Use at your own
risk. You may use and copy it complete and unmodified
free of charge for non-commercial purposes only. Commercial
exploitation, redistribution for commercial purposes, especially redistribution
by Internet service providers as "their" service to their customers, is
strictly prohibited. Internet service providers must purchase a
license for distribution to their customers. The licensed version additionally
features an installer, which typically requires no reboot and
leads the user to the first login for an "instant success"
customer experience. For licensing details please contact me.
2. Installing the PPP over Ethernet
Protocol
- NOTE: Since the installation
requires a reboot to finish, you are advised to save your
work and close all running applications before proceeding.
- During installation, you may be prompted to insert your Windows
CD-ROM, so please have it ready in case you need it. If you have a
preconfigured machine with the Windows installation files residing on your
hard drive, you will not need the CD-ROM.
- If there is already a different PPPoE implementation
installed on your machine, it might get confused by the PPPoE traffic
generated by this protocol. This protocol was written to peacefully coexist
with other PPPoE implementations on the same machine, but other programmers
may not have been as thoughtful. Thus, it is recommended (but
not required!) that you uninstall any other
PPPoE implementations and reboot your machine before
proceeding.
- This protocol requires the Dial-Up Networking component
of Windows to operate. If you are not sure whether this
component is installed, click on the Start button, select
Settings then Control Panel to open the
Control Panel window. In that window, double-click
Add/Remove Programs. In the upcoming dialog, select the
Windows Setup tab, then double-click the item
Communications in the list, look for the item Dial-Up
Networking and make sure it is checked.
- Unpack the downloaded archive to a temporary installation directory. Make
sure that the following files are correctly extracted:
README98.HTM, README2K.HTM,
NETPPPOE.INF, RASPPPOE.INF,
WINPPPOE.INF, WINPPPOE.DLL,
RASPPPOE.DLL, RASPPPOE.EXE and
RMSPPPOE.SYS.
- Right-click the Network Neighborhood (Windows 98/98SE) or
My Network Places (Windows ME) icon on your desktop and
select Properties to bring up the Network
Configuration window.
- In the Select Network Component Type window, select
Protocol and click the Add... button.
(Note: It could take a few seconds for the following window
to come up.)
- In the Select Network Protocol window, click the
Have Disk... button.
- In the Install From Disk window, either type the name of
your temporary installation directory or click the Browse...
button to navigate to it (it does not matter which of the three INF files you
select, Windows will automatically pick the right one later).
Then click the OK button. A new window opens, offering the
PPP over Ethernet Protocol for installation. Click
OK to start installing the protocol.
- If you have more than one network adapter in your system, you may want to
remove the PPP over Ethernet Protocol for all adapters but the one your
broadband modem is actually connected to. To do this, locate all unneeded
PPP over Ethernet Protocol -> Adapter
Name entries in the Network Configuration
window, select them one by one and click the Remove button.
(Note: For each adapter you remove the protocol from, you
will see two additional entries disappear: PPP over
Ethernet Miniport -> PPP over Ethernet Protocol and
NDISWAN -> PPP over Ethernet Miniport. Do
not remove any of these entries manually!)
- IMPORTANT: Locate and select
the TCP/IP->Adapter Name entry
for the network adapter connected to your broadband modem. If this network
adapter is dedicated to your broadband modem, simply click
the Remove button. If you also want to access other local
machines through the same network adapter, click the
Configure button and assign a fixed IP
address (e.g. 192.168.0.1 with subnet mask
255.255.255.0). If you do not take either of these steps, you
will experience periodic pauses while using this protocol,
because Windows will periodically halt the network adapter
and try to acquire for an IP address for it, which also makes the machine take
significantly longer to boot up.
- Click the OK button to close the Network
Configuration window and confirm to reboot.
- After the reboot, the protocol is fully functional, but you still need to
create a dial-up connection to use it. See the next section for details.
3. Creating PPP over Ethernet Dial-up
Connections
PPP over Ethernet dial-up connections can be most conveniently created with
the Dial-up Connection Setup application provided with the
protocol, which creates dial-up connections with all the correct settings at the
click of a button.
- NOTE: The Dial-Up Networking folder
interferes with the operation of this application and prevents successful
creation of dial-up connections. Thus, if you currently have the
Dial-Up Networking folder open, please
close that window before proceeding.
- Click the Start button on the taskbar and select
Run... to bring up the Run dialog box.
- Type RASPPPOE in the edit field and click the
OK button to run the Dial-up Connection
Setup application.
- If the application quits with an error message, follow the advice it
gives.
- A dialog box comes up with a combo box labeled Query available PPP
over Ethernet Services through Adapter: at the top. Select the
network adapter your broadband modem is connected to from the list. If the
protocol is only operating on one network adapter, the box will be grayed out
as there is no choice to make.
- Generally, it is recommended that you create a connection
for an adapter, not for a specific service, so that it
continues to work even if your provider changes the server or service name. To
do this, simply click the Create a Dial-up Connection for the selected
Adapter button now. Shortly afterwards, a shortcut to the new dial-up
connection named Connection through Adapter
Name should show up on your desktop.
- If you want to create a connection for a specific
service, click the Query Available Services button.
The application will send out a query for offered services and display the
result in the list view below. If an error message is displayed, see Troubleshooting
for help. Otherwise, select the desired service and the button below will
change to Create a Dial-up Connection for the selected
Service. Click the button to create a connection for this service.
Shortly afterwards, a shortcut to the new dial-up connection named
Connection to Service Name
at Access Concentrator or
Connection to Access Concentrator
(if the connection is for the default service) should show up on your desktop.
- After you have created the connection(s) you need, click the
Exit button to quit the application.
- Double-click the desktop icon for the dial-up connection you created.
- In the Connect To window, enter your user name and
password if your service provider requires authentication.
- Click on the Connect button. If all goes well, you should
be connected to the Internet almost instantly. If not, see Troubleshooting.
4. Removing the PPP over Ethernet
Protocol
- NOTE: Since the removal
requires a reboot to finish, you are advised to save your
work and close all running applications before proceeding.
- First, you may want to remove all dial-up connections you created for
connecting with this protocol. To do so, first double-click the My
Computer icon on your desktop. If you are running Windows
ME, double-click the Control Panel icon in the
opened window. Now double-click the Dial-Up Networking icon
in the last opened window. In the Dial-Up Networking window,
right-click each of the dial-up connections you created for this protocol and
select Delete. If you had created any shortcuts to these
dial-up connections on your desktop, right-click them and select
Delete as well.
- Right-click the Network Neighborhood (Windows 98/98SE) or
My Network Places (Windows ME) icon on your desktop and
select Properties to bring up the Network
Configuration window.
- For each adapter the protocol is operating on, you will find
three bindings in this window:
- NDISWAN -> PPP over Ethernet Miniport.
- PPP over Ethernet Miniport -> PPP over Ethernet
Protocol
- PPP over Ethernet Protocol -> Adapter
Name
- Locate all PPP over Ethernet Protocol ->
Adapter Name entries in this window, select
them one by one and click the Remove button. The other two
bindings belonging to this one will be automatically removed. If you
accidentally remove one of the other bindings, no harm is done - you only need
to remove the other two manually in this case.
- Once you have removed all protocol instances, click the
OK button to close the Network Configuration
window and confirm to reboot.
- After the reboot, the protocol is usually completely removed from your
machine. In some cases, Windows keeps a copy of the INF file
in the \WINDOWS\INF\OTHER directory, named as Robert
SchlabbachWINPPPOE.INF. You can safely delete this file after
removal.
5. Advanced Protocol Features
This section covers the advanced features of the protocol. Average users
should be perfectly happy with the default settings, although specifying
the link speed to display may be of interest. Users having problems with VPN
software might try if overriding
the MTU reported by the protocol helps. Users with flat rate Internet access
may be interested in making the
connection "always on". If you are interested in using the protocol's server
capability, please see Enabling the
protocol to act as a PPPoE Access Concentrator.
To bring up the protocol settings for an adapter:
- Right-click the Network Neighborhood (Windows 98/98SE) or
My Network Places (Windows ME) icon on your desktop and
select Properties to bring up the Network
Configuration window.
- Locate the PPP over Ethernet Protocol ->
Adapter Name entry for the adapter the
protocol settings of which you wish to modify, select it and click the
Properties button to bring up the protocol's settings for
this adapter.
- Any changes to the protocol settings require a reboot to
take effect. You will be prompted to reboot when you close the Network
Configuration window with the OK button after making
any changes.
The General tab offers the following settings:
5.1 Limit TCP MSS Maximum Segment Size
(MSS) Option
When using Internet Connection Sharing, the client
machines are completely unaware of the packet size restrictions imposed by the
nature of PPP over Ethernet (in contrast to e.g.
modem or ISDN connections, which allow
passing arbitrarily sized packets). Typically, a client assumes that packets
of up to 1500 bytes can be passed and thus indicates a
Maximum Segment Size of 1460 bytes (1500
bytes minus 40 bytes for the TCP and IP headers) when opening a
TCP session, resulting in either side of the connection
sending packets up to 1500 bytes in size, too large to pass
through a PPP over Ethernet connection, which can only pass packets up to
1492 bytes in size. These oversized packets are then often
silently dropped at either side of the PPP over
Ethernet connection, leading to delays or
hangs when accessing the Internet from a client.
To work around this problem, this option makes the protocol scan all
network packets it sends and receives for the TCP Maximum Segment Size
(MSS) option and, if a value greater than either the default
(1492) or the overridden MTU minus
40 for the IP and TCP headers (i.e. 1452 in case of
the default MTU) is found, change it to this value,
recalculate the TCP checksum and pass the modified packet. This option is
enabled by default. If you are not using
Internet Connection Sharing, you can disable
this option to save a little (very little) CPU power, although leaving it
enabled has no negative side effects.
5.2 Override Maximum Transfer
Unit
By default, the protocol will report an MTU of 1492 bytes,
the maximum possible for PPP over Ethernet. However, you can use this option
to override the MTU initially reported by the protocol. Making the protocol
initially report a lower MTU was found to help with certain
VPN software packages which "blindly" add their own overhead without paying
any respect to the MTU reported by the driver, making the network packets too
large to pass through a PPP over Ethernet connection. Check the
Override Maximum Transfer Unit checkbox and type the MTU the
protocol should report in the Maximum Transfer Unit (MTU)
edit box. The valid range is 576 through
1492 bytes. Reducing the MTU by 32 bytes to
1460 should generally suffice to make misbehaved VPN software
work. Note: Regardless of this setting, the protocol will
always send and receive packets of up to 1492 bytes. Only the
MTU initially reported by the protocol (the
MaxFrameSize value in response to the
OID_WAN_GET_INFO request) and, if enabled, the TCP MSS
option limit are affected by this setting.
Note that the Dial-Up Adapter's IPMTU registry parameter
is also set to the override value, since the Dial-Up Adapter
ignores the MaxFrameSize returned by the driver. This means
that this setting will affect the MTU of all dial-up
connections, and that the use of any other MTU adjustment tool will possibly
conflict with this option, altering it.
NOTE: This option will only "stick" if you enter an MTU
other than 1492. If you only check the checkbox, but leave
the MTU at 1492, the protocol will recognize the default
value and clear the checkbox the next time you open the
properties dialog, because the MTU was not actually overridden.
5.3 Number of lines (WAN
endpoints)
The protocol is capable of running several simultaneous PPP over Ethernet
sessions through one adapter. This feature will probably be very rarely - if
ever - needed. To allow this, you can configure the number of WAN endpoints
(dial-up devices) the protocol exposes for a network adapter. The default is
1, and up to 10 WAN endpoints can be configured. This setting requires a
reboot to take effect.
The Advanced tab offers the following settings:
5.4 Specify Link Speed
By default, the protocol will report the speed of the network adapter you
are connecting through as the speed of a dial-up connection you make through
it, as it cannot find out the actual speed of your broadband modem. However,
you can specify the connection speed the protocol should report for
connections through a specific adapter. To do this, check the Specify
Link Speed checkbox and type the link speed the protocol should
report in the Link Speed (kbps) edit box, in kilobits per
second. If you want to revert to displaying the adapter's link speed, clear
the Specify Link Speed checkbox. Note: This
setting has absolutely no effect on the network traffic
through this adapter; it is purely a cosmetic
setting.
Beyond these settings, the protocol offers the following possibilities:
5.5 Making a dial-up connection "always
on"
Users who enjoy flat rate Internet access may find it desirable to turn
their connection into an "always on" connection that is
established automatically when you log on to Windows and kept
until you log off. To make your dial-up connection "always
on", follow these steps:
- If your service provider requires authentication, make sure you have
saved the password by checking the Save Password checkbox
in the Connect To window and connecting at least
once.
- Double-click the My Computer icon on your desktop. If
you are running Windows ME, double-click the
Control Panel icon in the opened window.
- Double-click the Dial-Up Networking icon in the last
opened window.
- If you are running Windows 98/98SE, click on the
Connections menu of the Dial-Up Networking
window and select Settings... to bring up the
Dial-Up Networking settings dialog. In this dialog,
clear the Prompt for information before
dialing checkbox.
- If you are running Windows ME, locate the dial-up
connection you want to make "always on", right-click it and
select Properties. In the properties dialog, select the
Security tab and check the Connect
automatically checkbox. Then select the Dialing
tab, check the This is the default Internet connection
checkbox, select Always dial my default connection and
clear the Enable idle disconnect and the
Disconnect when connection may not be needed checkboxes.
- Click OK to save the changes.
- Now click and drag the desktop
icon of the dial-up connection and drop it under Start
Menu, Programs, into the
Startup folder.
- Log off and log on again.
Windows will establish the connection automatically and
keep it connected until you log off.
5.6 Addressing a specific Service and/or
Access Concentrator
In most cases, there is no need to address a specific
Service or Access Concentrator. But should you have a need to do so, you can
use the phone number field of your dial-up connection to
specify a Service, Access Concentrator or
both. The following phone number formats are possible:
- "0": The protocol will connect to the
default Service of the first Access
Concentrator that replies to the connection request.
- "Service-Name": The protocol will connect to the
first Access Concentrator that replies
offering the requested Service.
- "Access-Concentrator\": The protocol will connect to
the default Service of the named Access
Concentrator.
- "Access-Concentrator\Service-Name": The protocol will
connect to the requested Service of the
named Access Concentrator.
The RASPPPOE application uses format A
for the phone number if you create a connection for an
adapter and format C or D
if you create a connection for a specific service.
5.7 Enabling the protocol to act as a
PPPoE Access Concentrator
The protocol is able to act as a PPPoE Access Concentrator
(server). This feature can be used for testing purposes, but also offers a
future potential for advanced provider services like
instant messaging or instant e-mail even for
users who are offline at the time a message is received. The
server capability is fully integrated with the operating system's
Dial-Up Server component. No PPPoE-specific configuration is
needed. The protocol uses the current Computer Name as the
Access Concentrator Name and offers any Service
Name requested by a client. Note that the protocol will
not offer any services until you explicitly
enable its dial-up devices to accept incoming connections. To do this, follow
these steps:
- Double-click the My Computer icon on your desktop. If
you are running Windows ME, double-click the
Control Panel icon in the opened window.
- Double-click the Dial-Up Networking icon in the last
opened window.
- In the Dial-Up Networking window, click on the
Connections menu of the Dial-Up Networking
window and select Dial-Up Server... to bring up the
Dial-Up Server settings dialog. If you cannot find this
menu item, you first need to install the Dial-Up Server
component. Go to Control Panel, Add/Remove
Programs, Windows Setup,
Communications and enable the component there.
- If you see a message saying "No modem is installed.",
or you don't see any tab with the name of your network
adapter on it, you may have to reboot to make Dial-Up
Server recognize the dial-up devices exposed by the protocol (see
Known
Issues).
- Select the tab with the name of the network adapter
through which you want to accept incoming PPP over Ethernet
connections and select Allow caller access on that page.
Click the Change Password... and the Server
Type... buttons to configure the access.
- Click OK to save the changes and enable the server.
- If you want to disable the server, open the Dial-Up
Server settings dialog again, select the tab with the name of the
network adapter on it and select No caller
access. Then click OK to stop the protocol from
offering services on that network adapter.
For further help on using Dial-Up Server, please refer to
the operating system's documentation on this topic.
NOTE: Machines running Windows 98/98SE/ME
will not be able to successfully connect to another
Windows 98/98SE/ME machine acting as a PPPoE Access
Concentrator (server) due to this
known issue.
6. Troubleshooting
This section helps you with possible problems you might encounter during the
installation and use of the protocol.
6.1 RASPPPOE application does not list the
desired adapter
First, be aware that you can use this protocol only on
Ethernet adapters. As PPP over Ethernet only
works over Ethernet, the protocol will only bind itself to Ethernet adapters
(NdisMedium802_3). Adapters that do not support this medium
type (e.g. internal or USB broadband modems that do not
expose a standard Ethernet interface through their driver)
are not supported by this protocol.
Check in Device Manager whether the network adapter
connected to your broadband modem is enabled and working properly. If it is,
try rebooting the machine. If that does not help, try
uninstalling the protocol, rebooting,
re-installing and rebooting again. Your
adapter should be listed now.
6.2 RASPPPOE application reports "RASPPPOE
- No Service Offers Received" when querying available services
This error message means that the protocol did not receive
any response from your service provider. You should check the
following things in order:
- Check if your broadband modem has successfully established a link with
its counterpart. Most DSL modems have a Sync LED on them
which indicates this status. If your modem has such an LED and it indicates
that the link is down, contact your service provider for assistance.
- Check in Device Manager if the network
adapter your broadband modem is connected to is enabled and working
properly.
- Bring up the Network Configuration window, select the
network adapter your broadband modem is connected to and click
Properties. In the Properties window,
select the Advanced tab, look through the options and make
sure that the correct Line Speed and duplex
mode is selected (most DSL modems only support 10Mbps half
duplex mode). If your network adapter has several connectors at the
back, make sure the correct connector is selected, which is most likely
Twisted Pair (TP).
- Check that the cable connecting your broadband modem to your network
adapter is properly attached and of the correct type. Note that broadband
modems typically have a "crossed" connector on them, so you
will need a straight cable to connect it
directly to a network adapter, while you need to use a
crossed cable or use an
uplink port to connect it to a hub or
switch.
- Check with your service provider whether they currently have a service
outage.
6.3 Connection attempt fails with "Error
678: There was no answer."
First, you should check whether you can get any reply from
your service provider with the Dial-up Connection Setup
application provided with the protocol:
- Click the Start button on the taskbar and select
Run... to bring up the Run dialog box.
- Type RASPPPOE in the edit field and click the
OK button to run the Dial-up Connection
Setup application.
- If the application quits with an error message, follow the advice it
gives.
- A dialog box comes up with a combo box labeled Query available
PPP over Ethernet Services through Adapter: at the top. Select the
network adapter your broadband modem is connected to from the list. If the
protocol is only operating on one network adapter, the box will be grayed
out as there is no choice to make.
- Click the Query Available Services button. If an error
message is displayed, continue here
for further help.
- If the list view shows one or more offered services and you had tried to
connect to a specific Service and/or
Access Concentrator, make sure the one you had tried to
connect to is listed. If you find your provider has changed the Service Name
and/or the Access Concentrator name, simply create a new connection with the
new name(s) or edit the Phone number field in your existing
dial-up connection accordingly.
- Click the Exit button to quit the application.
If you do not want to connect to a specific
Service and/or Access Concentrator, make
sure the Phone number field of your dial-up connection really
only contains a single zero digit.
6.4 Connection is successfully established,
but some (or all) Internet websites do not load properly
This is usually a sign of an MTU problem. A possible cause
for this could be that the Dial-Up Adapter's
common IP MTU setting was altered to a value
too high for PPP over Ethernet. This setting is altered e.g.
when you change the IP Packet Size value on the
Advanced tab of the Dial-Up Adapter
Properties to something other than the "PPP over
Ethernet" setting added by the protocol, or by some MTU tools. You
should not change this setting, nor use any tools that alter it when using
PPP over Ethernet. To ensure this setting is correct do the
following:
- Right-click the Network Neighborhood icon on your
desktop and select Properties to bring up the
Network Configuration window.
- Locate any PPP over Ethernet Protocol ->
Adapter Name entry, select it and click
the Properties button.
- Close the properties window with the Cancel button.
- Close the Network Configuration window with the
OK button. If Windows prompts you to
reboot, the IP MTU setting had to be
corrected. Allow the reboot and try if the connection works properly.
If that did not help, you should determine the Path MTU to
the problem site(s) (Note: The method described here does not
work with all servers. If you get no reply at all from a server or a number
below 548, you cannot determine the Path MTU to the server in
question):
Connect, open an MS-DOS Prompt and run:
ping -f -l xxxx
Address
Where Address is the name or IP
address of the server you have problems accessing. For
xxxx, start with 1464 and
lower the number until you get a reply. Then add
28 to the highest number at which you get a reply. The result
is the Path MTU.
Example: You start getting replies at ping -f -l
1372 Address. The Path MTU is 1372 + 28 =
1400 bytes in this case.
Normally, the Path MTU to all servers should be 1492.
However, some service providers appear to have a configuration problem which
reduces the Path MTU. If you determine a Path MTU lower than
1492 to several (or all) servers on the Internet, you should
enable the MTU
override option and set it to the Path MTU you
determined. After that setting has taken effect, all sites with a Path MTU
greater than or equal to the value you set should load properly.
6.5 Connection is successfully established,
but there are periodic pauses while using the Internet
This is typically the result of leaving the
TCP/IP->Adapter Name entry in
the network configuration, not assigning any
fixed IP address to it, and not having any DHCP
server on the local network either. This also makes the machine take
significantly longer to boot up. To fix this, right-click the Network
Neighborhood (Windows 98/98SE) or My Network Places
(Windows ME) icon on your desktop and select Properties to
bring up the Network Configuration window. In this window,
locate and select the TCP/IP->Adapter
Name entry for the network adapter connected to your broadband
modem. If this network adapter is dedicated to your broadband
modem, simply click the Remove button. If you also want to
access other local machines through the same network adapter, click the
Configure button and assign a fixed IP
address (e.g. 192.168.0.1 with subnet mask
255.255.255.0).
6.6 Cannot get Internet Connection Sharing
to share the PPPoE connection
A common cause of this is that Internet Connection Sharing
was incorrectly set up to use a network
adapter for Internet access, which bypasses the
PPP over Ethernet Protocol. Re-configure Internet
Connection Sharing and make sure you select the Dial-Up
Adapter as the device through which to access the Internet. For
further help, see this article in the Microsoft support
database:
Q273587
- How to Configure ICS for Use with DSL Connections That Use PPPoE
Adapters
6.7 The "Override Maximum Transfer Unit"
option does not remain checked
This option will only "stick" if you enter an MTU other than
1492. If you only check the checkbox, but leave the MTU at
1492, the protocol will recognize the default value and
clear the checkbox the next time you open the properties
dialog, because the MTU was not actually overridden.
7. Known Issues
This section documents known issues with the protocol.
7.1 If the installer requires a reboot
to finish, the initial connection will not have an icon in the system
tray
If the installer detects that it can not start the protocol dynamically, it
informs the user that a reboot is required. Upon the next reboot, the
installer creates a dial-up connection and brings up the Connect
To dialog before the task bar appears. If the
connection is established, it will be fully functional, but there will be no
icon for it in the system tray. To disconnect the connection, double-click the
Connection through Adapter Name
icon that was placed on the desktop to bring up the connection status and
click the Disconnect button there.
Background: The installer places an entry under the
RunOnce registry key to run itself after the reboot. When
starting, Windows runs all entries under this key and waits
for each one to finish before starting the shell. Thus, the
connection will be established before the task bar is created, making it
impossible for Dial-Up Networking to add a connection icon to
the system tray.
7.2 Dial-Up Server does not recognize
the dial-up devices exposed by the protocol until the machine is
rebooted
If the installer starts the protocol dynamically without a reboot, it is
possible to make outgoing connections with it, but the
Dial-Up Server will not recognize the dial-up devices exposed
by the protocol. The user must reboot the machine to make
Dial-Up Server recognize the protocol's dial-up devices.
Background: The cause of this issue is undetermined.
7.3 When acting as a PPPoE Access
Concentrator, Windows 98/98SE/ME machines cannot connect
When you configure a Windows 98/98SE/ME machine to act as
a PPPoE Access Concentrator (server) and try to connect from
another Windows 98/98SE/ME machine, the connection will hang
during negotiation and cannot be successfully established. There is currently
no workaround for this problem other than using a different operating system
on the client or server machine. Connections with Windows
2000/XP/2002 at either end work fine.
Background: Windows 98/98SE/ME negotiates
the PPP options Address Field Compression and
Protocol Field Compression, despite the protocol indicating
that these options are not supported, since RFC
2516 explicitly forbids these options for PPP over
Ethernet connections. When there are Windows 98/98SE/ME
machines at both ends, these options are successfully negotiated, but the
machines can no longer communicate as soon as they are used. When there is a
Windows 2000/XP/2002 machine at either end, it will
reject any of these options and the connection can be
successfully established.
8. Revision History
-
Version 0.96, May 29th, 2001
- First release with Intel Itanium 64-bit CPU support!
The IA64 version is distributed in a
separate archive for now.
- Fixed: Some code paths in the
ProtocolReceivePacket() handler returned a non-zero value,
which would not return the received packet to the network adapter driver,
eventually causing it to run out of packets, making unable to operate. Fixed
this by ensuring all code paths return zero.
- Changed: The watchdog timer that
checks every ten seconds whether any packets have been
received will now send up to three LCP Echo-Requests before
terminating the connection. Thus, a connection loss will now be detected
within 40 to 50 seconds. This should cure the disconnection
problems a number of users have been suffering from due to the watchdog
timer being a bit too sensitive for some service providers.
- Changed: When connecting to the unnamed default
service, the protocol will now connect to the first
offered service, even if it is not unnamed. This enhances
compatibility with service providers who are not fully RFC
2516 compliant.
-
Version 0.95, December 29th, 2000
- Added: A no-reboot installer (fully licensed version only) that
installs, repairs or
upgrades the protocol from a single, self-extracting
executable, typically without requiring a reboot on
any of the supported platforms. Additionally, it creates a
dial-up connection and then prompts the user to connect to allow an
"instant success" experience. The protocol will be added to
the list of installed programs in Add/Remove Programs in
Control Panel for convenient and complete
uninstallation. Optional command-line switches allow silent
installation, upgrade and removal for licensees who wish to provide their
own installer front-end.
- Added: Server capability. If one of
the dial-up devices exposed by the protocol is configured to accept incoming
connections, the protocol will offer the unnamed default
service on the corresponding adapter and use the computer
name set in the networking configuration as the Access
Concentrator name. If the connection is accepted, the protocol will
do a left-to-right (big-endian) comparison of the adapter's MAC
address with the one of the connecting host, and generate an
even (LSB 0) session identifier is the
adapter's MAC address is lower, or an
odd (LSB 1) one if it is higher, to ensure
that two machines connecting to each other simultaneously do not generate
identical session identifiers. The server is not
industry-strength. There is no limit on the
connections per MAC address, nor is any encryption being
used in the Access Concentrator Cookies generated by the
protocol, so a malicious user on the same Ethernet segment
could occupy all incoming lines with a
denial-of-service attack, but do no harm beyond that. Great
care has been taken to minimize the load on the system if
such an attack is made.
- Added: Timers. The protocol now times
out connection requests and resends requests two times, once after
one second, then after two seconds, and
three seconds after that indicates no
answer. Incoming connections are offered for
five seconds before being rejected. When a connection is
established, a watchdog timer checks every ten
seconds whether any packets been received, and generates and sends
an LCP Echo-Request to the peer if no packet has been
received since the last check. If at the next check still no packet has been
received, the connection is terminated with no answer.
Thus, a connection that was dropped by the other end without proper
termination will be detected as lost within 20 to 30
seconds.
- Added: In Windows 98/98SE/ME,
RASPPPOE.EXE now checks whether Dial-up
Networking is installed and gives an error message if it is not.
Additionally, it checks if NDIS.VXD version
4.10.2222 is installed, and warns the user to install fix
Q243199 if it is.
- Added: In Windows 98/98SE/ME,
WINPPPOE.DLL now adds a new value to the Packet
Size setting of the Dial-Up Adapter called
PPP over Ethernet, which sets the packet size to either the
default (1492) or the overridden MTU.
- Fixed: RASPPPOE.EXE would show
erroneous query results if more than one
Access Concentrator offered services, because the driver
was returning an incorrect query result length. Fixed this by correcting the
length calculation in the driver.
- Fixed: In Windows 98/98SE/ME,
RASPPPOE.EXE was unable to properly retrieve the names of
network adapters which were 58 characters or more long, which led to it
displaying a blank adapter name and being unable to create
a dial-up connection for the adapter. Fixed this by increasing the size of
the retrieval buffer and limiting the size of the passed name.
- Fixed: Windows 98/98SE/ME was unable
to tell apart the dial-up devices exposed for two network adapters of the
same name. Fixed this by appending a "#X" suffix to the
dial-up device name if the protocol is already bound to a network adapter of
the same name.
- Fixed: In Windows 98SE/ME,
NDIS.VXD versions 4.10.2224 (from fix
Q243199 for Windows 98SE) and
4.90.3000 (included in Windows ME)
randomly dropped packets received from the
NE2000 or the Realtek RTL8029(AS) driver
without indicating them to the protocol for an unknown reason. Worked around
this problem by adding NDIS_PACKET_TYPE_ALL_LOCAL to the
packet filter if Windows 98/98SE/ME and one of these two
drivers is detected, which makes NDIS.VXD work reliable
again.
- Fixed: If TAPI requested to
drop a call, the protocol would not transition to the
idle call state, because I had misunderstood a paragraph in
the DDK documentation. This might also have been the cause of
TAPISRV.EXE causing crashes in RPCRT4.DLL
in Windows ME. Fixed this by reviewing all
TAPI call state transitions and making sure the behavior is
compliant with the DDK documentation.
- Fixed: When running a repair or
upgrade install on Windows 2000, the
protocol could crash the operating system with a blue
screen indicating that RASPPPOE.SYS was unloaded without
canceling pending operations. Investigation revealed that Windows
2000 was trying to call the protocol's
ProtocolPnPEventHandler() function after it had been
unloaded, because the protocol had not been deregistered. Further
investigation revealed that the ProtocolUnload() handler is
never called in Windows 2000, which is not
documented in the Windows 2000 DDK documentation.
Fixed this by providing a DriverUnload() handler again to
deregister the protocol, and by putting the pointer to this function
directly into the driver object in DriverEntry() to omit
the NdisMRegisterUnloadHandler() call, which is not
available in Windows 98. The
ProtocolUnload() handler is still provided for
Windows 98/98SE/ME.
- Changed: RASPPPOE.EXE now displays a
different error message if the user tried to query
available services through an adapter which line is already in use by an
active PPPoE session, explaining that the user needs to disconnect that
session to be able to query services.
- Changed: If more than one WAN Endpoint
is configured for a network adapter, "Line X" suffixes will
now be appended in Windows 2000 as well. Previously, they
were only appended in Windows 98/98SE/ME.
- Changed: In Windows 2000, the protocol
no longer logs query results to the event log.
RASPPPOE.EXE made this function obsolete.
- Changed: Removed the
NCF_NOT_USER_REMOVEABLE flag from the WAN miniport
(PPP over Ethernet Protocol) INF file for Windows
2000, allowing manual removal of any miniport instances left behind
in Device Manager.
- Changed: Replaced the previously imported
strncmp() and _strnicmp() kernel functions
with inline functions. Removed the need for the
_snwprintf() kernel function by generating the
"Line X" suffixes directly in the code.
- Changed: During protocol initialization and shutdown,
the MiniportQueryInformation(),
MiniportSetInformation(), MiniportReset()
and MiniportWanSend() handlers now return
NDIS_STATUS_ADAPTER NOT_READY instead of
NDIS_STATUS_FAILURE.
- Changed: The protocol service name and the driver
binary name were changed to RMSPPPOE and
RMSPPPOE.SYS, respectively, to enhance compatibility with
future Windows versions.
-
Version 0.94, May 17th, 2000
- First release with Windows 98/98SE/ME support! No
thanks to Microsoft's complete lack of documentation on
NDIS intermediate drivers in Windows 98/98SE/ME.
- Added: Windows 98/98SE/ME support.
Figured out the INF format for NDIS intermediate drivers in
Windows 98/98SE/ME and where WAN.TSP
expects an NDIS intermediate driver's TAPI registry subkey
to be located in the registry. Added a 16-bit Windows DLL
(WINPPPOE.DLL) with an NDI procedure to
create that registry subkey upon installation, set the Dial-Up
Adapter's IPMTU registry parameter to the MTU for PPP over
Ethernet (Windows 98/98SE/ME was found to
ignore the maximum frame size returned by the driver) and
offer the protocol properties GUI. Changed the driver
unload function to ProtocolUnload(), since
NdisMRegisterUnloadHandler() is not supported in
Windows 98/98SE/ME. Removed the
NdisIMAssociateMiniport() call from the
DriverEntry() function, since that call is not supported in
Windows 98.
- Added: RASPPPOE.EXE user-mode
application for easy dial-up connection setup.
- Added: Limit TCP MSS Option to make
MTU changes on Internet Connection Sharing client machines
unnecessary. A new function scans all incoming and outgoing packets for the
TCP Maximum Segment Size (MSS) option and, if necessary,
limits it to either the default (1492) or the
overridden MTU (see below) minus 40 for
the IP and TCP headers (i.e. 1452 in case of the default
MTU) and recalculates the TCP checksum.
- Added: MTU Override option to override
the MTU initially reported by the driver. If an override value is specified,
it will be reported as the MaxFrameSize in response to the
OID_WAN_GET_INFO request. In Windows
98/98SE/ME, the Dial-Up Adapter's IPMTU registry
parameter is also set to the override value. It will furthermore be taken
into account when limiting the TCP MSS option. Making the
protocol initially report a lower MTU was found to help
with certain VPN software packages which "blindly" add their own overhead
without paying any respect to the MTU reported by the driver.
- Added: WAN Endpoints GUI option to easily change the
number of dial-up devices exposed for a network adapter.
- Fixed: Dial on demand in
Windows 2000 never triggered a connection. Windows
2000 apparently only dials modems, ISDN and X.25 devices on demand.
Changed the device type of the dial-up devices exposed by the protocol to
ISDN to work around this bug.
- Fixed: The protocol could lose one of its internal
packets each time an NdisTransferData() call failed, until
it would eventually be unable to receive any data. It appears that never
actually happened to anyone, though.
- Fixed: The PPPoE version and type fields were reversed
in the declaration. As the current PPPoE version and type are both 1, this
bug went unnoticed.
- Changed: The protocol will now no longer log a warning
to the event log if it receives a PADT packet for a session
that does not exist (or no longer does).
- Changed: The Event Logging Options now
default to logging all types of events. This should now
produce no log entries during flawless operation.
-
Version 0.92, February 6th, 2000
- Fixed: No data transfer possible after successfully
establishing a connection. The protocol was corrupting data packets it had
to retrieve through NdisTransferData(). I had made the
incorrect assumption that NdisTransferData() would use the
ByteOffset parameter on the destination buffer as
well, but instead it just starts at offset zero in the first buffer chained
to the passed packet. Fixed this by chaining an additional buffer descriptor
pointing to the desired destination location to the front of the packet
before calling NdisTransferData().
- Fixed: Connection Error "Opening port... Error
797: The connection failed because the modem (or other connecting device)
was not found." after waking the machine from
Standby. There were no OID_PNP_XXX
handlers in the protocol. Additionally, it turned out that
TAPI requests OID_TAPI_PROVIDER_INITIALIZE
after returning from Standby, although it
never shuts the provider down with
OID_TAPI_PROVIDER_SHUTDOWN. The protocol did not allow
re-initialization without shutdown. Fixed this by adding the missing
OID_PNP_XXX handlers and allowing TAPI provider
re-initialization without a prior shutdown.
-
Version 0.90, January 30th, 2000
- First release that actually works! A wholehearted
Thank You! to Jerome
Whelan who invested so much time to provide me with the
comprehensive feedback that I needed to make this protocol functional.
- Fixed: Installation Error "Could not add the
requested component. The error is: Invalid access to memory
location." on some machines. On those, the loader
crashed when loading RASPPPOE.DLL, because I had linked it
with the /align:16 linker switch. Removed the switch from
the build settings.
- Fixed: Connection Error "Disconnected. Error
619: The specified port is not connected." on all
connection attempts. NDISWAN failed to recognize the PPP
frames within the complete received Ethernet frames the protocol passed to
it, although I had specified the HeaderPadding correctly as
outlined in the DDK documentation. Fixed this by setting the
HeaderPadding to zero and only passing the portion of the
buffer with the actual PPP frame to NDISWAN.
- Fixed: Ping Timeouts with
certain packet sizes. NDISWAN passes up to
four bytes more to a WAN miniport's send handler than the
WAN miniport indicated as its MaxFrameSize. Apparently a
WAN miniport driver writer is expected to make assumptions about the PPP
HDLC overhead NDISWAN adds before passing
a packet to the miniport - four bytes of simple PPP HDLC framing (Address
and Control fields and Protocol Identifier). Fixed this by adjusting the
maximum frame and total sizes accordingly and changing the size limit
comparisons.
-
Version 0.80, January 15th, 2000
9. Contacting the author
Before contacting me, please bear in mind that you are getting this piece of
software for free. You cannot expect me to spend my time
providing "tech support". If you have a problem that you cannot resolve after
reading above documentation thoroughly, please first check if
there is updated information or a newer version of this
protocol available on the RASPPPOE Home Page. Of course,
developer suggestions for fixing the known
issues, success stories (please mention your service provider, so that I
know which ones this protocol works with) or just "thank you" notes are always
welcome.
You can contact me via the e-mail address normanb@cs.TU-Berlin.DE.
*EOF*
|