diff --git a/core/global-io.cpp b/core/global-io.cpp
index bd73244..f03d13c 100644
--- a/core/global-io.cpp
+++ b/core/global-io.cpp
@@ -35,6 +35,7 @@
 } // namespace scheduler
 
 static boost::thread_specific_ptr<boost::asio::io_service> g_ioService;
+static boost::asio::io_service* g_mainIoService = nullptr;
 static boost::asio::io_service* g_ribIoService = nullptr;
 
 boost::asio::io_service&
@@ -54,12 +55,25 @@
 }
 
 void
+setMainIoService(boost::asio::io_service* mainIo)
+{
+  g_mainIoService = mainIo;
+}
+
+void
 setRibIoService(boost::asio::io_service* ribIo)
 {
   g_ribIoService = ribIo;
 }
 
 boost::asio::io_service&
+getMainIoService()
+{
+  BOOST_ASSERT(g_mainIoService != nullptr);
+  return *g_mainIoService;
+}
+
+boost::asio::io_service&
 getRibIoService()
 {
   BOOST_ASSERT(g_ribIoService != nullptr);
@@ -67,6 +81,12 @@
 }
 
 void
+runOnMainIoService(const std::function<void()>& f)
+{
+  getMainIoService().post(f);
+}
+
+void
 runOnRibIoService(const std::function<void()>& f)
 {
   getRibIoService().post(f);
diff --git a/core/global-io.hpp b/core/global-io.hpp
index ab0e17c..0fb2fbe 100644
--- a/core/global-io.hpp
+++ b/core/global-io.hpp
@@ -35,14 +35,25 @@
 getGlobalIoService();
 
 void
+setMainIoService(boost::asio::io_service* mainIo);
+
+void
 setRibIoService(boost::asio::io_service* ribIo);
 
+/** \brief run a function on the main io_service instance
+ */
+void
+runOnMainIoService(const std::function<void()>& f);
+
 /** \brief run a function on the RIB io_service instance
  */
 void
 runOnRibIoService(const std::function<void()>& f);
 
 boost::asio::io_service&
+getMainIoService();
+
+boost::asio::io_service&
 getRibIoService();
 
 #ifdef WITH_TESTS
diff --git a/daemon/main.cpp b/daemon/main.cpp
index 448b105..f6d482d 100644
--- a/daemon/main.cpp
+++ b/daemon/main.cpp
@@ -105,6 +105,7 @@
     std::atomic_int retval(0);
 
     boost::asio::io_service* const mainIo = &getGlobalIoService();
+    setMainIoService(mainIo);
     boost::asio::io_service* ribIo = nullptr;
 
     // Mutex and conditional variable to implement synchronization between main and RIB manager
diff --git a/tests/core/global-io.t.cpp b/tests/core/global-io.t.cpp
index 8ae9126..5aa3bc6 100644
--- a/tests/core/global-io.t.cpp
+++ b/tests/core/global-io.t.cpp
@@ -51,20 +51,31 @@
   BOOST_CHECK(s1 != s2);
 }
 
-BOOST_FIXTURE_TEST_CASE(RibIoService, RibIoFixture)
+BOOST_FIXTURE_TEST_CASE(MainRibIoService, RibIoFixture)
 {
   boost::asio::io_service* mainIo = &g_io;
   boost::asio::io_service* ribIo = g_ribIo;
 
   BOOST_CHECK(mainIo != ribIo);
   BOOST_CHECK(&getGlobalIoService() == mainIo);
+  BOOST_CHECK(&getMainIoService() == mainIo);
   BOOST_CHECK(&getRibIoService() == ribIo);
   auto mainThreadId = boost::this_thread::get_id();
 
   runOnRibIoService([&] {
     BOOST_CHECK(mainThreadId != boost::this_thread::get_id());
-    BOOST_CHECK(&getRibIoService() == ribIo);
     BOOST_CHECK(&getGlobalIoService() == ribIo);
+    BOOST_CHECK(&getMainIoService() == mainIo);
+    BOOST_CHECK(&getRibIoService() == ribIo);
+  });
+
+  runOnRibIoService([&] {
+    runOnMainIoService([&] {
+      BOOST_CHECK(mainThreadId == boost::this_thread::get_id());
+      BOOST_CHECK(&getGlobalIoService() == mainIo);
+      BOOST_CHECK(&getMainIoService() == mainIo);
+      BOOST_CHECK(&getRibIoService() == ribIo);
+    });
   });
 }
 
@@ -80,10 +91,10 @@
 
   hasRibRun = false;
   bool hasMainRun = false;
-  g_io.post([&] {
-      hasMainRun = true;
-      runOnRibIoService([&] { hasRibRun = true; });
-    });
+  runOnMainIoService([&] {
+    hasMainRun = true;
+    runOnRibIoService([&] { hasRibRun = true; });
+  });
   BOOST_CHECK_EQUAL(hasMainRun, false);
   BOOST_CHECK_EQUAL(hasRibRun, false);
 
@@ -105,9 +116,9 @@
   hasRibRun = false;
   bool hasMainRun = false;
   scheduler::schedule(250_ms, [&] {
-      hasMainRun = true;
-      runOnRibIoService([&] { hasRibRun = true; });
-    });
+    hasMainRun = true;
+    runOnRibIoService([&] { hasRibRun = true; });
+  });
   BOOST_CHECK_EQUAL(hasMainRun, false);
   BOOST_CHECK_EQUAL(hasRibRun, false);
 
diff --git a/tests/rib-io-fixture.cpp b/tests/rib-io-fixture.cpp
index ef228d5..d058851 100644
--- a/tests/rib-io-fixture.cpp
+++ b/tests/rib-io-fixture.cpp
@@ -35,6 +35,9 @@
   std::mutex m;
   std::condition_variable cv;
 
+  g_mainIo = &getGlobalIoService();
+  setMainIoService(g_mainIo);
+
   g_ribThread = boost::thread([&] {
     {
       std::lock_guard<std::mutex> lock(m);
diff --git a/tests/rib-io-fixture.hpp b/tests/rib-io-fixture.hpp
index e89ba44..ec147d5 100644
--- a/tests/rib-io-fixture.hpp
+++ b/tests/rib-io-fixture.hpp
@@ -56,6 +56,10 @@
   poll();
 
 protected:
+  /** \brief pointer to global main io_service
+   */
+  boost::asio::io_service* g_mainIo = nullptr;
+
   /** \brief pointer to global RIB io_service
    */
   boost::asio::io_service* g_ribIo = nullptr;
