A computer-implemented method comprising: (a) receiving, at one or more ports at a node on a network, a plurality of requests for one or more data objects, the network operable to receive and transmit one or more interest packets associated with each requested data object and one or more data packets associated with each requested data object; (b) in a virtual control plane at the node, computer-executable instructions for: receiving at the node a virtual interest packet associated with each request for a data object, each VIP comprising an identification of a data object to capture a measured demand for the respective data object in the network, maintaining a VIP count for each requested data object comprising a number of VIPs associated with each requested data object at the node, wherein the VIP count is variable over time with demand for each requested data object, transmitting the VIP count associated with each requested data object to one or more linked neighbor nodes, and receiving an incoming VIP count associated with each requested data object from the one or more linked neighbor nodes, and transmitting each VIP to a linked neighbor node at an outgoing transmission rate; and (c) in an actual plane at the node, computer-executable instructions for: forwarding interest packets for at least a portion of the requested data objects to one of the linked neighbor nodes based on the VIP counts, and storing data packets for at least another portion of the requested data objects in transitory cache memory at the node based on the VIP counts, wherein the computer-executable instructions operate on the VIPs to yield metrics, including the VIP counts, for mapping to the actual plane to specify the forwarding of interest packets and storing of data packets in the actual plane. (a) receiving, at one or more ports at a node on a network, a plurality of requests for one or more data objects, the network operable to receive and transmit one or more interest packets associated with each requested data object and one or more data packets associated with each requested data object; (b) in a virtual control plane at the node, computer-executable instructions for: receiving at the node a virtual interest packet associated with each request for a data object, each VIP comprising an identification of a data object to capture a measured demand for the respective data object in the network, maintaining a VIP count for each requested data object comprising a number of VIPs associated with each requested data object at the node, wherein the VIP count is variable over time with demand for each requested data object, transmitting the VIP count associated with each requested data object to one or more linked neighbor nodes, and receiving an incoming VIP count associated with each requested data object from the one or more linked neighbor nodes, and transmitting each VIP to a linked neighbor node at an outgoing transmission rate; and receiving at the node a virtual interest packet associated with each request for a data object, each VIP comprising an identification of a data object to capture a measured demand for the respective data object in the network, maintaining a VIP count for each requested data object comprising a number of VIPs associated with each requested data object at the node, wherein the VIP count is variable over time with demand for each requested data object, transmitting the VIP count associated with each requested data object to one or more linked neighbor nodes, and receiving an incoming VIP count associated with each requested data object from the one or more linked neighbor nodes, and transmitting each VIP to a linked neighbor node at an outgoing transmission rate; and (c) in an actual plane at the node, computer-executable instructions for: forwarding interest packets for at least a portion of the requested data objects to one of the linked neighbor nodes based on the VIP counts, and storing data packets for at least another portion of the requested data objects in transitory cache memory at the node based on the VIP counts, wherein the computer-executable instructions operate on the VIPs to yield metrics, including the VIP counts, for mapping to the actual plane to specify the forwarding of interest packets and storing of data packets in the actual plane. forwarding interest packets for at least a portion of the requested data objects to one of the linked neighbor nodes based on the VIP counts, and storing data packets for at least another portion of the requested data objects in transitory cache memory at the node based on the VIP counts,