  Emerging information-centric networking architectures seek to optimally
utilize both bandwidth and storage for efficient content distribution. This
highlights the need for joint design of traffic engineering and caching
strategies, in order to optimize network performance in view of both current
traffic loads and future traffic demands. We present a systematic framework for
joint dynamic interest request forwarding and dynamic cache placement and
eviction, within the context of the Named Data Networking (NDN) architecture.
The framework employs a virtual control plane which operates on the user demand
rate for data objects in the network, and an actual plane which handles
Interest Packets and Data Packets. We develop distributed algorithms within the
virtual plane to achieve network load balancing through dynamic forwarding and
caching, thereby maximizing the user demand rate that the NDN network can
satisfy. Next, we show that congestion control can be optimally combined with
forwarding and caching within this framework to maximize user utilities subject
to network stability. Numerical experiments within a number of network settings
demonstrate the superior performance of the resulting algorithms for the actual
plane in terms of high user utilities, low user delay, and high rate of cache
hits.
