diff -urN gpxe-0.9.7/src/net/arp.c gpxe-0.9.7-ignorepackets/src/net/arp.c
--- gpxe-0.9.7/src/net/arp.c	2009-03-01 21:23:42.000000000 -0500
+++ gpxe-0.9.7-ignorepackets/src/net/arp.c	2009-07-02 13:58:19.000000000 -0400
@@ -238,7 +238,7 @@
 		goto done;
 	
 	/* Create new ARP table entry if necessary */
-	if ( ! merge ) {
+	if ( ( arphdr->ar_op == htons ( ARPOP_REPLY ) ) && ( ! merge ) ) {
 		arp = &arp_table[next_new_arp_entry++ % NUM_ARP_ENTRIES];
 		arp->ll_protocol = ll_protocol;
 		arp->net_protocol = net_protocol;
diff -urN gpxe-0.9.7/src/net/icmp.c gpxe-0.9.7-ignorepackets/src/net/icmp.c
--- gpxe-0.9.7/src/net/icmp.c	2009-03-01 21:23:42.000000000 -0500
+++ gpxe-0.9.7-ignorepackets/src/net/icmp.c	2009-07-02 14:04:53.000000000 -0400
@@ -67,11 +67,14 @@
 	}
 
 	/* We respond only to pings */
-	if ( icmp->type != ICMP_ECHO_REQUEST ) {
+	/* Always discard, responding to pings is more than most systems do in this state and 
+	 * gPXE is in a relatively precarious position, resource management wise, and thus it is
+         * easier just to disable this function. */
+	/* if ( icmp->type != ICMP_ECHO_REQUEST ) { */
 		DBG ( "ICMP ignoring type %d\n", icmp->type );
 		rc = 0;
 		goto done;
-	}
+	/* } */
 
 	DBG ( "ICMP responding to ping\n" );
 
diff -urN gpxe-0.9.7/src/net/tcp.c gpxe-0.9.7-ignorepackets/src/net/tcp.c
--- gpxe-0.9.7/src/net/tcp.c	2009-03-01 21:23:42.000000000 -0500
+++ gpxe-0.9.7-ignorepackets/src/net/tcp.c	2009-07-02 14:00:46.000000000 -0400
@@ -904,7 +904,11 @@
 
 	/* If no connection was found, send RST */
 	if ( ! tcp ) {
-		tcp_xmit_reset ( tcp, st_src, tcphdr );
+		/* We simply drop unrecognized TCP connections.  Hopefully, this is no worse than I typically set up a firewall.
+		 * If we try to even remotely respond to random TCP streams, it can exhaust gPXE resources easily in a very large
+		 * environment */
+		/* tcp_xmit_reset ( tcp, st_src, tcphdr ); Don't consume precious outbound resource for irrelevant communication. */
+		
 		rc = -ENOTCONN;
 		goto discard;
 	}
