Deploying protocols is an expensive and time-consuming process today,
One reason is the high cost of developing, testing, and installing pro
tocol implementations. To reduce this difficulty, protocols are develo
ped and executed within environments called protocol subsystems, and p
rotocol software is often ported instead of being coded from scratch,
Unfortunately, today a variety of protocol subsystems offer a plethora
of features, functionality, and drawbacks; the differences among them
often reduce the portability and reusability of protocol code, and th
erefore present barriers to the deployment of new protocols, In this p
aper, we consider differences in subsystems and their effect on the po
rtability and reusability of protocols and protocol implementations. W
e then propose two different approaches, each optimized for a differen
t situation, that allow protocol code implemented in one subsystem to
be used without modification within other subsystems, and thus reduce
the barriers to protocol deployment, We relate our experiences designi
ng, implementing, and measuring the performance of each approach using
, as a baseline, an AppleTalk protocol stack we have developed.