Richard Fox

624 So. Fair Oaks

Sunnyvale, California 94086

phone: (408)245-9977


I have over 22 years of experience as a development engineer, support engineer, project lead and project manager for both large and small companies. I specialize in network technologies (ie: TCP/IP), Operating Systems and device drivers in Unix environments (Linux, Solaris, BSD Unix), both desktop and embedded products. I have extensive experience in the kernel (excellent C programmer) as well as application layer programming, including multithreaded/multiprocessing environments. I am experienced in Windows programming using Microsoft Visual Studio. I am an excellent debugger and problem solver and pick up new technologies and ideas quickly.

Computer Skills:

Operating Systems & Programming Languages

Linux (embedded/desktop), NetBsd, FreeBsd, Solaris, HPUX, MAC OS, Unix, Windows, VxWorks

C, C++, Assembly, Pascal, Scripting Languages, Java

Technologies & Standards Work

TCP/IP, Kernel Programming, NFS/CIFFS,  Socket Programming, Network Applications (ie: Ftp, Sendmail, Telnet), Device and Pseudo Drivers, L2 Network Technologies, Unix Appliances (ie: File Servers), Streams Programming, SNMP, HTTP, Wireless, Security Protocols, IETF, IEEE

Work Experience:

Sr. Network Consultant                                               various                                                                            10/91-present

Wrote pseudo device driver for embedded NetBSD to increase the learning rate of an L2 product. Worked on L2 ACLs, port mirroring, CAM programming and mac learning issues. Some development and some bug fixing all in the L2 area. Worked in kernel, application space and interfaced to various hardware components.


Wrote Conformance test suite for IETF Zero Configuration Protocol suite to run on various flavors of Unix including MAC OS and Linux. Fixed many bugs in Zero Configuration portion of OS.


Designed and architected a protocol and infrastructure to support offloading proxy functionality for a L2/L3 device. Implemented design in an embedded Linux linecard. Many of the changes involved modifications to the Linux TCP/IP stack. Also wrote a shim layer device driver to sit between the ethernet driver and IP to implement a smart communication channel between the embedded Linux card and the bridge/router.


Debugged protocol issues in Linux TCP/IP stack and applications as well as some experimental NFS and IPv6 code. Debugged protocol related problems in both Window and Linux platforms. Assisted iSCSI working groups with TCP/IP related issues. Worked with Linux community and Solaris engineers to identify and help fix Kerberos/security issues with NFSv4.


Wrote protocol decode modules for protocol analyzers. Then managed team of engineers to write decode modules and do protocol debug/support.


Involved in various NAS & SAN based projects. Worked on a NAS implementation on VxWorks implementing an NFS/SMB server. Also worked on BSD and Linux based versions of the NAS server. After stability was achieved then focused on performance issues. Later moved into a SAN to Ethernet router for fibre channel project based on some internet drafts. Project was implemented on both BSD and Linux.  Also looked at IP Bonding, IP performance and Gigabyte Ethernet driver issues under Linux for a SAN based iSCSI file server.


Trouble shoot and fixed many bugs with Solaris and HPUX in the area of streams, NFS, transport area (TCP/IP) as well as many other parts of the kernel as well as applications. At times interfaced with customers and for extreme conditions (hot sites) went onto customers site to work the problems. Worked on new features under development as well.


Designed and developed a Content Vectoring Protocol for firewalls. Scans for viruses in HTTP, FTP and SMTP. Product works with CheckPoint and TIS firewalls. Received a company award for efforts. Work was done on Linux, Solaris and HPUX.


Part of a team that implemented a Virus Scan product for both Linux and Solaris to scan live data at the Firewall/Router boundary to a network as well as on Bridge/Router boxes. Received a company award for efforts.


Added Virus Scanning capabilities to Web Proxies (including Netscape and Squid), SMTP mailers, as well as other products such as Lotus Notes. Modifying engines that do the virus scanning as well as creating APIs so that custom mailers and applications can easily integrate virus scanning as part of the basic application.


Provided sustaining functionality in the areas of TCP/IP and streams architecture. Work took place on socket based kernels and streams based kernels (Solaris). Area of work included problems relating to multi-threaded/multi-process issues, TPI/TLI, socket interface, internals of Internet protocols including TCP/IP and NFS (v2 and v3), streams internal issues and network driver issues as well as network applications. Responsible for enhancing system performance when system is being used as a Web Server. This included fixing many bugs, a redesign of the server and providing a clear picture of how to configure system to achieve peak performance. Many of the problems that I have been the key engineer on have been high visibility problems with world wide scope. Interface at different times with field support, customers, engineering as well as upper management on both a technical basis and an administrative basis. Provide technical leadership to others in group as well as technical lead on most high priority problems in the networking area.

Project lead on a network server product. Implemented NFSv2 TCP & UDP, SMB and FTP on VxWorks operating system. Enhanced NFSv3 for performance. Specialized in the architecture and bug fix of multi-threaded and concurrency issues for all network pieces (ie: network driver), file system and internal VxWorks. Worked multi-company issues on joint development issues as well as final product packaging and release.


Provided debugging and problem determination of kernel internals and system libraries on Suns using Solaris, a multi-processor/multi-threaded streams based operating system. Areas involved with were VM, file system internals, signals, RPC, streams and library support (including libc, threads library, socket library and libnsl).

Participated in development effort in streams internal enhancements and performance enhancements for streams and TCP/IP. Much of this work was responsible for greatly increased Web Server performance as well as system stability.


Project lead responsible for implementing a newly formed sustaining group for network engineering. Responsible for defining process, working out start up issues, educate and assist others in the group, interface to various management in an effort to make sure sustaining project was a success for all groups. The sustaining model is now being implemented in most engineering groups. Project has been considered a great success.


Wrote portions of a Functional Specification and Design Specification for a front-end server, which off loads NFS and TCP/IP processing from the attached Mainframe. Was responsible for the design of the caching subsystem, NFS processing, message queuing subsystem, protocol between front-end and machine, send/receive logic and TCP/IP off loading. Also coded most of the pieces mentioned above and aided on the other pieces. Was sole person responsible for debugging and rewriting main components while on the East coast doing system integration with mainframe (a 9 month project). Pieces debugged and/or re-coded included channel device drivers all the way up the protocol stack to the application layer (which was responsible for the management and control of the front-end processor). Most rewrites needed to be done on the fly. Designed and implemented diagnostic tools for the continuing support of product. Helped in definition and implementation of phase 2 in the areas of enhancements, redesign of management software, front-end routing assistance, multi-path NFS (front end can be used as a server as well as a front-end server for mainframe).


Evaluated architecture of a state of the art event driven management system for computer systems and computer environments. Evaluated current design of the software as well as its use in the overall company product line. Worked with company engineer to redesign a number of major flaws in the product as well as designing many new features.

Fixed bugs in a System V streams based environment. Bugs ranged from the Unix boot loader to the system memory manager and streams buffer leaks.


Converted many applications on a SUN to be multi-threaded safe for a new operating system based on multi-threaded multi-processor architecture. Process included design specifications followed by coding and testing.


Did many performance improvements on a port of TCP on a product that needs to work in a wireless environment as well as traditional wired environments. Added application enhancements to modem to support performance enhancements for PPP as well as TCP/IP applications. Designed and implemented a gateway box that acts as a Wired Access Point for a wireless network. Also designed name server architecture for Wired Access Point.

Implemented and tested a routing protocol to be used over a wireless TCP/IP network. Also involved in the definition and implementation of an SNMP agent for a wireless router. Did QA and implementation of some features of SNMP for FDDI and Ethernet based HUBs, routers and bridges.


Wrote specification for testing NFSv3. Wrote many test cases to completely test NFSv3 server code as well as the client side interface to NFS. Debugged and repaired latest version of LADDIS to help facilitate automated verification of correctness and to quantify performance numbers of both NFSv2 and NFSv3. Also did some bug fixing on NFSv3, lock manager and automounter.


Sr. Network Architect                                        Full Time Positions                                                                 7/89-10/91

In charge of defining all SNMP MIBS for the company agents, including ethernet, token ring and FDDI products. Designed various algorithms for FDDI to do logical ring maps, smooth insertion, physical topology maps, and Proxy IP Bridging between the two rings of an FDDI LAN. Defined many algorithms and architectures to be used in various areas of SNMP, including traps, thresholds, security, proxies, topology, MIB views, and various concentrator specific functions. Chaired a company wide group in charge of defining and maintaining company MIBS as well as defining the future architecture of network management strategies as well as functional requirements for new features and boards for the concentrator. Represented the company in a various standards committees including IEEE 802, ANSI for FDDI, and the IETF for IP and SNMP related issues. Acted as a technical liaison for various groups in the company for bridging, IP routing, protocol and architecture issues. Worked with third party vendors for cooperative working relationships.


Investigated issues in bridging IP, XNS, IBM protocols between IEEE 802.5 and IEEE 802.3 (and Ethernet) Lans. Presented findings to the heads of company with suggestions on direction to follow for product ideas. Helped defined and completely implemented enterprise MIB for the company's bridge line of products. Ported SNMP engine used by all agents and the management station while fixing many bugs and adding many enhancements. Implemented IEEE 802.1d Spanning Tree to be used on company's current CPU platform. Worked with management to define strategy for entering the FDDI market. Investigated issues relating to turning bridging products into a multi-protocol router for the marketing department.


Computer Engineer                                         NASA AMES Research Center                                                  2/87-6/89

Worked extensively with the Internet protocol domain (TCP, UDP, IP, FTP, Name Service, RIP, sendmail, etc.). Instrumental in making TCP/IP interoperable between multi-vendor implementations. Expanded the capabilities of TCP/IP. Implemented a protocol and tailored two protocols to work well over both satellite links and terrestrial links, as well as congested links. Ported TCP/IP and the Unix 4.3 networking code to SGI workstations, Amdahl mainframes, and aided Cray in porting the 4.3 networking code onto the Cray-II. Ported and improved many programs to all machines. Some of these programs included: gated, domain name server and resolver, sendmail, ftp, modified versions of ftp and telnet. Worked with companies in the beta cycles of Medium Speed LANS (up to 100 Megabit/sec) and High Speed LANS (up to 1 Gigabit/sec) in an effort to design a very powerful fault tolerant LAN environment for the NAS computing facility, which is composed of many different and unique architectures. Helped debug, fix and enhance various network device drivers and fixed many bugs with the Unix kernel on SGI and Amdahl machines. Was also an integral part of the day to day operation of both the local and wide area networks of NAS, including hyperchannel, Proteon and Vitalink equipment. Was technical lead in many beta coordination projects as well as many day to day operational issues which required engineering services.


Computer Engineer                                            Bell Northern Research                                                             6/85-2/87

Helped implement layers 2 & 3 of an X.25 communications service and implemented an X.28 package to interface to the X.25 service. Redefined and implemented the programming model for a multi-tasking operating system. Did performance optimizations on the whole operating system. Implemented a remote communications package so that the PBXs in the field could be debugged and downloaded with software upgrades from remote locations. Was part of software team responsible for finding and fixing bugs with the digital PBX product line.

Coder                                                                     UCSD/NCR                                                                                83-85

Helped design and implement two versions of a Fault Tolerant Distributed File System on a joint project for UCSD and NCR Corporation. Was responsible for the handling of Recovery Issues and Availability Issues, as well as some user interfaces into the File System. Wrote a research paper on recovery and availability issues and had it accepted for presentation at Usenix. Also supervised the writing of device drivers and other software programs in Z80, 8086 and PDP-11 assembly, as well as C as a teachers assistant.


Undergraduate Education:

Bachelor Degree from the University of California, San Diego in Computer Science with honors in 1985.


Graduate work and Research:

Completed over 50% of a master degree with a 4.0 gpa from UCSD, while still an undergraduate. The areas of study consisted of Advanced Operating systems, Networking, and Fault Tolerant and Distributed Processing. I was part of a graduate team which designed and implemented portions of a Fault Tolerant Distributed File System for Berkeley Unix. Have also taken a number of classes from Stanford in the areas of networking and data communication.


Other Activities:

A current member of the Internet Engineering Task Force. Have written a number of RFCs and draft RFCs, including many standard MIBs for the IEEE family of protocols and some FDDI-IP drafts. Have helped in the definition of many other drafts, such as Path MTU discovery, Router Detection, Extended ARP, mobile IP, host requirements and many of the SNMP standard documents. Also participated in the ANSI X3T9.5 SMT working group, IEEE 802.3, 802.5 SRT Bridging, and 802.1d.  Currently have a number of patents pending in the area of front-end server technology and extensions of PPP. Currently active in the IPng effort to produce a new version of IP which fixes the short-comings of the current IP as well as introduces new features which should extend the lifetime of the protocol for many years.