diff --git a/src/util/in-memory-storage-fifo.hpp b/src/util/in-memory-storage-fifo.hpp
new file mode 100644
index 0000000..da7f0fc
--- /dev/null
+++ b/src/util/in-memory-storage-fifo.hpp
@@ -0,0 +1,93 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2014 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#ifndef NDN_UTIL_IN_MEMORY_STORAGE_FIFO_HPP
+#define NDN_UTIL_IN_MEMORY_STORAGE_FIFO_HPP
+
+#include "in-memory-storage.hpp"
+
+#include <boost/multi_index_container.hpp>
+#include <boost/multi_index/sequenced_index.hpp>
+#include <boost/multi_index/hashed_index.hpp>
+
+namespace ndn {
+namespace util {
+
+/** @brief Provides in-memory storage employing FIFO replacement policy, which is first in first
+ *  out.
+ */
+class InMemoryStorageFifo : public InMemoryStorage
+{
+public:
+  explicit
+  InMemoryStorageFifo(size_t limit = 10);
+
+  virtual
+  ~InMemoryStorageFifo();
+
+PUBLIC_WITH_TESTS_ELSE_PROTECTED:
+  /** @brief Removes one Data packet from in-memory storage based on FIFO
+   *  @return{ whether the Data was removed }
+   */
+  virtual bool
+  evictItem();
+
+  /** @brief Update the entry after a entry is successfully inserted, add it to the cleanupIndex
+   */
+  virtual void
+  afterInsert(InMemoryStorageEntry* entry);
+
+  /** @brief Update the entry or other data structures before a entry is successfully erased,
+   *  erase it from the cleanupIndex
+   */
+  virtual void
+  beforeErase(InMemoryStorageEntry* entry);
+
+private:
+  //multi_index_container to implement FIFO
+  class byArrival;
+  class byEntity;
+
+  typedef boost::multi_index_container<
+    InMemoryStorageEntry*,
+    boost::multi_index::indexed_by<
+
+      // by Entry itself
+      boost::multi_index::hashed_unique<
+        boost::multi_index::tag<byEntity>,
+        boost::multi_index::identity<InMemoryStorageEntry*>
+      >,
+
+      // by arrival (FIFO)
+      boost::multi_index::sequenced<
+        boost::multi_index::tag<byArrival>
+      >
+
+    >
+  > CleanupIndex;
+
+  CleanupIndex m_cleanupIndex;
+};
+
+} // namespace util
+} // namespace ndn
+
+#endif // NDN_UTIL_IN_MEMORY_STORAGE_FIFO_HPP
