# Intelligent Caching with Graph Neural Network-Based Deep Reinforcement Learning on SDN-Based ICN
## 5 Experimentation and Results  
In this section, we present simulation results to demonstrate the effectiveness of the proposed caching strategy in various network scenarios. To conduct these experiments, we utilized Icarus[46], a Python-based ICN caching simulator that comprehensively evaluates different caching strategies. Not bound to any specific architecture, such as content-centric \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameters** & **Value** \\ \hline Number of episodes \(E\) & 1000 \\ Learning rate & 0.001 \\ Batch size \(B\) & 32 \\ Target network update step \(K\) & 10 \\ Replay buffer capacity \(\hat{R}\) & 1000 \\ Epsilon start \(\epsilon_{s}\) & 0.9 \\ Epsilon end \(\epsilon_{c}\) & 0.01 \\ Epsilon decay \(\epsilon_{d}\) & 100 \\ Discount factor \(\gamma\) & 1 \\ Optimizer & Adam \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Key GNN-DDQN model training parameters. networking (CCN) or named data networking (NDN), Icarus provides functionalities for more generalized ICN. We employed the LRU strategy as the caching replacement policy for all our experiments. Moreover, the content popularity and user preference distributions mentioned in Section 3.2 were considered. Table 4 lists the key simulation parameters used. We followed the recommendations from a previous study [47] and set the internal and external link delays to 2 milliseconds (ms) and 34 ms, respectively, for all network topologies. The experiments involved a set of distinct content, ranging from 600 to 1000, uniformly distributed among all source nodes in the network. The router's cache size varied from 1 to 4, denoting the number of content items that it could store. Each experiment consisted of a warm-up phase with 2000 requests, followed by 4000 requests that were measured to evaluate the performance of different caching schemes. User requests followed a Poisson distribution with a mean of 100 requests per second. We divided each experiment into \(T\) segments, each representing 10 s. We conducted 600 experiments for each caching scenario and calculated the average evaluation metrics based on the results of the last 200 experiments. The evaluation of different caching strategies relied on four key metrics. * Cache Hit Ratio (CHR): The cache hit ratio represents the percentage of requests that can be fulfilled by retrieving data packets from the cache in the router nodes, \[CHR=\frac{cacheHits}{cacheHits+cacheMiss},\] (12) where \(cacheHits\) refers to the count of \(Interest\) packets that are successfully satisfied by retrieving the corresponding \(Data\) packet from the router's cache. On the other hand, \(cacheMiss\) represents the count of \(Interest\) packets that cannot be fulfilled by the cache and require fetching from external sources. An \(Interest\) packet carries the name of the requested content and is transmitted from the receiver node, while a \(Data\) packet contains the requested content itself and can serve as a response to the corresponding \(Interest\) packet. * Average Latency Time (ALT): The average latency time represents the average delay between the moment that a user sends an \(Interest\) packet and the moment that it receives the corresponding \(Data\) packet, \[ALT=\frac{\sum_{i=1}^{l}(i_{t}+i_{r})}{I},\] (13) \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameters** & **Values** \\ \hline Network topology & GEANT [17], ROCKETFUEL [18], \\  & TiscalAli [19], and GARR [19] \\ Internal link delay (all networks) & 2 ms \\ External link delay (all networks) & 34 ms \\ Number of distinct content items & Range: 600–1000 items \\ Content size & 150 bytes \\ Request size & 150 bytes \\ Cache size & Range: 1–4 items \\ Number of warm-up requests & 2000 \\ Number of measured requests & 4000 \\ Request distribution & Poisson distribution with a mean of \\  & 100 requests per second \\ Time slot & 10 s \\ Number of experimentations & 600 \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Key simulation parameters. where \(I\) denotes the total number of user requests.