Towards Implementing IS-IS

-This report briefly describes routing and then explains what is IS-IS routing protocol and how IS-IS works.


I. INTRODUCTION
Routing is the process of selection path from source to destination to share data. Routers are devices that are used to implement Routing based on some rules, which are called as Routing protocols. There are two types of routing protocols.

Interior Gateway Protocol (IGP)
An Interior Gateway Protocol (IGP) is a type of protocol used for exchanging routing information between routers within an Autonomous System (AS). Interior gateway protocols can be divided into two categories:

Distance Vector Routing Protocols (DVRP) implemented as Routing Information Protocol (RIP) and Enhanced
Interior Gateway Routing Protocol (EIGRP).
Link State Routing Protocols (LSRP) implemented as Open Shortest Path First (OSPF) and Intermediate System to Intermediate System (IS-IS).

Exterior Gateway Protocol (EGP)
An exterior gateway protocol is a routing protocol used to exchange routing information between autonomous systems. Exterior Gateway Protocols include Exterior Gateway Protocol (EGP), now obsolete, and Border Gateway Protocol (BGP). Intermediate System to Intermediate System (IS-IS) is a routing protocol designed to move information efficiently within a computer network, which consists of a group of physically connected computers. It accomplishes this by determining the best route for data through a packet-switched network. IS-IS has been called "the de facto standard for large service provider network backbones." IS-IS is an IGP, designed for use within an Autonomous System (AS it is a network formed by group of devices). This is in contrast to Border Gateway Protocol (BGP), which is used for routing between AS.
IS-IS is a link-state routing protocol. It operates by reliably flooding link state information throughout a network of routers. Each IS-IS router independently builds a database of the network's topology, aggregating the flooded network information. Like the OSPF protocol, IS-IS uses Dijkstra's algorithm for computing the best path through the network. Packets (datagrams) are then forwarded, based on the computed ideal path, through the network to the destination. IS-IS uses multicast to discover neighbor routers by sending hello packets.

III. PROPERTIES
A routing domain may be divided into one or more subdomains. Each subdomain is referred to as an area and is assigned an area address. Routing within an area is referred to as Level-1 routing. Routing between Level-1 areas is referred to as Level-2 routing. A device in OSI model is referred to as an Intermediate System (IS). An IS may operate at Level 1, Level 2, or both. An IS is identified by an address known as a Network Entity Title (NET). The NET is the address of a Network Service Access Point (NSAP), which identifies an instance of the IS-IS routing protocol running on an IS. The NET may be 8 to 20 octets in length and consists of three parts: 1. Area address-This field is 1 to 13 octets in length and is composed of high-order octets of the address.
2. System ID-This field is 6 octets long and immediately follows the area address. When the IS operates at Level 1, it must be unique among all the Level-1 devices in the same area. When the IS operates at Level 2, it must be unique among all devices in the domain.
3. NSEL-The N-selector field is 1 octet in length and immediately follows the system ID. It must be set to 00.

III. ALGORITHM
It uses Dijkstra's Algorithm for finding route from source to destination. As in ISIS each router has information of whole network so it can use this algorithm to find shortest path. The path between nodes has value depending on distance, network traffic etc. In this algorithm the first node has distance zero and all nodes are at infinity. First node finds value of neighbors then the neighbor with less value calculates value of its neighbors then this process goes on and in end every node has some value which is used to find shortest value from source to destination. Let the starting node be called the initial node and let the distance of node N be the distance from the initial node to N. Dijkstra's algorithm will assign some initial distance values and will try to improve them step by step.
1. Mark all nodes unvisited. Create a set of all the unvisited nodes called the unvisited set.
2. Assign to every node a tentative distance value: set it to zero for our initial node and to infinity for all other nodes. Set the initial node as current.
3. For the current node, consider all of its unvisited neighbors and calculate their tentative distances through the current node. Compare the newly calculated tentative distance to the current assigned value and assign the smaller one. For example, if the current node A is marked with a distance of 6, and the edge connecting it with a neighbor B has length 2, then the distance to B through A will be 6 + 2 = 8. If B was previously marked with a distance greater than 8 then change it to 8. Otherwise, keep the current value.
4. When we are done considering all of the unvisited neighbors of the current node, mark the current node as visited and remove it from the unvisited set. A visited node will never be checked again.
5. If the destination node has been marked visited (when planning a route between two specific nodes) or if the smallest tentative distance among the nodes in the unvisited set is infinity (when planning a complete traversal; occurs when there is no connection between the initial node and remaining unvisited nodes), then stop. The algorithm has finished.
6. Otherwise, select the unvisited node that is marked with the smallest tentative distance, set it as the new "current node", and go back to step 3.
When planning a route, it is actually not necessary to wait until the destination node is "visited" as above: the algorithm can stop once the destination node has the smallest tentative distance among all "unvisited" nodes (and thus could be selected as the next "current"). its own neighbors set stored in its database LSPDB as shown in figure 6. Each router transmits it neighbor data to other routers through LSP (Link-State PDU). When a router receives LSP it checks it against its own LSPDB and if LSP contains router not in its database then database is updated. In the end all routers in one area will have same data in their databases as shown in figure 7. Now if Router A wants to send data to Router D it first finds the shortest