<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>tdistler.com &#187; network</title>
	<atom:link href="http://tdistler.com/tag/network/feed" rel="self" type="application/rss+xml" />
	<link>http://tdistler.com</link>
	<description>&#34;To err is human, but to really foul things up you need a computer.”</description>
	<lastBuildDate>Wed, 16 May 2012 03:00:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Netem WAN Emulation: How to Setup a Netem Box</title>
		<link>http://tdistler.com/2011/06/10/netem-wan-emulation-how-to-setup-a-netem-box</link>
		<comments>http://tdistler.com/2011/06/10/netem-wan-emulation-how-to-setup-a-netem-box#comments</comments>
		<pubDate>Sat, 11 Jun 2011 00:33:43 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Tech and Security]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://tdistler.com/?p=973</guid>
		<description><![CDATA[Instructions for building and configuring a Netem box to simulate a WAN connection using Fedora 14.]]></description>
			<content:encoded><![CDATA[<p><a title="Netem" href="http://www.linuxfoundation.org/collaborate/workgroups/networking/netem" target="_blank">Netem</a> is a great tool for simulating a WAN connection, with all the expected latency, jitter, packet loss, duplication, and bandwidth limitations. These instructions walk you through setting up a machine that sits between your server and client that emulates the behavior of a WAN connection. I use <a title="Fedora Linux Project" href="http://fedoraproject.org/" target="_blank">Fedora 14</a>, so your distro may be a little different, but hopefully this post gets you pointed in the right direction.</p>
<p>The picture below shows the 2 most common configurations for a Netem box:</p>
<p><a href="http://tdistler.com/wp-content/uploads/2011/06/netem_setup.jpg"><img class="aligncenter size-full wp-image-975" title="netem_setup" src="http://tdistler.com/wp-content/uploads/2011/06/netem_setup.jpg" alt="Netem Box Setup" width="449" height="295" /></a></p>
<p>I&#8217;ve always used the first configuration, but it doesn&#8217;t really matter.</p>
<h2>1. Find a Suitable System</h2>
<ul>
<li>Any &#8220;reasonable&#8221; machine that can run Fedora 14 (I use an old Pentium 4 box since I don&#8217;t need to simulate a high-speed link)</li>
<li>It must have 2 network interfaces</li>
<li>It&#8217;s nice to use a smaller box if you want it to be portable</li>
</ul>
<h2>2. Install <code>bridge-utils</code></h2>
<p>Make sure you are <code>root</code>, and run:</p>
<p><code>brctl</code></p>
<p>to see if <code>bridge-utils</code> is installed. If it isn&#8217;t, run:</p>
<p><code>yum install bridge-utils</code>.<span id="more-973"></span></p>
<h2>3. Bridge the 2 Network Interfaces</h2>
<p>First make sure to clear the network configuration for your interfaces:</p>
<p><code>ifconfig eth0 0.0.0.0<br />
ifconfig eth1 0.0.0.0</code></p>
<p>Then create the bridge and bring it up:</p>
<p><code>brctl addbr br0<br />
brctl setfd br0 0<br />
brctl addif br0 eth0<br />
brctl addif br0 eth1<br />
ifconfig br0 up</code></p>
<p>Note that we disable the forwarding delay (&#8216;setfd&#8217;). This makes the bridge pass traffic through it immediately instead of the configured delay time.</p>
<p>One final set I had to perform is disabling kernel-level filtering on the bridge. This is done by writing <code>0</code> to the bridge nodes under proc:</p>
<p><code>for f in /proc/sys/net/bridge-*; do echo 0 &gt; $f; done</code></p>
<p>Note: If for some reason none of this works for you, check out <a title="Linux Foundation: Network Bridging" href="http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge" target="_blank">the Linux Foundation page on network bridging</a>.</p>
<h2>4. Configure Netem</h2>
<p>Netem is actually used in conjunction with the Traffic Control application, <code>tc</code>. I&#8217;m not going to go into detail here, but suffice it to say that <code>tc</code> allows you to do packet shaping and adjust packet scheduling. <a title="Traffic Control man page" href="http://linux.die.net/man/8/tc" target="_blank">Check out the <code>tc</code> man page for more information</a>.</p>
<p><code>tc</code> allows you to specify the &#8220;queueing discipline&#8221; (or &#8220;qdisc&#8221; for short) used for sending <strong>outbound</strong> packets on an interface (the fact that it operates on outbound packets only is important to remember). Basically, a qdisc defines how outbound packets are ordered and sent. To view the current qdisc setup on your box, type:</p>
<p><code>tc qdisc</code></p>
<p>The default qdisc is pfifo_fast. We&#8217;re going to change this to use a combination of Netem and <a title="Token Bucket Filter" href="http://linux.die.net/man/8/tc-tbf" target="_blank">Token Bucket Filter</a>.</p>
<p><strong>Note:</strong> For the following examples, I assume <code>eth0</code> is connected to the network (client-side), and <code>eth1</code> is <em>directly</em> connected to the server.</p>
<h3>Limiting Bandwidth</h3>
<p>The <a title="Token Bucket Filter" href="http://linux.die.net/man/8/tc-tbf" target="_blank">Token Bucket Filter</a> (tbf) is used to limit how much data can exit the network interface per second&#8230; perfect for simulating WAN bandwidth limitations. Let&#8217;s assume we want to emulate a client-side WAN connection of 768kbps down and 128kbps up. Assuming the server is connected to <code>eth1</code>, the <code>eth1</code> interface receives inbound traffic from the server and <code>eth0</code> sends that traffic outbound to the client. Since we know the a qdisc works on outbound traffic only, we need to limit <code>eth0</code> for our download speed of 768kbps. Conversely, we configure <code>eth1</code> for our upload speed of 128kbps.</p>
<p><code>tc qdisc replace dev eth0 root handle 1:0 tbf rate 768kbit burst 2048 latency 100ms</code></p>
<p><code>tc qdisc replace dev eth1 root handle 2:0 tbf rate 128kbit burst 2048 latency 100ms</code></p>
<p>We use the &#8216;replace&#8217; command to overwrite any qdisc setting that&#8217;s there (you can use the &#8216;del&#8217; command to simple remove qdiscs). We set the qdisc as the &#8216;<code>root</code>&#8216; of the tree, and configure the tbf &#8216;<code>rate</code>&#8216; accordingly. The &#8216;<code>burst</code>&#8216; and &#8216;<code>latency</code>&#8216; parameters control the initial number of tokens in the bucket and how long queued packet can hang around before being dropped, respectively.</p>
<h3>Adding Latency</h3>
<p>We can append qdiscs that will allows us to use different tools to control how our simulated WAN behaves. In this example, I&#8217;ll use Netem to artifically add 57ms of latency to the download connection with a random variantion of +/- 13ms:</p>
<p><code>tc qdisc add dev eth0 parent 1:1 handle 10: netem delay 57ms 13ms</code></p>
<h3>And So Much More&#8230;</h3>
<p>The <a title="Netem Examples" href="http://www.linuxfoundation.org/collaborate/workgroups/networking/netem" target="_blank">Netem page on the Linux Foundation website</a> has many other great examples, so there&#8217;s no point in me copying them here. If you&#8217;ve made it this far and are still interested, I highly encourage you to check out their page.</p>
]]></content:encoded>
			<wfw:commentRss>http://tdistler.com/2011/06/10/netem-wan-emulation-how-to-setup-a-netem-box/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>xkcd: IPv6</title>
		<link>http://tdistler.com/2011/03/04/xkcd-ipv6</link>
		<comments>http://tdistler.com/2011/03/04/xkcd-ipv6#comments</comments>
		<pubDate>Fri, 04 Mar 2011 18:52:53 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Oh So Random]]></category>
		<category><![CDATA[Tech and Security]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://tdistler.com/?p=819</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://xkcd.com/865/"><img class="aligncenter" src="http://imgs.xkcd.com/comics/nanobots.png" alt="xkcd: Nanobots" width="592" height="201" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tdistler.com/2011/03/04/xkcd-ipv6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-Platform IPv6 Socket Programming</title>
		<link>http://tdistler.com/2011/02/28/cross-platform-ipv6-socket-programming</link>
		<comments>http://tdistler.com/2011/02/28/cross-platform-ipv6-socket-programming#comments</comments>
		<pubDate>Tue, 01 Mar 2011 04:00:39 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Code Monkey]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://tdistler.com/?p=793</guid>
		<description><![CDATA[Writing code that works on Windows, Linux, and Mac is frequently challenging. Socket programming is no exception. Modern versions of Linux and Mac have full implementations of the latest IPv6 socket API extensions defined in RFC 3493. Windows, however, has only a partial implementation of the original (deprecated) version, RFC 2553. This sounds worse than [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tdistler.com/wp-content/uploads/2011/02/network.jpg"><img class="alignright size-thumbnail wp-image-795" title="network" src="http://tdistler.com/wp-content/uploads/2011/02/network-150x150.jpg" alt="IPv6 Networking" width="150" height="150" /></a>Writing code that works on Windows, Linux, and Mac is frequently challenging. Socket programming is no exception. Modern versions of Linux and Mac have full implementations of the latest IPv6 socket API extensions defined in <a title="IETF RFC 3493" href="http://tools.ietf.org/html/rfc3493" target="_blank">RFC 3493</a>. Windows, however, has only a partial implementation of the original (deprecated) version, <a title="IETF RFC 2553" href="http://tools.ietf.org/html/rfc2553" target="_blank">RFC 2553</a>. This sounds worse than it is, but it&#8217;s something you have to consider.</p>
<p><em><strong>Note</strong></em>: This post assumes you are already familiar with the socket extensions for IPv6 (<a title="IETF RFC 3493" href="http://tools.ietf.org/html/rfc3493" target="_blank">RFC 3493</a>).</p>
<p><strong>Linux and Mac</strong><br />
Good news&#8230; they both fully support <a title="IETF RFC 3493" href="http://tools.ietf.org/html/rfc3493" target="_blank">RFC 3493</a>.</p>
<p><strong>Windows</strong><br />
Windows IPv6 support varies based on which version you&#8217;re targeting. Microsoft started adding IPv6 in Windows 2000, and they&#8217;ve continued adding more of the socket extensions as time went on. Most of the core functionality is present in XP, and what&#8217;s missing is easily replaced by using Winsock calls directly (more on this later).</p>
<p>Windows gained IPv6 support while <a title="IETF RFC 2553" href="http://tools.ietf.org/html/rfc2553" target="_blank">RFC 2553</a> was still the supported standard. Since then, it has been deprecated by <a title="IETF RFC 3493" href="http://tools.ietf.org/html/rfc3493" target="_blank">RFC 3493</a>. However, Microsoft doesn&#8217;t want to break existing code written against it&#8217;s API, so the older API lives on. The main impact of this is that <code>sockaddr_in6</code> and <code>sockaddr_storage</code> are slightly different on Windows than Mac and Linux. The size of the structures across platforms is the same (the <code>sa_family_t</code> member was shortened), it&#8217;s just that the Windows structures don&#8217;t begin with the length member. For example:</p>
<pre><code>// Linux and Mac
struct sockaddr_in6 {
    uint8_t      sin6_len;    /* Added in RFC 3493 */
    sa_family_t  sin6_family;
    ...
};
struct sockaddr_storage {
    uint8_t      ss_len;      /* Added in RFC 3493 */
    sa_family_t  ss_family;
    ...
};

// Windows
struct sockaddr_in6 {
    sa_family_t  sin6_family;
    ...
};
struct sockaddr_storage {
    sa_family_t  ss_family;
    ...
};</code></pre>
<p>I&#8217;ve never had a problem with this, because the size of <code>sockaddr_in6</code> is easily determined (<code>sizeof(sockaddr_in6)</code>) and I always end up casting <code>sockaddr_storage</code> to the specific type (<code>sockaddr_in</code> or <code>sockaddr_in6</code>) based on <code>ss_family</code>.</p>
<p>Besides the data structure differences, it&#8217;s important to remember that Microsoft added IPv6 support over multiple versions. Support first appeared in Windows 2000, but more of the extensions have been added over time. Most of the core functionality was present in XP (including multicast), but not everything is implemented as of Windows 7. It&#8217;s annoying, but I will say that what&#8217;s missing is easily replaced by using Winsock calls directly.</p>
<p>Here&#8217;s the breakdown of IPv6 socket extensions by Windows version:</p>
<table border="1" width="570">
<tbody><!-- Results table headers --></p>
<tr>
<th>Socket Extension</th>
<th>2K</th>
<th>XP</th>
<th>Vista</th>
<th>7</th>
<th>Comments</th>
</tr>
<tr>
<td>if_indextoname()</td>
<td></td>
<td></td>
<td>x</td>
<td>x</td>
<td>GetAdaptersAddresses() for XP</td>
</tr>
<tr>
<td>if_nametoindex()</td>
<td></td>
<td></td>
<td>x</td>
<td>x</td>
<td>GetAdaptersAddresses() for XP</td>
</tr>
<tr>
<td>if_nameindex()</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>GetAdaptersAddresses() (XP, later)</td>
</tr>
<tr>
<td>if_freenameindex()</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>getaddrinfo()</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td></td>
</tr>
<tr>
<td>getnameinfo()</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td></td>
</tr>
<tr>
<td>freeaddrinfo()</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td></td>
</tr>
<tr>
<td>gai_strerror()</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td></td>
</tr>
<tr>
<td>inet_pton()</td>
<td></td>
<td></td>
<td>x</td>
<td>x</td>
<td>WSAStringToAddress() (2000, XP)</td>
</tr>
<tr>
<td>inet_ntop()</td>
<td></td>
<td></td>
<td>x</td>
<td>x</td>
<td>WSAAddressToString() (2000, XP)</td>
</tr>
<tr>
<td>All IN6_IS_ADDR_* macros</td>
<td></td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>Ex: IN6_IS_ADDR_LOOPBACK()</td>
</tr>
<tr>
<td>struct sockaddr_storage</td>
<td></td>
<td>x</td>
<td>x</td>
<td>x</td>
<td></td>
</tr>
<tr>
<td>Multicast support</td>
<td></td>
<td>x</td>
<td>x</td>
<td>x</td>
<td></td>
</tr>
</tbody>
</table>
<p>As you can see, you may still have to call Winsock directly depending on what version of Windows you are targeting. In my opinion, programming IPv6 on Windows is a lot easier if you only support XP and later, but I know that&#8217;s not always possible.</p>
<p><strong>Summary</strong></p>
<p>Modern operating systems all support IPv6. However, for business reasons, Windows has a slightly older version of the socket API which requires special consideration. My goal was to enumerate those differences to help make the transition to IPv6 smoother. Writing cross-platform code can be a fun challenge at times, but it&#8217;s also a little tedious. Hopefully, this post helps ease the pain.</p>
]]></content:encoded>
			<wfw:commentRss>http://tdistler.com/2011/02/28/cross-platform-ipv6-socket-programming/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Test if an Address is IPv4 or IPv6</title>
		<link>http://tdistler.com/2011/02/25/how-to-test-if-an-address-is-ipv4-or-ipv6</link>
		<comments>http://tdistler.com/2011/02/25/how-to-test-if-an-address-is-ipv4-or-ipv6#comments</comments>
		<pubDate>Fri, 25 Feb 2011 19:16:33 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Code Monkey]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://tdistler.com/?p=785</guid>
		<description><![CDATA[Here&#8217;s a simple function using getaddrinfo() that will take an IP address and return the address family (AF_INET for IPv4, AF_INET6 for IPv6, etc). I works on both Linux and Windows. This function will also accept hostnames and return the address family of the first address returned. You can disable this feature (and the corresponding [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a simple function using <a title="getaddrinfo man page" href="http://linux.die.net/man/3/getaddrinfo" target="_blank">getaddrinfo()</a> that will take an IP address and return the address family (<code>AF_INET</code> for IPv4, <code>AF_INET6</code> for IPv6, etc). I works on both Linux and Windows. This function will also accept hostnames and return the address family of the first address returned. You can disable this feature (and the corresponding DNS lookup) by passing the AI_NUMERICHOST flag.<br />
<code>
<pre>
// Returns the address family of an address or hostname.
// AF_INET, AF_INET6, or -1 on error.
int getaddrfamily(const char *addr)
{
    struct addrinfo hint, *info =0;
    memset(&amp;hint, 0, sizeof(hint));
    hint.ai_family = AF_UNSPEC;
    // Uncomment this to disable DNS lookup
    //hint.ai_flags = AI_NUMERICHOST;
    int ret = getaddrinfo(addr, 0, &amp;hint, &amp;info);
    if (ret)
        return -1;
    int result = info-&gt;ai_family;
    freeaddrinfo(info);
    return result;
}</pre>
<p></code></p>
<p>See <a title="IETF RFC 3493" href="http://tools.ietf.org/html/rfc3493" target="_blank">RFC 3493</a> for more information on the latest socket API for dealing with IPv6.</p>
]]></content:encoded>
			<wfw:commentRss>http://tdistler.com/2011/02/25/how-to-test-if-an-address-is-ipv4-or-ipv6/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IP Multicast to MAC-Layer Multicast Mapping</title>
		<link>http://tdistler.com/2010/08/16/ip-multicast-to-mac-layer-multicast-mapping</link>
		<comments>http://tdistler.com/2010/08/16/ip-multicast-to-mac-layer-multicast-mapping#comments</comments>
		<pubDate>Mon, 16 Aug 2010 21:38:22 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Code Monkey]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://tdistler.com/?p=445</guid>
		<description><![CDATA[Using the Tcpreplay tools to edit a Wireshark capture (*.pcap), I wanted to change the destination address to be multicast. I knew the IP multicast address I wanted (server IP address with the first octet changed to 239), but I had to change the MAC address also. Here&#8217;s the mapping, taken from a Microsoft TechNet [...]]]></description>
			<content:encoded><![CDATA[<p>Using the <a title="TCP Replay" href="http://tcpreplay.synfin.net/" target="_blank">Tcpreplay</a> tools to edit a <a title="Wireshark" href="http://www.wireshark.org/" target="_blank">Wireshark</a> capture (*.pcap), I wanted to change the destination address to be multicast. I knew the IP multicast address I wanted (server IP address with the first octet changed to 239), but I had to change the MAC address also.</p>
<p>Here&#8217;s the mapping, taken from a Microsoft TechNet <a title="Microsoft TechNet: Mapping IP Mulitcast to MAC_layer Multicast" href="http://technet.microsoft.com/en-us/library/cc957928.aspx" target="_blank">article</a>:</p>
<blockquote><p>To support IP multicasting, the Internet authorities have reserved the multicast address range of 01-00-5E-00-00-00 to 01-00-5E-7F-FF-FF for&#8230; media access control (MAC) addresses.</p></blockquote>
<p><a href="http://tdistler.com/wp-content/uploads/2010/08/ip_mac_multicast_mapping.gif"><img class="aligncenter size-full wp-image-446" title="ip_mac_multicast_mapping" src="http://tdistler.com/wp-content/uploads/2010/08/ip_mac_multicast_mapping.gif" alt="" width="525" height="160" /></a></p>
<blockquote><p>To map an IP multicast address to a MAC-layer multicast address, the low order 23 bits of the IP multicast address are mapped directly to the low order 23 bits in the MAC-layer multicast address. Because the first 4 bits of an IP multicast address are fixed according to the class D convention, there are 5 bits in the IP multicast address that do not map to the MAC-layer multicast address. Therefore, it is possible for a host to receive MAC-layer multicast packets for groups to which it does not belong. However, these packets are dropped by IP once the destination IP address is determined.</p>
<p>For example, the multicast address 224.192.16.1 becomes 01-00-5E-40-10-01.</p></blockquote>
<p>Happy hacking!</p>
]]></content:encoded>
			<wfw:commentRss>http://tdistler.com/2010/08/16/ip-multicast-to-mac-layer-multicast-mapping/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting the DHCP Hostname on Linux</title>
		<link>http://tdistler.com/2008/10/14/setting-the-dhcp-hostname-on-linux</link>
		<comments>http://tdistler.com/2008/10/14/setting-the-dhcp-hostname-on-linux#comments</comments>
		<pubDate>Tue, 14 Oct 2008 22:59:27 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Code Monkey]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://tdistler.com/?p=141</guid>
		<description><![CDATA[I&#8217;m always forgetting how to register my machine name with the DHCP server so I can ping my box without having to remember my IP address. Here&#8217;s how to do it on Fedora Core 9: Set the hostname: `# hostname &#60;hostname&#62;` Add &#8216;HOSTNAME=&#60;hostname&#62;&#8217; to &#8216;/etc/sysconfig/network&#8217; (makes the change permanent). Add &#8216;DHCP_HOSTNAME=&#60;hostname&#62;&#8217; to &#8216;/etc/sysconfig/network-scripts/ifcfg-eth0&#8242; Restart the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m always forgetting how to register my machine name with the DHCP server so I can ping my box without having to remember my IP address. Here&#8217;s how to do it on Fedora Core 9:</p>
<ol>
<li>Set the hostname: `# hostname &lt;<em>hostname</em>&gt;`</li>
<li>Add &#8216;HOSTNAME=&lt;<em>hostname</em>&gt;&#8217; to &#8216;/etc/sysconfig/network&#8217; (makes the change permanent).</li>
<li>Add &#8216;DHCP_HOSTNAME=&lt;<em>hostname</em>&gt;&#8217; to &#8216;/etc/sysconfig/network-scripts/ifcfg-eth0&#8242;</li>
<li>Restart the networking service: `# service network restart`</li>
</ol>
<p>Volia! Now you can connect to your box via hostname.</p>
<p>References:</p>
<ul>
<li><a title="nixCraft" href="http://www.cyberciti.biz/faq/howto-get-linux-static-dhcp-address/" target="_blank">Configuring Linux Static DHCP Clients by Sending Host Name</a></li>
<li><a title="nixCraft" href="http://www.cyberciti.biz/faq/linux-setting-hostname-and-domain-name-of-my-server/" target="_blank">Linux setting hostname and domain name of my server</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tdistler.com/2008/10/14/setting-the-dhcp-hostname-on-linux/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Interview with Mastercard&#8217;s Rob Reeg</title>
		<link>http://tdistler.com/2008/07/20/interview-with-mastercards-rob-reeg</link>
		<comments>http://tdistler.com/2008/07/20/interview-with-mastercards-rob-reeg#comments</comments>
		<pubDate>Sun, 20 Jul 2008 22:10:52 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Tech and Security]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://tdistler.com/?p=125</guid>
		<description><![CDATA[CIO has a good interview with Rob Reeg, president of Mastercard&#8217;s Global Technology and Operations. He discusses their infrastructure and processing architecture. Definitely worth looking at if you&#8217;re interested in how credit card transactions are processed. Interviewer: How big of an infrastructure do you have to support and maintain? It must be huge. Reeg: Actually [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="float: right;" src="/media/images/MastercardLogo.jpg" alt="Mastercard Logo" width="136" height="84" /><a title="CIO" href="http://www.cio.com" target="_blank">CIO</a> has a good interview with Rob Reeg, president of Mastercard&#8217;s Global Technology and Operations. He discusses their infrastructure and processing architecture. Definitely worth looking at if you&#8217;re interested in how credit card transactions are processed.</p>
<blockquote><p><strong>Interviewer:</strong> How big of an infrastructure do you have to support and maintain? It  must be huge.</p>
<p><strong>Reeg:</strong> Actually from a pure server footprint standpoint&#8230; we probably have fewer actual footprint servers because of  techniques like virtualization that help us leverage one box to do multiple  things.</p>
<p>Where it gets interesting is philosophically: We try to put [transaction]  processing as close to our customers, the banks, as possible. When we talk about  the global network, we have small servers that sit with the bank customers that  connect to our network. What it does is it gives us intelligence there at the  end of the network. So as a transaction comes through, we can take a look at  that transaction and decide how do we best process that transaction for the  benefit of all those four parties in the model.</p>
<p>As to processing, the majority of transactions we&#8217;re looking at relate to how  do we process them as fast as possible in the most accurate way. The way to do  that is by peer to peer: If you&#8217;re using your card in Europe, in London, say,  and you swipe your card as you check out of hotel, we can route that transaction  to the hotel&#8217;s acquiring bank in London directly to your issuing bank and get  that message back for approval without ever going through St. Louis or some big  data center in the middle of all that.</p></blockquote>
<p>You can read the full article <a title="CIO: The Man Behind Mastercard's 100 Terabyte Data Warehouse" href="http://www.cio.com/article/438138/The_Man_Behind_MasterCard_s_Terabyte_Data_Warehouse" target="_blank">HERE</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tdistler.com/2008/07/20/interview-with-mastercards-rob-reeg/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

