Issue 1-7, January 24, 1996

Be Engineering Insights: Everything You Wanted to Know About Be Networking, And More!

By Bradley Taylor

There's a lot of hype about the world-wide web and all the wonderful ways it will make our lives better. Many of the promises will come true, and many will not, but one thing is certain: TCP/IP is now the standard for networking! Virtually every computer in the world has a TCP/IP stack written for it, and all the major players who thought they could dominate the world with their proprietary protocols are now migrating to TCP/IP. As a new computer, the BeBox will not have to suffer through any such migration headaches. We do TCP/IP and only TCP/IP. This keeps things simple for us, and simple for you. Now that you're completely sold on TCP/IP, we can move on to discuss what we implement in terms of TCP/IP, how we implement it, and what some of our future plans are.

TCP/IP has always been the network protocol of choice for UNIX systems, and as such, there are several public-domain TCP/IP UNIX programs available. Almost all are in source code form (I salivate just thinking about it). So we have made our API to networking very similar to the UNIX standard of Berkeley sockets, so that we and others can benefit from these programs right away. Most of these programs are command-line oriented, and therefore completely appropriate for the "geeks" who will be our initial customers. We have already ported ftp, ftpd, and telnet, without many problems, and we may port a few more. Longer term, we obviously want TCP/IP applications that capitalize on the Be interface, to satisfy the mere mortals who think a C shell is something you find on the beach (rightly so I might add). Many of our third parties are indeed developing GUI-based network applications, and I hope to see a commercial-quality web browser and e-mail application soon.

TCP/IP is typically implemented in the kernel, and hence it robs applications of precious memory whether you're using the network or not. Be networking, on the other hand, is implemented almost entirely as a server. If you aren't using it, it won't get in your way, since the kernel will swap it out. If you are using it, there's a slight performance penalty, due to the extra level of indirection. However, since the PowerPC is plenty fast at copying data to and from the network server, the net effect is negligible, at least when compared to standard 10-megabit Ethernet speeds.

The major disadvantage with this architecture is that it's not the way UNIX does things, and so there are a few things to be aware of when porting UNIX code. To UNIX applications, TCP/IP is just another file descriptor that you can call read(), write(), and close() on. On the BeBox, TCP/IP sockets live in a separate name space from file descriptors, and hence you cannot use these calls. However, it's simply a matter of using recv(), send(), and closesocket() instead.

Another problem arises from the fact that sockets are not inherited across POSIX fork() calls, as they are in UNIX. WINSOCK (Windows sockets) has similar problems, and if any of you've ported code to WINSOCK, you've already dealt with these issues.

The network server implements the following alphabet soup of protocols: PPP, IP, TCP, UDP, ARP, and ICMP. Some of you may be familiar with all of these already, but I'll guess that many are not, so I 'll briefly describe each of them. PPP stands for Point-to-Point Protocol and is the Internet standard for doing networking over a serial connection. If you use a modem or ISDN to access the Internet, most likely you're using PPP. SLIP, which we don't implement, is an older, nonstandard protocol that performs a similar function. PPP knows nothing about higher-level protocols, and so it's able to deliver any protocol, such as IP, IPX, or AppleTalk. We only use it for IP.

IP stands for Internet Protocol. It's responsible for delivering packets from one computer to another, regardless of where they are in the world. IP packets may be routed through several computers before reaching their final destination. Applications almost never use IP directly, but instead use either TCP or UDP, which is layered on top of it.

TCP stands for Transmission Control Protocol. It can deliver data between any two applications in the world. TCP is a reliable protocol, meaning that it will either deliver the data you give it to the remote application in sequence without any duplication, or it will notify you that the connection is broken and it can no longer do its job. TCP cannot be broadcast to a local area network. Examples of common TCP applications are HTTP (the world-wide web protocol), telnet and ftp.

UDP stands for User Datagram Protocol, although most people mistakenly believe it stands for Unreliable Datagram Protocol. UDP, like TCP, can deliver data between any two applications in the world. UDP can also broadcast data to a local network, so that several applications can get the data at once. UDP is a lightweight protocol, meaning that it's almost always faster than TCP. The big drawback of UDP is that it makes no attempts to deliver data reliably, and sometimes its packets get lost (hence the misnomer). Still, it's possible to build reliable applications around UDP, but the application must do its own acknowledgments to ensure the packets do indeed arrive at their destination. Examples of common UDP applications are the Domain Name System (DNS) and the Network File System (NFS).

The remaining protocols are ARP and ICMP, neither of which is very useful to applications. When IP is layered on top of Ethernet, ARP (Address Resolution Protocol) is used to automatically find the physical Ethernet destination associated with a given logical IP destination. ICMP (Internet Control Message Protocol) is used for various IP diagnostic functions. It's most famous for its use in the ping program for rudimentary network diagnostics.

The network server does not implement the Ethernet driver or the serial driver. Instead, it opens these drivers in the kernel by name. Hence, the network server can be targeted to run over any Ethernet card or serial device, as long as there is a driver available for it. Our Ethernet driver works with any NE2000 compatible ISA card and the 3COM 3C503 card. Many decent NE2000 ISA cards are available today at low prices, handling BNC, twisted-pair, or AUI media. The drivers are dynamically loaded into the Be kernel, and third-parties (or Be) should be able to deliver drivers for other network media without changing any source in our kernel.

OK, so that's what we implement. We have the basics of TCP/IP, enough to implement many significant applications using TCP or UDP. However, we still have much to do. There's a long list I'll go into, but keep in mind that none of these are commitments, merely wishes, so please don't go and bet your company on any of these! One area of future work is performance. While our performance is pretty good, comparable to a Macintosh and some UNIX systems, we would still like to approach speeds seen in the FreeBSD and Linux UNIX systems. PPP is still in its infancy, and there's much work to do there to make it easy to use and as robust as possible.

Also, we want our network configuration application to make simple things simple, while allowing you to do more complex things, such as configuring Ethernet cards or multiple IP addresses. Further into the future, we would like to support NFS (Network File System) for file sharing, DHCP (Dynamic Host Configuration Protocol) so that you don't have to configure IP addresses, Multilink PPP for utilizing both "B" channels of an ISDN card (perhaps a third-party opportunity), and Internet Multicast to support applications like MBONE. We also would like to develop some Be-specific protocols, so that Be applications can be easily extended to the network. A simple way to do this is to extend the Be Messenger class, so that it could be instantiated targeting either a local or a remote application. Applications on your desktop could easily take advantage of services not otherwise available locally, such as faster CPU speeds, distributed processing, heavyweight database services, or exotic I/O devices.

As you can see, there's a lot to do. We're not a big company with a large army of programmers devoted to TCP/IP. Nope, we're just a little company, with a single programmer (me) at the helm of TCP/IP. The good news is that your feedback is certain to get to the right person, loud and clear. We, of course, welcome any feedback you may have.


Strategy

By Jean-Louis Gassée

Several Be developers and posters on comp.sys.be have asked me to discuss our strategy. I'd like to begin by returning to the dictionary. It defines strategy as "The science and art of military command exercised to meet the enemy in combat under advantageous conditions."

The word strategy is often used to aggrandize and embellish statements of little importance. Why call a move "tactical" when I can charge the client, or the boss, strategic rates for my foils or my press releases? Abused or not, there's a lot to like in the definition of strategy, of creating "advantageous conditions" by which we fight for a place under the sun. This is what I will discuss today. Mark Gonzales, our marketing sage, will review market-by-market specifics in future columns.

Let's start with what we call our architectural advantage. We say we offer an alternative to legacy systems by offering a baggage-free architecture. The pluses and minuses are well understood. On the minus side, we forfeit a legacy of thousands of applications. They run on older platforms and we start with an installed base of zero. On the plus side, a fresh start frees us from the baggage of a decade or more of incremental fixes and extensions, from many accumulated layers of software silt. As a result, we offer features hard or impossible to graft onto legacy platforms: Multiprocessing, multithreading, an integrated database engine, preemptive multitasking, media kits, richer and geekier I/O, a simpler cleaner programming model... The enumeration is a little dry on paper but a demonstration makes it come to life—an experience we enjoyed on a large scale at MacWorld. All right, but what's strategic here? If, in a short period of time, our noble and worthy elders could replicate the advantages we offer, we'd be in a position known as picking up dimes one foot ahead of the steamroller. On the contrary, most observers agree our key features are hard, if not impossible to graft onto a legacy platform in a threateningly short amount of time. After all, our best-managed elder still needed five years to polish its latest major revision, and the one to which we are more sentimentally attached will need six, some say seven years for a similar step. So, we have a lasting technical lead, which in turn creates a set of "advantageous conditions " for us to go to the marketplace. This is the first element of our strategy. Of course, we need to be aware of two dangers. First, once we start to appear on their radar screens, our colleagues will use the age-old rhetoric: This is nothing, and if you still need it, we've been working on it for six years and we'll have it in six months. These are photodegradable statements. The second, bigger danger is complacency, standing still. I think we're all aware enough of our surroundings to recognize the danger—but the proof is ours to produce.

Let's turn to the second part of our strategy. The fights we're willing to pick, and the ones we avoid. Clearly, in the office automation market, the game is over. Microsoft won. IBM might disagree, they have Notes, but, with all due respect to Lou Gerstner, they don't have Bill Gates, his management team, and his control over the Windows platform. In the office market, Microsoft Office has become the real operating system. If you tithe at the Office, Bill will even let you use a Macintosh, a platform he loves to use as a way to dislodge his less bicultural competition, such as Notes or Novell. Whatever we think of the state of classical office productivity applications, this is not a good terrain for us. Fortunately, there are many places where compatibility with reigning spreadsheets, word processors, and presentation packages doesn't matter. The BeBox, with its fast hardware and multithreading services, makes a nice web server and it works well in image processing, digital audio, and digital video applications. None of these areas are yet dominated by a big predator crowding the ecological niche—especially if we enter these segments at the personal level, as opposed to the departmental and professional segments. This is how the Macintosh entered the electronic publishing market. The pros initially dismissed the Macintosh as a toy, but with the help of Adobe, Aldus, and Canon, the Mac created a the personal publishing industry. For attentive readers of earlier issues, I appear to contradict myself. I wrote: "Based on my reading of the history of our industry, I believe the people involved in building the platform, because of their close involvement, develop myopia and can't see the tractor apps in the distance." And I referred to our need for "guide geeks" to show us the way. Since then, we've reviewed the questionnaires e-mailed by developers who expressed interest in writing applications on the BeBox. We've now received over 900 such questionnaires, which is not a claim we enjoy over 900 active developers, yet. We expect to pass the milestone of 250 BeBoxes actually and actively in developers hands some time in February. Returning to these questionnaires, they paint the picture of an enthusiastic, creative, and experienced community. The four domains outlined above are the areas where we see the most stated interest, but not all, by far. This gives us plenty of room to gather strength, to create alliances with like-minded people and companies, and to innovate and flourish in emerging applications, on the value-creating side of the web and digital media. By "value-creating side," I mean those who create, edit, produce, and broadcast these new media, as opposed to the consuming side—a totally different game.

By carefully picking the technical and market terrains, we intend to create the conditions under which this product and this company, still in their infancy, can grow to achieve their full potential.


Be Developer Profile: Adobe Systems Incorporated

To be sure, many BeBox developers are small, one- or two-person software houses—but not all of them.

Adobe Systems Incorporated, the desktop publishing behemoth in Mountain View, California, has assigned three engineers to look at porting its industry-leading Photoshop application to the BeBox.

Now, one might think that a company the size of Adobe might not consider a market as small as Be's current installed base. But according to Sean Parent, Adobe's Macintosh technical leader, there are some compelling reasons to do so. The BeBox offers Adobe the opportunity to have a low-cost, high-performance platform for Photoshop. The company understands the potential of multiprocessing architectures, and there is no other platform with the price/performance ratio offered by the BeBox.

Parent notes that the Macintosh by itself doesn't support multiprocessing. People who want these capabilities on the Mac have to buy a Daystar Genesis add-on card for as much as $1,400. The other high-performance, multiprocessing platforms are either Windows NT or UNIX systems, both of which are priced significantly higher than the BeBox.

Additionally, Adobe currently supports all of the major platforms, so it makes sense for the company to support a significant emerging platform for desktop publishing and other graphics-intensive applications.

On the technical side, Parent said Adobe has "sucked all of the performance out of the Mac file system that it is going to offer." Be is offering a high-performance platform with an improved file system, which can better exploit planned enhancements to Photoshop.

It won't be difficult to port Photoshop to the BeBox. The PowerPC version of Photoshop is already written using Metrowerks CodeWarrior, the same development environment that's used to write applications for the BeBox. And the program is written to be easily ported from one platform to another.

So far, Adobe hasn't decided whether it will bring Photoshop for the BeBox to market. But the company is interested enough to devote some of its engineering resources to the platform to see what's possible. Once Parent and his team come up with a workable Photoshop version for the BeBox, Adobe will make a final decision about which way to go.

Creative Commons License
Legal Notice
This work is licensed under a Creative Commons Attribution-Non commercial-No Derivative Works 3.0 License.