more tests for the TFT
This commit is contained in:
@@ -30,6 +30,24 @@ namespace ns3 {
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("LteTft");
|
||||
|
||||
std::ostream& operator<< (std::ostream& os, LteTft::Direction& d)
|
||||
{
|
||||
switch (d)
|
||||
{
|
||||
case LteTft::DOWNLINK:
|
||||
os << "DOWNLINK";
|
||||
break;
|
||||
case LteTft::UPLINK:
|
||||
os << "UPLINK";
|
||||
break;
|
||||
default:
|
||||
os << "BIDIRECTIONAL";
|
||||
break;
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
std::ostream& operator<< (std::ostream& os, LteTft::PacketFilter& f)
|
||||
{
|
||||
os << " direction: " << f.direction
|
||||
|
||||
@@ -32,6 +32,11 @@ namespace ns3 {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This class implements the EPS bearer Traffic Flow Template (TFT),
|
||||
* which is the set of all packet filters associated with an EPS bearer.
|
||||
*
|
||||
*/
|
||||
class LteTft : public SimpleRefCount<LteTft>
|
||||
{
|
||||
|
||||
@@ -54,6 +59,8 @@ public:
|
||||
* the following features are NOT supported:
|
||||
* - IPv6 filtering (including flow labels)
|
||||
* - IPSec filtering
|
||||
* - filter precedence field is not evaluated, hence it is recommended to setup
|
||||
* the TFTs within a PDP context such that TFTs are mutually exclusive
|
||||
*/
|
||||
struct PacketFilter
|
||||
{
|
||||
@@ -144,6 +151,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
std::ostream& operator<< (std::ostream& os, LteTft::Direction& d);
|
||||
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
@@ -76,20 +76,9 @@ LteTftClassifierTestCase::LteTftClassifierTestCase (Ptr<LteTftClassifier> c,
|
||||
m_tftId (tftId)
|
||||
{
|
||||
std::ostringstream oss;
|
||||
oss << c;
|
||||
switch (d)
|
||||
{
|
||||
case LteTft::DOWNLINK:
|
||||
oss << " DL, ";
|
||||
break;
|
||||
case LteTft::UPLINK:
|
||||
oss << " UL, ";
|
||||
break;
|
||||
default:
|
||||
oss << " BD, ";
|
||||
break;
|
||||
}
|
||||
oss << ", sa = " << sa
|
||||
oss << c
|
||||
<< " d = " << d
|
||||
<< ", sa = " << sa
|
||||
<< ", da = " << da
|
||||
<< ", sp = " << sp
|
||||
<< ", dp = " << dp
|
||||
@@ -132,10 +121,6 @@ LteTftClassifierTestCase::DoRun (void)
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Test the calculation of carrier frequency based on EARFCN
|
||||
*/
|
||||
class LteTftClassifierTestSuite : public TestSuite
|
||||
{
|
||||
public:
|
||||
@@ -151,6 +136,7 @@ LteTftClassifierTestSuite::LteTftClassifierTestSuite ()
|
||||
|
||||
Ptr<LteTftClassifier> c1 = Create<LteTftClassifier> ();
|
||||
|
||||
|
||||
Ptr<LteTft> tft1_1 = Create<LteTft> ();
|
||||
|
||||
LteTft::PacketFilter pf1_1_1;
|
||||
@@ -160,11 +146,59 @@ LteTftClassifierTestSuite::LteTftClassifierTestSuite ()
|
||||
pf1_1_1.localMask.Set (0xFF000000);
|
||||
tft1_1->Add (pf1_1_1);
|
||||
|
||||
LteTft::PacketFilter pf1_1_2;
|
||||
pf1_1_2.remoteAddress.Set ("3.3.3.0");
|
||||
pf1_1_2.localAddress.Set ("4.4.4.0");
|
||||
pf1_1_2.remoteMask.Set (0xFFFFFF00);
|
||||
pf1_1_2.localMask.Set (0xFFFFFF00);
|
||||
tft1_1->Add (pf1_1_2);
|
||||
|
||||
c1->Add (tft1_1);
|
||||
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("2.2.3.4"), Ipv4Address ("1.12.0.132"), 4, 1234, 0, 1));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("6.2.3.4"), Ipv4Address ("1.12.0.132"), 4, 1234, 0, 0));
|
||||
|
||||
|
||||
|
||||
Ptr<LteTft> tft1_2 = Create<LteTft> ();
|
||||
|
||||
LteTft::PacketFilter pf1_2_1;
|
||||
pf1_2_1.remotePortStart = 1024;
|
||||
pf1_2_1.remotePortEnd = 1035;
|
||||
tft1_2->Add (pf1_2_1);
|
||||
|
||||
LteTft::PacketFilter pf1_2_2;
|
||||
pf1_2_2.localPortStart = 3456;
|
||||
pf1_2_2.localPortEnd = 3489;
|
||||
tft1_2->Add (pf1_2_2);
|
||||
|
||||
c1->Add (tft1_2);
|
||||
|
||||
|
||||
|
||||
// ------------------------------------classifier---direction--------------src address---------------dst address---src port--dst port--ToS--TFT id
|
||||
|
||||
// test IP addresses
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("2.2.3.4"), Ipv4Address ("1.1.1.1"), 4, 1234, 0, 1));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("2.2.3.4"), Ipv4Address ("1.0.0.0"), 2, 123, 5, 1));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("6.2.3.4"), Ipv4Address ("1.1.1.1"), 4, 1234, 0, 0));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.4.1"), 4, 1234, 0, 1));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("3.3.4.4"), Ipv4Address ("4.4.4.1"), 4, 1234, 0, 0));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.2.1"), 4, 1234, 0, 0));
|
||||
|
||||
// test remote port
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 1024, 0, 2));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 1025, 0, 2));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 1035, 0, 2));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 1234, 0, 0));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 1024, 0, 0));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 1025, 0, 0));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 1035, 0, 0));
|
||||
|
||||
// test local port
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 3456, 0, 0));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 3457, 0, 0));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 4, 3489, 0, 0));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::UPLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 3456, 6, 0, 2));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 3461, 3461, 0, 2));
|
||||
AddTestCase (new LteTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"), 9, 3489, 0, 2));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user