|
|||||
Porting Legacy Code to Net Processor Designs
Porting Legacy Code to Net Processor Designs The new generation of network processors (NPU) present a wealth of advanced functionality to be employed in switch, router, and other networking designs. But still, as in every embedded design, minimizing time-to-market is of paramount importance. To address this need, software design frameworks have been built and commercialized to assist OEMs in developing NPU-based applications. But the issue facing developers is not limited to generating new code. They must also find a way to reuse code from previous designs. For years, OEMs have built up libraries of code in their ASIC architectures. Now, they want to port this code to new network processing architectures, and this need must be addressed in the time-to-market solutions. One solution to this problem is to manually integrate legacy code into the distributed network processing architecture. This approach, however, involves time-consuming hand tweaks to the legacy code, which is not an attract ive option under today's time-to-market conditions. Another option is to turn to third-party software design tools and evaluate their ability to import legacy code into the new applications. Evaluating these tools, however, can be challenging. Each tool is equipped with its own feature sets, thus choosing the right product can be a daunting task. Here's a guide that will help in that selection process. What to Look Out For Here are 4 tips on how to avoid the pitf alls of integration. 1. Reuse what you know Functionally, these high-performance routing suites (including OSPF, BGP and RIP protocols) integrate with the control plane for management of connections, interfaces, route updates, exceptions and statistics. 2. Go to your library for resources Macro libraries are reusable software functions optimized for a specific platform (language and processor) that simplify programming, promote reuse, and as a result eliminate a number of those "nagging" typographical coding errors. Macro and structured actions for the forwarding plane are further optimized for both 'control store' instruction size and for performance. When microcode for each thread of the processing elements (PE) is written as structured code (including the macro calls) it is easier to use and maintain, looking much like a higher level language such as 'C'--without performance penalties. A macro call, for instance a CRC32 computation or a packet I/O operation, may execute as a set of software instructions on one generation of a net processors, and employ a built-in hardware function on another generation. Macros and structured actions facilitate: Network equipment manufacturers may already have predefined libraries of common network, operational, or administrative functions that are "standard" across products, or families of products. The ability to reuse these function libraries shortens development time, improves interoperability and simplifies software quality assurance (SQA) and test. The programming languages appropriate for each of the planes may have their own macro libraries. A developer's own legacy control applications may also make use of compatible control plane libraries. Such software can support both data and control plane reuse of library functions. 3. Don't forget third-party tool integration Beyond the integration of these code development and debug tools, tool integration includes the network processor simulator, microcode libraries, and software and hardware debugging aids. Simulation, testing and debugging tools allow the verification of application logic and improve the performance and quality of a system by running the application interactively. Test cases can be built and run, and execution can be controlled through logic-level breakpoints and step-by-step debugging and state inspection. These tools may include the ability to 'integrate' Verilog software models of fabric, media or coprocessor devices. 4. Develop a message wrapper The first function of a wrapper is to support the receipt and return of messages through any communications mechanism (communication layer). The second function of this wrapper is to interpret the message requests, invoking the appropriate operations upon the legacy application, and conversely formatting outgoing requests and responses as messages (service layer). A good wrapper implementation creates a communications adapter that provides a consistent message interface to the application and facilitates its integration and reuse. Good, solid communications wrappers are quickly produced within such a software platform specifically to avoid messaging meltdowns in network processors. Application Development--The Basics The application must also allow the multiple distributed processors to share data and work together as a cohesive system. This requires an application development framework that can seamlessly integrate legacy applications while easily facilitating the development of the new application logic required by the system design. Reuse, of course, will be mandatory during the application development process. Choosing Your Tool When choosing an application development platform, designers should look for tools that provide easy-to-understand mechanisms for integrating legacy applications and software, and well-structured applications often require no, or minimal, code changes to interact with newly developed system logic. In order to integrate legacy code, legacy applications must be prepped for integration. Specifically: The term "messaging interface" describes consi stent, structured messages that software components (legacy or new) may send or receive, regardless of the communications used and the location of the sender or receiver. The term "communications mechanisms" refers to the inter-application level protocols (events, alerts, queues, and mutual exclusion primitives), hardware-specific interfaces (shared memory, data-link drivers, PCI bus, queues or mailboxes), and networking protocols (TCP/IP and UDP). When choosing a net processing development platform, designers should look for development environments that integrate and automate these mechanisms. By integrating/automating these functions, the tools can develop apps that are extensible to new applications and protected from obsolescence. Additionally, the tool will allow the application's system logic to be immediately reusable while new functional requirements can be defined and implemented with minimal effort. Leveraging the Platform In order to leverage processor resources, designers need a platform that is designed for the intricacies of forwarding path, control path, and management path processing on network processors and other CPUs in network equipment. To do this, the applications development platform should provide a parallel and distributed software execution environment that includes a multiprocessor runtime environment that ensures correct and consistent execution of other state machine components and "legacy" components that are distributed on various processing resources and accessing data structures placed in shared and distributed memory banks. The development environment should also facilitate the development of appropriately granular network logic. This enables design engineers to develop network processor software with: In addition, the software platform must also deliver all of the tools and capabilities needed for advanced application development. These include: The platform should also include a framework of extensible system and network building blocks for hardware management, data manipulation, forwarding and lookup that can be reused, extended and combined in different ways. With these capabilities, the platform would allow the development of network processor applications that deliver flexible network services at wire speeds and optimize the high performance multiprocessor architecture of today's network processors. A Good GUI Saves Time In terms of network processing, the software platform should include a thin runtime element that integrates the control and data plane with some kind of graphical design envir onment. By doing this, the tool can deliver an integrated distributed processing capability that substantially reduces the development schedule of a new project. Specifically, the GUI can simplify segmenting and distributing of logic between the control plane and the multiple processing elements in the forwarding plane, ensuring maximum system performance while reducing the risk of development delays. Brian Ramsey is director of product management at Teja Technologies Inc. Prior to joining Teja, he worked for a variety of network processor, real-time and networking firms, including XaQti (now Vitesse), LynuxWorks, ISI (now WindRiver), Stratacom (Cisco), and Novell. Brian can be reached at bramsey@teja.com.
|
Home | Feedback | Register | Site Map |
All material on this site Copyright © 2017 Design And Reuse S.A. All rights reserved. |