Modern parallel and distributed applications have a wide range of communica
tion characteristics and performance requirements. These diverse characteri
stics affect the performance and suitability of particular routing and swit
ching policies in multihop point-to-point networks. In this paper, we ident
ify a core set of architectural features necessary for flexible selection a
nd implementation of multiple routing and switching schemes. Using this, we
present a flexible router whose routing and switching policies can be tail
ored to the application, allowing the network to meet these diverse needs.
By dedicating a small programmable processor to each incoming link, we can
implement wormhole, Virtual cut-through, and packet switching. as well as h
ybrid switching schemes, each under a variety of unicast and multicast rout
ing algorithms. In addition, a flexible router can support several applicat
ions or traffic types simultaneously, enabling better support of applicatio
ns with multiple traffic classes. We have designed, implemented, and fabric
ated the Programmable Pouting Controller(PRC). Cycle-level simulations of m
esh-connected PRCs also demonstrate that flexible routing and switching can
significantly enhance application performance.