Re: PPPoE and PPPoA as Modem Driver
Re: PPPoE and PPPoA as Modem Driver
- Subject: Re: PPPoE and PPPoA as Modem Driver
- From: Eric Gundrum <email@hidden>
- Date: Thu, 31 Jan 2002 14:53:52 -0800
--- At 8:01 AM +0000 1/31/02, Quinn wrote:
>
The hard part about doing PPPoE is undoing PPPoSerial framing on
>
outgoing packets and then redoing it on incoming packets. You have
>
to do this regardless of whether you implement a classic serial
>
driver or a STREAMS driver (unless you take advantage of
>
kOTSerialFramingPPP, which I think was introduced in 9.1).
Having spent the better part of a year implementing PPPoE under ARA
(vicariously through Duane) I will agree generally with Quinn except for
this statement about "the hard part". The framing algorithm is pretty
trivial. I think Duane spent about a day re-implementing it for us to
remove one last bug which appeared only on NuBus PowerMacs. The actually
algorithm probably can be contained in less than a page of code.
Duane tells me that he found dealing with all the STREAMS messages the
hardest part. Like Chris, Duane began the project with little relevant
STREAMS experience. Getting all the messages handled appropriately took
much effort.
We also have spent significant resources supporting the various servers
which play fast and loose with the PPPoE spec. (Alcatel probably is the
worst.) They're "interpretation" (aka bugs) is incompatible with Apple's
interpretation. We had to re-implement LCP negotiations, for example,
because one server doesn't like certain LCP options and another doesn't
like ARA's combination of LCP options. This gets even more complicated as
ISPs begin making heavier use of PPPoE tunneled in L2TP and expect the
client to renegotiate LCP with the second server. ARA does not handle this
well.
As far as I recall we kept running into a number of places where the
servers would not play nice with ARA. If we had to do it over, I'd
recommend we avoid ARA and write yet another PPP. Having our own PPP
becomes even more important when you consider that ARA does not support
multiple sessions, which a number of service providers are starting to
deploy. Unfortunately, writing (or porting) PPP is not trivial -- probably
a couple of months of work to make it reliable.
Now considering the business case, Chris's knowledge, and the limited
future of software specific to Mac OS 9, today I would recommend choosing
the path which requires the minimal amount of engineering for Mac OS 9.
Then, I'd focus engineering resource on Mac OS X or elsewhere. I think
Chris is right to implement PPPoE as a serial driver if his company is not
willing to license an existing one.
The disadvantage of this approach is the possible user confusion, but I
think that is a reasonable price for time-to-market. (This certainly has
been Apple's approach with Mac OS X, and Microsoft has taken over the
industry with this approach.)
Whatever approach you use, if you rely on re-purposing technology you don't
own, such as Apple's PPP, you will find you often have to "add a little
here, tweak a little there" as customers report problems in their
environments. I think that is a worthwhile price to pay for Mac OS 9, but
for Mac OS X I would avoid re-purposing technologies I didn't have source
for.
Regards...eric