Closed HuyTyskland closed 1 year ago
I figured it out:
In the submodule radioDriver
(instance of RadioDriver
), there is a signal of ChannelLoad. In order to record this signal, in the Car.ned
, in the submodule radioDriver
, insert @statistic[channel_load](source="ChannelLoad"; record=vector,stats; interpolationmode=none);
(detail in this link.
The Channel load can be recorded as timeavg, which has been done in src/artery/inet/ChannelLoadRx.ned
.
After implementing as the comment above, there is something I cannot understand and I am not sure what causes that issue (that is why I reopen this issue - sorry for inconvenience).
The number of vehicles (Car.ned
) does not affect the channel_load
/ChannelLoad
: when I use @statistic[channel_load](source="ChannelLoad"; record=vector,stats; interpolationmode=none);
, no matter how many vehicles in the simulation (200 or 600 vehicles), the channel_load
maximum is still 0.01472. To make sure, I even changed this line to ...(record=timeavg,vector);
(no need, I believe), and the ChannelLoad
is still the same. Based on this reply, I am pretty sure that ChannelLoad
is what I want.
Besides changing the number of vehicles, I also changed the *.node[*].middleware.updateInternal
from 0.1s to 0.05s but nothing changed.
About my scenario, the vehicles is Car.ned
module and the message request ( I do not use CAM or DEMN in asn1 of Vanetza) is as below with my 40-byte custom message:
btp::DataRequestB req;
req.destination_port = host_cast<LLService::port_type>(getPortNumber());
req.gn.transport_type = geonet::TransportType::SHB;
req.gn.traffic_class.tc_id(static_cast<unsigned>(dcc::Profile::DP2));
req.gn.communication_profile = geonet::CommunicationProfile::ITS_G5;
request(req, msg);
What might be the cause of this situation?
*A little update:
I also changed the service from my service (shown in the previous comment) to CaService
but the same thing also happened. The channel load is at 0.015 for 40-100-300-600 vehicles.
@riebl @awillecke I still haven't been able to address this issue. Would you mind suggesting me some hints?
I don't know what you are doing exactly. The updateInterval
will not increase the number of transmitted messages per second, just how often the middleware triggers a service.
I have just checked the "car2car-grid" scenario: Even with just about 100 vehicles, I see channel loads up to 10%. Thus, I assume the channel load calculation itself is still working as expected.
How many messages are you generating per vehicle? Do you send them with the default bitrate? Given the message rate, message length and the number of vehicles, you can easily estimate the maximum channel load with ideal (unrealistic) radio propagation.
Hello @riebl thank you for your response and your hint on the matter. I will dig into that. A little update:
CaService
to them. The surrounding flows of vehicles, I forgot to configure them to CaService
that is why the channel load is so low (around 1.5%). After I applied CaService
to the flow also, I make the channel load increase to 12-15% (100 vehicles = platoon + non-platoon). But although I set the number of vehicles to 600 vehicles (platoon vehicles + non-platoon ones), the load is still around 12-15%. So there should be something else that also causes the issue. Is there anything on top of your head about this?.The channel load only depends indirectly on the number of vehicles sending CAMs but more on the vehicle density (number of vehicles in communication range). From your description, I assume you provide the number
of vehicles in your traffic flows. Maybe try vehsPerHour
to create flows with a higher density of vehicles.
Also note @HuyTyskland, that the reactive DCC approach is quite restrictive: It allows at most 10 messages per second on DP2 even if the channel load is low.
@awillecke Thank you very much for your suggestion on using the vehsPerHour
. I can control the density of vehicles as I want. Combining with the FundamentalDiagram I can get a dense/medium/sparse traffic.
@riebl thank you for your information about the reactive DCC approach. I do notice that CAM messages are currently generated with mGenCamMax which is 1 message per second. I had around 18% Channel Load with that Message rate with around 400 vehicles in 1km.
Just a small question: where can I find the default message size and the default data rate?
Just a small question: where can I find the default message size and the default data rate?
Unfortunately, the answer is not as straight forward.
The message size depends on the communication layer you are looking at. For example, the size of a CAM emitted by the CaService, leaving the Facilities Layer, depends on several factors described in EN 302 637-2. For example, it can vary over time (see path history) and for different values due to the ASN.1 UPER encoding. In the Networking and Transport Layer, the messages from the Facilities are encapsulated in BTP and GeoNetworking protocol, increasing the size of the message that might be transmitted by a variable amount (signature and certificate). When going down the communication stack further, more header (and trailers) are added and the message grows.
For the data rate, you need to be more specific, as there are multiple definitions/concepts described by this term. If you refer to the actual bit rate used for transmitting data on the physical layer, you can find some information on possible configurations here. However, in your case, it depends on the transceiver configuration in your scenario. The INET based radio, for example, uses a bit rate of 6Mbit/s by default.
I understand now. Thank you @awillecke
Hello everyone,
Currently, I have a scenario in which the vehicle type is the
Car
module inArtery/inet
. I want to observe the Channel Load of each vehicle during the simulation (Adding Statistics Collection). However, I am having a bit of an issue when implementing that. So far, I see that there areChannelLoadRx.ned
module andPowerLevelRx.ned
module allowing me to extract theChannelLoad
statistic. However, I am unable to deploying those modules as submodule forCar.ned
module. As forChannelLoadRx.ned
module, the error in Omnet++ is:So:
ChannelLoadRx.ned
module (for example) as a submodule ofCar.ned
module?Best regards, Huy Nguyen.