ISIS works quite differently than most of the protocols you know. In the original OSI networking, ISIS would make adjacencies with it's neighbors, and tell them about the adresses of any ES it knows. IS means intermediate system, so besically a router. ES means end system, so any host. ISIS has different logic with different levels of routing. The levels used in ISIS are*:
- Level 1: Exchange routing information with neighbors in the same
area.
- Level 2: Exchange routing information with neighbors in other areas
(often refered to as the backbone).
Basically, the logic is as follows:
For level 1: flood all the connected and redistributed routes you know to all the level 1 neighbors in this area. Set default route to any routers with level 2 capability you know.
For level 2: Import all routes from level 1 routers you know, flood to all level 2 neighbors in any area.
(Please note that you need routers that are both level 1 and 2 to make the translations)
Every router floods any packets they receive to their neighbors according to those two rules. The information in these packets are in the format Type,Length,Value (TLV). Using TLV's means the following:
- If you want to add a new protocol, say IPv6, you just define a new TLV.
- If one of the routers doesn't know the Type, it can skip this value (by just looking Length ahead in the packet) and still work as expected.
- If one router doesn't know about this Type, it can still forward on the information to other routers.
ISIS, just like OSPF, runs a Dijkstra Algorithm to find the shortest path. All information for this algorithm is contained in the TLV's. L2 Communication with neighbors is done in two ways:
-When connected to a shared segment, use the Layer 2 protocol of that segment to communicate. This is done to be able to traverse switches that might not be able to speak the OSI layer 2 protocol CLNS.
-When connected to a point to point network, communication on Layer 2 is CLNS.
This doesn't mean that there is no L3 communication. ISIS routers still need a layer 3 address. Since we are talking OSI, and not IP, the address is slightly different. In this case, the address is called a Network Entity Title (NET), which is one address for the entire system (so not one per interface). The NET has many forms, but for most ISIS adjacencies, works as follows: 49.<4 char area>.<12 char system identifier>.00
. It doesn't really matter what you use as identifier, but say we have router 192.0.2.5 in area 52, we could make the NET 49.0052.1920.0000.2005.00 Since the addresses are in HEX you prefer 49.0052.0000.B00B.0000.00 (The addresses are hexadecimal).
*) There are other levels in OSI routing, but those aren't significant for the current operation of ISIS
A short illustration of routing
<-----+192.168.1.0/24 <-----+192.168.1.0/24
Default route +------> 192.168.2.0/24+-----> 192.168.2.0/24+-----> <------+ Default route
+-------------+ +-------------------+ +-------------------+ +---------------+
| | | | | | | |
192.168.1.0/24| L1 router | L1 | L1/L2 router | L2 | L1/L2 router | L1 | L1 router |192.168.2.0/24
| Area 1 +----------+ Area 1 +---------+ Area 2 +------+ Area 2 |
| | | | | | | |
+-------------+ +-------------------+ +-------------------+ +---------------+
There's no mechanism to request a fragment be resent. The entire packet cannot be reassembled, so the entire packet will have to be resent. This is why Fragmentation Is Bad(tm).
Routers typically do not care about fragmentation. They pass things on exactly as they receive them. (unless it's the source of the fragmentation.) As such, the router will be unaware of missing fragments.
(I'm ignoring the practice of "virtual reassembly".)
Best Answer
On the routing level, each fragment is routed as an independent packet - remember that routing is a stateless process.
If an intermediate router uses equal-cost-multi-path routing (ECMP), different fragments can take different paths.
That page doesn't really provide sufficient information on why they think that happens in the example. Likely, they're just trying to show the possibility. And no, fragments (or packets) are never returned to the source.