more tests for the TFT

This commit is contained in:
Nicola Baldo
2011-07-29 18:11:39 +02:00
parent 50977eb21f
commit 78faec86fc
3 changed files with 81 additions and 21 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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));
}