<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7473113546411177847</id><updated>2012-02-16T18:48:28.645-08:00</updated><category term='residential gateway'/><category term='E71'/><category term='DSL'/><category term='MAC'/><category term='home network'/><title type='text'>To Be Decided</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://narendrasharma.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://narendrasharma.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Naren</name><uri>http://www.blogger.com/profile/08064805632128679609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7473113546411177847.post-2871005471184436496</id><published>2011-04-01T15:34:00.000-07:00</published><updated>2011-04-01T17:27:14.006-07:00</updated><title type='text'>Cassandra 0.7.x - Understanding the output of nodetool cfhistograms</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: medium; "&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: medium; "&gt;&lt;b&gt;Command - Usage and Output&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;Cassandra provides nodetool cfhistograms command to print statistic histograms for a given column family. Following is the usage:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;./nodetool -h &lt;host&gt; -p &lt;jmxport&gt; cfhistograms &lt;keyspace&gt; &lt;cfname&gt; &lt;/cfname&gt;&lt;/keyspace&gt;&lt;/jmxport&gt;&lt;/host&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;The output of the command has following 6 columns:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;Offset&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;SSTables     &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;Write Latency      &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;Read Latency          &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;Row Size      &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;Column Count&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;Interpreting the output&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Offset&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;: This represents the series of values to which the counts for below 5 columns correspond. This corresponds to the X axis values in histograms. The unit is determined based on the other columns.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;SSTables&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;: This represents the number of SSTables accessed per read. For eg if a read operation involved accessing 3 SSTables then you will find a +ve value against Offset 3. The values are recent i.e. for duration lapsed between two calls.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Write Latency&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;: This shows the distribution of number of operations across the range of Offset values representing latency in microseconds. For eg. If 100 operations took say 5 ms then you will find a +ve value against offset 5.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Read Latency&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;: This is similar to write latency. The values are recent i.e. for duration lapsed between two calls.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Row Size&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;: This shows the distribution of rows across the range of Offset values representing size in bytes. For eg. If you have 100 rows of size 2000bytes then you will find a +ve value against offset 2000.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Column Count&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;: This is similar to row size. The offset values represent column count.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;Some additional details&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: medium; "&gt;Typically in a histogram the values are plotted over discrete intervals. Similarly Cassandra defines buckets. The number of buckets is 1 more than the bucket offsets. The last element is values greater than the last offset. The values you see in the Offset column in the output is bucket offsets.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: medium; "&gt;The bucket offset starts at 1 and grows by 1.2 each time (rounding and removing duplicates). It goes from 1 to around 36M by default (creating 90+1 buckets), which will give us timing resolution from microseconds to 36 seconds, with less precision as the numbers get larger. (see EstimatedHistogram class)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7473113546411177847-2871005471184436496?l=narendrasharma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narendrasharma.blogspot.com/feeds/2871005471184436496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7473113546411177847&amp;postID=2871005471184436496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/2871005471184436496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/2871005471184436496'/><link rel='alternate' type='text/html' href='http://narendrasharma.blogspot.com/2011/04/cassandra-07x-understanding-output-of.html' title='Cassandra 0.7.x - Understanding the output of nodetool cfhistograms'/><author><name>Naren</name><uri>http://www.blogger.com/profile/08064805632128679609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7473113546411177847.post-9025159335969672234</id><published>2011-03-11T10:48:00.001-08:00</published><updated>2011-03-15T16:08:57.125-07:00</updated><title type='text'>Schema Management in Cassandra 0.7</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Schema Management in Cassandra&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Starting with Cassandra 0.7 the schema management in Cassandra is very easy. It is as good as centralized schema management with no SPoF . Typically schema operations involve loading schema initially, making changes to existing schema like adding CF and/or modifying existing CF attributes, and dropping schema elements like CFs and Keyspaces.&lt;br /&gt;&lt;br /&gt;There are 3 ways these operations can be performed:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Load schema from cassandra.yaml using schematool or JMX Console:&lt;/span&gt; This option can be used to load schema only once. Running it twice in a cluster won't have any impact. So this is good for loading initial schema.&lt;br /&gt;&lt;br /&gt;             &lt;span style="font-size:85%;"&gt;schematool   import&lt;/span&gt;&lt;br /&gt;    OR&lt;br /&gt;             &lt;span style="font-size:85%;"&gt;JConsole:MBeans-&gt;org.apache.cassandra.db-&gt;StorageService -&gt; Operations -&gt; loadSchemaFromYAML&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Create/Modify schema using Thrift APIs&lt;/span&gt;: This provides high flexiibility and good for applications that wish to create/drop Keyspaces and ColumnFamilies on fly. You cannot modify existing ColumnFamilies using the APIs. Refer to &lt;a href="http://wiki.apache.org/cassandra/API"&gt;Cassandra Wiki - API&lt;/a&gt; for details of the APIs available. Following APIs are available:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;          describe_keyspace&lt;/li&gt;&lt;li&gt;          describe_keyspaces&lt;/li&gt;&lt;li&gt;          system_add_column_family&lt;/li&gt;&lt;li&gt;          system_drop_column_family&lt;/li&gt;&lt;li&gt;          system_add_keyspace&lt;/li&gt;&lt;li&gt;          system_drop_keyspace &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Create/Modify schema using cassandra-cli&lt;/span&gt;: This is the most flexible option available. It allow practically everything that option #1 and #2 allow collectively. Following commands are supported. You can see the commands by entering "help;" command on cassandra-cli. For details of specific command type "help ;". For eg "help create keyspace;".&lt;br /&gt;&lt;ul&gt;&lt;li&gt;          Describe keyspace&lt;/li&gt;&lt;li&gt;          Show list of keyspaces&lt;/li&gt;&lt;li&gt;          Add a new keyspace with the specified attribute(s) and value(s)&lt;/li&gt;&lt;li&gt;          Update a keyspace with the specified attribute(s) and value(s)&lt;/li&gt;&lt;li&gt;          Create a new column family with the specified attribute(s) and value(s)&lt;/li&gt;&lt;li&gt;          Update a column family with the specified attribute(s) and value(s)&lt;/li&gt;&lt;li&gt;          Delete a keyspace&lt;/li&gt;&lt;li&gt;          Delete a column family &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Under the hood&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://wiki.apache.org/cassandra/LiveSchemaUpdates"&gt;Cassandra Wiki - Schema Updates&lt;/a&gt; describes the operations in good details. Following is the high level summary:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Cassandra uses Schema and Migrations ColumnFamily in system keyspace for maintaining schema and changes to schema respectively.&lt;/li&gt;&lt;li&gt;    Schema changes done on one node are propagated on other nodes in the cluster&lt;/li&gt;&lt;li&gt;    Migrations CF tracks individual changes to schema. Schema CF contains reference to the latest version in use&lt;/li&gt;&lt;li&gt;    Some manual cleanup may be needed if node crashes while schema changes are being applied to the cluster&lt;/li&gt;&lt;li&gt;    To avoid concurrency issues always push schema changes through one node &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Examples&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Dropping a Keyspace&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Connect to cassandra-cli on a node and run drop keyspace command.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;span style="font-size:85%;"&gt;[root@rwc-sb6240-1 bin]# ./cassandra-cli&lt;br /&gt;    Welcome to cassandra CLI.&lt;br /&gt;&lt;br /&gt;    Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.&lt;br /&gt;    [default@unknown] connect 20.17.221.19/9160;       &lt;br /&gt;    Connected to: "NarenCluster072" on 20.17.221.19/9160&lt;br /&gt;    [default@unknown] drop keyspace KeyspaceMigration;&lt;br /&gt;    5fba3f1f-4a82-11e0-b8ee-f90f8a3f5e1f&lt;br /&gt;    [default@unknown] exit;&lt;br /&gt;    [root@rwc-sb6240-1 bin]#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The logs on the node will show following events (DEBUG MODE)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;span style="font-size:85%;"&gt;DEBUG [pool-1-thread-151] 2011-03-09 11:21:03,334 CassandraServer.java (line 759) drop_keyspace&lt;br /&gt;DEBUG [MigrationStage:1] 2011-03-09 11:21:03,343 Table.java (line 397) applying mutation of row 35666261336631662d346138322d313165302d623865652d663930663861336635653166&lt;br /&gt;    ...&lt;br /&gt;DEBUG [CompactionExecutor:1] 2011-03-09 11:21:04,146 CompactionManager.java (line 109) Checking to see if compaction of Schema would be useful DEBUG [MigrationStage:1] 2011-03-09 11:21:04,146 MigrationManager.java (line 106) Announcing my schema is 5fba3f1f-4a82-11e0-b8ee-f90f8a3f5e1f&lt;br /&gt;DEBUG [CompactionExecutor:1] 2011-03-09 11:21:04,147 CompactionManager.java (line 109) Checking to see if compaction of Migrations would be useful&lt;br /&gt;DEBUG [ReadStage:14] 2011-03-09 11:21:04,150 MigrationManager.java (line 87) Their data definitions are old. Sending updates since d052796e-4a80-11e0-b8ee-f90f8a3f5e1f&lt;br /&gt;DEBUG [ReadStage:15] 2011-03-09 11:21:04,151 MigrationManager.java (line 87) Their data definitions are old. Sending updates since d052796e-4a80-11e0-b8ee-f90f8a3f5e1f&lt;br /&gt;    ...&lt;br /&gt;DEBUG [pool-1-thread-151] 2011-03-09 11:21:05,629 StorageProxy.java (line 628) My version is 5fba3f1f-4a82-11e0-b8ee-f90f8a3f5e1f DEBUG [pool-1-thread-151] 2011-03-09 11:21:05,629 StorageProxy.java (line 659) Schemas are in agreement.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;On the other nodes the log entries will look like&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;  &lt;span style="font-size:85%;"&gt; DEBUG [ReadStage:9] 2011-03-09 11:12:19,250 MigrationManager.java (line 82) My data definitions are old. Asking for updates since d052796e-4a80-11e0-b8ee-f90f8a3f5e1f&lt;br /&gt;DEBUG [ReadStage:9] 2011-03-09 11:12:19,253 MigrationManager.java (line 106) Announcing my schema is d052796e-4a80-11e0-b8ee-f90f8a3f5e1f&lt;br /&gt;    DEBUG [MigrationStage:1] 2011-03-09 11:12:19,273 SchemaCheckVerbHandler.java (line 36) Received schema check request.&lt;br /&gt;    ...&lt;br /&gt;DEBUG [MigrationStage:1] 2011-03-09 11:12:20,681 MigrationManager.java (line 106) Announcing my schema is 5fba3f1f-4a82-11e0-b8ee-f90f8a3f5e1f&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7473113546411177847-9025159335969672234?l=narendrasharma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narendrasharma.blogspot.com/feeds/9025159335969672234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7473113546411177847&amp;postID=9025159335969672234' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/9025159335969672234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/9025159335969672234'/><link rel='alternate' type='text/html' href='http://narendrasharma.blogspot.com/2011/03/schema-management-in-cassandra-07.html' title='Schema Management in Cassandra 0.7'/><author><name>Naren</name><uri>http://www.blogger.com/profile/08064805632128679609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7473113546411177847.post-1819662323848446198</id><published>2009-12-17T02:05:00.000-08:00</published><updated>2009-12-17T05:44:48.086-08:00</updated><title type='text'>Residential Gateway - Part 2</title><content type='html'>&lt;span style="font-family: verdana;font-size:100%;" &gt;Since I am not much busy now a days, you may see multiple posts from me in a single day :). In the last &lt;a href="http://narendrasharma.blogspot.com/2009/12/residential-gateway-part-1.html"&gt;part&lt;/a&gt; I talked about the Residential Gateway in general. In this post I will talk about the WAN side interface i.e. DSL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DSL stands for Digital Subscriber Line. It is the technology that is used to transmit digital content over phone line (the very same line that is connected to your landline phone). Some of you must be wondering how is that possible? Will I be able to use my phone and Internet simultaneously?&lt;br /&gt;&lt;br /&gt;The technology has the answer. The phone line that we have today is under utilized. It is used to carry only voice traffic which is transmitted over the frequency band 300 Hz to 3400 Hz. Whereas the cable is capable of carrying signals at very high frequency. The DSL technology makes use of the unused frequency bands to send/receive data.&lt;br /&gt;&lt;br /&gt;What about simultaneous use? It is possible using a &lt;a href="http://en.wikipedia.org/wiki/DSL_filter"&gt;splitter/microfilter&lt;/a&gt;. A splitter is a small piece of hardware that is usually supplied by the broadband service provider. The phone line is connected to splitter. There are two output ports on a splitter. One port connects to DSL modem whereas the other port connects to phone. Splitter splits the signals based on the frequency. Signals with lower frequency&lt;br /&gt;&lt;br /&gt;There are a number of variations/standards of DSL technology. They primarily differ in two parameters viz speed and distance they support. Ofcourse there are core technology differences. Note that with distance the signal quality deteriorates and it is not possible to install repeaters for data signals. Hence, distance plays important role.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The most popular DSL standards are &lt;a href="http://en.wikipedia.org/wiki/ADSL"&gt;ADSL&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/VDSL"&gt;VDSL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ADSL: Asymmetric Digital Subscriber Line&lt;/span&gt;&lt;br /&gt;As the name suggests the download and upload speeds are different. In most of the home networks people download more than they upload. Hence, this results in very good user experience. The band from 25.875 kHz to 138 kHz is used for upstream communication, while 138 kHz to 1104 kHz is used for downstream communication.&lt;br /&gt;&lt;br /&gt;ADSL supports download speed of upto 12 Mbps and upload speed of upto 1.5 Mbps. ADSL2+ extends the capability of ADSL by doubling the downstream bits which is done by extending the downstream frequency band from 1.1 MHz to 2.2 MHz. As a result ADSL2+ supports download speed of upto 24 Mbps. ADSL works for max distance upto 5000 meters from exchange. The close the exchange the better would be the signal quality and speed.&lt;br /&gt;&lt;br /&gt;Following diagram shows the ADSL2+ router in the broadband network:&lt;br /&gt;&lt;a href="http://www.itware.com.au/image_library/DSLAM_Topology.jpg"&gt;ADSL2+ Router in Network&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;VDSL: Very High Bitrate DSL&lt;/span&gt;&lt;br /&gt;It is similar to ADSL2+ but uses  high frequency band, in the order of 30Mhz. As a result it provides very high download and upload speed, approx 100 Mbps . The indicated max speeds are achievable for max distance of upto 300 meters from exchange.&lt;br /&gt;&lt;br /&gt;The distance of 300 meters from exchange is not practical in most cases . Hence, Optical Network Unit is used to provide service even from a larger distance. The broadband service provider lays Optical cables from exchange to the locality (typically building or group of buildings) which are connected to ONU. The ONU then connects to routers at home over the phone line (DSL). Optical cables are capable of carrying data at speed of Gpbs.&lt;br /&gt;&lt;br /&gt;Due to high speed VDSL is ideal for IPTV and HDTV services. Since it supports symmetric upload and download speeds as well it is suitable for video conferencing.&lt;br /&gt;&lt;br /&gt;Following diagram shows the VDSL network diagram:&lt;br /&gt;&lt;a href="http://www.fttxtra.com/wp-content/uploads/2009/09/VDSL2-FTTN-Network-Diagram-608x339-custom.jpg"&gt;VDSL Network &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Refer to following link for more technical differences between ADSL and VDSL:&lt;br /&gt;&lt;a href="http://www.pulsewan.com/data101/adsl_vdsl_basics.htm"&gt;http://www.pulsewan.com/data101/adsl_vdsl_basics.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7473113546411177847-1819662323848446198?l=narendrasharma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narendrasharma.blogspot.com/feeds/1819662323848446198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7473113546411177847&amp;postID=1819662323848446198' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/1819662323848446198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/1819662323848446198'/><link rel='alternate' type='text/html' href='http://narendrasharma.blogspot.com/2009/12/residential-gateway-part-2.html' title='Residential Gateway - Part 2'/><author><name>Naren</name><uri>http://www.blogger.com/profile/08064805632128679609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7473113546411177847.post-6383147657996939845</id><published>2009-12-15T08:27:00.000-08:00</published><updated>2009-12-17T05:43:15.679-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DSL'/><category scheme='http://www.blogger.com/atom/ns#' term='home network'/><category scheme='http://www.blogger.com/atom/ns#' term='residential gateway'/><title type='text'>Residential Gateway - Part 1</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;I worked for 2 years  at a company that manufactures Residential Gateway. I primarily worked on the GUI and Configuration customization of these gateways. At times the work involved debugging functional issues that required understanding of the underlying protocols and standards. This provided me the opportunity to learn about various networking standards.&lt;br /&gt;&lt;br /&gt;I referred Wikipedia and RFCs for most of the things I learned. I am going to share my learning through series of blogs. I don't intend to capture the internal details like multiplexing techniques or packet/frame formats as those can be obtained from standards documents. The information here will provide conceptual understanding and some useful facts about the technologies.&lt;br /&gt;&lt;br /&gt;In this first installment let's understand what is &lt;a href="http://en.wikipedia.org/wiki/Residential_gateway"&gt;Residential Gateway&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Residential Gateway is quite a popular term in USA but not a well known term in India. In India people refer it as Modem mostly because:&lt;br /&gt;- It is just a Modem&lt;br /&gt;- If it is not just a Modem then either people don't know about its features and/or they don't use other features.&lt;br /&gt;&lt;br /&gt;The primary function of Residential Gateway is to enable broadband Internet connection for home users. It is a combination of modem and router. In addition, it provides other features like:&lt;br /&gt;- Firewall&lt;br /&gt;- NAT&lt;br /&gt;- DHCP&lt;br /&gt;- DNS&lt;br /&gt;- VoIP&lt;br /&gt;&lt;br /&gt;Following diagram shows the complete broadband ecosystem. The CPE in the diagram is the residential gateway:&lt;br /&gt;&lt;a href="http://www.legasys.com/n/solutions/broadband/images/ip_dslam_diagram.gif"&gt;Broadband Network&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Following diagrams shows how a typical home network looks like:&lt;br /&gt;&lt;a href="http://www.att.com/Common/DSL/center/images/connected_house.gif"&gt;Home Network 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://th.billion.com/images/router-images/home-networking-7402h-bene1.gif"&gt;Home Network 2&lt;/a&gt;&lt;br /&gt;Following diagram shows the common ports available on a residential gateway and sample devices that can be connected:&lt;br /&gt;&lt;a href="http://de.billion.com/images/router-images/home-network-diagram-7402h1.gif"&gt;Residential Gateway Ports and Devices&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you look at the diagrams available at above links you will notice that the most common interface on the home or LAN side are:&lt;br /&gt;- USB&lt;br /&gt;- Ethernet (RJ-45)&lt;br /&gt;- Wireless (Wifi or 802.11x)&lt;br /&gt;- Coax (For TV or STB)&lt;br /&gt;&lt;br /&gt;On the WAN side the most common interfaces are HPNA (DSL) and Cable (this is same as the one on which you get Cable TV service). Out of these the DSL interface is most commonly used, atleast in India. The primary reason for DSL popularity is that the basic infrastructure i.e. the phone line is already present. User just need to buy the modem cum router and he is ready to setup his/her home network.&lt;br /&gt;&lt;br /&gt;I will talk about DSL and related technologies in the next part. Stay tuned...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7473113546411177847-6383147657996939845?l=narendrasharma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narendrasharma.blogspot.com/feeds/6383147657996939845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7473113546411177847&amp;postID=6383147657996939845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/6383147657996939845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/6383147657996939845'/><link rel='alternate' type='text/html' href='http://narendrasharma.blogspot.com/2009/12/residential-gateway-part-1.html' title='Residential Gateway - Part 1'/><author><name>Naren</name><uri>http://www.blogger.com/profile/08064805632128679609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7473113546411177847.post-178650664528093004</id><published>2009-09-06T06:52:00.000-07:00</published><updated>2009-12-17T05:45:37.463-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='E71'/><category scheme='http://www.blogger.com/atom/ns#' term='MAC'/><title type='text'>E71 MAC Address</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;E71 supports Wifi. Hence, I use Wifi to access internet from E71 at home and office. It is fast and saves money as well as I have unlimited data plan.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;To keep my Wifi access point safe and avoid misuse I have enabled MAC address filtering. I forgot that and when I tried to access net for the first time from my mobile I got error "Web: Gateway no reply". I initially thought it is due to some problem with the site or my ISP gateway. Later I realized that it is because of MAC address filtering rule at I added to my access point.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;The question is how to find MAC address of your E71. The answer is key in following sequence on the homescreen:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-size:100%;" class="fullpost" &gt;&lt;span style="font-weight: bold;"&gt;*#62209526#&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;I would encourage all to enable MAC address filtering to safeguard your homenetwork and keep hackers at bay.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7473113546411177847-178650664528093004?l=narendrasharma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narendrasharma.blogspot.com/feeds/178650664528093004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7473113546411177847&amp;postID=178650664528093004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/178650664528093004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7473113546411177847/posts/default/178650664528093004'/><link rel='alternate' type='text/html' href='http://narendrasharma.blogspot.com/2009/09/e71-mac-address.html' title='E71 MAC Address'/><author><name>Naren</name><uri>http://www.blogger.com/profile/08064805632128679609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
