<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Routers treat HTTPS and HTTP traffic differently</title>
	<atom:link href="http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/feed/" rel="self" type="application/rss+xml" />
	<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/</link>
	<description></description>
	<lastBuildDate>Sat, 13 Mar 2010 05:49:24 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Ryu</title>
		<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/comment-page-1/#comment-782</link>
		<dc:creator>Ryu</dc:creator>
		<pubDate>Wed, 21 Oct 2009 18:27:25 +0000</pubDate>
		<guid isPermaLink="false">http://markmaunder.com/?p=313#comment-782</guid>
		<description>I&#039;d add that I _do_ see the same behaviour as you when visiting paypal.com. But this is definitely not a universal web server / https truth. :) 

-------
# tcpdump -v src www.paypal.com and tcp port 443
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:25:15.536007 IP (tos 0x0, ttl 246, id 52428, offset 0, flags [DF], proto TCP (6), length 44) 66.211.169.65.https &gt; my.host.here.59435: S, cksum 0x26b7 (correct), 1966361028:1966361028(0) ack 2475762734 win 8190 
13:25:15.585680 IP (tos 0x0, ttl 246, id 19924, offset 0, flags [DF], proto TCP (6), length 1420) 66.211.169.65.https &gt; my.host.here.59435: P 1:1381(1380) ack 114 win 40845
13:25:15.585794 IP (tos 0x0, ttl 246, id 20436, offset 0, flags [DF], proto TCP (6), length 1420) 66.211.169.65.https &gt; my.host.here.59435: P 1381:2761(1380) ack 114 win 40845
13:25:15.585903 IP (tos 0x0, ttl 246, id 20948, offset 0, flags [DF], proto TCP (6), length 1420) 66.211.169.65.https &gt; my.host.here.59435: P 2761:4141(1380) ack 114 win 40845
13:25:15.585932 IP (tos 0x0, ttl 246, id 21460, offset 0, flags [DF], proto TCP (6), length 243) 66.211.169.65.https &gt; my.host.here.59435: P 4141:4344(203) ack 114 win 40845
13:25:15.837024 IP (tos 0x0, ttl 246, id 54784, offset 0, flags [DF], proto TCP (6), length 40) 66.211.169.65.https &gt; my.host.here.59435: ., cksum 0xad2c (correct), ack 304 win 40655
13:25:15.837831 IP (tos 0x0, ttl 246, id 62464, offset 0, flags [DF], proto TCP (6), length 91) 66.211.169.65.https &gt; my.host.here.59435: P 4344:4395(51) ack 304 win 40655
13:25:15.887928 IP (tos 0x0, ttl 246, id 59400, offset 0, flags [DF], proto TCP (6), length 40) 66.211.169.65.https &gt; my.host.here.59435: ., cksum 0xacf9 (correct), ack 1005 win 39954
13:25:16.461813 IP (tos 0x0, ttl 246, id 22901, offset 0, flags [DF], proto TCP (6), length 1005) 66.211.169.65.https &gt; my.host.here.59435: P 4395:5360(965) ack 1005 win 39954
13:25:16.461832 IP (tos 0x0, ttl 246, id 25973, offset 0, flags [DF], proto TCP (6), length 77) 66.211.169.65.https &gt; my.host.here.59435: P, cksum 0xe9cc (correct), 5360:5397(37) ack 1005 win 39954
-------</description>
		<content:encoded><![CDATA[<p>I&#8217;d add that I _do_ see the same behaviour as you when visiting paypal.com. But this is definitely not a universal web server / https truth. <img src='http://markmaunder.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>&#8212;&#8212;-<br />
# tcpdump -v src <a href="http://www.paypal.com" rel="nofollow">http://www.paypal.com</a> and tcp port 443<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes<br />
13:25:15.536007 IP (tos 0&#215;0, ttl 246, id 52428, offset 0, flags [DF], proto TCP (6), length 44) 66.211.169.65.https &gt; my.host.here.59435: S, cksum 0&#215;26b7 (correct), 1966361028:1966361028(0) ack 2475762734 win 8190<br />
13:25:15.585680 IP (tos 0&#215;0, ttl 246, id 19924, offset 0, flags [DF], proto TCP (6), length 1420) 66.211.169.65.https &gt; my.host.here.59435: P 1:1381(1380) ack 114 win 40845<br />
13:25:15.585794 IP (tos 0&#215;0, ttl 246, id 20436, offset 0, flags [DF], proto TCP (6), length 1420) 66.211.169.65.https &gt; my.host.here.59435: P 1381:2761(1380) ack 114 win 40845<br />
13:25:15.585903 IP (tos 0&#215;0, ttl 246, id 20948, offset 0, flags [DF], proto TCP (6), length 1420) 66.211.169.65.https &gt; my.host.here.59435: P 2761:4141(1380) ack 114 win 40845<br />
13:25:15.585932 IP (tos 0&#215;0, ttl 246, id 21460, offset 0, flags [DF], proto TCP (6), length 243) 66.211.169.65.https &gt; my.host.here.59435: P 4141:4344(203) ack 114 win 40845<br />
13:25:15.837024 IP (tos 0&#215;0, ttl 246, id 54784, offset 0, flags [DF], proto TCP (6), length 40) 66.211.169.65.https &gt; my.host.here.59435: ., cksum 0xad2c (correct), ack 304 win 40655<br />
13:25:15.837831 IP (tos 0&#215;0, ttl 246, id 62464, offset 0, flags [DF], proto TCP (6), length 91) 66.211.169.65.https &gt; my.host.here.59435: P 4344:4395(51) ack 304 win 40655<br />
13:25:15.887928 IP (tos 0&#215;0, ttl 246, id 59400, offset 0, flags [DF], proto TCP (6), length 40) 66.211.169.65.https &gt; my.host.here.59435: ., cksum 0xacf9 (correct), ack 1005 win 39954<br />
13:25:16.461813 IP (tos 0&#215;0, ttl 246, id 22901, offset 0, flags [DF], proto TCP (6), length 1005) 66.211.169.65.https &gt; my.host.here.59435: P 4395:5360(965) ack 1005 win 39954<br />
13:25:16.461832 IP (tos 0&#215;0, ttl 246, id 25973, offset 0, flags [DF], proto TCP (6), length 77) 66.211.169.65.https &gt; my.host.here.59435: P, cksum 0xe9cc (correct), 5360:5397(37) ack 1005 win 39954<br />
&#8212;&#8212;-</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryu</title>
		<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/comment-page-1/#comment-781</link>
		<dc:creator>Ryu</dc:creator>
		<pubDate>Wed, 21 Oct 2009 18:20:03 +0000</pubDate>
		<guid isPermaLink="false">http://markmaunder.com/?p=313#comment-781</guid>
		<description>@Mark: 

I am not seeing the behaviour you&#039;re describing. Take https://gmail.com for instance: 

-------
# tcpdump -v src mail.google.com and tcp port 443
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:17:40.901281 IP (tos 0x0, ttl 51, id 21756, offset 0, flags [none], proto TCP (6), length 60) gy-in-f17.1e100.net.https &gt; my.host.here.53272: S, cksum 0xf329 (correct), 616756817:616756817(0) ack 3946542441 win 5672 
13:17:40.928660 IP (tos 0x0, ttl 51, id 21757, offset 0, flags [none], proto TCP (6), length 52) gy-in-f17.1e100.net.https &gt; my.host.here.53272: ., cksum 0x36fc (correct), ack 115 win 89 
13:17:40.929612 IP (tos 0x0, ttl 51, id 21758, offset 0, flags [none], proto TCP (6), length 1470) gy-in-f17.1e100.net.https &gt; my.host.here.53272: . 1:1419(1418) ack 115 win 89 
13:17:40.929671 IP (tos 0x0, ttl 51, id 21759, offset 0, flags [none], proto TCP (6), length 331) gy-in-f17.1e100.net.https &gt; my.host.here.53272: P 1419:1698(279) ack 115 win 89 
13:17:40.960292 IP (tos 0x0, ttl 51, id 21760, offset 0, flags [none], proto TCP (6), length 278) gy-in-f17.1e100.net.https &gt; my.host.here.53272: P 1698:1924(226) ack 301 win 106 
13:17:41.027614 IP (tos 0x0, ttl 51, id 21761, offset 0, flags [none], proto TCP (6), length 52) gy-in-f17.1e100.net.https &gt; my.host.here.53272: ., cksum 0x2ae5 (correct), ack 1088 win 130 
13:17:41.157382 IP (tos 0x0, ttl 51, id 21762, offset 0, flags [none], proto TCP (6), length 828) gy-in-f17.1e100.net.https &gt; my.host.here.53272: P 1924:2700(776) ack 1088 win 130 
13:17:41.158629 IP (tos 0x0, ttl 51, id 21763, offset 0, flags [none], proto TCP (6), length 397) gy-in-f17.1e100.net.https &gt; my.host.here.53272: P 2700:3045(345) ack 1088 win 130 
-------</description>
		<content:encoded><![CDATA[<p>@Mark: </p>
<p>I am not seeing the behaviour you&#8217;re describing. Take <a href="https://gmail.com" rel="nofollow">https://gmail.com</a> for instance: </p>
<p>&#8212;&#8212;-<br />
# tcpdump -v src mail.google.com and tcp port 443<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes<br />
13:17:40.901281 IP (tos 0&#215;0, ttl 51, id 21756, offset 0, flags [none], proto TCP (6), length 60) gy-in-f17.1e100.net.https &gt; my.host.here.53272: S, cksum 0xf329 (correct), 616756817:616756817(0) ack 3946542441 win 5672<br />
13:17:40.928660 IP (tos 0&#215;0, ttl 51, id 21757, offset 0, flags [none], proto TCP (6), length 52) gy-in-f17.1e100.net.https &gt; my.host.here.53272: ., cksum 0&#215;36fc (correct), ack 115 win 89<br />
13:17:40.929612 IP (tos 0&#215;0, ttl 51, id 21758, offset 0, flags [none], proto TCP (6), length 1470) gy-in-f17.1e100.net.https &gt; my.host.here.53272: . 1:1419(1418) ack 115 win 89<br />
13:17:40.929671 IP (tos 0&#215;0, ttl 51, id 21759, offset 0, flags [none], proto TCP (6), length 331) gy-in-f17.1e100.net.https &gt; my.host.here.53272: P 1419:1698(279) ack 115 win 89<br />
13:17:40.960292 IP (tos 0&#215;0, ttl 51, id 21760, offset 0, flags [none], proto TCP (6), length 278) gy-in-f17.1e100.net.https &gt; my.host.here.53272: P 1698:1924(226) ack 301 win 106<br />
13:17:41.027614 IP (tos 0&#215;0, ttl 51, id 21761, offset 0, flags [none], proto TCP (6), length 52) gy-in-f17.1e100.net.https &gt; my.host.here.53272: ., cksum 0&#215;2ae5 (correct), ack 1088 win 130<br />
13:17:41.157382 IP (tos 0&#215;0, ttl 51, id 21762, offset 0, flags [none], proto TCP (6), length 828) gy-in-f17.1e100.net.https &gt; my.host.here.53272: P 1924:2700(776) ack 1088 win 130<br />
13:17:41.158629 IP (tos 0&#215;0, ttl 51, id 21763, offset 0, flags [none], proto TCP (6), length 397) gy-in-f17.1e100.net.https &gt; my.host.here.53272: P 2700:3045(345) ack 1088 win 130<br />
&#8212;&#8212;-</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mark</title>
		<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/comment-page-1/#comment-776</link>
		<dc:creator>mark</dc:creator>
		<pubDate>Tue, 20 Oct 2009 21:45:03 +0000</pubDate>
		<guid isPermaLink="false">http://markmaunder.com/?p=313#comment-776</guid>
		<description>Dmitriy I tried to email this to you but it bounced:

Hi Dmitriy,

Any chance you can send me a packet capture of an SSL session where you&#039;re seeing that the DF flag isn&#039;t set? I&#039;ve only ever seen the DF flag set for HTTPS and I&#039;m very interested in what you&#039;re seeing. Just add -w filename.dump to your tcpdump options. My email is mmaunder at gmail dot com.

Thanks!!

Mark.</description>
		<content:encoded><![CDATA[<p>Dmitriy I tried to email this to you but it bounced:</p>
<p>Hi Dmitriy,</p>
<p>Any chance you can send me a packet capture of an SSL session where you&#8217;re seeing that the DF flag isn&#8217;t set? I&#8217;ve only ever seen the DF flag set for HTTPS and I&#8217;m very interested in what you&#8217;re seeing. Just add -w filename.dump to your tcpdump options. My email is mmaunder at gmail dot com.</p>
<p>Thanks!!</p>
<p>Mark.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitriy</title>
		<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/comment-page-1/#comment-775</link>
		<dc:creator>Dmitriy</dc:creator>
		<pubDate>Tue, 20 Oct 2009 21:37:16 +0000</pubDate>
		<guid isPermaLink="false">http://markmaunder.com/?p=313#comment-775</guid>
		<description>@Mark

You can open dump files with tcpdump on Linux with &quot;tcpdump -r filename&quot; and you can see whether packets have DF set or not in tcpdump by calling it with a couple of extra -v flags (tcpdump -vv). Even though yes, Wireshark rulez :)

I used the same methodology for my tests - and I am still not able to recreate it under Linux or Mac OS X, with wget or curl.

I am not trying to say that your findings are wrong, esp. since they are based on a real-life scenario that you were troubleshooting.

I just think there might be more to it, some factor that hasn&#039;t been uncovered yet.</description>
		<content:encoded><![CDATA[<p>@Mark</p>
<p>You can open dump files with tcpdump on Linux with &#8220;tcpdump -r filename&#8221; and you can see whether packets have DF set or not in tcpdump by calling it with a couple of extra -v flags (tcpdump -vv). Even though yes, Wireshark rulez <img src='http://markmaunder.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I used the same methodology for my tests &#8211; and I am still not able to recreate it under Linux or Mac OS X, with wget or curl.</p>
<p>I am not trying to say that your findings are wrong, esp. since they are based on a real-life scenario that you were troubleshooting.</p>
<p>I just think there might be more to it, some factor that hasn&#8217;t been uncovered yet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mark</title>
		<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/comment-page-1/#comment-774</link>
		<dc:creator>mark</dc:creator>
		<pubDate>Tue, 20 Oct 2009 20:45:33 +0000</pubDate>
		<guid isPermaLink="false">http://markmaunder.com/?p=313#comment-774</guid>
		<description>I&#039;m not sure why DF seems to be set on all SSL traffic. You can find out how to set up PMTUD on a socket which causes the DF flag to be set here:

http://manpages.ubuntu.com/manpages/jaunty/man7/ip.7.html

Also Google the socket option IP_MTU_DISCOVER. I&#039;ve seen a few results that bring up openssl source code. 

I also saw a mention of the bonk attack being a DoS for fragmented packets and it may be related to why SSL authors set IP_MTU_DISCOVER on their servers. 

Please do share what you find.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure why DF seems to be set on all SSL traffic. You can find out how to set up PMTUD on a socket which causes the DF flag to be set here:</p>
<p><a href="http://manpages.ubuntu.com/manpages/jaunty/man7/ip.7.html" rel="nofollow">http://manpages.ubuntu.com/manpages/jaunty/man7/ip.7.html</a></p>
<p>Also Google the socket option IP_MTU_DISCOVER. I&#8217;ve seen a few results that bring up openssl source code. </p>
<p>I also saw a mention of the bonk attack being a DoS for fragmented packets and it may be related to why SSL authors set IP_MTU_DISCOVER on their servers. </p>
<p>Please do share what you find.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Swoög</title>
		<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/comment-page-1/#comment-772</link>
		<dc:creator>Swoög</dc:creator>
		<pubDate>Tue, 20 Oct 2009 20:01:09 +0000</pubDate>
		<guid isPermaLink="false">http://markmaunder.com/?p=313#comment-772</guid>
		<description>That&#039;s interesting... It does not seem to be any restriction (neither in the protocol, nor in technical implementation) justifying the DF option to be on for encrypted protocols...

Why implementers did so ? is there a reasonable explanation of that or is it just &quot;feature-not-a-bug&quot; they thought useful ?

Swoög</description>
		<content:encoded><![CDATA[<p>That&#8217;s interesting&#8230; It does not seem to be any restriction (neither in the protocol, nor in technical implementation) justifying the DF option to be on for encrypted protocols&#8230;</p>
<p>Why implementers did so ? is there a reasonable explanation of that or is it just &#8220;feature-not-a-bug&#8221; they thought useful ?</p>
<p>Swoög</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mark</title>
		<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/comment-page-1/#comment-771</link>
		<dc:creator>mark</dc:creator>
		<pubDate>Tue, 20 Oct 2009 19:52:56 +0000</pubDate>
		<guid isPermaLink="false">http://markmaunder.com/?p=313#comment-771</guid>
		<description>Hi Dmitri,

Sure. On another user&#039;s suggestion I&#039;ve included a reference to PMTUD which is what I&#039;m describing in the ICMP example.

The DF/non-DF data is from my own research. I was recently diagnosing a network problem that existed via HTTPS and not HTTP and discovered the difference. On Linux, most secure protocols like SCP, SSH and HTTPS set the DF flag on IP packets. 

You can duplicate my research as follows:

Run the following command on your linux box to capture all SSL packets inbound and outbound. I&#039;m assuming your ethernet card that will see the traffic is eth0:

tcpdump -w dump1.dump -s 1600 -i eth0 port 443

Then fetch a secure web document from your linux box using curl or your favorite command line web client:

curl -k --connect-timeout 20 --max-time 60 -v &quot;https://www.paypal.com/&quot;

Then hit CTRL-C to stop the tcpdump capture. Copy dump1.dump to your local machine. Install Wireshark (google it). 

Then open the captured file with Wireshark. Click one of the data packets. Look at the IP part of the packet and you&#039;ll see the DF flag is set.

Now repeat the process above, but modify the tcpdump port to be 80 and fetch a regular web document from a non-secure site. You&#039;ll notice the packets do not have the DF flag set. 

You can test this on a variety of protocols. Try it on SSH and SCP. Also note the size of the packets that are being captured in each case. With things like SSH the packets are small - usually single keystrokes. With HTTPS they are very large which is why MTU problems manifest themselves with HTTPS but not SSH which also has the DF flag set.

Mark.</description>
		<content:encoded><![CDATA[<p>Hi Dmitri,</p>
<p>Sure. On another user&#8217;s suggestion I&#8217;ve included a reference to PMTUD which is what I&#8217;m describing in the ICMP example.</p>
<p>The DF/non-DF data is from my own research. I was recently diagnosing a network problem that existed via HTTPS and not HTTP and discovered the difference. On Linux, most secure protocols like SCP, SSH and HTTPS set the DF flag on IP packets. </p>
<p>You can duplicate my research as follows:</p>
<p>Run the following command on your linux box to capture all SSL packets inbound and outbound. I&#8217;m assuming your ethernet card that will see the traffic is eth0:</p>
<p>tcpdump -w dump1.dump -s 1600 -i eth0 port 443</p>
<p>Then fetch a secure web document from your linux box using curl or your favorite command line web client:</p>
<p>curl -k &#8211;connect-timeout 20 &#8211;max-time 60 -v &#8220;https://www.paypal.com/&#8221;</p>
<p>Then hit CTRL-C to stop the tcpdump capture. Copy dump1.dump to your local machine. Install Wireshark (google it). </p>
<p>Then open the captured file with Wireshark. Click one of the data packets. Look at the IP part of the packet and you&#8217;ll see the DF flag is set.</p>
<p>Now repeat the process above, but modify the tcpdump port to be 80 and fetch a regular web document from a non-secure site. You&#8217;ll notice the packets do not have the DF flag set. </p>
<p>You can test this on a variety of protocols. Try it on SSH and SCP. Also note the size of the packets that are being captured in each case. With things like SSH the packets are small &#8211; usually single keystrokes. With HTTPS they are very large which is why MTU problems manifest themselves with HTTPS but not SSH which also has the DF flag set.</p>
<p>Mark.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitriy</title>
		<link>http://markmaunder.com/2009/routers-treat-https-and-http-traffic-differently/comment-page-1/#comment-770</link>
		<dc:creator>Dmitriy</dc:creator>
		<pubDate>Tue, 20 Oct 2009 19:44:43 +0000</pubDate>
		<guid isPermaLink="false">http://markmaunder.com/?p=313#comment-770</guid>
		<description>Interesting. I just did a quick test and I saw both client and server set DF when talking either HTTP or HTTPS.

A quick grep on RFC2818 did not reveal any mentions of DF either.

Could you please describe sources based on which you reached this conclusion? Will greatly appreciate it!

Thanks.</description>
		<content:encoded><![CDATA[<p>Interesting. I just did a quick test and I saw both client and server set DF when talking either HTTP or HTTPS.</p>
<p>A quick grep on RFC2818 did not reveal any mentions of DF either.</p>
<p>Could you please describe sources based on which you reached this conclusion? Will greatly appreciate it!</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
