Archive for the ‘Internet Technologies’ Category

Distance Vector Routing Protocols (Part 2) – CCNA

Sunday, November 2nd, 2008

RIP uses a number of timers to ensure that its routes are fresh and to avoid routing loops. A routing loop occurs when a router thinks it has a path to a destination, but it does not. In other words, if your cousin sends an invitation to you at your address in Chicago, but you don’t live there, you will never get it no matter how many times your cousin sends you the invitation.

 

Timers measure time in seconds and you can modify their default behavior. One of these timers, the update timer, controls how often a router sends a routing update to its neighbors. This is known as a periodic update. The default for a Cisco router is 30 seconds.

 

The invalid timer defines the length of time, 90 seconds by default, which must pass before a router considers a route invalid. In other words, if RouterA has a route to NetworkA, but does not receive an update from another router for the route to NetworkA for 90 seconds, RouterA considers its route to NetworkA to be non-existent.

 

Once a router determines a route to be non-existent, it begins a countdown as to when an invalid route should be purged (or flushed) from its routing table (which will trigger the router to send a routing table update to its neighbors). The flush timer has a default length of 240 seconds. Once this timer runs out, an invalid route is removed from the routing table.

 

Using a typical lab scenario of four interconnected routers (in circular fashion, with each router named Left, Top, Right, and Bottom), let’s look at what happens when Right informs Top that a network to its far right is down (since this is election week, why not!). I suggest you take out a paper and pencil and then draw out this network as you would do in the lab.

 

When Top learns of this update, it must protect itself from a false routing update from router Left. To understand this scenario, you must consider that electricity travels at about 70% the speed of light and that routers often handle millions of routing requests per second. Therefore, we need to slow this traffic down to about 5 MPH to understand how a router can receive information about a bad route and then tell another router about what it knows.

 

Slowing traffic down to an understandable level, let’s next suppose that half a second after Top learns of the bad route, Top receives a routing update from router Left. Left’s update does not include the update from router Right that its far right network went down (imagine that the network’s switch lost power). When Top examines Left’s update, it notices that the update contains (what appears to be) a valid route to the far right network through router Bottom. Of course, we know that this route is down, but router Bottom does not because half a second after it sent its update to router Left, it received an update from Right with the bad news about its far right network.

 

What should Top do with the update it received from Left, Top could conclude that it has a valid route, put this route in its routing table, and then send it to router Right. Can you see what a mess we would now have on our hands? If this scenario played out (again, slowing the clock down to a speed we can understand), when Right next receives a request to route to the far right network, Right will send the request to Top. Next, Top sends the request to Left, and finally, Left sends the request back to Right (who starts the loop all over again). This is an example of a routing loop!

 

Obviously, this can’t be allowed to happen. So, here’s what happens. Once Top learns from Right that it has an invalid route, Top invokes a principal known as split horizon and starts its holddown timer, which by default runs for 180 seconds. The concept of split horizon basically solves the problem I raised in the above scenario by forbidding router Top from sending an update to router Right about the route that is down. In other words, I can’t update you about a topic you originally told me about for a specific period of time (the holddown time). Once the holddown timer expires though, all bets are off. Cisco has a very detailed explanation of these concepts here in an EIGRP tutorial.

 

Newer implementations of distance vector routing protocols such as RIP and EIGRP add one more element to the intrigue by implementing split horizon known with poison reverse. Using poison reverse with our example above, router Top would receive the route update from Right and then send the invalid route immediately back to Right with an unreachable metric. RIP’s metric would be 16, which is its definition of an infinite path.

 

Finally, to conclude this discussion for this week, when router Top receives the update from Right, Top immediately recalculates its routing table and sends a triggered update to its directly-connected neighbors. A triggered update occurs when a router learns of a route change outside of its scheduled update time, sent when the router’s update timer expires.

Distance Vector Routing Protocols (Part I) - CCNA

Sunday, October 26th, 2008

When routers communicate with each other they use their own language, as you would assume. You no doubt are aware that a router’s main function is to receive a packet and then figure out the best path, based on what the router knows, to get the packet to its destination.

The packet received by the router - for example an IP (Internet Protocol) packet - is a <u>routed</u> protocol. The router takes the routed protocol and encapsulates it (entirely) inside its own protocol data unit (PDU). When the router performs this process, the newly-created PDU is sent to the next router.

Before the router sends the PDU to the next router, it needs to determine to which next router the PDU should be sent. Routers learn about best paths by communicating with other routers and use routing protocols like RIP (Routing Internet Protocol), OSPF (Open Shortest Path First), and EIGRP (Cisco routers only: Enhanced Internet Gateway Routing Protocol) to accomplish this goal.

RIP and EIGRP are classified as distance vector (DV) routing protocols, whereas OSPF is classified as a link state (LS) routing protocol. DV routing protocols keep track of distances and directions (or vectors) using a simple metric called hop count. Each router through which a packet must pass is equal to one hop. It’s that easy. One catch is that a DV routing protocol such as RIP will only route a PDU 16 times. Any hop count beyond that is considered unreachable. Therefore RIP seemingly does the impossible by defining infinity.

DV routing protocols talk to each other using the logic, or algorithm, of their underlying logic, and this talk results in the shortest distance to a destination. Of course, a router should have a path to every destination (unless you specifically do not want that). RIP’s algorithm is known as the <i>Bellman-Ford</i> algorithm, named after the men who developed it. Routers record what they learn about routes in what is called a topology table but the actual routes a router will use is recorded in a routing table. In other words, the topology table might contain more than one path to one destination, but the routing table will only record the one path that has the lowest metric (which makes this route the best path to a given destination).

LS routing protocols such as OSPF utilize the more complex <i>Dijkstra</i> algorithm, again, named after the person who created it. LS routing protocols create a composite metric by learning about the bandwidth and speed of the media through which the PDU will pass. We will discuss LS routing protocols in a later discussion.

Finally,  EIGRP, which, again, is a Cisco proprietary routing protocol, is referred to by Cisco as a hybrid routing protocol. A hybrid routing protocol (according to Cisco) takes the best features from the DV and LS routing protocols and uses them all. As with LS routing protocols. we will reserve our comments about EIGRP to a later discussion, when we can cover it fully.

If you noticed that I didn’t even mention IGRP, then you are ahead of the pack! Since IGRP and RIP (version 1) are no longer supported, I’m not going to discuss them in much detail. However, many features of RIP are common to IGRP with the exception of using only hop count to calculate its metric.

When a router boots up, like any other computer (or sentient being for my Star Trek fans), it first does an internal awareness check known as POST (power-on, self test). Once the router knows its internals are functioning as expected, the router next loads its operating system (OS). Cisco named its router (and switch) OS the Internetwork Operating System or IOS. Once the router loads its IOS, it next looks to see if it possesses a specific configuration file.

When a Windows computer reaches this stage of its boot process, it applies a specific configuration from its database known as the registry. The registry is stored on a computer’s hard drive, which means that it can be changed - such as when a user changes her desktop background - and then saved so that the next time the user logs in the new desktop color is applied. A router does not have an internal hard drive, however, it does have memory that is very similar to another type of memory found in computers - EPROM (erasible programmable read-only memory). Cisco refers to this memory as NVRAM (non-volatile random-access memory). Think of NVRAM as RAM that does <u>not</u> lose its contents when the router loses power. The configuration file stored in NVRAM contains router-specific information such as the router’s name, its IP addresses, security settings, and more.

Once the router applies its startup configuration file settings, it is now, finally, ready to talk to its neighbors. On Cisco routers, a router talks to its directly-connected neighbors using another special language via CDP (Cisco Discovery Protocol). Note that whenever you encounter a protocol with a vendor’s name in it, this protocol will only be installed and available if your equipment was manufactured by that vendor. In other words, a Juniper router will not run CDP and it won’t be able to use EIGRP. 

When Cisco routers communicate using CDP, they only tell each other about the network that directly connects them to each other. So, if Router1 is connected to another network, which is usually the case, Router2 will not learn of that network’s existance, meaning that if Router2 receives a packet addressed to the other network, Router2 just might drop the packet (not route it). Of course, the the Router2 human administrator can program a (static) route to the other network, but this is a lot of work and outside of a small network, this would not work!

After reading the above, you no doubt are thinking that if the router could communicate directly with other routers, without much human intervention, this process would work in small and large networks. If you are thinking along those lines, then you understand why RIP, EIGRP, OSPF, and other routing protocols were created. When a router is provided with a basic routing protocol configuration, the router is able to dynamically talk to other routers, learn about routes, send requests for information and answer such requests, all without human intervention. When routers operate in this fashion, the network is said to be <i>scalable</i>, meaning that regardless of the network’s size, the process still functions with little or no human intervention required.

So, after a Cisco router learns all it can via CDP, it needs a dynamic routing protocol, such as RIP, to learn about paths to networks beyond its directly-connected neighbors. The router’s next step, after completing the CDP process, is to send its entire routing table to each of its directly-connected neighbors. Once the neighbors receive this routing table, they recalculate their routing table using RIP’s algorithm and then send out their entire routing table to each of their directly-connected neighbors. This process continues until all of the routers in the network have no new routes to learn. In other words, when a router receives its neighbors routing table and learns nothing new, the process is complete. At this stage, the routers have reached agreement on how to reach known destinations. This stage of agreement is known as <i>convergence</i>.

In our next discussion, we will address timers, triggered updates, routing loops, split horizon, and route poisoning. Stay tuned for next week’s continuation!

Static Routing for Cisco Routers - CCNA

Saturday, October 18th, 2008

Most of us are already are familiar with routers due to DSL, cable, wireless, and satellite Internet services. What’s probably missing is the meaty part of what routers do and how they function.

The basic purpose of a router is to find the best path to a destination. For example, your switch sends a frame to a router via its Ethernet interface. When the router receives the frame, it captures the frame’s destination IP (Internet Protocol) address. Next, the router checks its routing table to determine whether it knows how to get to that destination.

First, the router checks for what is known as a static route. If there is no static route to the destination, next, the router looks for a route discovered via a routing protocol (such as CDP, RIP, EIGRP, or OSPF). If no discovered route exists, the router looks for a default route. Finally, the router routes the (newly created) packet if one of these routes exists (in the order presented). A key point to keep in mind is that if the router cannot find a route to the destination IP address, it will simply drop (or destroy) the frame.

To view the routing table of a Cisco router, type the commands listed below:

show ip route

at the CLI (command line interface) when you’re logged into user mode (immediately after you type “enable”). Before you configure a static route, you should first configure the router’s interfaces.  To configure a router’s serial 0/0 interface with an IP address of 192.168.10.2 /24 and then verify the configuration, type the following commands:

enable

configure terminal

interface serial0/0

ip address 192.168.10.1 255.255.255.0

no shutdown

exit

exit

show ip interface serial0/0

Notice that in the configuration above, I did not specify a data speed rate for this interface, which is what you’d generally expect. If you guessed that I’m referring to the DCE (data circuit-terminating equipment) or DTE (data terminating equipment) status of a router, you’re right! Typically, your router will act as the DTE since the DCE role is usually played by your ISP’s router. If you have a difficult time remembering this, just commit to memory that the “C” in DCE refers to the clock (or timing) and that your ISP will set the clock rate for communication it controls.

At this point, you’re probably wondering just what a static route is. A static route is best used when you want to ‘rig’ how a packet is routed. For example, if your router possesses a discovered (or dynamic) route to a destination IP address, but you always want the router to use another route, you should configure the router with a static route.

You can use static routes for stub routers too. A stub router is a one that is connected to one and only one router. In other words, the stub router only has one path through which to route packets. When this is the case, configuring a routing protocol such as EIGRP is not useful. It’s easier and more efficient to use a static route.

You enter static routes when in global configuration mode (after you’ve typed in “configure terminal” at the CLI). The highly abbreviated command syntax for a static route is:

ip route major_network_address subnet_mask exit_interface

Now, let’s break this down into pieces:

1. “ip route” is the command used to initiate a static route command.

2. “major_network_address” represents the destination subnet for which you are configuring the static route. For example, if you want the static route to apply to all destination hosts in the 192.168.10.0 /24 subnet, then you would list that address in the command.

3. “subnet_mask” is the subnet that this command applies to. So, using the example in #2 above, you should type out the /24 as 255.255.255.0.

4. “exit_interface” is the interface name on your router through which the packet should exit. If you want the packet to exit via serial 0/0, then you would list that here.

The complete command, using the information froma above, would look like:

ip route 192.168.10.0 255.255.255.0 serial0/0

Cisco’s training material tells you that rather than listing your exit interface name, you can also list the IP address of the router on the other end of your router’s interface. However, I don’t recommend this because this slightly decreases your router’s speed.

When I outlined the router’s routing logic, I listed CDP as one of the router’s routing protocols, which is mostly true! CDP helps routers learn about routes, but not very many.

The Cisco Discovery Protocol runs only on Cisco routers and adds to the routing table information about interfaces (and their networks) that are directly-connected to the router. I can’t stress enough that if your router is running CDP and no other routing protocol, your router will only know about directly-connected routes (not routes directly-connected to other routers). One good thing about CDP is that it can learn about switches (Layer 2) and routers (Layer 3). Finally CDP is enabled by default on all Cisco routers. If all of your routers are not made by Cisco, you can turn it off for the router or per interface.

I also mentioned default routes. A default route is known as the router’s gateway of last resort because if no other route exists to a destination, the router will use a default route rather than drop a packet. Most routers should have a default route configured.

A default route is configured similarly to a static route except that the major_network_address and subnet_mask entries consist of all zeroes. If you want packets routed out of your serial 1/0 interface instead of dropping them, then in global configuration mode, type the following at the CLI:

ip route 0.0.0.0 0.0.0.0 serial1/0

Many writers refer to this as the ‘quad-zero’ command. The zeros are what make the route a default route.

Lastly, it’s important to point out that routers make routing decisions based on what they know - not on what other routers know. In other words, if a route is in your routing table, but not in mine, that does not help me at all. In addition, just because a router1 knows how to get to router2, this does not mean that router2 knows how to get to router1.

This means that once you configure your router, you should use the ping command to prove that you can get from router1 to router2 (and vice-versa if you need that type of connectivity).

We’ve covered a lot of material in this lesson. If you have any questions, please feel free to write for clarification.

Mass Communication on the Internet

Saturday, March 10th, 2007

Let’s take a ‘hands on’ approach to joining mail lists (or groups) online. Navigate to www.groups.google.com and look around.

Notice that you can create an account, set up your own group, or invite people to join your existing group. So, this begs the question: what is a group? Well, to get the answer, click the link (small text) near the middle right of the page that reads “Take the tour >>”. This text is on the same line as the text that is in bold and reads “What can you do with groups?”

Just keep clicking the “Next” link until you’re finished with the demo. Now, you know what groups are and what you can do with them. Groups are great for people who want to talk with those who share a similar interest. For example, let’s say that you want to discuss History – but only history that relates to the Hammond area. You could create a group to do this.

When you create a group on Google, you’re really creating a number of web pages that only your group members can log into. You can restrict membership or let anyone in. Your web pages can be super fancy or just plain boring! That’s up to you. Web pages within your group web site can contain pictures, documents on things you want to share with each other, discussion forum areas (similar to Blackboard!), and information about yourself.

Groups are similar to “Usenet” and different than list servers. A list server is just a mailing list that contains user names and email addresses. When you email to the “list” your email is then forwarded by the list server to everyone whose email address is contained in the mailing list.

RSS (Really Simple Syndication) is also a pretty cool technology. With this technology, you can add ‘live’ content to your personal browser or your web site. The idea is that some other site creates information that you find interesting (also known as a news feed) and then you subscribe to it. Sometimes the feed doesn’t cost you anything (in which case the RSS provider earns money via advertising through the feed) or you pay a fee for the right to add the feed’s contents to your web page (and avoid their advertising).

Navigate to http://www.msnbc.msn.com and look near the top (in the middle) of the page for the RSS link and click it. This page, entitled RSS Feeds on MSNBC.com, explains what is available from their site and how you can subscribe to the news feed using your Internet browser. Click on a number of the links here and subscribe to a feed is you find one that excites you!

Internet Search Engines

Saturday, March 3rd, 2007

You can search databases on the Internet using a lot of different engines. Everyone knows about Google, Yahoo, Ask.com, and MSN. However, there are hundreds available! Click here to see a great link!

When you search the Internet, you can use the words “and”, “or”, “and not”, “intitle:” and combinations of these together. Here’s another link to check out with examples. Pay attention to those listed on the right side of the document, near the bottom of the document.

Not everything you read online is true. Imagine that! Many Web servers are put up with agendas and the way they propagate their messages is accomplished via lies. I won’t list ones I believe fit that mold, but you must be aware that this is more common than you realize in politics, religion, and science topics.

So, when you use online sources in your research, you must also consider who wrote it. For example, do you consider it wise to only trust the viewpoint of oil companies when trying to determine whether or not global warming is true? If you’re doing research about the democratic or republican parties, should you only rely on information provided by one of these? If you want to learn about Islam, should you only read information posted by sources based in Syria? No, no, and no. Right? Always read varying views so that you get the whole spectrum of the topic at hand. Then, you can make an informed decision as to whether or not you believe (or can trust) your sources.