101 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
102 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
105 Ptr<SatHelper> helper = CreateObject<SatHelper>(
109 NodeContainer utUsers = Singleton<SatTopology>::Get()->GetUtUserNodes();
116 CbrHelper cbr(
"ns3::UdpSocketFactory",
117 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
118 cbr.SetAttribute(
"Interval", StringValue(
"1s"));
120 ApplicationContainer gwApps = cbr.Install(Singleton<SatTopology>::Get()->GetGwUserNodes());
121 gwApps.Start(Seconds(1.0));
122 gwApps.Stop(Seconds(2.1));
125 PacketSinkHelper sink(
"ns3::UdpSocketFactory",
126 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
128 ApplicationContainer utApps = sink.Install(utUsers);
129 utApps.Start(Seconds(1.0));
130 utApps.Stop(Seconds(3.0));
132 Simulator::Stop(Seconds(11));
135 Simulator::Destroy();
137 Ptr<PacketSink> receiver = DynamicCast<PacketSink>(utApps.Get(0));
138 Ptr<CbrApplication> sender = DynamicCast<CbrApplication>(gwApps.Get(0));
143 NS_TEST_ASSERT_MSG_NE(sender->GetSent(), (uint32_t)0,
"Nothing sent!");
144 NS_TEST_ASSERT_MSG_EQ(receiver->GetTotalRx(), sender->GetSent(),
"Packets were lost!");
204 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
205 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
208 Ptr<SatHelper> helper = CreateObject<SatHelper>(
212 NodeContainer utUsers = Singleton<SatTopology>::Get()->GetUtUserNodes();
223 CbrHelper cbr(
"ns3::UdpSocketFactory",
224 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
225 cbr.SetAttribute(
"Interval", StringValue(
"1s"));
226 ApplicationContainer gwApps = cbr.Install(Singleton<SatTopology>::Get()->GetGwUserNodes());
231 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(4)), port))));
232 gwApps.Add(cbr.Install(Singleton<SatTopology>::Get()->GetGwUserNodes()));
234 gwApps.Start(Seconds(1.0));
235 gwApps.Stop(Seconds(2.1));
240 PacketSinkHelper sink(
"ns3::UdpSocketFactory",
241 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
242 ApplicationContainer utApps = sink.Install(utUsers.Get(0));
247 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(4)), port))));
248 utApps.Add(sink.Install(utUsers.Get(4)));
250 utApps.Start(Seconds(1.0));
251 utApps.Stop(Seconds(3.0));
253 Simulator::Stop(Seconds(11));
256 Simulator::Destroy();
258 Ptr<PacketSink> receiver1 = DynamicCast<PacketSink>(utApps.Get(0));
259 Ptr<CbrApplication> sender1 = DynamicCast<CbrApplication>(gwApps.Get(0));
261 Ptr<PacketSink> receiver2 = DynamicCast<PacketSink>(utApps.Get(1));
262 Ptr<CbrApplication> sender2 = DynamicCast<CbrApplication>(gwApps.Get(1));
268 NS_TEST_ASSERT_MSG_NE(sender1->GetSent(), (uint32_t)0,
"Nothing sent by sender 1!");
269 NS_TEST_ASSERT_MSG_EQ(receiver1->GetTotalRx(),
271 "Packets were lost between sender 1 and receiver 1!");
273 NS_TEST_ASSERT_MSG_NE(sender2->GetSent(), (uint32_t)0,
"Nothing sent !");
274 NS_TEST_ASSERT_MSG_EQ(receiver2->GetTotalRx(),
276 "Packets were lost between sender 2 and receiver 2!");
336 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
337 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
340 Ptr<SatHelper> helper = CreateObject<SatHelper>(
344 NodeContainer utUsers = Singleton<SatTopology>::Get()->GetUtUserNodes();
345 NodeContainer gwUsers = Singleton<SatTopology>::Get()->GetGwUserNodes();
354 Time cbrInterval = Seconds(0.5);
355 CbrHelper cbr(
"ns3::UdpSocketFactory",
356 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
357 cbr.SetAttribute(
"Interval", TimeValue(cbrInterval));
359 PacketSinkHelper sink(
"ns3::UdpSocketFactory",
360 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
363 uint32_t maxReceivers = utUsers.GetN();
364 Time cbrStartDelay = Seconds(0.01);
365 Time cbrStopDelay = Seconds(0.1);
367 Seconds(maxReceivers * cbrStartDelay.GetSeconds()) + cbrInterval + cbrInterval + Seconds(5);
369 ApplicationContainer gwApps;
370 ApplicationContainer utApps;
373 for (uint32_t i = 0; i < maxReceivers; i++)
377 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(i)), port))));
380 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(i)), port))));
382 gwApps.Add(cbr.Install(gwUsers.Get(4)));
383 utApps.Add(sink.Install(utUsers.Get(i)));
385 cbrStartDelay += Seconds(0.01);
387 gwApps.Get(i)->SetStartTime(cbrStartDelay);
388 gwApps.Get(i)->SetStopTime(cbrStartDelay + cbrInterval + cbrStopDelay);
391 utApps.Start(Seconds(0.00001));
392 utApps.Stop(stopTime);
394 Simulator::Stop(stopTime);
397 Simulator::Destroy();
403 for (uint32_t i = 0; i < maxReceivers; i++)
405 Ptr<PacketSink> receiver = DynamicCast<PacketSink>(utApps.Get(i));
406 Ptr<CbrApplication> sender = DynamicCast<CbrApplication>(gwApps.Get(i));
408 NS_TEST_ASSERT_MSG_NE(sender->GetSent(), (uint32_t)0,
"Nothing sent by sender" << i <<
"!");
409 NS_TEST_ASSERT_MSG_EQ(receiver->GetTotalRx(),
411 "Packets were lost between sender and receiver" << i <<
"!");
471 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
472 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
475 Ptr<SatHelper> helper = CreateObject<SatHelper>(
481 NodeContainer gwUsers = Singleton<SatTopology>::Get()->GetGwUserNodes();
486 CbrHelper cbr(
"ns3::UdpSocketFactory",
487 Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(0)), port)));
488 cbr.SetAttribute(
"Interval", StringValue(
"1s"));
490 ApplicationContainer utApps = cbr.Install(Singleton<SatTopology>::Get()->GetUtUserNodes());
491 utApps.Start(Seconds(1.0));
492 utApps.Stop(Seconds(2.1));
495 PacketSinkHelper sink(
"ns3::UdpSocketFactory",
496 Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(0)), port)));
498 ApplicationContainer gwApps = sink.Install(gwUsers);
499 gwApps.Start(Seconds(1.0));
500 gwApps.Stop(Seconds(3.0));
502 Simulator::Stop(Seconds(11));
505 Simulator::Destroy();
507 Ptr<PacketSink> receiver = DynamicCast<PacketSink>(gwApps.Get(0));
508 Ptr<CbrApplication> sender = DynamicCast<CbrApplication>(utApps.Get(0));
513 NS_TEST_ASSERT_MSG_NE(sender->GetSent(), (uint32_t)0,
"Nothing sent !");
514 NS_TEST_ASSERT_MSG_EQ(receiver->GetTotalRx(), sender->GetSent(),
"Packets were lost !");
574 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
575 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
578 Ptr<SatHelper> helper = CreateObject<SatHelper>(
584 NodeContainer gwUsers = Singleton<SatTopology>::Get()->GetGwUserNodes();
585 NodeContainer utUsers = Singleton<SatTopology>::Get()->GetUtUserNodes();
594 CbrHelper cbr(
"ns3::UdpSocketFactory",
595 Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(0)), port)));
596 cbr.SetAttribute(
"Interval", StringValue(
"1s"));
597 ApplicationContainer utApps = cbr.Install(utUsers.Get(0));
600 utApps.Add(cbr.Install(utUsers.Get(4)));
602 utApps.Start(Seconds(1.0));
603 utApps.Stop(Seconds(2.1));
606 PacketSinkHelper sink(
"ns3::UdpSocketFactory",
607 Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(0)), port)));
609 ApplicationContainer gwApps = sink.Install(gwUsers);
610 gwApps.Start(Seconds(1.0));
611 gwApps.Stop(Seconds(3.0));
613 Simulator::Stop(Seconds(11));
616 Simulator::Destroy();
618 Ptr<PacketSink> receiver = DynamicCast<PacketSink>(gwApps.Get(0));
619 Ptr<CbrApplication> sender1 = DynamicCast<CbrApplication>(utApps.Get(0));
620 Ptr<CbrApplication> sender2 = DynamicCast<CbrApplication>(utApps.Get(1));
625 NS_TEST_ASSERT_MSG_NE(sender1->GetSent(), (uint32_t)0,
"Nothing sent by sender 1!");
626 NS_TEST_ASSERT_MSG_NE(sender2->GetSent(), (uint32_t)0,
"Nothing sent by sender 2!");
627 NS_TEST_ASSERT_MSG_EQ(receiver->GetTotalRx(),
628 sender1->GetSent() + sender2->GetSent(),
629 "Packets were lost!");
688 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
689 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
692 Ptr<SatHelper> helper = CreateObject<SatHelper>(
698 NodeContainer gwUsers = Singleton<SatTopology>::Get()->GetGwUserNodes();
699 NodeContainer utUsers = Singleton<SatTopology>::Get()->GetUtUserNodes();
707 PacketSinkHelper sink(
"ns3::UdpSocketFactory",
708 Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(3)), port)));
712 Time cbrInterval = Seconds(0.01);
713 CbrHelper cbr(
"ns3::UdpSocketFactory",
714 Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(3)), port)));
715 cbr.SetAttribute(
"Interval", TimeValue(cbrInterval));
718 uint32_t maxReceivers = utUsers.GetN();
719 Time cbrStartDelay = Seconds(1.0);
720 Time cbrStopDelay = Seconds(0.005);
721 Time stopTime = Seconds(maxReceivers * 0.04) + cbrStartDelay + cbrInterval + cbrStopDelay;
723 ApplicationContainer utApps;
726 for (uint32_t i = 0; i < maxReceivers; i++)
728 utApps.Add(cbr.Install(utUsers.Get(i)));
730 cbrStartDelay += Seconds(0.03);
732 utApps.Get(i)->SetStartTime(cbrStartDelay);
733 utApps.Get(i)->SetStopTime(cbrStartDelay + cbrInterval + cbrStopDelay);
736 ApplicationContainer gwApps = sink.Install(gwUsers.Get(3));
737 gwApps.Start(Seconds(0.001));
738 gwApps.Stop(stopTime);
740 Simulator::Stop(stopTime);
743 Simulator::Destroy();
749 uint32_t totalTxBytes = 0;
750 Ptr<PacketSink> receiver = DynamicCast<PacketSink>(gwApps.Get(0));
752 for (uint32_t i = 0; i < maxReceivers; i++)
754 Ptr<CbrApplication> sender = DynamicCast<CbrApplication>(utApps.Get(i));
756 NS_TEST_ASSERT_MSG_NE(sender->GetSent(), (uint32_t)0,
"Nothing sent by sender " << i + 1);
757 totalTxBytes += sender->GetSent();
760 NS_TEST_ASSERT_MSG_EQ(receiver->GetTotalRx(), totalTxBytes,
"Packets were lost!");
821 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
822 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
825 Ptr<SatHelper> helper = CreateObject<SatHelper>(
829 NodeContainer utUsers = Singleton<SatTopology>::Get()->GetUtUserNodes();
830 NodeContainer gwUsers = Singleton<SatTopology>::Get()->GetGwUserNodes();
837 CbrHelper cbr(
"ns3::TcpSocketFactory",
838 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
840 cbr.SetAttribute(
"Interval", StringValue(
"1s"));
843 ApplicationContainer gwCbrApp = cbr.Install(gwUsers);
844 gwCbrApp.Start(Seconds(1.0));
845 gwCbrApp.Stop(Seconds(2.9));
848 PacketSinkHelper sink(
"ns3::TcpSocketFactory",
849 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
851 ApplicationContainer utSinkApp = sink.Install(utUsers);
852 utSinkApp.Start(Seconds(1.0));
853 utSinkApp.Stop(Seconds(9.0));
858 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(0)), port))));
861 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(0)), port))));
863 ApplicationContainer gwSinkApp = sink.Install(gwUsers);
864 gwSinkApp.Start(Seconds(1.0));
865 gwSinkApp.Stop(Seconds(9.0));
867 ApplicationContainer utCbrApp = cbr.Install(utUsers);
868 utCbrApp.Start(Seconds(1.0));
869 utCbrApp.Stop(Seconds(2.9));
871 Simulator::Stop(Seconds(15));
874 Simulator::Destroy();
876 Ptr<PacketSink> utReceiver = DynamicCast<PacketSink>(utSinkApp.Get(0));
877 Ptr<CbrApplication> gwSender = DynamicCast<CbrApplication>(gwCbrApp.Get(0));
879 Ptr<PacketSink> gwReceiver = DynamicCast<PacketSink>(gwSinkApp.Get(0));
880 Ptr<CbrApplication> utSender = DynamicCast<CbrApplication>(utCbrApp.Get(0));
885 NS_TEST_ASSERT_MSG_NE(gwSender->GetSent(), (uint32_t)0,
"Nothing sent by GW app!");
886 NS_TEST_ASSERT_MSG_EQ(utReceiver->GetTotalRx(),
888 "Packets were lost to UT!");
890 NS_TEST_ASSERT_MSG_NE(utSender->GetSent(), (uint32_t)0,
"Nothing sent by UT app!");
891 NS_TEST_ASSERT_MSG_EQ(gwReceiver->GetTotalRx(),
893 "Packets were lost to GW!");
954 Config::SetDefault(
"ns3::SatUtHelper::FwdLinkErrorModel", EnumValue(em));
955 Config::SetDefault(
"ns3::SatGwHelper::RtnLinkErrorModel", EnumValue(em));
958 Ptr<SatHelper> helper = CreateObject<SatHelper>(
962 NodeContainer utUsers = Singleton<SatTopology>::Get()->GetUtUserNodes();
963 NodeContainer gwUsers = Singleton<SatTopology>::Get()->GetGwUserNodes();
970 CbrHelper cbr(
"ns3::TcpSocketFactory",
971 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
973 cbr.SetAttribute(
"Interval", StringValue(
"1s"));
976 ApplicationContainer gwCbrApps = cbr.Install(gwUsers);
980 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(4)), port))));
981 gwCbrApps.Add(cbr.Install(gwUsers));
983 gwCbrApps.Start(Seconds(1.0));
984 gwCbrApps.Stop(Seconds(2.9));
987 PacketSinkHelper sink(
"ns3::TcpSocketFactory",
988 Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(0)), port)));
990 ApplicationContainer utSinkApps = sink.Install(utUsers.Get(0));
994 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(utUsers.Get(4)), port))));
995 utSinkApps.Add(sink.Install(utUsers.Get(4)));
997 utSinkApps.Start(Seconds(1.0));
998 utSinkApps.Stop(Seconds(9.0));
1003 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(0)), port))));
1006 AddressValue(Address(InetSocketAddress(helper->GetUserAddress(gwUsers.Get(0)), port))));
1009 ApplicationContainer gwSinkApp = sink.Install(gwUsers);
1010 gwSinkApp.Start(Seconds(1.0));
1011 gwSinkApp.Stop(Seconds(9.0));
1014 ApplicationContainer utCbrApps = cbr.Install(utUsers.Get(4));
1015 utCbrApps.Add(cbr.Install(utUsers.Get(0)));
1016 utCbrApps.Start(Seconds(1.0));
1017 utCbrApps.Stop(Seconds(2.9));
1019 Simulator::Stop(Seconds(15));
1022 Simulator::Destroy();
1024 Ptr<PacketSink> utReceiver1 = DynamicCast<PacketSink>(utSinkApps.Get(0));
1025 Ptr<PacketSink> utReceiver2 = DynamicCast<PacketSink>(utSinkApps.Get(1));
1026 Ptr<CbrApplication> gwSender1 = DynamicCast<CbrApplication>(gwCbrApps.Get(0));
1027 Ptr<CbrApplication> gwSender2 = DynamicCast<CbrApplication>(gwCbrApps.Get(1));
1029 Ptr<PacketSink> gwReceiver = DynamicCast<PacketSink>(gwSinkApp.Get(0));
1030 Ptr<CbrApplication> utSender1 = DynamicCast<CbrApplication>(utCbrApps.Get(0));
1031 Ptr<CbrApplication> utSender2 = DynamicCast<CbrApplication>(utCbrApps.Get(1));
1036 NS_TEST_ASSERT_MSG_NE(gwSender1->GetSent(), (uint32_t)0,
"Nothing sent by GW app 1!");
1037 NS_TEST_ASSERT_MSG_EQ(utReceiver1->GetTotalRx(),
1038 gwSender1->GetSent(),
1039 "Packets were lost to UT1!");
1041 NS_TEST_ASSERT_MSG_NE(gwSender2->GetSent(), (uint32_t)0,
"Nothing sent by GW app 2!");
1042 NS_TEST_ASSERT_MSG_EQ(utReceiver2->GetTotalRx(),
1043 gwSender2->GetSent(),
1044 "Packets were lost to UT2!");
1046 NS_TEST_ASSERT_MSG_NE(utSender1->GetSent(), (uint32_t)0,
"Nothing sent by UT app 1!");
1047 NS_TEST_ASSERT_MSG_NE(utSender2->GetSent(), (uint32_t)0,
"Nothing sent by UT app 2!");
1048 NS_TEST_ASSERT_MSG_EQ(gwReceiver->GetTotalRx(),
1049 utSender1->GetSent() + utSender2->GetSent(),
1050 "Packets were lost to GW!");
1067 : TestSuite(
"sat-simple-unicast", Type::SYSTEM)