1 00:00:00,000 --> 00:00:07,160 2 00:00:07,160 --> 00:00:13,400 So let's kick off our discussion of IS-IS support for IPv6 3 00:00:13,400 --> 00:00:18,800 by just doing a quick review of some basic IPv6 principles. 4 00:00:18,800 --> 00:00:22,550 So we'll start off with taking a look at how 5 00:00:22,550 --> 00:00:24,830 to do some address conversions. 6 00:00:24,830 --> 00:00:27,140 Just in case at some point we need 7 00:00:27,140 --> 00:00:32,060 to convert addresses from say decimal to binary or binary 8 00:00:32,060 --> 00:00:37,430 to hex, since IPv6 uses hexadecimal for its addressing, 9 00:00:37,430 --> 00:00:39,440 this could be a useful skill. 10 00:00:39,440 --> 00:00:43,010 Then we'll take a look at IPv6 addressing, 11 00:00:43,010 --> 00:00:45,200 we'll go over how it's formatted, 12 00:00:45,200 --> 00:00:48,800 and the most important part is how to properly shorten 13 00:00:48,800 --> 00:00:50,030 the addresses. 14 00:00:50,030 --> 00:00:54,020 We don't want to have to type in 128-bit address 15 00:00:54,020 --> 00:00:56,420 every time we put these into the routers. 16 00:00:56,420 --> 00:00:58,670 So we need to know how to shorten them 17 00:00:58,670 --> 00:01:01,640 but shorten them in a way that we won't actually 18 00:01:01,640 --> 00:01:03,500 alter the address itself. 19 00:01:03,500 --> 00:01:06,560 So it has to be shortened properly. 20 00:01:06,560 --> 00:01:09,710 Then let's wrap up with a quick discussion 21 00:01:09,710 --> 00:01:11,660 of neighbor discovery. 22 00:01:11,660 --> 00:01:16,640 IPv6 doesn't use ARP or address resolution protocol 23 00:01:16,640 --> 00:01:21,050 like IPv4 does, rather it uses neighbor discovery. 24 00:01:21,050 --> 00:01:24,020 So we'll do an overview of that as well. 25 00:01:24,020 --> 00:01:28,250 So let's jump in and start by doing some decimal to hex 26 00:01:28,250 --> 00:01:31,670 and hex to binary conversions so we understand 27 00:01:31,670 --> 00:01:35,190 how these numbers correlate. 28 00:01:35,190 --> 00:01:38,040 So to start off with, we will do some decimal 29 00:01:38,040 --> 00:01:39,990 to binary conversion. 30 00:01:39,990 --> 00:01:42,120 And we have a conversion chart over here 31 00:01:42,120 --> 00:01:45,900 just for convenience that just lists out the binary values 32 00:01:45,900 --> 00:01:48,150 from the least significant bit which 33 00:01:48,150 --> 00:01:50,880 is the one over here going over to the most 34 00:01:50,880 --> 00:01:55,410 significant bit which, of course, is represented by 128. 35 00:01:55,410 --> 00:02:00,720 So the way we take a decimal number say 137 36 00:02:00,720 --> 00:02:03,540 and we convert this to binary, is 37 00:02:03,540 --> 00:02:07,320 we simply look at each digit in our conversion chart 38 00:02:07,320 --> 00:02:09,539 and we ask if that's greater than the number 39 00:02:09,539 --> 00:02:10,740 we want to convert. 40 00:02:10,740 --> 00:02:15,660 So for example in this case, 137 is greater than 128. 41 00:02:15,660 --> 00:02:18,720 So we would simply put a one in this spot 42 00:02:18,720 --> 00:02:24,540 and subtract 128 from the value that we're trying to convert. 43 00:02:24,540 --> 00:02:27,030 The answer here, of course, is 9. 44 00:02:27,030 --> 00:02:31,200 And then we look over and we look at this 64 value. 45 00:02:31,200 --> 00:02:33,810 Is there a 64 in 9? 46 00:02:33,810 --> 00:02:36,780 And, of course, the answer to this is going to be no. 47 00:02:36,780 --> 00:02:38,310 So this is a zero. 48 00:02:38,310 --> 00:02:42,180 Neither is there a 32 or a 16. 49 00:02:42,180 --> 00:02:44,598 Now, of course, there's an 8. 50 00:02:44,598 --> 00:02:46,890 And, of course, we don't really have to spell this out. 51 00:02:46,890 --> 00:02:49,350 At this point the math is fairly simple. 52 00:02:49,350 --> 00:02:52,320 But just for completeness, this, of course, 53 00:02:52,320 --> 00:02:54,960 is going to come down to the one. 54 00:02:54,960 --> 00:03:04,740 So what we end up with here is 137 in binary is 10001001. 55 00:03:04,740 --> 00:03:08,430 So it's simply a matter of subtracting each value that's 56 00:03:08,430 --> 00:03:10,170 in the original number. 57 00:03:10,170 --> 00:03:12,060 And, of course, to convert it back 58 00:03:12,060 --> 00:03:14,680 we would do exactly the opposite. 59 00:03:14,680 --> 00:03:23,560 Let's say we simply had a value of 11011001. 60 00:03:23,560 --> 00:03:27,520 To convert that back, we would simply take the first value 61 00:03:27,520 --> 00:03:33,730 128, we would add the next value which, of course, is 64, 62 00:03:33,730 --> 00:03:36,130 this is going to be 192. 63 00:03:36,130 --> 00:03:40,150 Then we add 16 to that, 208. 64 00:03:40,150 --> 00:03:44,290 We add 8 to that, which is 216. 65 00:03:44,290 --> 00:03:46,600 And then we add 1 to that. 66 00:03:46,600 --> 00:03:50,260 And our grand total here is 217. 67 00:03:50,260 --> 00:03:58,540 So 11011001 would be 217 in decimal. 68 00:03:58,540 --> 00:04:01,780 So next up let's take a look at converting this 69 00:04:01,780 --> 00:04:04,330 from binary to hex. 70 00:04:04,330 --> 00:04:07,330 So in this case, we'll just use the same number. 71 00:04:07,330 --> 00:04:10,960 I just drove the 217 up here to clear up some space. 72 00:04:10,960 --> 00:04:15,130 To convert this to hex, what we're essentially going to do 73 00:04:15,130 --> 00:04:17,649 is split the number in half. 74 00:04:17,649 --> 00:04:19,660 So we're going to take our binary number 75 00:04:19,660 --> 00:04:22,990 and split it like this, and then we're 76 00:04:22,990 --> 00:04:27,280 going to convert this section of the number based off 77 00:04:27,280 --> 00:04:29,740 of this part of the scale. 78 00:04:29,740 --> 00:04:33,580 So in other words, this is going to become a one, 79 00:04:33,580 --> 00:04:37,360 this would be the two, this would be the four, 80 00:04:37,360 --> 00:04:39,550 this would be the eight. 81 00:04:39,550 --> 00:04:47,350 So if we take our 8 plus our 4, of course, that's 12, plus 1, 82 00:04:47,350 --> 00:04:53,080 we end up with 13 for the left side of this number. 83 00:04:53,080 --> 00:04:56,110 For the other side, this is fairly straightforward, 84 00:04:56,110 --> 00:04:59,200 we only have an 8 and a 1. 85 00:04:59,200 --> 00:05:02,200 So this side simply becomes 9. 86 00:05:02,200 --> 00:05:05,350 Now 9 fits, of course, in a single digit. 87 00:05:05,350 --> 00:05:08,530 So part of our answer here is going 88 00:05:08,530 --> 00:05:11,410 to be that this is going to be a 9. 89 00:05:11,410 --> 00:05:14,680 13, of course, gets a little bit more interesting. 90 00:05:14,680 --> 00:05:18,010 Once we get past single digits, of course, what we have to do 91 00:05:18,010 --> 00:05:20,530 is use a slightly different conversion chart. 92 00:05:20,530 --> 00:05:30,550 So what we have are the values of 10, 11, 12, 13, 14, and 15. 93 00:05:30,550 --> 00:05:32,680 And these, of course, are going to convert 94 00:05:32,680 --> 00:05:41,470 to A, B, C, D, E, and F. 95 00:05:41,470 --> 00:05:45,850 So in this case, since we're talking about a 13, 96 00:05:45,850 --> 00:05:48,340 it's going to be this entry right here. 97 00:05:48,340 --> 00:05:51,670 And that means that our final answer for our conversion 98 00:05:51,670 --> 00:05:54,580 is going to be D9. 99 00:05:54,580 --> 00:06:00,040 So what we see is this value that's 217 in decimal 100 00:06:00,040 --> 00:06:03,820 is D9 in hex. 101 00:06:03,820 --> 00:06:06,820 The big thing to remember with hexadecimal, when you're 102 00:06:06,820 --> 00:06:08,950 going to convert it back to binary, 103 00:06:08,950 --> 00:06:12,550 is you want to treat the two digits separately and then 104 00:06:12,550 --> 00:06:15,430 remember to convert them on the scale of dealing 105 00:06:15,430 --> 00:06:18,040 with four bits at a time meaning we're only 106 00:06:18,040 --> 00:06:24,250 going to be dealing with the values of 1, 2, 4, and 8. 107 00:06:24,250 --> 00:06:27,250 So now let's talk about how we use this hexadecimal 108 00:06:27,250 --> 00:06:29,320 in our addressing. 109 00:06:29,320 --> 00:06:31,300 So a couple of things to keep in mind. 110 00:06:31,300 --> 00:06:36,910 First is, of course, IPv6 addresses are 128 bits. 111 00:06:36,910 --> 00:06:41,350 So this makes them exponentially larger than the 32 bits 112 00:06:41,350 --> 00:06:43,870 we have in IPv4. 113 00:06:43,870 --> 00:06:46,810 This is a very very large number. 114 00:06:46,810 --> 00:06:50,680 We split this up when we're entering it into devices 115 00:06:50,680 --> 00:06:55,240 into 816-bit hex fields. 116 00:06:55,240 --> 00:06:59,470 These hex fields will be separated by a colon. 117 00:06:59,470 --> 00:07:09,790 So for example, we could have something like DB8:100:13:4 118 00:07:09,790 --> 00:07:11,200 and so on. 119 00:07:11,200 --> 00:07:16,060 The important thing here is these addresses can be 120 00:07:16,060 --> 00:07:20,770 and in fact will be by the devices themselves shortened. 121 00:07:20,770 --> 00:07:24,100 Now, we have some rules for shortening these. 122 00:07:24,100 --> 00:07:29,500 First, any consecutive zeros can be eliminated. 123 00:07:29,500 --> 00:07:32,440 But we can only do this once. 124 00:07:32,440 --> 00:07:37,090 This is done with double colons in the address. 125 00:07:37,090 --> 00:07:47,980 So for example, I could say 2001::1 could be a valid IPv6 126 00:07:47,980 --> 00:07:49,240 address. 127 00:07:49,240 --> 00:07:55,900 I'm eliminating a ton of zeros between these two colons. 128 00:07:55,900 --> 00:07:58,900 The way this works is the devices 129 00:07:58,900 --> 00:08:02,440 will split the address right between the colons, 130 00:08:02,440 --> 00:08:06,190 move the front part to the left of the field, 131 00:08:06,190 --> 00:08:09,280 move the right section to the right side of the field, 132 00:08:09,280 --> 00:08:13,900 and fill in x number of zeros however 133 00:08:13,900 --> 00:08:19,280 many zeroes it takes to make this 128 bits. 134 00:08:19,280 --> 00:08:21,800 So you could eliminate two fields 135 00:08:21,800 --> 00:08:24,320 of zeros, four fields of zeros. 136 00:08:24,320 --> 00:08:28,730 In this example, I eliminated six fields of zeros. 137 00:08:28,730 --> 00:08:31,460 The other rule for shortening these addresses 138 00:08:31,460 --> 00:08:38,360 is that leading zeros can be eliminated in any given field. 139 00:08:38,360 --> 00:08:40,700 Now, this one you might have noticed, 140 00:08:40,700 --> 00:08:43,880 I do just out of habit. 141 00:08:43,880 --> 00:08:47,720 I already did it numerous times on our examples here. 142 00:08:47,720 --> 00:08:50,330 There should have been a zero in front of this, 143 00:08:50,330 --> 00:08:52,790 there should have been a zero right here, 144 00:08:52,790 --> 00:08:55,040 there should have been two zeros in here, 145 00:08:55,040 --> 00:08:57,320 there should have been three zeros in here. 146 00:08:57,320 --> 00:09:00,770 So I already did it when I was just writing out the numbers. 147 00:09:00,770 --> 00:09:03,740 There should have been three zeros over here as well, 148 00:09:03,740 --> 00:09:07,640 but I just eliminated them because there's no difference. 149 00:09:07,640 --> 00:09:09,200 And if you think about it in terms 150 00:09:09,200 --> 00:09:11,510 of something say like your paycheck, 151 00:09:11,510 --> 00:09:14,358 if your paycheck is going to be-- 152 00:09:14,358 --> 00:09:15,650 we'll just make this real easy. 153 00:09:15,650 --> 00:09:19,070 Let's say your paycheck is $1000, well, 154 00:09:19,070 --> 00:09:22,970 you're not going to really care if instead of $1,000 155 00:09:22,970 --> 00:09:29,120 your company gives you 001000. 156 00:09:29,120 --> 00:09:32,120 You wouldn't really care if your paycheck said this, 157 00:09:32,120 --> 00:09:33,830 because that's still 1000. 158 00:09:33,830 --> 00:09:35,630 When you go to deposit your check 159 00:09:35,630 --> 00:09:37,298 or in the bank looks at this they're 160 00:09:37,298 --> 00:09:39,590 going to go oh, yeah, well, that's interesting and all. 161 00:09:39,590 --> 00:09:41,630 But yeah, we don't care about that. 162 00:09:41,630 --> 00:09:43,490 That doesn't change the value. 163 00:09:43,490 --> 00:09:47,840 However, you might care a whole lot at least 164 00:09:47,840 --> 00:09:52,940 I probably would if instead they eliminated trailing zeros 165 00:09:52,940 --> 00:09:56,330 and instead gave you $10. 166 00:09:56,330 --> 00:09:59,300 I'm sure like me you would be sitting there going, excuse me, 167 00:09:59,300 --> 00:10:01,670 where are the rest of my digits. 168 00:10:01,670 --> 00:10:04,670 The bank might be OK with this, your company 169 00:10:04,670 --> 00:10:06,500 may be OK with this, I'm guessing 170 00:10:06,500 --> 00:10:07,820 you probably wouldn't be. 171 00:10:07,820 --> 00:10:09,710 So what I'm trying to point out here, 172 00:10:09,710 --> 00:10:13,370 of course, is that leading zeros really don't mean anything 173 00:10:13,370 --> 00:10:16,850 but trailing zeros are critical. 174 00:10:16,850 --> 00:10:18,560 You see if we look at this field right up 175 00:10:18,560 --> 00:10:21,950 here as an example, that's supposed to be 100, 176 00:10:21,950 --> 00:10:24,500 or we could say 100. 177 00:10:24,500 --> 00:10:27,140 Well, if I eliminated trailing zeros, 178 00:10:27,140 --> 00:10:31,550 it would become a 10 or maybe just a 1 by itself. 179 00:10:31,550 --> 00:10:35,120 Leading zeros don't matter, trailing zeros matter a lot. 180 00:10:35,120 --> 00:10:39,800 We can only eliminate leading zeros in a field. 181 00:10:39,800 --> 00:10:45,080 But, again, those can be eliminated with no problems. 182 00:10:45,080 --> 00:10:47,750 So let's look at this other example. 183 00:10:47,750 --> 00:10:51,620 If we look at our rules here, the 2001 184 00:10:51,620 --> 00:10:57,920 would have to stay a 2001, then we could eliminate this zero. 185 00:10:57,920 --> 00:11:00,950 So this would become DB8. 186 00:11:00,950 --> 00:11:03,320 We could eliminate this zero. 187 00:11:03,320 --> 00:11:06,140 So, again, this would become 100. 188 00:11:06,140 --> 00:11:10,190 Then we could eliminate this field, this field, 189 00:11:10,190 --> 00:11:14,870 and this field just by doing double colons. 190 00:11:14,870 --> 00:11:19,970 We could drop this zero and make this just 118. 191 00:11:19,970 --> 00:11:24,080 And, of course, the last one we can drop these three fields 192 00:11:24,080 --> 00:11:26,750 and just make it a 1. 193 00:11:26,750 --> 00:11:31,850 So that's the proper way to shorten an IPv6 address. 194 00:11:31,850 --> 00:11:34,700 Now, something else to discuss about IPv6 195 00:11:34,700 --> 00:11:37,730 addressing is a new type of addressing 196 00:11:37,730 --> 00:11:43,340 that we have in IPv6 called Link Local Addresses. 197 00:11:43,340 --> 00:11:47,000 Now, there's some special things about these addresses. 198 00:11:47,000 --> 00:11:50,540 First, they are from a given known range of addresses. 199 00:11:50,540 --> 00:11:57,290 So they're all from the FE80/10 address range. 200 00:11:57,290 --> 00:12:00,860 Also, since they are linked local, 201 00:12:00,860 --> 00:12:03,830 they are not ratable, that's what 202 00:12:03,830 --> 00:12:07,760 the word local is implying that this traffic can't 203 00:12:07,760 --> 00:12:09,650 leave this segment. 204 00:12:09,650 --> 00:12:12,020 Now, that brings up an interesting side effect 205 00:12:12,020 --> 00:12:15,680 on our devices which can actually be quite useful. 206 00:12:15,680 --> 00:12:18,920 Since they're not routable well, that 207 00:12:18,920 --> 00:12:24,560 means that all of the interfaces on a router can be the same. 208 00:12:24,560 --> 00:12:27,440 Meaning use the same address. 209 00:12:27,440 --> 00:12:29,630 So if I had a router, for example, 210 00:12:29,630 --> 00:12:31,760 and I had we'll just make it easy, 211 00:12:31,760 --> 00:12:35,180 we'll just have three interfaces off of it, 212 00:12:35,180 --> 00:12:40,430 that means that I can have the address on this interface be 213 00:12:40,430 --> 00:12:41,306 FE80::1. 214 00:12:41,306 --> 00:12:44,720 215 00:12:44,720 --> 00:12:47,854 This interface could be FE80::1. 216 00:12:47,854 --> 00:12:51,290 217 00:12:51,290 --> 00:12:54,290 And this one could be FE80::1. 218 00:12:54,290 --> 00:12:57,140 219 00:12:57,140 --> 00:13:00,500 And this can be very handy particularly if this is say, 220 00:13:00,500 --> 00:13:03,500 router one because we can use this then 221 00:13:03,500 --> 00:13:05,630 to identify the device. 222 00:13:05,630 --> 00:13:07,580 Now, of course, if there's a router 223 00:13:07,580 --> 00:13:10,850 on the other end of this circuit, any of these cables 224 00:13:10,850 --> 00:13:13,280 it would have to have a different address. 225 00:13:13,280 --> 00:13:16,600 That's what we're saying with this fourth point over here 226 00:13:16,600 --> 00:13:21,670 that addresses on the same link must be unique. 227 00:13:21,670 --> 00:13:24,760 So that means that I could not put another router down here 228 00:13:24,760 --> 00:13:32,410 and try to give it the address FE80::1 because that would be 229 00:13:32,410 --> 00:13:34,210 on the same segment. 230 00:13:34,210 --> 00:13:35,920 So in order for this to be valid, 231 00:13:35,920 --> 00:13:38,110 I would have to make it a two or well, 232 00:13:38,110 --> 00:13:41,380 anything else, anything other than a one. 233 00:13:41,380 --> 00:13:43,300 Also, this is a quick note. 234 00:13:43,300 --> 00:13:48,070 Our iOS XE devices do support something called IPv6 235 00:13:48,070 --> 00:13:50,500 scoped address architecture. 236 00:13:50,500 --> 00:13:54,430 This is referenced in RFC 4007. 237 00:13:54,430 --> 00:13:56,860 It's not a very popular implementation. 238 00:13:56,860 --> 00:14:01,000 I would just be aware that iOS XE supports it. 239 00:14:01,000 --> 00:14:04,840 And finally, as we mentioned during the introduction, 240 00:14:04,840 --> 00:14:09,340 IPv6 does not support ARP, which is address resolution 241 00:14:09,340 --> 00:14:14,650 protocol used by IPv4, rather we use something 242 00:14:14,650 --> 00:14:16,780 called neighbor discovery. 243 00:14:16,780 --> 00:14:21,910 The job here is still to do layer 3 to layer 2 address 244 00:14:21,910 --> 00:14:23,290 translation. 245 00:14:23,290 --> 00:14:28,330 However, this is now part of ICMPv6. 246 00:14:28,330 --> 00:14:30,730 Depending how well you remember IPv4, 247 00:14:30,730 --> 00:14:33,250 you may remember that ARP was actually 248 00:14:33,250 --> 00:14:35,230 a completely separate protocol. 249 00:14:35,230 --> 00:14:38,110 It's not part of the IP stack. 250 00:14:38,110 --> 00:14:40,630 With IPv6 it is. 251 00:14:40,630 --> 00:14:43,690 It's been moved into ICMP. 252 00:14:43,690 --> 00:14:51,760 Now, for neighbor discovery, it uses a type 135 ICMP message. 253 00:14:51,760 --> 00:14:54,340 For the neighbor advertisement, which 254 00:14:54,340 --> 00:14:59,753 is essentially the answer to the request, this uses type 136. 255 00:14:59,753 --> 00:15:02,170 Something else that's built into neighbor discovery that's 256 00:15:02,170 --> 00:15:05,830 a little bit unique to IPv6 is something 257 00:15:05,830 --> 00:15:08,560 called a router advertisement. 258 00:15:08,560 --> 00:15:11,350 Routers actually advertise themselves 259 00:15:11,350 --> 00:15:14,920 onto the network in IPv6. 260 00:15:14,920 --> 00:15:18,340 Again, this is essentially part of neighbor discovery. 261 00:15:18,340 --> 00:15:21,910 It's also part of ICMP version 6. 262 00:15:21,910 --> 00:15:25,210 But this uses type 134. 263 00:15:25,210 --> 00:15:27,460 So we'll see some of this stuff in use 264 00:15:27,460 --> 00:15:32,730 as we move through the rest of the videos in this skill. 265 00:15:32,730 --> 00:15:35,730 In this video, we jumped in and got what 266 00:15:35,730 --> 00:15:39,600 I'm hoping is a review on IPv6. 267 00:15:39,600 --> 00:15:41,550 So we started off by looking at how 268 00:15:41,550 --> 00:15:45,570 to do some address conversions from decimal to hex and hex 269 00:15:45,570 --> 00:15:48,480 to binary, and all that fun stuff. 270 00:15:48,480 --> 00:15:52,320 And then we took a look at the IPv6 addresses themselves. 271 00:15:52,320 --> 00:15:55,260 How to shorten them properly, we talked a little bit 272 00:15:55,260 --> 00:15:57,000 about link local addressing. 273 00:15:57,000 --> 00:15:58,890 And then, of course, we wrapped up here 274 00:15:58,890 --> 00:16:01,710 with our discussion of neighbor discovery 275 00:16:01,710 --> 00:16:06,330 which is what we use in IPv6 instead of ARP. 276 00:16:06,330 --> 00:16:08,610 I hope this has been informative for you 277 00:16:08,610 --> 00:16:11,720 and I'd like to thank you for viewing. 278 00:16:11,720 --> 00:16:15,000