# Data Rate Selection Strategies for Periodic Transmission of Safety Messages in VANET
## 3 Proposed Data Rate-Based Congestion Control (DRCC) Approach
This same process is executed in the OBU of each participating vehicle, independently of the other vehicles. If the OBU determines that the current CBR (\(cbr\)) is lower than \(lower_{th}\) (Step 2), it indicates that the channel bandwidth is being under-utilized. In this case, Steps 3-12 attempt to select a lower bitrate for the next transmission. Steps 3 and 4 set the previous BSM bitrate as the new value. This will be used only if a lower bitrate cannot be found. Steps 5-11 check each bitrate in order, starting with the lowest possible bitrate from \(B[0]\), to see if the expected CBR remains below \(congestion\_limit\times upper_{th}\) when using that bitrate. If so, it is selected immediately (Steps 7-9); otherwise, the next bitrate is checked, and this process continues up to \(B[level]\). If no lower bitrate satisfying the condition in Step 6 can be found, then the new bitrate remains the same as the previous bitrate. Steps 13 to 23 are executed if the current CBR (\(cbr\)) exceeds \(upper_{th}\) (Step 13). A higher CBR value indicates channel congestion, and the DRCC algorithm attempts to reduce this by selecting a suitable faster bitrate, if available (Steps 14-23). First, the highest possible bitrate is set as the new value to be used (Steps 14 and 15) in case none of the available bitrates satisfy the condition in Step 17. Steps 16-22 iterate through each potential bitrate value, and the first bitrate to satisfy the condition in Step 17 is selected, leading to the termination of the loop. This ensures that the lowest possible bitrate meeting the expected CBR constraint is selected as the new bitrate. ```
1:Initialization a. Select \(upper_{th}\) and \(lower_{th}\), b. Set list of allowed bitrates \(B\) and \(maxlevel\) c. Set \(congestion\_limit\), the maximum expected congestion when updating the bitrate
2:Index indicating which bitrate in \(B\) is currently being used (\(level\)), and the current CBR (\(cbr\)). 3:Updated bitrate values and the index of \(B\) indicating the new bitrate to use (\(newlevel\))
4:if\(cbr<lower_{th}\)then
5:\(newlevel=level\)
6:\(bitrate=B[newlevel]\)
7:for\(i\in(0,level)\)do
8:if\(cbr\times(B[level]/B[i])<congestion\_limit\times upper_{th}\)then
9:\(netlevel=i\)
10:\(bitrate=B[i]\)
11:break
12:endif
13:endif
14:if\(cbr>upper_{th}\)then
15:\(newlevel=maxlevel\)
16:\(bitrate=B[newlevel]\)
17:for\(i\in(level+1,maxlevel)\)do
18:if\(cbr\times(B[level]/B[i])<congestion\_limit\times upper_{th}\)then
19:\(newlevel=i\)
20:\(bitrate=B[newlevel]\)
21:break
22:endif
23:endif
24:if\(lower_{th}\leq cbr\leq upper_{th}\)then
25:\(newlevel=level\)
26:\(bitrate=B[newlevel]\)
27:endif
```  
**Algorithm 1** Data Rate-Based Congestion Control (DRCC) Algorithm. Finally, Steps 25 to 27 are executed when the CBR (\(cbr\)) falls between high (\(upper_{th}\)) and low (\(lower_{th}\)) CBR thresholds, i.e., when the current bitrate is able to maintain the CBR within the desired thresholds. In this case, the new bitrate selected is the same as the previous one (Steps 25-26). Once the value of the new bitrate has been selected by the DRCC algorithm, it is used by the vehicle OBU to transmit the next BSM. We note that in our approach it is possible that the bitrate used by a vehicle will change frequently. However, we consider this to be acceptable, as the goal is not to have different vehicles converge to one common acceptable bitrate. Rather, each vehicle independently chooses the bitrate for its next BSM, based on observed CBR. If the channel conditions change during the beacon interval, the next BSM can be transmitted at a different bitrate.