[00:00.000 --> 00:08.820] OSI model, because I think people sort of memorize it in a way that maybe interferes with understanding rather than helps it. [00:12.640 --> 00:22.760] But I need to talk about it a little bit because the three protocols that I'm going to talk about are RSTP, which... [00:29.220 --> 00:40.240] RSTP is used by layer two switches, but it's used with flooding to fill the same role as the other things that I'm talking about. [00:40.380 --> 00:41.680] So this is layer two. [00:43.640 --> 00:44.120] Okay. [00:57.240 --> 00:58.740] So this is layer two. [00:59.860 --> 01:04.960] And then OSPF and ISIS or ISIS. [01:06.800 --> 01:09.540] These are layer three. [01:13.180 --> 01:19.100] And only these two are IP. [01:19.400 --> 01:23.020] This one isn't only IP, but a lot of people use it on IP networks. [01:23.020 --> 01:25.740] This one, when I talk about it, it doesn't route IP at all. [01:25.880 --> 01:27.060] Not in the way I'm discussing it. [01:29.060 --> 01:29.780] So, anyway. [01:31.440 --> 01:37.920] One of the problems that I have with the layers is I think all of the interesting stuff happens between the layers. [01:37.920 --> 01:50.870] So, people will tell you that layer three is IP or CLNP for OSI. [01:52.790 --> 01:55.430] And layer two is Ethernet MAC. [01:59.210 --> 02:01.610] And layer one is like wires. [02:02.790 --> 02:09.430] Which bit is transmitted first, what frequency is it transmitted at electrically and stuff like that. [02:09.430 --> 02:21.510] But this isn't helpful because the interesting stuff is in here with the wireless, you have all kinds of mess. [02:23.210 --> 02:33.410] Like wireless stations register their MAC address on layer one and they do retransmission. [02:37.050 --> 02:46.050] So, the 802.11, when you send an 802.11 frame, the other, the access point will acknowledge the frame. [02:46.270 --> 02:50.710] If it doesn't receive the frame, your card will retransmit it inside the firmware and the card. [02:51.710 --> 03:00.750] So, this is something that 802.11 does because it's layer one, the radio, is so unreliable that it wouldn't work well without this. [03:01.030 --> 03:05.970] And the retransmission algorithm knows something about how long is it going to take the packet to get there. [03:06.130 --> 03:13.670] The timeouts are really short because it's the speed of light and they're working around the limitations of the radio to make it usable. [03:14.670 --> 03:17.290] But, they're using layer two stuff to do it. [03:17.470 --> 03:22.950] So, they've modified their layer two to accommodate for this crappy layer one. [03:23.570 --> 03:28.730] And they did it in a way, I don't know if you've ever tried to set up a wireless station card. [03:32.080 --> 03:33.540] It has to be like this. [03:39.060 --> 03:44.140] It's not possible to put more stuff behind here. [03:49.080 --> 03:58.820] Like, if you use Linux bridging or something on your wireless station card and you try to bridge your station onto an Ethernet and then plug somebody else's computer into it, it won't work. [03:59.640 --> 04:08.660] Because a station gets one Mac and then all these other, it's registered with the access point. [04:08.840 --> 04:09.920] Does this make sense? [04:11.400 --> 04:12.000] All right. [04:12.640 --> 04:16.020] Do you see the problem with the layer one and the layer two? [04:16.220 --> 04:21.800] That because we have this unreliable layer one, now we have problems bridging stations onto Ethernet. [04:22.900 --> 04:24.540] So, this is confusing. [04:24.800 --> 04:25.840] It's a layer violation. [04:28.880 --> 04:33.360] The other thing that we have in between layer one and layer two is on half-duplex Ethernet. [04:35.740 --> 04:39.920] So, we have 802.11 and there's a whole mess in there. [04:40.020 --> 04:48.460] Then we have CSMA CD, which everyone's heard about, but which is not used on almost all modern networks because there's switches with full duplex. [04:48.700 --> 04:59.540] But, if you have a half-duplex network, because of the way the wire works, you have this Mac layer procedure to retransmit frames if there's a collision. [05:09.280 --> 05:11.720] There's broadcasts and NBMA. [05:14.660 --> 05:21.180] Your layer one and layer two combination has to accommodate sending a broadcast to all the stations. [05:21.860 --> 05:32.240] There's a lot of telco layer one, layer two combinations that have multiple stations on one layer two network, but they can't do broadcasts. [05:32.420 --> 05:35.960] So, you have to send each... and I think token ring is like that too, but I'm not sure. [05:38.880 --> 05:45.780] So, anyway, this shows the confusion with the model, but I think maybe I talked about that too long because the interesting stuff is in here. [05:50.270 --> 05:58.650] The model wants you to think of layer twos as being underneath layer three and interchangeable. [05:59.610 --> 06:06.530] So, I'm going to choose to use IP, and then I can pick whatever layer two I want. [06:06.530 --> 06:19.330] So, I can pick Ethernet, ATM, plain serial T1, you know, token ring. [06:19.510 --> 06:26.410] Well, I guess token ring is sort of an Ethernet-ish Mac, but it's interchangeable, and it's not. [06:26.410 --> 06:36.630] Because if you choose Ethernet or token ring, then in between here, use ARP. [06:38.570 --> 06:46.510] If you don't, then you have to use something else like ACLC or PPP. [06:48.190 --> 06:49.530] What do they call that? [06:50.170 --> 06:51.730] IP control protocol. [06:55.130 --> 06:57.210] So, where does ARP go? [06:57.610 --> 06:59.610] Is ARP a layer two standard? [07:01.430 --> 07:05.690] Because if I'm using IPX over Ethernet, there's no ARP. [07:06.050 --> 07:07.930] Or is it a layer three standard? [07:08.310 --> 07:12.990] Because if I'm using IP over T1, there's no ARP. [07:12.990 --> 07:16.890] So, anyway, the OSI model sucks. [07:17.510 --> 07:21.030] But, back to this. [07:22.450 --> 07:27.730] Maybe you have some background now about why I'm grouping these things together. [07:28.850 --> 07:34.110] Because there's something else essential that all three of them do in the way that they're used in practice. [07:36.270 --> 07:37.190] So, let's see. [07:37.530 --> 07:38.810] What shall I talk about first? [07:44.050 --> 07:46.490] So, let's talk first about the flooding. [07:50.570 --> 07:51.930] Does that show through the back? [07:56.760 --> 07:59.580] So, if you have a network of switches. [08:06.400 --> 08:08.600] And then you have some stations attached to them. [08:10.000 --> 08:11.420] Maybe I should give them numbers. [08:24.400 --> 08:38.760] The promise of an IGP is that if Station 5 wants to send a packet to Station 2, that these switch intermediate systems will know how to route this packet. [08:41.080 --> 08:44.750] And the way that switches operate is they... [08:47.020 --> 08:49.580] All routing is based on the destination address. [08:49.930 --> 08:51.980] What you're trying to reach is the destination. [08:52.220 --> 08:59.720] So, we have a packet that's from 5 to 2. [09:01.930 --> 09:03.670] Routing looks at this. [09:07.060 --> 09:08.060] Routing looks at this. [09:08.060 --> 09:08.780] And... [09:10.500 --> 09:12.260] Learning looks at this. [09:14.240 --> 09:15.240] So... [09:16.280 --> 09:18.160] This packet here. [09:18.540 --> 09:19.180] Packet A. [09:20.480 --> 09:21.940] I'll go here. [09:31.080 --> 09:32.560] It goes everywhere. [09:38.230 --> 09:38.750] So... [09:38.750 --> 09:41.110] There's no routing information for how to reach 2. [09:42.950 --> 09:43.470] Um... [09:43.470 --> 09:43.910] But... [09:43.910 --> 09:47.430] Learning, as this packet is flowing through, is looking at this 5. [09:48.250 --> 09:48.770] So... [09:48.770 --> 09:51.710] As this packet A passes through... [09:51.710 --> 09:52.490] Um... [09:52.490 --> 09:54.610] This switch learns that... [09:56.150 --> 09:56.670] Um... [09:56.970 --> 09:58.130] Five is in that direction. [09:59.750 --> 10:00.270] So... [10:00.270 --> 10:05.070] If this switch needs to send something to 5, it won't bother sending it out here or here. [10:06.650 --> 10:07.290] And... [10:08.410 --> 10:12.210] This switch here learns that 5 is this way and this one. [10:14.830 --> 10:15.690] So now... [10:15.690 --> 10:18.070] If somebody sends packet B... [10:19.610 --> 10:20.250] From... [10:20.970 --> 10:23.070] Station 4 to Station 5... [10:27.600 --> 10:29.180] Is this diagram getting too busy? [10:29.660 --> 10:30.000] It's... [10:30.000 --> 10:31.180] Bigger? [10:34.260 --> 10:34.900] Hmm... [10:40.990 --> 10:43.190] It's going to be a little bit of struggle, but... [10:44.230 --> 10:44.670] Um... [10:44.670 --> 10:46.630] I don't know how long its memory is. [10:46.830 --> 10:49.730] It's configurable and it's not extremely important. [10:50.070 --> 10:52.110] Because there's, uh... [10:52.110 --> 10:55.350] For the purpose of this discussion, there's other times when the memory is cleared. [11:13.290 --> 11:13.730] Um... [11:13.730 --> 11:17.010] But when you send out the new packet, it'll clear the other information out of the way. [11:17.630 --> 11:20.870] I don't have any diagrams or cases for that, but... [11:21.310 --> 11:21.730] Um... [11:21.730 --> 11:23.610] Alright, so here we were with packet B. [11:24.370 --> 11:25.950] We've already learned from packet A. [11:26.770 --> 11:27.190] So... [11:27.650 --> 11:29.950] Packet B is trying to reach Station 5. [11:31.170 --> 11:35.730] So it goes to this switch, and packet B goes only this way. [11:35.970 --> 11:37.650] It does not go here, like packet A did. [11:38.470 --> 11:40.910] And then it reaches this switch, and it goes only here. [11:42.850 --> 11:44.110] And doesn't go this way. [11:45.750 --> 11:46.210] So... [11:48.250 --> 11:50.990] Now it's going straight through, whereas before it was flooded. [11:50.990 --> 11:53.260] So that's what I mean by... [11:55.090 --> 11:55.670] Um... [11:56.630 --> 11:57.210] Flooding... [11:57.900 --> 11:58.490] And learning. [12:03.280 --> 12:03.860] And... [12:03.860 --> 12:05.900] This is not... [12:05.900 --> 12:08.240] Completely part of... [12:08.780 --> 12:09.200] RSTP. [12:10.180 --> 12:10.760] Um... [12:10.760 --> 12:14.260] If you just go by what the acronym stands for, it's the Spanning Tree Protocol. [12:14.460 --> 12:15.520] There's no spanning tree here. [12:15.620 --> 12:16.840] This is just regular switches. [12:18.400 --> 12:18.980] Um... [12:18.980 --> 12:20.180] But, uh... [12:20.180 --> 12:22.460] The spanning tree doesn't work without... [12:22.460 --> 12:24.560] Understanding this philosophy of routing. [12:26.760 --> 12:27.800] And so... [12:29.800 --> 12:30.840] Let's see... [12:33.680 --> 12:36.100] Any questions about this, or can I move on to the spanning tree? [12:38.200 --> 12:39.740] Now, are these the... [12:39.740 --> 12:43.120] Is this information that's encoded in the actual data packets? [12:43.330 --> 12:44.680] Or is this a separate... [12:45.320 --> 12:47.700] Separate packets that are just binding the routes for you? [12:48.820 --> 12:49.330] Uh... [12:49.330 --> 12:50.460] The question was... [12:51.360 --> 12:51.880] Um... [12:51.880 --> 12:54.020] Are packets A and B data packets? [12:54.020 --> 12:55.400] Or are they routing packets? [12:56.160 --> 12:56.830] And... [12:56.830 --> 12:57.900] The answer is... [12:57.900 --> 13:00.320] Until you introduce RSTP... [13:00.320 --> 13:02.010] There are no special... [13:03.080 --> 13:05.100] Control plane switch packets. [13:05.620 --> 13:08.220] All of these packets are station to station data packets. [13:08.640 --> 13:10.480] So the idea is... [13:10.800 --> 13:11.140] Uh... [13:11.140 --> 13:13.010] If you don't have this learned information... [13:13.860 --> 13:14.540] Then... [13:14.540 --> 13:17.680] You can't route the packet and you just flood it everywhere. [13:18.440 --> 13:19.040] So... [13:19.040 --> 13:21.940] If you have a huge mesh of switches... [13:22.280 --> 13:25.160] And no stations plugged into them... [13:25.160 --> 13:28.220] Before we've introduced RSTP still... [13:28.220 --> 13:28.720] Uh... [13:28.720 --> 13:29.960] If you ignore that... [13:29.960 --> 13:31.720] Then there's no traffic at all... [13:31.720 --> 13:33.760] And the switches don't know how to reach anything. [13:36.200 --> 13:36.760] Um... [13:36.760 --> 13:39.160] So they rely on that when you first plug in a station... [13:39.160 --> 13:41.900] Usually they ask for the DHCP query or something... [13:41.900 --> 13:42.750] And then that gets... [13:43.640 --> 13:44.200] Uh... [13:44.200 --> 13:45.300] Flooded out... [13:45.300 --> 13:45.900] Well... [13:45.900 --> 13:46.300] I don't know. [13:47.460 --> 13:48.020] Um... [13:48.020 --> 13:50.060] There's other cases because like... [13:50.060 --> 13:51.750] This B packet... [13:52.880 --> 13:53.440] Um... [13:53.440 --> 13:54.940] Learning is operating on this. [13:58.940 --> 13:59.460] But... [14:00.400 --> 14:01.880] Only these two switches... [14:03.120 --> 14:04.740] Have learned about station 4. [14:08.540 --> 14:09.060] So... [14:11.300 --> 14:13.340] If station 1 sent a packet to station 4... [14:16.200 --> 14:16.720] Then... [14:17.480 --> 14:19.320] It would be flooded to station 2. [14:20.480 --> 14:23.220] But if station 3 sent a packet to station 4... [14:23.220 --> 14:24.320] It would go straight to station 4. [14:24.580 --> 14:25.220] Does that make sense? [14:26.920 --> 14:27.440] So... [14:28.340 --> 14:28.680] Um... [14:28.680 --> 14:28.920] It's... [14:28.920 --> 14:30.560] It's backwards because the learning looks... [14:30.560 --> 14:30.820] It's... [14:30.820 --> 14:31.640] It's a little bit confusing. [14:31.780 --> 14:33.200] Because the learning looks at the source... [14:33.200 --> 14:34.360] And the routing looks at the destination. [14:35.580 --> 14:36.100] So... [14:36.780 --> 14:37.300] Um... [14:37.300 --> 14:39.200] In the first case with packet A... [14:39.200 --> 14:41.400] Everybody learned about... [14:42.320 --> 14:42.840] Uh... [14:42.840 --> 14:43.420] Station 5. [14:43.840 --> 14:45.200] Learned routing information for that. [14:45.300 --> 14:46.120] But with packet B... [14:46.120 --> 14:47.700] Not everybody learned about station 4. [14:48.940 --> 14:49.460] So... [14:49.460 --> 14:51.120] It's kind of heuristic... [14:51.120 --> 14:51.800] Like a... [14:51.800 --> 14:52.980] Memory cache or something. [14:54.940 --> 14:55.700] Anything else? [14:58.560 --> 14:59.280] No? [14:59.460 --> 14:59.640] Maybe? [15:00.040 --> 15:00.520] Okay. [15:15.960 --> 15:16.680] Um... [15:16.680 --> 15:16.980] Alright. [15:17.160 --> 15:18.660] So the spanning tree is... [15:18.660 --> 15:19.100] If you have... [15:20.660 --> 15:21.380] Um... [15:24.940 --> 15:27.220] This is a real problem for flooding. [15:28.100 --> 15:28.720] Um... [15:28.720 --> 15:31.020] Because when you start with... [15:32.200 --> 15:35.600] This first packet A and there's no information for station 2. [15:38.000 --> 15:38.520] Then... [15:40.920 --> 15:41.440] Uh... [15:41.440 --> 15:42.740] Let's say station 2 is here. [15:42.980 --> 15:43.900] Station whatever it was. [15:44.020 --> 15:44.560] 5 or something. [15:48.550 --> 15:49.910] Packet A goes here. [15:52.130 --> 15:53.550] And then it goes here. [15:59.550 --> 16:01.670] And then it goes here. [16:03.610 --> 16:05.570] And it just keeps going. [16:07.010 --> 16:08.590] And it causes a storm. [16:10.170 --> 16:10.770] So... [16:11.970 --> 16:12.570] Um... [16:13.810 --> 16:14.410] The... [16:14.410 --> 16:15.470] Uh... [16:15.470 --> 16:15.890] There's... [16:15.890 --> 16:18.330] There's no hop count or anything with these switches. [16:18.690 --> 16:19.290] Because... [16:19.290 --> 16:20.530] Hop counts are in layer 3. [16:20.630 --> 16:21.190] What can they do? [16:21.950 --> 16:22.510] Uh... [16:24.090 --> 16:24.690] So... [16:24.690 --> 16:25.390] This is... [16:25.390 --> 16:26.630] This is impossible for switches. [16:26.790 --> 16:28.590] This can't even happen even briefly. [16:28.590 --> 16:30.370] It'll shut down the whole network. [16:30.830 --> 16:31.230] And... [16:31.230 --> 16:31.930] Uh... [16:31.930 --> 16:33.330] If you read the manuals for switches. [16:33.530 --> 16:35.290] This is the thing that I hate about them most. [16:35.450 --> 16:36.410] Is they keep saying... [16:36.410 --> 16:37.010] Uh... [16:37.010 --> 16:38.130] If you make this configuration. [16:38.310 --> 16:39.490] It could cause a storm. [16:40.210 --> 16:40.610] Uh... [16:40.610 --> 16:40.710] And... [16:40.710 --> 16:40.970] Uh... [16:40.970 --> 16:41.710] There's some bug. [16:41.830 --> 16:42.610] And it caused a storm. [16:43.070 --> 16:45.390] And there's like a dozen things that you need to not do. [16:45.510 --> 16:46.990] If you don't want to have a storm. [16:47.930 --> 16:48.330] And... [16:48.330 --> 16:48.970] Like... [16:48.970 --> 16:50.750] Maybe the storm isn't my fault anymore. [16:50.970 --> 16:52.010] Maybe this is... [16:52.010 --> 16:53.690] Not a good way to do things. [16:54.530 --> 16:54.930] But... [16:54.930 --> 16:55.450] Uh... [16:56.510 --> 16:58.570] People run switches without storms all the time. [16:58.570 --> 16:59.190] But... [16:59.190 --> 16:59.610] Uh... [16:59.610 --> 17:00.890] The point of RSTP. [17:01.670 --> 17:02.150] Is... [17:02.150 --> 17:03.510] To break one of these links. [17:05.710 --> 17:06.190] Uh... [17:06.190 --> 17:07.090] If you break this one. [17:07.990 --> 17:08.470] Then... [17:08.470 --> 17:08.990] It can be... [17:08.990 --> 17:12.250] Then you have the same diagram that I had over here. [17:12.630 --> 17:13.970] Where it's just one link. [17:14.090 --> 17:14.530] Two links. [17:14.690 --> 17:15.750] And there's no more storm. [17:15.930 --> 17:16.490] There's no... [17:16.490 --> 17:17.230] Loops. [17:17.790 --> 17:19.410] In the topology of switches. [17:19.610 --> 17:20.950] Which is what you've probably heard before. [17:23.110 --> 17:23.590] So... [17:24.590 --> 17:26.450] I think I need to talk about... [17:27.510 --> 17:27.990] Uh... [17:27.990 --> 17:30.290] The difference between a tree and a graph. [17:31.450 --> 17:31.930] Uh... [17:31.930 --> 17:32.570] Who... [17:32.570 --> 17:34.090] Needs me to talk about that. [17:34.430 --> 17:34.730] And... [17:34.730 --> 17:36.030] Some of you probably don't want to hear it again. [17:36.210 --> 17:36.430] But... [17:36.430 --> 17:36.750] Somebody? [17:37.230 --> 17:37.630] Yeah? [17:39.030 --> 17:39.510] Okay. [17:40.770 --> 17:41.250] Uh... [17:41.250 --> 17:42.090] So... [17:44.130 --> 17:46.810] A tree is something that doesn't have any loops in it. [17:47.250 --> 17:47.730] But... [17:48.530 --> 17:49.010] Um... [17:49.010 --> 17:50.690] Trees in computer science grow down. [17:50.930 --> 17:51.690] Instead of up. [17:51.730 --> 17:52.490] Like in the forest. [17:58.770 --> 17:59.250] So... [17:59.250 --> 18:00.330] A tree can have... [18:00.330 --> 18:02.630] It has a notion of ancestry. [18:03.170 --> 18:03.330] You know? [18:03.450 --> 18:04.470] Like there's parents and children. [18:06.210 --> 18:06.690] Um... [18:06.690 --> 18:08.450] It has a direction that it grows in. [18:09.730 --> 18:10.210] And... [18:10.210 --> 18:12.290] That's enough to prevent it from having loops. [18:12.470 --> 18:14.090] And you can have as many children. [18:14.090 --> 18:15.650] Or as few children as you like. [18:16.510 --> 18:16.970] Uh... [18:16.970 --> 18:17.970] A graph... [18:17.970 --> 18:18.430] Uh... [18:18.430 --> 18:19.310] Can have... [18:19.310 --> 18:20.950] Anything connected to anything else. [18:23.110 --> 18:24.150] And there's... [18:24.150 --> 18:24.290] Uh... [18:24.990 --> 18:25.710] Directed graphs. [18:26.010 --> 18:26.750] If there's an arrow here. [18:26.910 --> 18:27.690] And undirected graphs. [18:27.810 --> 18:28.530] If it's just edges. [18:30.030 --> 18:30.550] So... [18:30.550 --> 18:31.270] In general. [18:31.370 --> 18:33.050] The way this is going to pan out is... [18:33.050 --> 18:33.290] Uh... [18:33.290 --> 18:34.670] Switches need to have a tree. [18:35.270 --> 18:35.790] And... [18:35.790 --> 18:38.570] The two layer two routing protocols can deal with graphs. [18:41.790 --> 18:42.310] So... [18:43.010 --> 18:45.310] I think what I'll start with is... [18:46.990 --> 18:49.310] What implications does that have for... [18:50.870 --> 18:51.850] Optimal routing. [18:52.430 --> 18:54.150] Or even just sane routing. [18:57.130 --> 18:57.730] Um... [18:57.730 --> 18:59.470] Is the tree graph thing that makes sense? [19:00.230 --> 19:00.270] Yeah. [19:00.490 --> 19:00.730] Okay. [19:02.790 --> 19:03.470] So... [19:03.470 --> 19:03.970] If you have... [19:05.170 --> 19:06.910] The San Francisco office. [19:08.630 --> 19:09.890] The LA office. [19:15.540 --> 19:17.040] And the New York office. [19:19.580 --> 19:23.840] Then obviously you're going to put the highest bridge priority on the New York office. [19:23.840 --> 19:25.020] So... [19:25.020 --> 19:26.200] Um... [19:28.640 --> 19:30.320] You will have all of these connected. [19:32.640 --> 19:39.120] And RSTP through an algorithm that I will hopefully explain later if I'm not using up too much time. [19:39.440 --> 19:41.260] Will turn this link off. [19:41.480 --> 19:43.140] To stop the... [19:43.840 --> 19:44.940] Storm from happening. [19:45.560 --> 19:46.080] Uh... [19:46.080 --> 19:46.760] So now... [19:46.760 --> 19:48.920] Whenever LA wants to communicate with San Francisco. [19:49.440 --> 19:50.460] They'll have to... [19:50.460 --> 19:51.760] Go through New York. [19:53.120 --> 19:54.000] And that... [19:54.000 --> 19:56.360] That takes about as long as going to Germany. [19:56.560 --> 19:57.080] It's about... [19:57.080 --> 19:57.500] I don't know... [19:57.500 --> 19:58.500] 50 to 100 milliseconds. [19:59.620 --> 19:59.840] Uh... [19:59.840 --> 20:00.460] Whereas... [20:00.460 --> 20:02.740] Within California it'd be more like 10 milliseconds. [20:03.300 --> 20:03.780] And... [20:03.780 --> 20:05.100] And that's enough to be annoying. [20:07.460 --> 20:07.940] Uh... [20:07.940 --> 20:08.600] But... [20:08.600 --> 20:10.220] If you want to use... [20:10.220 --> 20:10.580] Uh... [20:10.580 --> 20:12.280] L2 switching on your WAN. [20:12.560 --> 20:13.040] Then... [20:13.040 --> 20:14.820] You have to do something like this. [20:15.560 --> 20:16.040] So... [20:16.640 --> 20:17.120] Um... [20:17.120 --> 20:18.900] People will try to maybe... [20:18.900 --> 20:19.880] Move the... [20:19.880 --> 20:22.120] The highest bridge priority to LA or something. [20:22.840 --> 20:23.800] And make this three. [20:24.000 --> 20:24.880] But that's... [20:24.880 --> 20:25.080] You know... [20:25.080 --> 20:25.720] Clearly unacceptable. [20:27.440 --> 20:27.920] Um... [20:27.920 --> 20:28.680] Well... [20:28.680 --> 20:30.040] Because the LA is going to go down. [20:30.360 --> 20:31.660] And then this one's going to take over. [20:31.660 --> 20:32.320] Or is it... [20:32.320 --> 20:33.940] It's just... [20:33.940 --> 20:34.720] Uh... [20:34.720 --> 20:35.380] So... [20:35.380 --> 20:36.500] That makes sense, right? [20:36.600 --> 20:37.640] If you had L3... [20:37.640 --> 20:39.660] If you had L3 routing, then... [20:40.280 --> 20:40.660] Uh... [20:40.660 --> 20:42.180] And you could deal with a graph. [20:43.420 --> 20:43.860] Then... [20:43.860 --> 20:44.280] Uh... [20:44.280 --> 20:45.840] These packets could go through directly. [20:46.000 --> 20:48.020] There wouldn't be no more need to turn this link off. [20:50.420 --> 20:50.860] Um... [20:50.860 --> 20:51.600] It's okay so far? [20:53.600 --> 20:54.100] All right. [20:54.140 --> 20:55.660] So this next example... [20:56.820 --> 20:59.720] This is what I worked the hardest on right before the presentation. [21:00.960 --> 21:01.400] Um... [21:02.800 --> 21:04.590] I didn't explain this, but... [21:05.520 --> 21:13.820] The purpose of RSTP is to turn links off to eliminate cycles in the graph and make it into a tree. [21:14.220 --> 21:15.480] Which is what it did here. [21:16.600 --> 21:20.400] So I'm going to come up with a slightly more complicated shape. [21:27.920 --> 21:28.360] So... [21:28.820 --> 21:40.600] Everything that has any kind of a line at all, no matter what kind of extra mark, like an X or a dot, these are links that you have purchased from the telephone company or run along the floor or whatever. [21:41.880 --> 21:42.400] Uh... [21:42.400 --> 21:43.040] And... [21:43.040 --> 21:45.800] What I'm going to walk through is... [21:45.800 --> 21:46.820] Um... [21:46.820 --> 21:51.600] RSTP in this diagram has turned off this link to remove this cycle. [21:52.020 --> 21:53.080] Because this is... [21:53.420 --> 21:54.420] This is the New York switch. [21:54.620 --> 21:57.420] So it's the head of the tree that it's established. [21:57.700 --> 21:59.380] And it's decided to turn off this link. [22:00.220 --> 22:00.740] Uh... [22:00.740 --> 22:01.580] What happens... [22:01.580 --> 22:03.560] Is for some reason... [22:03.560 --> 22:04.540] Uh... [22:04.540 --> 22:05.900] Backhoe breaks this link. [22:06.980 --> 22:07.500] And... [22:07.500 --> 22:09.260] The network is no longer connected. [22:09.460 --> 22:14.660] So RSTP needs to turn links on and off to restore complete connectivity. [22:15.000 --> 22:16.840] But still not have any cycles. [22:17.880 --> 22:22.420] And it needs to do this in a way that there are no cycles generated even briefly. [22:22.660 --> 22:23.820] Because if there are, there will be a storm. [22:24.960 --> 22:25.400] Uh... [22:25.400 --> 22:28.120] So RSTP is going to converge to this shape. [22:28.120 --> 22:29.920] Through five steps. [22:36.720 --> 22:37.280] Um... [22:37.280 --> 22:38.440] Have I given enough background here? [22:38.520 --> 22:39.700] Can I go on with the five steps? [22:41.480 --> 22:42.040] Alright. [23:03.710 --> 23:04.270] This... [23:04.270 --> 23:05.230] This thing is really nice. [23:06.130 --> 23:06.330] Alright. [23:09.690 --> 23:10.250] So... [23:10.250 --> 23:12.350] We're starting out with the... [23:12.350 --> 23:14.210] The shape that I drew on the first card. [23:24.040 --> 23:27.420] So this is a working link that's been turned off by RSTP. [23:28.300 --> 23:29.880] And this is a link that's gone away. [23:31.920 --> 23:36.420] RSTP will send a proposal... [23:38.680 --> 23:39.860] I hope I get this right. [23:40.740 --> 23:41.140] Anyway. [23:43.280 --> 23:45.560] It will at least be close to right if it's not right. [23:45.560 --> 23:46.240] It's... [23:46.240 --> 23:47.360] How long did you change your application? [23:47.700 --> 23:48.060] No. [23:48.180 --> 23:48.460] Not yet. [23:52.460 --> 23:53.080] Um... [23:54.780 --> 23:55.400] Right. [23:55.780 --> 23:58.040] I don't have excellent notes on the TCN. [23:58.560 --> 23:59.180] Um... [23:59.180 --> 24:00.920] But it's, uh... [24:00.920 --> 24:04.080] What he's talking about is... [24:04.080 --> 24:05.660] Where's my first card? [24:09.380 --> 24:09.680] Uh... [24:09.980 --> 24:15.400] When you make this change, there's going to be learned source addresses in the... [24:16.340 --> 24:16.640] The... [24:16.940 --> 24:17.340] The... [24:17.340 --> 24:17.740] Cam... [24:17.740 --> 24:19.120] The content accessible... [24:19.120 --> 24:20.400] Content addressable memory. [24:21.180 --> 24:21.440] Uh... [24:21.440 --> 24:28.080] The routing table next to all of these ports in the switches will have learned information about how to reach stations attached to these switches. [24:28.720 --> 24:33.060] When you change the topology and eliminate this link, uh... [24:33.060 --> 24:34.780] That information isn't valid anymore. [24:35.200 --> 24:37.420] Because, um... [24:37.820 --> 24:40.280] For example... [24:41.500 --> 24:43.680] This switch here... [24:43.680 --> 24:47.980] If it wishes to reach a station attached to this switch... [24:47.980 --> 24:49.420] Now it needs to go this way. [24:49.420 --> 24:50.520] Well, before it went this way. [24:51.440 --> 24:54.100] So, in the process of doing the RSTP... [24:54.100 --> 24:55.600] There are, uh... [24:55.600 --> 25:00.520] TCN messages broadcast throughout all the switches that cause them to flush their, uh... [25:00.520 --> 25:00.780] Uh... [25:00.780 --> 25:02.940] Learned station address... [25:02.940 --> 25:03.440] Information. [25:03.980 --> 25:07.100] And they just flood the packets all over again and relearn them. [25:07.860 --> 25:08.040] Uh... [25:08.040 --> 25:10.500] It flushes all of the information on a port... [25:10.500 --> 25:11.040] At once. [25:13.800 --> 25:14.360] Um... [25:14.360 --> 25:16.880] But what I'm trying to struggle through is... [25:16.880 --> 25:19.520] How it decides to turn this link back on. [25:21.940 --> 25:22.500] So... [25:23.920 --> 25:27.720] And it has to do this without making any brief loops in the graph. [25:28.480 --> 25:30.320] So, it starts with a proposal here. [25:32.120 --> 25:32.560] And... [25:32.560 --> 25:35.200] This switch transmits the proposal to this one. [25:37.120 --> 25:38.380] And then this switch... [25:38.380 --> 25:40.820] Would like to agree to this proposal. [25:41.260 --> 25:43.920] But before it can do that, it has to turn off these two links. [25:44.900 --> 25:47.500] These two links are not ultimately going to be turned off. [25:47.800 --> 25:48.500] But, uh... [25:48.500 --> 25:50.840] During the convergence, they're temporarily disabled. [25:50.840 --> 25:51.820] Just like this one. [25:52.820 --> 25:54.020] So, this is step two. [25:54.840 --> 25:55.340] And then... [25:55.340 --> 25:56.640] Once this is done... [25:56.640 --> 25:57.600] The switch sends an agreement. [26:02.440 --> 26:02.840] Uh... [26:06.140 --> 26:07.300] Maybe I should... [26:07.300 --> 26:08.680] Keep two on the screen at once. [26:35.360 --> 26:36.900] So, this link no longer exists. [26:37.080 --> 26:37.840] I'm going to leave it blank. [26:41.670 --> 26:43.470] And these links have just been disabled. [26:48.350 --> 26:51.690] Disabled links are still allowed to send RSTP stuff. [26:52.090 --> 26:53.590] All links always send RSTP. [26:53.710 --> 26:55.850] This is the actual data packets that they don't send. [26:58.050 --> 26:58.670] So... [26:59.730 --> 27:02.710] This switch will send two of these... [27:02.710 --> 27:04.410] Please disable everything proposals. [27:05.930 --> 27:07.550] And these switches... [27:09.830 --> 27:11.010] They don't do anything. [27:14.130 --> 27:16.430] They don't have any downstream links to disable. [27:16.710 --> 27:17.930] So, they immediately agree. [27:23.120 --> 27:24.480] Does this make sense so far? [27:34.410 --> 27:37.950] So, after the agreement, the link is turned back on. [27:42.290 --> 27:42.770] Um... [27:42.770 --> 27:45.490] In a slightly better diagram, I would show... [27:46.250 --> 27:49.130] Which of these two switches is disabling the link. [27:50.170 --> 27:50.650] Um... [27:50.650 --> 27:52.470] Because it's not the link itself that's disabled. [27:52.710 --> 27:54.810] It's one of these switches turns it off at its port. [27:54.950 --> 27:55.810] They don't both turn it off. [27:55.810 --> 27:56.410] Only one does. [27:56.710 --> 27:58.650] But it's not important to get a feel for the algorithm. [28:00.830 --> 28:01.310] Um... [28:02.150 --> 28:02.630] So... [28:07.740 --> 28:09.340] Here the proposal goes this way. [28:10.520 --> 28:11.640] This link is broken. [28:11.980 --> 28:12.900] And then it agrees. [28:32.580 --> 28:34.700] And we repeat the same thing along this link. [29:05.870 --> 29:09.250] And then after the agreement, this switch turns the link back on. [29:12.620 --> 29:13.140] And... [29:13.140 --> 29:15.800] I don't remember where the TCNs are sent. [29:15.960 --> 29:17.700] If they're sent before or after or during. [29:17.920 --> 29:19.360] I assume they're sent during. [29:19.800 --> 29:22.240] But, um... [29:22.240 --> 29:24.220] There's, uh... [29:24.220 --> 29:29.000] It's not always necessary for, um... [29:29.000 --> 29:32.920] The TCN to clear every bit of learned information in the whole network. [29:33.680 --> 29:34.240] But... [29:34.240 --> 29:38.560] It usually ends up clearing more information than it needs to in theory. [29:39.120 --> 29:40.500] Just because the... [29:40.500 --> 29:41.820] That protocol doesn't... [29:41.820 --> 29:44.460] Leave a way for the switches to know... [29:44.460 --> 29:46.160] How little they need to clear. [29:46.620 --> 29:49.080] None of the switches have a complete picture of the overall network. [29:52.420 --> 29:52.820] Um... [29:53.400 --> 29:53.900] All right. [29:54.060 --> 29:55.800] So you guys understand RSTP, sorta? [30:03.850 --> 30:04.250] So... [30:04.250 --> 30:07.830] You can see how the combination of RSTP and the flooding learning... [30:07.830 --> 30:08.950] Will... [30:08.950 --> 30:10.310] Route around... [30:10.310 --> 30:10.670] Uh... [30:10.670 --> 30:11.470] These failed links. [30:12.130 --> 30:12.690] And... [30:12.690 --> 30:13.990] It will... [30:13.990 --> 30:16.550] Dynamically learn the locations of all the stations. [30:17.690 --> 30:20.170] And those are the two things that all these protocols need to do. [30:21.890 --> 30:22.450] Um... [30:22.450 --> 30:27.150] Before I go on, I think I need to give some background on... [30:28.090 --> 30:28.650] Um... [30:28.650 --> 30:31.310] Hardware routers as opposed to UNIX routers. [30:31.710 --> 30:33.290] Because they have some slightly different terms. [30:35.370 --> 30:35.930] Um... [30:39.340 --> 30:39.900] Yeah. [30:46.210 --> 30:47.050] I don't know. [30:47.190 --> 30:48.250] I'll repeat it if it's not. [30:49.350 --> 30:49.830] All right. [30:50.610 --> 30:51.430] Just go ahead. [30:52.630 --> 30:53.190] Anyway... [30:53.190 --> 30:53.470] Um... [30:54.150 --> 30:55.490] If the... [30:55.490 --> 30:57.030] Basically, how... [30:57.030 --> 30:58.930] When the link is broken... [30:58.930 --> 31:01.670] If that link were to come back on or something... [31:01.670 --> 31:06.510] How does RSTP then stop it from forming a loop when it's regaining the links? [31:07.710 --> 31:08.270] Um... [31:08.270 --> 31:12.750] Will the first one recognize the proposal chain or something? [31:14.590 --> 31:15.010] Uh... [31:15.010 --> 31:15.590] The... [31:17.550 --> 31:17.970] Um... [31:18.830 --> 31:19.250] The... [31:19.250 --> 31:19.310] Um... [31:19.310 --> 31:19.930] Mac status. [31:20.910 --> 31:21.330] The... [31:21.330 --> 31:21.910] Um... [31:21.910 --> 31:22.190] All right. [31:22.190 --> 31:23.210] Maybe it's not even the Mac. [31:23.570 --> 31:24.270] I think... [31:24.270 --> 31:25.770] It's either the layer one or the Mac. [31:25.950 --> 31:26.490] It's another confusion. [31:26.670 --> 31:29.550] The green light on the back of your Ethernet card. [31:30.590 --> 31:31.170] Uh... [31:31.170 --> 31:34.730] Feeds into the switch's control plane. [31:34.970 --> 31:36.430] Where it decides all this stuff. [31:37.130 --> 31:38.890] And, um... [31:38.890 --> 31:43.690] If you have an expensive switch like a Cisco that, uh... [31:43.690 --> 31:46.130] Doesn't implement RSTP because it's too expensive. [31:46.770 --> 31:49.570] You can't afford the new one that does implement RSTP. [31:49.990 --> 31:50.470] Uh... [31:50.470 --> 31:52.910] Then you'll notice the ports go orange for about 30 seconds. [31:52.910 --> 31:53.890] And... [31:53.890 --> 31:54.910] Uh... [31:54.910 --> 31:55.970] When you first... [31:55.970 --> 31:56.270] When... [31:56.270 --> 32:01.410] When that link state light transitions from dark to green, uh... [32:01.410 --> 32:03.570] The port doesn't come up in a forwarding state. [32:03.830 --> 32:05.310] It comes up in a blocked state. [32:05.890 --> 32:07.710] And then, uh... [32:07.710 --> 32:12.190] The switch has to operate through this whole proposal agreement thing before it'll turn the link back on. [32:14.410 --> 32:14.790] Yeah. [32:15.010 --> 32:15.390] So... [32:15.390 --> 32:17.570] That would be... [32:18.210 --> 32:18.590] Uh... [32:18.590 --> 32:18.890] Yeah. [32:19.070 --> 32:20.450] In the cars... [32:21.050 --> 32:21.430] Uh... [32:21.430 --> 32:22.550] The X... [32:23.030 --> 32:24.110] Was a broken link. [32:24.350 --> 32:25.130] And then... [32:25.130 --> 32:27.410] Dashed lines is a working link that's blocked. [32:27.550 --> 32:29.090] So the lights would be green on this link. [32:29.230 --> 32:30.170] But it would stay blocked. [32:32.010 --> 32:32.390] So... [32:33.430 --> 32:33.810] Uh... [32:34.250 --> 32:36.810] I don't have a good example for a link coming back up. [32:37.630 --> 32:39.430] And it was a bit of a struggle to make this one. [32:39.510 --> 32:40.670] And it might not be completely right. [32:41.390 --> 32:41.910] But... [32:41.910 --> 32:42.390] Uh... [32:42.390 --> 32:43.910] It goes through a similar process. [32:44.290 --> 32:44.810] Of... [32:44.810 --> 32:46.210] When this link comes back up. [32:46.610 --> 32:47.970] If it's a better path. [32:49.130 --> 32:49.650] Um... [32:49.650 --> 32:49.910] Then... [32:50.530 --> 32:51.630] This switch here. [32:51.930 --> 32:54.090] Will know a better path to the root switch. [32:54.370 --> 32:56.570] So it will send a proposal to this switch. [32:57.510 --> 32:59.490] And then this switch will turn off this link. [33:00.470 --> 33:02.750] And then it will agree and then bring up this link. [33:03.250 --> 33:04.290] So it's... [33:04.290 --> 33:05.730] It's something like... [33:09.250 --> 33:09.770] Um... [33:09.770 --> 33:10.030] One... [33:11.090 --> 33:11.610] Two... [33:11.610 --> 33:11.690] Two... [33:13.070 --> 33:13.650] Three... [33:13.650 --> 33:14.620] And then... [33:22.250 --> 33:23.550] What about the priority? [33:27.730 --> 33:28.310] Or... [33:29.250 --> 33:29.830] Yeah. [33:30.010 --> 33:30.770] Sorry I'm so dry. [33:30.950 --> 33:32.270] Is this more confusing? [33:32.410 --> 33:32.990] Less confusing? [33:33.310 --> 33:34.330] I don't... [33:43.030 --> 33:43.750] Anyway. [33:44.390 --> 33:52.970] All switches even pre-RSTP switches bring freshly connected links up blocked and then transition through some state machine before they start forwarding. [33:52.970 --> 33:58.530] And you can fool them if you have a... [34:16.310 --> 34:16.830] Um... [34:18.030 --> 34:26.530] If you have this setup and you add this connection, this will actually screw them up. [34:26.730 --> 34:27.670] It's documented. [34:27.870 --> 34:28.650] They tell you don't do this. [34:28.750 --> 34:29.350] It will cause a storm. [34:30.330 --> 34:30.810] Um... [34:30.810 --> 34:30.930] Um... [34:30.930 --> 34:31.450] Because... [34:31.450 --> 34:33.290] They can't watch the link state come up. [34:33.370 --> 34:34.970] They don't know when this hub has been connected. [34:35.910 --> 34:36.310] Uh... [34:36.310 --> 34:36.910] And... [34:36.910 --> 34:42.070] God willing, once it's connected, they will be able to see each other's packets through the storm. [34:42.070 --> 34:48.630] And we'll eventually learn to turn off whichever one of these has the least favorable path to the root switch. [34:48.950 --> 34:50.950] And the storm will end, hopefully. [34:51.870 --> 34:52.510] Um... [34:52.510 --> 34:54.230] Depending on how expensive your switches are. [34:54.690 --> 34:54.970] I... [34:54.970 --> 34:57.170] I've never tried it, but it is... [34:57.170 --> 34:59.470] I'm explicitly warned against in the documentation. [35:00.330 --> 35:00.870] Is that... [35:00.870 --> 35:01.570] Is that... [35:01.570 --> 35:02.250] Maybe more helpful? [35:03.470 --> 35:04.090] Alright. [35:06.530 --> 35:07.170] Uh... [35:07.870 --> 35:09.610] Any more questions on the... [35:09.610 --> 35:10.350] The index cards? [35:20.110 --> 35:20.630] Uh... [35:21.330 --> 35:21.850] No. [35:22.470 --> 35:25.650] No one has ever told me about anything like that. [35:26.510 --> 35:27.690] Especially not publicly. [35:30.470 --> 35:30.990] Um... [35:30.990 --> 35:33.470] But, uh... [35:35.470 --> 35:35.990] Uh... [35:35.990 --> 35:36.190] Uh... [35:36.190 --> 35:36.350] Uh... [35:36.350 --> 35:39.430] You can set up VMware with a bunch of VMs underneath it. [35:39.430 --> 35:40.830] I know one person that tried to do that. [35:40.970 --> 35:42.010] I don't think it works very well. [35:45.050 --> 35:45.610] Uh... [35:45.610 --> 35:46.330] Uh... [35:46.330 --> 35:46.430] Uh... [35:46.430 --> 35:46.590] Uh... [35:46.590 --> 35:47.330] So... [35:47.330 --> 35:48.030] Uh... [35:48.030 --> 35:49.310] Commercial routing terms. [35:49.410 --> 35:52.670] People with UNIX routers usually think that routing means forwarding packets. [35:53.130 --> 35:53.930] But, uh... [35:53.930 --> 35:54.050] Uh... [35:54.050 --> 35:55.050] This is a difficult term. [35:55.690 --> 35:57.810] Because, um... [35:57.810 --> 35:58.270] Uh... [35:58.270 --> 35:58.590] Uh... [35:58.590 --> 35:59.010] Uh... [35:59.010 --> 35:59.790] Uh... [36:07.250 --> 36:07.810] Uh... [36:07.810 --> 36:08.690] Uh... [36:08.690 --> 36:08.990] Uh... [36:08.990 --> 36:09.010] Uh... [36:13.960 --> 36:14.520] Uh... [36:14.520 --> 36:14.920] Uh... [36:14.920 --> 36:15.300] Um... [36:15.300 --> 36:15.780] Line cards. [36:19.750 --> 36:24.310] And then there's some kind of bus that all these are connected to inside the router. [36:25.890 --> 36:27.730] And then they have, uh... [36:27.730 --> 36:28.330] You know, they have... [36:28.330 --> 36:29.310] They have brains in here. [36:29.750 --> 36:30.070] Uh... [36:30.070 --> 36:31.710] It's not just regular Ethernet chips. [36:31.910 --> 36:32.870] They have some kind of smarts. [36:33.430 --> 36:37.410] And then, separate from this, there's the control plane. [36:40.990 --> 36:46.530] Which will be a really slow and cheap CPU with not very much memory that they've charged you a whole lot for. [36:47.330 --> 36:52.290] And the control plane will snoop on this bus a little bit. [36:52.890 --> 36:57.770] I think it sometimes sort of acts like another port on the bus. [36:58.250 --> 37:07.230] And it will also send commands to the brains inside each of these line cards. [37:09.910 --> 37:12.570] So this is the forwarding plane. [37:17.050 --> 37:28.310] So if you have a router, an L3 router that has a packet coming in and it needs to put this onto the forwarding plane and send it out, that's not called routing. [37:28.570 --> 37:29.530] That's called switching. [37:29.810 --> 37:31.670] At least according to one giant vendor. [37:33.890 --> 37:39.810] So a router doing this is switching, which is very much like what a switch does. [37:40.490 --> 37:44.310] Which shows kind of what I'm trying to say about these layers not meaning a whole lot. [37:46.470 --> 37:52.150] The routing is more like what RSTP and the learning process do. [37:52.850 --> 37:59.430] Of sending these commands into the line cards to tell them where they need to forward based on destination. [38:02.250 --> 38:03.310] So does that make sense? [38:03.430 --> 38:04.530] Do you understand the difference from UNIX? [38:07.770 --> 38:09.390] So there's some other terms. [38:09.670 --> 38:14.770] There's the cam, the fib, and the rib. [38:16.410 --> 38:19.150] By the way, I'm going to talk for a lot more than an hour probably. [38:22.370 --> 38:23.610] So what time is it? [38:24.330 --> 38:26.330] Three jam. [38:26.750 --> 38:27.310] Excellent. [38:30.890 --> 38:32.530] Definitely not more than two hours. [38:33.250 --> 38:41.450] So the cam or for layer two or in this new stuff they're selling, they call it the T cam. [38:41.970 --> 38:43.390] I don't know why exactly. [38:45.570 --> 38:50.170] This is the main part of the brains inside the line card. [38:51.570 --> 38:55.070] The control plane fills the cam up with stuff. [38:55.350 --> 39:01.530] I think in switches it may be possible to fill the cam without involving the control plane. [39:01.670 --> 39:02.150] I'm not sure. [39:02.150 --> 39:09.590] And then maybe when the TCN comes through, the control plane tells the line cards to flush the cam. [39:13.710 --> 39:18.430] The fib is sort of like the T cam. [39:22.310 --> 39:36.470] The control plane keeps inside it a list sort of like that learned list of destination, port, [39:39.950 --> 39:41.310] and next hop. [39:42.570 --> 39:48.070] So if this is like port one, two, three, then it will say if you want to reach... [39:58.930 --> 40:02.590] This is what the UNIX people call the routing table, is the fib. [40:04.370 --> 40:12.190] And the rib is a series of other routing tables maintained by the protocols that I'm about to talk about. [40:13.370 --> 40:16.930] And not all the entries in the rib make it into the fib. [40:21.330 --> 40:25.190] So you can have multiple routing tables running at once and they feed into the fib. [40:25.450 --> 40:28.730] But for the purpose of our simple discussion, these are almost collapsed. [40:28.730 --> 40:34.310] So the dynamic routing protocol will establish the fib. [40:34.550 --> 40:38.030] Which will be loaded into the cam or TCAM and the line cards and cause the forwarding to happen. [40:38.990 --> 40:39.970] Is this okay? [40:40.130 --> 40:41.110] The difference from UNIX makes sense? [40:45.650 --> 40:53.690] So it sounds like the cam is the fib loaded to memory and some kind of quickly accessible memory structure. [40:54.110 --> 40:54.850] Hashtag or something. [40:55.370 --> 40:56.810] It's basically the same information. [40:58.730 --> 41:00.490] Yeah, I think that sounds fair. [41:00.810 --> 41:07.790] My impression is that the fib stored inside the control plane is in normal memory. [41:08.190 --> 41:14.830] And at least parts of it will be loaded into special memory in the line cards that's not regular DRAM. [41:15.090 --> 41:16.450] And that's the cam or the TCAM. [41:19.450 --> 41:30.930] So when Cisco tells you that they are process switching a packet, then that means it has to go to the control plane, which looks it up in the regular fib, and then sends it by hand out of a line card. [41:31.510 --> 41:32.130] Rather than... [41:36.590 --> 41:39.010] When it's in the TCAM, it's hardware switched. [41:54.400 --> 42:17.190] So I don't have index cards for OSPF, but it has some character that makes it harder to make index cards up because it's not synchronous the way that the RSTP and flooding learning is. [42:29.040 --> 42:32.100] So these are three OSPF routers and three links between them. [42:32.260 --> 42:35.680] Over these links, several things will be happening at once. [42:37.760 --> 42:40.040] They will be sending hello packets. [42:42.930 --> 42:47.610] And they all send these to each other about once every 10 seconds. [42:53.170 --> 43:08.070] And they will be sending database discovery packets, or as it will be called something else, to... [43:08.070 --> 43:10.390] This is what's flooded in OSPF. [43:10.390 --> 43:17.490] So, in the switch network, you flood the packets when you don't recognize the destination. [43:20.570 --> 43:24.090] In OSPF, you flood routing information. [43:24.350 --> 43:34.910] So, as you know with the regular IP network, you'll configure by hand subnets onto each router. [43:46.490 --> 43:55.350] And these subnets are flooded over these links in the database discovery packets, with a protocol where it will send... [44:06.260 --> 44:08.560] So, this router will say, I have this attached. [44:08.840 --> 44:10.320] And the other router will say, okay. [44:10.780 --> 44:12.600] And then this router will say... [44:18.200 --> 44:19.500] And then this one says, okay. [44:21.520 --> 44:27.980] So, this router will advertise the subnet in this direction, in this direction, and then this one will copy it in this direction. [44:29.100 --> 44:34.800] And they have version numbers to help and not send too much of this information. [44:35.060 --> 44:37.700] And this database discovery process is really complicated. [44:38.460 --> 44:40.540] And I didn't prepare enough to understand it. [44:40.540 --> 44:40.900] Go ahead. [44:41.200 --> 44:45.000] Those two bottom routers, AVR, are they all part of the same area? [44:46.160 --> 44:46.560] Yeah. [44:46.720 --> 44:47.660] I didn't do anything with areas. [44:47.900 --> 44:48.400] All one area. [44:52.520 --> 44:55.420] So, these are the only two kind of packets actually transmitted. [44:56.280 --> 45:07.560] And then the third step, which, again, runs not synchronized with these other two, is the dextra algorithm. [45:15.280 --> 45:24.240] So, the hello packets are sent every ten seconds, no matter whether the database discovery packets are flowing or not. [45:25.740 --> 45:31.420] And the routers learn about their neighbors through these packets and then send out the database advertisements. [45:33.480 --> 45:40.540] These routers, these packets build within each router a picture of the entire network. [45:41.240 --> 45:46.300] And because the packets are flooded, the picture contained inside each router is identical. [45:51.140 --> 45:54.620] So, they all have the same picture of the network. [46:01.260 --> 46:11.780] And this algorithm runs separately on each of these to produce the FIB. [46:24.880 --> 46:29.280] So, all OSPF routers have a complete knowledge of the entire network. [46:30.940 --> 46:39.980] And the problem that you can see with this from the perspective of switches is these database discovery packets are going to take time to send. [46:40.280 --> 46:42.680] And not all the routers are going to have them at the same time. [46:42.680 --> 46:54.000] And because these two processes are disconnected, it's not true that the dextra algorithm runs every time a new database discovery packet is seen. [46:54.720 --> 46:56.480] It runs periodically. [46:56.920 --> 46:59.600] It runs until it finishes before it runs again. [47:01.120 --> 47:04.720] And new DD packets could come in while the algorithm is running. [47:06.220 --> 47:10.060] So, if there are a lot of changes, the FIB is always a little bit out of date. [47:11.420 --> 47:15.600] If there are too many changes that happen too quickly, it won't work. [47:15.600 --> 47:19.720] Which is the same that's true of switches because it turns off those links. [47:22.340 --> 47:29.760] But the reason that these can be disconnected is because layer 3 has an IPTTL. [47:31.940 --> 47:43.210] So, if the FIB here is not equal to the FIB here, it's possible that a packet could loop between these two routers. [47:44.070 --> 47:46.830] But it will only loop about 30 times and then it will be dropped. [47:46.830 --> 47:51.870] So, it's normal in layer 3 routing to have temporary routing loops. [47:53.470 --> 47:57.750] And the whole design of the algorithm has changed because they have this IPTTL. [48:05.620 --> 48:14.080] The other thing that's interesting about having a graph rather than a tree [48:17.090 --> 48:20.070] is... [48:21.330 --> 48:24.490] I think maybe I need one more layer for this example. [48:27.910 --> 48:32.070] Both switching and OSPF can, to some extent, split packets. [48:32.510 --> 48:34.070] Going from here to here. [48:34.850 --> 48:37.290] Some down this route and some down this route. [48:38.730 --> 48:42.230] In switching, you have to configure it manually. [48:42.230 --> 48:48.170] The only way it can work is you have two links here. [48:51.010 --> 48:54.990] And you manually bond these links together into some kind of channel. [48:56.090 --> 49:00.310] And it's not like it sends one bit down one channel and one bit down the other channel. [49:00.310 --> 49:06.310] As I understand it, it uses a hash of the destination MAC address. [49:09.310 --> 49:14.250] So, you know, a packet to station A will go over here and a packet to station B will go over here. [49:15.090 --> 49:16.990] And everybody uses these hashes. [49:17.190 --> 49:22.190] But in OSPF, I can send a packet to station A here and B over here. [49:25.530 --> 49:34.750] Because it's not a tree anymore, it's possible to balance traffic over more than one hop. [49:37.070 --> 49:38.170] Does that difference make sense? [49:54.930 --> 49:55.730] You ready for this? [49:55.850 --> 49:57.110] You want to ask questions about OSPF? [49:59.730 --> 50:01.250] You guys are all kind of questioned out. [50:03.550 --> 50:04.270] All right. [50:18.000 --> 50:30.480] The question is, in database discovery, will router A send off information to some third router about a subnet attached to router B? [50:31.320 --> 50:32.860] And the answer is yes. [50:33.500 --> 50:45.560] And they have some kind of synchronous information acknowledgement, information acknowledgement, that they'll keep their databases in sync. [50:46.360 --> 50:50.260] And I think they have some way that it uses less and less bandwidth. [50:50.580 --> 50:53.860] Like, it'll say, I already have the following LSAs. [50:55.140 --> 50:57.020] And it will give it a list of like 20 of them. [50:57.240 --> 51:01.680] And then the other end will say, I would like numbers 19 and 7. [51:09.420 --> 51:20.440] The information itself, it's absolutely flooded, but it doesn't just say, I have subnet A. [51:20.860 --> 51:26.120] What it says is, my latest database has the following LSAs. [51:26.120 --> 51:31.400] It has numbers 1 through 50, and it has 70, 71, and 72. [51:32.180 --> 51:36.220] And then it'll say, this is my latest database in one big packet. [51:36.520 --> 51:41.140] And then the other end will say, I have almost all of that except for 15. [51:42.260 --> 51:53.020] And because you can stick them together in packets, and because of this whole acknowledgement thing, it turns out that it doesn't just use up an infinite amount of bandwidth. [51:54.540 --> 51:55.480] So, I don't know. [51:55.860 --> 51:58.540] You're telling me stop, which I could do. [52:02.650 --> 52:09.390] I got an email from the speakers that said, since it was the last talk, that I could go until cleanup, which would be longer. [52:09.890 --> 52:10.170] All right. [52:10.470 --> 52:10.690] Cool. [52:11.850 --> 52:15.350] You guys can bail out if I'm boring you to tears. [52:16.630 --> 52:17.070] Yeah. [52:17.890 --> 52:20.070] Anybody want to, if you want to go to closing, sorry. [52:22.990 --> 52:23.430] Yeah. [52:25.170 --> 52:27.130] It won't be the first time I was lied to. [52:37.530 --> 52:48.810] So, the punchline with ISIS in five minutes is all about the different way that the OSI people address nodes. [52:49.110 --> 52:49.970] This is not IP. [52:50.210 --> 52:51.410] It's a different address format. [52:53.030 --> 52:56.870] So, if I can just find... [52:59.290 --> 53:01.830] I swear in a hurry, I'll just... [53:01.830 --> 53:03.210] These are my notes. [53:03.210 --> 53:05.170] I was just going to draw this out by hand. [53:22.300 --> 53:24.200] So, this is one byte wide. [53:24.860 --> 53:28.300] And this is M bytes wide, N bytes wide, O, P. [53:32.020 --> 53:36.760] The AFI is, I think it's almost always 47. [53:38.040 --> 53:42.080] And the AFI implies how big this is. [53:42.660 --> 53:44.080] Like where this boundary is. [53:44.220 --> 53:44.820] How big is M? [53:45.040 --> 53:45.780] How big is the rest? [53:48.160 --> 53:48.600] Yeah. [53:48.980 --> 53:50.760] I should write bigger, but... [53:52.900 --> 53:53.660] Is there really? [53:53.800 --> 53:54.380] It's a little blurry. [53:57.480 --> 53:57.740] It's all right. [53:57.920 --> 53:58.190] Other way. [53:59.000 --> 53:59.540] It's good. [53:59.820 --> 54:00.420] Yeah, it's on. [54:01.160 --> 54:01.600] Okay. [54:05.040 --> 54:07.040] So, this is sort of like subnets in IP. [54:07.040 --> 54:13.040] The system field either is equal to or is derived from the MAC address. [54:13.940 --> 54:18.080] So, every station will have a globally unique system field of about six bytes. [54:20.920 --> 54:29.460] And the IDI through the hoe DSP is something like your ASN. [54:30.690 --> 54:35.860] So, it's unique within your organization or within most of your organization. [54:36.740 --> 54:38.480] So, this is always the same. [54:38.730 --> 54:39.190] It's constant. [54:39.190 --> 54:42.600] And then this is your subnet number. [54:43.360 --> 54:46.400] But the subnet number has a special meaning in ISs. [54:50.990 --> 54:54.670] You can have the same subnet attached to many routers. [54:54.670 --> 54:58.810] And there is... [55:12.680 --> 55:18.400] If these are hosts and these are routers, the address of this thing will be... [55:18.400 --> 55:20.660] Is it 46 or 47? [55:22.900 --> 55:23.620] 47. [55:25.840 --> 55:26.920] Yes, whatever. [55:28.760 --> 55:29.960] I thought... [55:29.960 --> 55:32.200] Area 5 dot... [55:32.200 --> 55:33.840] A, B, C, whatever. [55:55.520 --> 55:56.260] All right. [55:59.220 --> 56:00.080] Fair enough. [56:02.340 --> 56:03.460] Thanks a lot, guys. [56:03.700 --> 56:04.980] No time for more questions. [56:05.420 --> 56:06.020] Go!