<font face="times new roman" size="3"><p style="margin:0;padding:0;">I think you can intercept and drop the ICMP packet from userspace as well, if you have the right modules installed in iptables/Xtables.  But I haven't looked closely lately  (I just patched the kernel code in a kernel that probably predated iptables itself).  Probably need "root", but on the router itself, you have root.</p>
<p style="margin:0;padding:0;"> </p>
<p style="margin:0;padding:0;">This CMTS-queue-management is a router function anyway, for the router adjacent to the cable modem/CMTS.  Using it from ordinary clients and servers probably just generates randomness.</p>
<p style="margin:0;padding:0;"> </p>
<p style="margin:0;padding:0;">The only difference from tcptraceroute (note the tcp in front) is that you sneak into an active TCP connection selected for active full size packet transfer.</p>
<p style="margin:0;padding:0;"> </p>
<p style="margin:0;padding:0;">I'll have to trace the logic in the current Internet stack in the latest kernels, but I'm pretty sure that iptables processes packets very low in the stack.  It ought to - one of the things you might want to do is reject forged ICMP packets, or not forward them.</p>
<p style="margin:0;padding:0;"> </p>
<p style="margin:0;padding:0;">-----Original Message-----<br />From: "Michael Richardson" <mcr@sandelman.ca><br />Sent: Monday, November 26, 2012 4:27pm<br />To: dpreed@reed.com<br />Cc: cerowrt-users@lists.bufferbloat.net, cerowrt-devel@lists.bufferbloat.net<br />Subject: Re: [Cerowrt-devel] [Cerowrt-users] QOS settings vs speedboost and random bandwidth<br /><br /></p>
<div id="SafeStyles1353968321"><br />>>>>> "dpreed" == dpreed  <dpreed@reed.com> writes:<br /> dpreed> It observed the IPv4 headers of *large* TCP/IP datagrams<br /> dpreed> going upstream, so that it could construct "no-op"<br /> dpreed> "content-free" datagrams that would certainly pass muster<br /> dpreed> through all the filters and be routed exactly the same as<br /> dpreed> the TCP/IP datagrams  that were carrying large flows.  It<br /> dpreed> would remember only the most recent one. <br /><br />I don't know that you need to be so precise in creating the packet, but<br />I guess the point is not just the ACLs, but also any traffic shapers?<br /><br /> dpreed> The TTL expiration causes an ICMP packet to be sent back.<br /> dpreed> My code intercepts that packet based on its contents, and<br /> dpreed> removes it as "handled" before it gets processed by the<br /> dpreed> TCP/IP state machines. <br /><br />This is perhaps the biggest problem with this method... having to remove<br />the magic ICMP so that it does no harm.  Without this requirement, it<br />could be done entirely in userspace I think.<br /><br />-- <br />]       He who is tired of Weird Al is tired of life!           |  firewalls  [<br />]   Michael Richardson, Sandelman Software Works, Ottawa, ON    |net architect[<br />] mcr@sandelman.ottawa.on.ca http://www.sandelman.ottawa.on.ca/ |device driver[<br /> Kyoto Plus: watch the video <http://www.youtube.com/watch?v=kzx1ycLXQSE><br /> then sign the petition.</div></font>