Finalizing interest limits. Now everything seem to work.
To work correctly, a lot of parameters have to be adjusted, including average
contentObject size, averageRTT, queues on nodes.
diff --git a/model/ccnx-face.cc b/model/ccnx-face.cc
index 51b3ba4..3c092e9 100644
--- a/model/ccnx-face.cc
+++ b/model/ccnx-face.cc
@@ -82,8 +82,12 @@
if (m_bucketMax > 0)
{
+ //NS_LOG_ERROR ("Limits enabled: " << m_bucketMax << ", current: " << m_bucket);
if (m_bucket+1.0 > m_bucketMax)
- return false;
+ {
+ //NS_LOG_ERROR ("Returning false");
+ return false;
+ }
m_bucket += 1.0;
}
@@ -95,11 +99,31 @@
CcnxFace::LeakBucket (const Time &interval)
{
const double leak = m_bucketLeak * interval.ToDouble (Time::S);
- m_bucket -= std::max (0.0, m_bucket - leak);
+ m_bucket = std::max (0.0, m_bucket - leak);
NS_LOG_ERROR ("max: " << m_bucketMax << ", Current bucket: " << m_bucket << ", leak size: " << leak << ", interval: " << interval << ", " << m_bucketLeak);
}
+void
+CcnxFace::SetBucketMax (double bucket)
+{
+ NS_LOG_FUNCTION (this << bucket);
+ m_bucketMax = bucket;
+}
+
+void
+CcnxFace::SetBucketLeak (double leak)
+{
+ NS_LOG_FUNCTION (this << leak);
+ m_bucketLeak = leak;
+}
+
+void
+CcnxFace::LeakBucketByOnePacket ()
+{
+ m_bucket = std::max (0.0, m_bucket-1.0);
+}
+
bool
CcnxFace::Send (Ptr<Packet> packet)
{