# Two-Level Congestion Control Mechanism (2 LCCM) for Information-Centric Networking
## 3 Design
### Overview of 2 LCCM  
Considering that users care more about the popular parts of the data object, the content in ICN is split into smaller chunks by default [22] to accommodate the transport layer (TL) [31]. Together with mechanisms such as in-network caching and separation of identifier and locator, the transmission of content in ICN has new features such as multi-source, multi-path, and multi-replica. To avoid the complexity of the congestion control module caused by multi-source transmission, the congestion control mechanism in this paper is designed for chunk transmission. The receiver for a chunk selects only one replica node for transmission at one moment, while the data at different moments can be retrieved from different replica nodes. The transmission of multiple chunks of one content is independent and can be parallelized to improve the efficiency of content delivery. As shown in Figure 1, a single content from an application (APP) is divided into multiple chunks. Each chunk is assigned a unique ID (also called name), and is the basic data unit for naming, transporting, and caching in ICN. It is a reasonable choice to use IP as a locator for compatibility with the current IP infrastructure. Considering a hybrid network of IP and ICN as shown in Figure 1, NA3 represents the address of an ICN router that supports in-network caching and transport layer packet processing (by supporting the processing of network layer messages and transport layer messages, the ICN router can obtain the ID information in network layer messages and the location offset information of packet payload located in chunks in transport layer messages, supporting the reassembly of chunks). The cache-supported ICN router uses a split architecture for forwarding and storage [32], i.e., a cache-supported router is decomposed into two separate processes: a forwarding element (FE) and a cache element (CE). If caching is required, a copy packet is transmitted to the storage port so that the ICN router can store data while not affecting wire-speed forwarding; an IP router at NA4 that only supports IP routing and forwarding; NA2 represents an edge router [33; 34] that has the ability to aggregate the requests from end-users and performs the operations of name resolution and replica selection. The chunk sent by the sender (NA5) is further segmented in the transport layer according to the Maximum Transmission Unit (MTU) of the transmission link in order to avoid further segmentation (e.g., IP segmentation) at the network layer, which will seriously affect transmission efficiency. These segmentations are reorganized into a complete chunk at the receiver (NA1) and the cache node (NA3). After the chunk is stored in the cache node, the chunk ID and the IP of the cache node need to be registered to the Name Resolution System (NRS) for subsequent name resolution queries and replica data service. This paper focuses on the congestion control mechanism. Existing ICN congestion control mechanisms usually only adjust the rate to try to avoid network congestion when the network is congested, and cannot take full advantage of the multi-replica feature of ICN. Therefore, this paper proposes to perform congestion control at two levels: (1) at the first level, the Identifier Protocol (IDP) at the network layer selects or replaces replica nodes through replica selection methods, expecting to discover the nearest data service and avoid congested paths as much as possible to reduce transmission delay; (2) at the second level, the Transport Layer Protocol (TLP) controls the request sending rate for the transmission of segments within a single chunk by maintaining a congestion control algorithm at the receiver to make full use of the bandwidth without causing congestion. In an implementation of the two-level congestion control mechanism, congestion control can be achieved by selecting replica nodes that provide data service before chunk transmission and by dynamically adjusting the data request sending rate during chunk transmission.