diff --git a/node/Constants.hpp b/node/Constants.hpp
index 6cd4aa709..3445e2613 100644
--- a/node/Constants.hpp
+++ b/node/Constants.hpp
@@ -224,7 +224,7 @@
 /**
  * How often Topology::clean() and Network::clean() and similar are called, in ms
  */
-#define ZT_HOUSEKEEPING_PERIOD 60000
+#define ZT_HOUSEKEEPING_PERIOD 30000
 
 /**
  * Delay between WHOIS retries in ms
diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp
index 8556acc67..4856b88ee 100644
--- a/node/Multicaster.cpp
+++ b/node/Multicaster.cpp
@@ -262,9 +262,8 @@ void Multicaster::send(
 				}
 			}
 		} else {
-			if (gs.txQueue.size() >= ZT_TX_QUEUE_SIZE) {
-				RR->t->outgoingNetworkFrameDropped(tPtr,network,src,mg.mac(),etherType,0,len,"multicast TX queue is full");
-				return;
+			while (gs.txQueue.size() >= ZT_TX_QUEUE_SIZE) {
+				gs.txQueue.pop_front();
 			}
 
 			const unsigned int gatherLimit = (limit - (unsigned int)gs.members.size()) + 1;