-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfeedback.tex~
180 lines (156 loc) · 14.7 KB
/
feedback.tex~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
\chapter{Feedback-based Multi-radio Exploitation Approach}\label{chap:feedback}
Our proposed approach consists of mainly two different types of feedbacks. Firstly, we measure packet transmission ratio for each radio to evaluate radio performance. Secondly, we calculate channel utilization ratio for each channel to assess corresponding channel condition.
\section{Overview of The Proposed Approach}
We present a brief overview of our proposed feedback-based approach in \cref{fig:overview}. Our proposed approach starts operating whenever a Transport layer packet is received on the Data Link layer. The Transport layer packets enter via \texttt{sendPacket} function of our proposed SU agent. As SUs are equipped with multiple radios, a single radio is first selected to send the transport layer packet. The radio selection process as described in \cref{sec:radioSelect} is based on packet transmission ratio. After the radio is selected, the transport layer packet is enqueued on the corresponding radio's queue. When the packet is dequeued from the radio's queue to be transmitted over the spectrum, the radio starts sensing the PU activity on its current channel. If the current channel is idle, it transmits the packet following an standard CSMA-CA protocol. However, if the current channel is busy, then the radio selects another channel and starts switching to that channel. The channel selection process is based on channel utilization ratio and is described in \cref{sec:channelSelect}.
\begin{figure}[!htb]
\begin{center}
\begin{tikzpicture}[scale=1.0, transform shape]
\node {\input{myFigures/overview}};
\end{tikzpicture}
\caption{High-level overview of the proposed approach}
\label{fig:overview}
\end{center}
\end{figure}
\section{Radio Selection Based on Packet Transmission Ratio}
\label{sec:radioSelect}
When SUs are equipped with multiple data transmission radios, the first issue comes into play is to select the radio for transmitting data packets. For this selection, our proposed approach maintains two counters for each radio namely \texttt{pktQueued} denoting the number of packets queued for the radio and \texttt{pktSent} denoting the number of packets already transmitted by the radio. Whenever the Application layer of an SU sends a packet for transmission to the lower layers, the secondary user agent calculates the ratio between \texttt{pktSent} and \texttt{pktQueued} for each radio. We define the ratio as Packet Transmission Ratio, \texttt{sentQueuedRatio}. Subsequently, we normalize values of the ratio to rank the radios in a uniform manner. A larger value of such packet transmission ratio implies that the corresponding radio has been successful to transmit more packets than others. Using these packet transmission ratios as the weights, our proposed approach conducts a weighted lottery to select radios for transmission of packets.
At the beginning of the packet transmission process, an SU's radio senses its current channel. If the cognitive radio finds that the current channel is busy, then the radio starts a channel switching process. At the beginning of the channel switching process, the SU agent lists all the channels currently not used by any radio of the corresponding SU. If no such channel can be found, the radio is reported as Off and the queued packets are discarded as dropped. Otherwise, a channel is selected from the list of available channels, \texttt{availableChannels} based on current channel utilization ratio. We present the selection process along with the definition of the channel utilization ratio next.
\section{Channel Selection Based on Channel Utilization Ratio}
\label{sec:channelSelect}
In our proposed approach, each SU keeps two counters for each channel. First, \texttt{pktTransmitted} counts the number of packets transmitted in the channel by the corresponding SU radios. Besides, \texttt{pktReceived} counts the number of packets successfully received by the corresponding receiver. The counter, \texttt{pktReceived} is incremented after reception of each acknowledgment packet. When a switching radio requires selecting a channel among \texttt{availableChannels}, the SU agent calculates the ratio between \texttt{pktReceived} and \texttt{pktTransmitted} for each channel on the list, \texttt{availableChannels}. We define the ratio as Channel Utilization Ratio, \texttt{RxTxRatio}. We normalize this ratio to rank the channels in a uniform manner. Using these channel utilization ratios as the weights, the SU agent conducts a weighted lottery to select the channel to switch over.
The last two important aspects of our feedback-based multi-radio exploitation approach are the reactivation of Off radios and probabilistic channel switching. Radios marked Off at the beginning of a channel switching process, are reactivated probabilistically by the radio selection process. While calculating packet transmission ratio from \texttt{pktSent} and \texttt{pktQueued}, in the case of Off radios, the ratio is multiplied by \texttt{wakeUpProbability} to make it less likely to be selected as the next radio for sending a packet. Though, if selected, the Off radio is reported as On and it starts its cognitive cycle through the channel sensing process. The probabilistic channel switching implies that radios do not always switch after finding their current channel busy. The channel switching process occurs at a probability of \texttt{switchingProbability}.
\begin{algorithm}
\caption{$\mathit{sendPacket}$: SU agent sending a packet, $p$}
\label{alg:sendPacket}
\begin{algorithmic}[1]
\Function{$\mathit{sendPacket}$}{}
\State $\mathit{radioIndex}\gets \mathit{getSelectedRadio}()$
\State $pktQueued[radioIndex]\gets $\Statex$ 1+\mathit{pktQueued}[\mathit{radioIndex}]$
\State $\mathit{radioStatus}[\mathit{radioIndex}]\gets \mathit{On}$
\State $\mathit{startSensing}(\mathit{radioIndex})$
\EndFunction
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{$\mathit{startSensing}$: SU's radio sensing its channel}
\label{alg:startSensing}
\begin{algorithmic}[1]
\Function{$\mathit{startSensing}$}{$\mathit{radioIndex}$}
\If{$\mathit{currentChannel}[\mathit{radioIndex}]$ is $\mathit{Busy}$}
\State $\mathit{startSwitching}(\mathit{radioIndex})$
\Else
\State $\mathit{transmitPacket}(\mathit{radioIndex})$
\EndIf
\EndFunction
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{$\mathit{startSwitching}$: SU's radio changing its channel}\label{alg:startSwitching}
\begin{algorithmic}[1]
\Function{$\mathit{startSwitching}$}{$\mathit{radioIndex}$}
\State Stop the switching process and \textbf{return} with the probability $(1-\mathit{switchingProbability})$
\State $\mathit{availableChannels} \gets $ all the channels currently not used by any radio of the SU
\If{$\mathit{availableChannels}=\varnothing$}
\State $\mathit{radioStatus}[\mathit{radioIndex}]\gets \mathit{Off}$
\State $\mathit{dropPacket}()$
\Else
\State $\mathit{channelIndex}\gets$\Statex$ \mathit{getSelectedChannel}(\mathit{availableChannels})$
\State $\mathit{currentChannel}[\mathit{radioIndex}] \gets \mathit{channelIndex}$
\State $\mathit{channels}[\mathit{channelIndex}] \gets \mathit{Used}$
\State $\mathit{startSensing}(\mathit{radioIndex})$
\EndIf
\EndFunction
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{$\mathit{transmitPacket}$: SU's radio transmitting a packet, $p$}
\label{alg:transmitPacket}
\begin{algorithmic}[1]
\Function{$\mathit{transmitPacket}$}{$\mathit{radioIndex}$}
\State $\mathit{pktSent}[\mathit{radioIndex}]\gets \mathit{pktSent}[\mathit{radioIndex}]+1$
\State $\mathit{pktTransmitted}[\mathit{currentChannel}[\mathit{radioIndex}]]\gets$\par\hskip\algorithmicindent$\mathit{pktTransmitted}[\mathit{currentChannel}[\mathit{radioIndex}]]$\par\hskip\algorithmicindent$+1$
\State encapsulate $\mathit{radioIndex}$ within the packet, $p$ and transmit it following CSMA-CA
\EndFunction
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{$\mathit{receiveAckPacket}$: SU's radio receiving an Ack packet, $p$}
\label{alg:receivePacket}
\begin{algorithmic}[1]
\Function{$\mathit{receivePacket}$}{$p$}
\State $\mathit{radioIndex} \gets $ the radio index extracted from the packet
\If{$\mathit{radioIndex}=$ current radio's index}
\State $\mathit{pktReceivedRadio}[\mathit{radioIndex}]\gets$\Statex$ \mathit{pktReceivedRadio}[\mathit{radioIndex}]+1$
\State $\mathit{pktReceived}[\mathit{currentChannel}[\mathit{radioIndex}]]\gets$\Statex$ \mathit{pktReceived}[\mathit{currentChannel}[\mathit{radioIndex}]]+1$
\EndIf
\EndFunction
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{$\mathit{getSelectedRadio}$: Selects an SU radio to send a packet}
\label{alg:getSelectedRadio}
\begin{algorithmic}[1]
\Function{$\mathit{getSelectedRadio}$}{}
%\State $\mathit{radios} \gets$ all the radios
\State $k \gets$ the number of radios
\State $\mathit{sentQueuedRatio} [0\ldots k] \gets $a new array of floating point values
\State $\mathit{total} \gets 0.0$
\For{$r=1$ \textbf{to} $k$}
\State $\mathit{sentQueuedRatio}[r] \gets \dfrac{(1+\mathit{pktSent}[\mathit{r}])}{(1+\mathit{pktQueued}[\mathit{r}])}$
\If{$\mathit{radioStatus}[\mathit{r}]=\mathit{Off}$}
\State $\mathit{sentQueuedRatio}[r] \gets$\Statex[2]$ \mathit{sentQueuedRatio}[r] \times \mathit{wakeUpProbability}$
\EndIf
\State $\mathit{total} \gets \mathit{total} + \mathit{sentQueuedRatio}[r]$
\EndFor
\For{$r=1$ \textbf{to} $k$}
\State $\mathit{sentQueuedRatio}[r] \gets \dfrac{\mathit{sentQueuedRatio}[r]}{\mathit{total}}$
\EndFor
\State $\mathit{radioIndex} \gets$ winner of the weighted lottery among all the radios with weight, $\mathit{sentQueuedRatio}$
\State \textbf{return} $\mathit{radioIndex}$
\EndFunction
\end{algorithmic}
\end{algorithm}
\begin{algorithm}
\caption{$\mathit{getSelectedChannel}$: Selects a new channel to switch for an SU radio over the $\mathit{availableChannels}$}
\label{alg:getSelectedRadio}
\begin{algorithmic}[1]
\Function{$\mathit{getSelectedChannel}$}{$\mathit{availableChannels}$}
\State $k \gets$ the number of channels in $\mathit{availableChannels}$
\State $\mathit{RxTxRatio} [0\ldots k] \gets $ a new array of floating point values
\State $\mathit{total} \gets 0.0$
\For{$r=1$ \textbf{to} $k$}
\State $\mathit{RxTxRatio}[r] \gets \dfrac{(1+\mathit{pktReceived}[\mathit{r}])}{(1+\mathit{pktTransmitted}[\mathit{r}])}$
\State $\mathit{total} \gets \mathit{total} + \mathit{RxTxRatio}[r]$
\EndFor
\For{$r=1$ \textbf{to} $k$}
\State $\mathit{RxTxRatio}[r] \gets \dfrac{\mathit{RxTxRatio}[r]}{\mathit{total}}$
\EndFor
\State $\mathit{channelIndex} \gets$ winner of the weighted lottery among all the channels in $\mathit{availableChannels}$ with weight, $\mathit{RxTxRatio}$
\State \textbf{return} $\mathit{channelIndex}$
\EndFunction
\end{algorithmic}
\end{algorithm}
\section{Sequential Radio and Channel Selection}
An important characteristic of our proposed feedback-based multi-radio exploitation approach is the sequential radio and channel selection instead of jointly optimized radio-channel selection. In our approach, when transport layer packets come in the data link layer, our SU agent enqueue them to one of the available radio's queue. Our packet transmission ratio based radio selection algorithm (Section~\ref{sec:radioSelect}) determines that on which radio's queue each packet will be enqueued. During this time, the channel through which this packet will be transmitted is not decided. The channel selection decision is made later when the packet is dequeued from the radio's queue. At that time if the radio senses no primary user on the radio's currently assigned channel, the dequeued packet is transmitted using the currently assigned channel. Only if the radio's sensing results show that there is primary user activity of the current channel, the radio switches from the current channel, only then the channel selection algorithm is used to find the new channel.
The reason behind this sequential radio and channel selection is the dynamic nature of cognitive radio networks. When the packets are enqueued in the radio, neither the actual time when any of these packets will be transmitted nor the channels' state at that time can be accurately predicted. Therefore, any jointly optimized radio-channel selection could not consider the actual channel condition at the time of packet transmission. Keeping this issue in mind, our proposed approach employs sequential radio and channel selection process.
\section{Weighted Lottery Mechanism}
Since we select radio and channel for packet transmission through weighted lottery, the details of such an weighted lottery is described in this section. For example, let us assume the radio selection probabilities of four radios at an SU are $0.1$, $0.2$, $0.3$, and $0.4$. In our proposed approach, we then randomly select a floating point value, $x$ uniformly within the range $[0,1]$. If the value of this random floating number, $x$ is less than or equal $0.1$ ($0.0 \lt x \leq 0.1$), we select the first radio. Similarly, if $0.1 \lt x \leq 0.3$, we select the second radio, if $0.3 \lt x \leq 0.6$, we select the third radio, and if $0.6 \lt x \leq 1.0$, we select the fourth radio. Such an weighted lottery based mechanism has previously been proposed in the fields of statistics~\cite{tessmer2007method} and scheduling algorithms~\cite{wang2016skyline}.
\section{Variants of Our Proposed Approach}
We create three variants of our proposed approach introducing radio and channel selection based on a random variable following a uniform distribution. While selecting the next radio for data packet transmission, we can randomly select any one of data radios with equal selection probability ignoring the packet transmission ratios. Similarly, the next channel to switch can also be chosen randomly from the available channels with equal selection probability irrespective of the channel utilization ratio. We define this random radio and channel selection policy as unweighted lottery. From this unweighted lottery, we devise three variants of our proposed approach as described in \cref{tab:variantDefintion}. The approach of randomly selecting both the radio and the channel has not be listed as the variants of the proposed approach as that approach is quite similar to the approach proposed by Zhong et al.,~\cite{zhong2014capacity}.
\begin{table*}
\begin{center}
\caption{Several variants of the proposed feedback-based approach}
\label{tab:variantDefintion}
\begin{tabular}{p{0.2\textwidth}p{0.35\textwidth}p{0.35\textwidth}}
\toprule
Variant name & Radio selection policy & Channel selection policy\\
\midrule
Radio feedback & Weighted lottery based on radio transmission ratio & Unweighted lottery \\
Channel feedback & Unweighted lottery & Weighted lottery based on channel utilization ratio \\
Radio channel feedback & Weighted lottery based on radio transmission ratio & Weighted lottery based on channel utilization ratio \\
\bottomrule
\end{tabular}
\end{center}
\vspace{-0.8cm}
\end{table*}
\endinput