The IXP network processor  architecture is designed to
process packets at high rates where inter-arrival times
between packets are sometimes less than the individual
memory access latencies. To keep up with such high
arrival rates, IXP presents a novel architecture consisting
of a collection of multithreaded, multiprocessors with an
explicit memory hierarchy. Such an architecture poses
interesting challenges when an application developer
wishes to develop software for a wide range of services
that can easily be ported from one IXP processor to
another. To make it easy to develop portable, modular
software on IXPs, we currently provide a combination of
development tools and a software framework consisting
of libraries, run-time infrastructure, and APIs to facilitate
the creation of application building blocks. This paper
describes the future directions in IXP programming tools,
software frameworks, languages, and compilers.
We first identify the limitations of the current IXA
software framework , describe extensions to remove
such limitations and discuss how these extensions also
help in the development process.
Secondly, we provide an overview of the Developer
Workbench tool suite and its features, which provide
significant advancements over traditional development
environments. We highlight features that enable
architectural task modeling, allow debugging using
bandwidth analysis, thread history, and operand tracing,
and provide a novel packet-centric analysis based on
extensible protocol packet generation, packet status, and
a graphical view of the packet dataflow.
And finally, to move the developers beyond a chip-centric
view of programming, we also investigate domainspecific
languages and adaptable run-time environments.
We describe and justify one such research project under
development, called Baker, to develop a domain-specific
language for network processing.