diff -u -r ns-2.1b9-ref/queue/queue.cc ns-2.1b9/queue/queue.cc
--- ns-2.1b9-ref/queue/queue.cc	Wed Jun 26 14:13:38 2002
+++ ns-2.1b9/queue/queue.cc	Mon Jul  1 11:10:48 2002
@@ -85,7 +85,7 @@
 }
 
 Queue::Queue() : Connector(), blocked_(0), unblock_on_resume_(1), qh_(*this), 
-	pq_(0)
+	pq_(0), no_resume(0)
 	/* temporarily NULL */
 {
 	bind("limit_", &qlim_);
@@ -126,7 +126,9 @@
 
 void Queue::resume()
 {
-	Packet* p = deque();
+	Packet* p;
+	if (no_resume) return; //AG
+	p = deque();
 	if (p != 0) {
 		target_->recv(p, &qh_);
 	} else {
@@ -145,3 +147,19 @@
 	while ((p = deque()) != 0)
 		drop(p);
 }
+
+//AG it was difficult to put this anywhere else since resume() calls 
+//outside of Queue class generate a Scheduler error
+int Queue::command(int argc, const char*const* argv) { 
+	if (argc == 2 && !strcmp(argv[1],"block")) {
+                        no_resume=true;
+                        return (TCL_OK);
+                }
+                if (argc == 2 && !strcmp(argv[1],"unblock")) {
+                        no_resume=false;
+                        resume();
+                        return (TCL_OK);
+                }
+	return Connector::command(argc, argv);
+}
+
diff -u -r ns-2.1b9-ref/queue/queue.h ns-2.1b9/queue/queue.h
--- ns-2.1b9-ref/queue/queue.h	Wed Jun 26 14:13:38 2002
+++ ns-2.1b9/queue/queue.h	Mon Jul  1 11:09:06 2002
@@ -145,6 +145,12 @@
 				 * like DropTail and RED). */
 	double true_ave_;	/* true long-term average queue size */
 	double total_time_;	/* total time average queue size compute for */
+
+	//AG
+	int no_resume;          /* for generating delay spikes */
+	int command(int argc, const char*const* argv);
+
+
 };
 
 #endif

