A server array controller that includes a Data Flow Segment (DFS) and at
least one Control Segment (CS). The DFS includes the hardware-optimized
portion of the controller, while the CS includes the software-optimized
portions. The DFS performs most of the repetitive chores including
statistics gathering and per-packet policy enforcement (e.g. packet
switching). The DFS also performs tasks such as that of a router, a
switch, or a routing switch. The CS determines the translation to be
performed on each flow of packets, and thus performs high-level control
functions and per-flow policy enforcement. Network address translation
(NAT) is performed by the combined operation of the CS and DFS. The CS
and DFS may be incorporated into one or more separate blocks. The CS and
DFS are independently scalable. Additionally, the functionality of either
the DFS or the CS may be separately implemented in software and/or
hardware.