1 00:00:00,060 --> 00:00:01,650 In this lesson, we're going to discuss 2 00:00:01,650 --> 00:00:04,170 Internet Protocol version six addressing. 3 00:00:04,170 --> 00:00:05,220 Now, up until this point, 4 00:00:05,220 --> 00:00:07,530 we've really just talked about IP version four, 5 00:00:07,530 --> 00:00:08,940 including how to subnet it, 6 00:00:08,940 --> 00:00:11,100 but one of the problems we have with IPv4 7 00:00:11,100 --> 00:00:12,990 is its limited address space. 8 00:00:12,990 --> 00:00:16,110 Remember, an IPv4 address only has 32 bits 9 00:00:16,110 --> 00:00:17,340 of addressable space, 10 00:00:17,340 --> 00:00:20,250 which gives us about 4.3 billion addresses. 11 00:00:20,250 --> 00:00:22,680 Now, I know that sounds like a lot of IP addresses, 12 00:00:22,680 --> 00:00:24,348 but when you start taking out entire portions 13 00:00:24,348 --> 00:00:26,220 for things like APIPA addresses, 14 00:00:26,220 --> 00:00:28,230 the local host or loop back addresses, 15 00:00:28,230 --> 00:00:29,850 and the private IP addresses, 16 00:00:29,850 --> 00:00:31,590 and there's this huge amount of waste that happened 17 00:00:31,590 --> 00:00:33,960 before we started to have subnetting available to us, 18 00:00:33,960 --> 00:00:35,070 and so we started running out 19 00:00:35,070 --> 00:00:37,710 of network addresses in IP version four. 20 00:00:37,710 --> 00:00:41,010 This is known as address exhaustion, and it's a real thing. 21 00:00:41,010 --> 00:00:44,400 In fact, in November, 2019, RIPE NCC, 22 00:00:44,400 --> 00:00:46,470 which is the regional internet registry for Europe, 23 00:00:46,470 --> 00:00:48,690 West Asia and the former USSR, 24 00:00:48,690 --> 00:00:51,000 announced that they have exhausted its entire pool 25 00:00:51,000 --> 00:00:53,250 of IP version four addresses. 26 00:00:53,250 --> 00:00:54,630 Now, luckily for us though, 27 00:00:54,630 --> 00:00:57,420 the Internet Engineering Task Force, or IETF, 28 00:00:57,420 --> 00:00:59,280 had already started looking into the future, 29 00:00:59,280 --> 00:01:02,220 and they came up with the IPv6 standard all the way back 30 00:01:02,220 --> 00:01:05,099 in December of 1995 with an RFC 31 00:01:05,099 --> 00:01:07,800 that documented their vision for IPv6, 32 00:01:07,800 --> 00:01:12,060 which they termed IP Next Generation, or IP NG. 33 00:01:12,060 --> 00:01:14,970 You see, IP version six is actually a huge improvement 34 00:01:14,970 --> 00:01:16,980 over Internet Protocol version four 35 00:01:16,980 --> 00:01:19,350 in terms of the number of addresses available. 36 00:01:19,350 --> 00:01:21,900 This is because instead of using a 32-bit address, 37 00:01:21,900 --> 00:01:23,430 like we use in IPv4, 38 00:01:23,430 --> 00:01:27,750 we actually use a 128-bit address in IP version six. 39 00:01:27,750 --> 00:01:29,130 This gives us the possibility 40 00:01:29,130 --> 00:01:32,820 of 340 undecillion IP addresses, 41 00:01:32,820 --> 00:01:35,520 and that is enough IP addresses for every man, woman, 42 00:01:35,520 --> 00:01:37,170 and child on the planet, 43 00:01:37,170 --> 00:01:41,070 in fact, many, many IP addresses for each one of those. 44 00:01:41,070 --> 00:01:43,020 You may be asking, "What about version five? 45 00:01:43,020 --> 00:01:43,860 What happened to that? 46 00:01:43,860 --> 00:01:45,750 Why did we go from four to six?" 47 00:01:45,750 --> 00:01:47,220 Well, version five was created, 48 00:01:47,220 --> 00:01:48,600 but it was never fully accepted 49 00:01:48,600 --> 00:01:50,430 as an official protocol or standard, 50 00:01:50,430 --> 00:01:53,190 and therefore it never went into our production networks. 51 00:01:53,190 --> 00:01:55,980 Instead, a lot of the concepts from version five 52 00:01:55,980 --> 00:01:58,110 actually came forward into version six, 53 00:01:58,110 --> 00:01:59,910 because version five was just treated 54 00:01:59,910 --> 00:02:01,950 as an experimental protocol. 55 00:02:01,950 --> 00:02:04,500 So now that we understand that we're in version six, 56 00:02:04,500 --> 00:02:07,500 what are some of the benefits of IP version six? 57 00:02:07,500 --> 00:02:08,940 Well, one of the biggest benefits 58 00:02:08,940 --> 00:02:11,730 is that much larger address space that we just talked about 59 00:02:11,730 --> 00:02:14,040 because of the 128-bit addresses. 60 00:02:14,040 --> 00:02:16,620 In addition to that, IP version six also increases 61 00:02:16,620 --> 00:02:18,000 the efficiency of our network 62 00:02:18,000 --> 00:02:21,630 by removing IPv4's broadcast data flow type. 63 00:02:21,630 --> 00:02:24,030 IPv6 is also considered to be more secure, 64 00:02:24,030 --> 00:02:26,520 because there is no packet or datagram fragmentation 65 00:02:26,520 --> 00:02:27,810 within the standard. 66 00:02:27,810 --> 00:02:29,730 There are also no maximum transmission units 67 00:02:29,730 --> 00:02:31,470 for discovery within each session, 68 00:02:31,470 --> 00:02:33,930 unlike IPv4, which contained an MTU 69 00:02:33,930 --> 00:02:35,670 with a certain size for each packet, 70 00:02:35,670 --> 00:02:37,800 like 1500 bytes by default, 71 00:02:37,800 --> 00:02:41,190 or 9,000 bytes if you're using jumbo frames. 72 00:02:41,190 --> 00:02:43,170 In fact, back in IP version four, 73 00:02:43,170 --> 00:02:45,930 if you had a larger packet size like 2,000 bytes, 74 00:02:45,930 --> 00:02:48,270 but your MTU could only allow 1500 bytes, 75 00:02:48,270 --> 00:02:49,980 it would actually fragment those packets 76 00:02:49,980 --> 00:02:51,720 before sending them over the network. 77 00:02:51,720 --> 00:02:53,610 Then when it got to the other end, 78 00:02:53,610 --> 00:02:55,590 the destination would then reassemble them. 79 00:02:55,590 --> 00:02:57,900 The problem with this is it requires extra processing 80 00:02:57,900 --> 00:02:59,190 by that receiving end, 81 00:02:59,190 --> 00:03:00,960 and this actually slows down your network 82 00:03:00,960 --> 00:03:03,510 and becomes an extremely inefficient way to do things, 83 00:03:03,510 --> 00:03:04,980 especially in our modern networks, 84 00:03:04,980 --> 00:03:06,540 with our faster internet connections 85 00:03:06,540 --> 00:03:09,240 and our larger data sizes that we're trying to transfer. 86 00:03:09,240 --> 00:03:11,437 So IP version six just said, 87 00:03:11,437 --> 00:03:13,890 "No more fragmentation, it's gone." 88 00:03:13,890 --> 00:03:15,900 Another benefit of IP version six 89 00:03:15,900 --> 00:03:17,610 is that it has a simplified header. 90 00:03:17,610 --> 00:03:19,080 So instead of having 12 fields, 91 00:03:19,080 --> 00:03:20,760 like we had in IP version four, 92 00:03:20,760 --> 00:03:23,970 we only have five fields inside of IP version six, 93 00:03:23,970 --> 00:03:25,470 giving us this slimmed down header 94 00:03:25,470 --> 00:03:28,050 that's a lot more efficient to send over the network. 95 00:03:28,050 --> 00:03:29,251 So you may be wondering 96 00:03:29,251 --> 00:03:32,040 what does an IP version six header look like? 97 00:03:32,040 --> 00:03:33,480 Well, I'm going to show it to you here, 98 00:03:33,480 --> 00:03:35,460 but please realize you do not need 99 00:03:35,460 --> 00:03:37,050 to memorize this for the exam. 100 00:03:37,050 --> 00:03:38,520 This is just to show you the different fields 101 00:03:38,520 --> 00:03:40,710 that were in IPv4, which is on the top, 102 00:03:40,710 --> 00:03:42,810 versus IPv6, which is on the bottom, 103 00:03:42,810 --> 00:03:46,230 and you can see how much simpler IP version six really is. 104 00:03:46,230 --> 00:03:47,760 Alright, let's get back to some things 105 00:03:47,760 --> 00:03:49,740 that we need to understand for the exam. 106 00:03:49,740 --> 00:03:52,590 For example, what does an IP version six address 107 00:03:52,590 --> 00:03:53,850 even look like? 108 00:03:53,850 --> 00:03:56,850 Well, remember I said it's 128 binary digits 109 00:03:56,850 --> 00:03:58,200 or bits in length, 110 00:03:58,200 --> 00:04:00,990 so that means it will be a 128 ones or zeros 111 00:04:00,990 --> 00:04:02,970 if we wrote the whole thing out in binary, 112 00:04:02,970 --> 00:04:04,560 and that seems like a really bad idea, 113 00:04:04,560 --> 00:04:07,200 'cause there's a lot of chances for human error there. 114 00:04:07,200 --> 00:04:08,640 Now, what we could do is we could use 115 00:04:08,640 --> 00:04:11,460 a dotted decimal notation like we did in IPv4, 116 00:04:11,460 --> 00:04:12,360 but the problem with that 117 00:04:12,360 --> 00:04:14,550 is we'd still have a lot of octets to write out 118 00:04:14,550 --> 00:04:17,700 because we would need 16 octets instead of four octets 119 00:04:17,700 --> 00:04:21,870 to represent all 128 bits of an IP version six address. 120 00:04:21,870 --> 00:04:23,250 So to solve this, 121 00:04:23,250 --> 00:04:25,752 the Internet Engineering Task Force came up with a new idea 122 00:04:25,752 --> 00:04:29,670 and they decided we're going to use hexadecimal digits instead. 123 00:04:29,670 --> 00:04:32,190 You see, hexadecimal is base 16, 124 00:04:32,190 --> 00:04:33,330 and you may or not remember this 125 00:04:33,330 --> 00:04:35,640 back from your high school algebra classes, 126 00:04:35,640 --> 00:04:37,260 in hexadecimal notation, 127 00:04:37,260 --> 00:04:40,230 each hexadecimal digit is actually four bits, 128 00:04:40,230 --> 00:04:42,900 and this allows us to represent an IPv6 address 129 00:04:42,900 --> 00:04:45,330 by combining four hexadecimal digits together 130 00:04:45,330 --> 00:04:46,560 to make up a segment, 131 00:04:46,560 --> 00:04:48,930 and each segment gives us 16 bits, 132 00:04:48,930 --> 00:04:50,370 and then we add a colon. 133 00:04:50,370 --> 00:04:52,950 And we keep adding segments until we get to our total length 134 00:04:52,950 --> 00:04:56,340 of 128 bits being represented by eight segments 135 00:04:56,340 --> 00:04:58,380 of four hexadecimal digits each 136 00:04:58,380 --> 00:05:00,330 for a total of 32 digits, 137 00:05:00,330 --> 00:05:02,100 which is still pretty long, 138 00:05:02,100 --> 00:05:04,500 but it gives us that 128 bits that we needed 139 00:05:04,500 --> 00:05:07,230 by using 32 hexadecimal digits. 140 00:05:07,230 --> 00:05:10,410 Remember, a hexadecimal digit can represent anything 141 00:05:10,410 --> 00:05:13,620 from 0, one, two, three, four, five, 142 00:05:13,620 --> 00:05:15,870 six, seven, eight, nine, 143 00:05:15,870 --> 00:05:18,960 and then A, B, C, D, E and F 144 00:05:18,960 --> 00:05:21,510 to represent the numbers 10 through 15. 145 00:05:21,510 --> 00:05:24,270 So each single hexadecimal digit can be anything 146 00:05:24,270 --> 00:05:27,570 from zero to 15 in our decimal equivalent. 147 00:05:27,570 --> 00:05:31,530 Now, when we have 128 bits represented in an IPv6 address, 148 00:05:31,530 --> 00:05:34,800 it's going to be no more than 32 hexadecimal digits. 149 00:05:34,800 --> 00:05:36,210 Did you catch what I just said there? 150 00:05:36,210 --> 00:05:39,210 I said no more than 32 digits in length. 151 00:05:39,210 --> 00:05:41,490 Now, why wouldn't it just be 32 hexadecimal digits, 152 00:05:41,490 --> 00:05:43,770 because 32 times four bits each 153 00:05:43,770 --> 00:05:46,140 would give us 128 total bits? 154 00:05:46,140 --> 00:05:48,930 Well, this is because IP version six allows us 155 00:05:48,930 --> 00:05:50,580 to use a shorthand notation 156 00:05:50,580 --> 00:05:54,270 to simplify writing out these very long IPv6 addresses. 157 00:05:54,270 --> 00:05:55,620 Now, these rules for the shorthand 158 00:05:55,620 --> 00:05:56,730 are going to be really important, 159 00:05:56,730 --> 00:05:59,550 so I you study them and learn them for the exam, 160 00:05:59,550 --> 00:06:01,530 because you might get a question on them. 161 00:06:01,530 --> 00:06:03,810 Now, if you have four zeros for a segment, 162 00:06:03,810 --> 00:06:05,610 you can actually just put one zero down 163 00:06:05,610 --> 00:06:07,350 instead of all those leading zeros. 164 00:06:07,350 --> 00:06:08,610 They're going to get dropped. 165 00:06:08,610 --> 00:06:09,870 For example, let's pretend 166 00:06:09,870 --> 00:06:12,301 I have a really long IP version six address 167 00:06:12,301 --> 00:06:15,884 of 2018:0000:0000:0000:0000:0000:4815:54ae. 168 00:06:27,125 --> 00:06:30,128 Now, that's the 32 hexadecimal digits. 169 00:06:30,128 --> 00:06:31,860 Now, using the simple rule I just gave you, 170 00:06:31,860 --> 00:06:34,286 we can take away all the leading zeros 171 00:06:34,286 --> 00:06:36,068 and remove any series of zeros 172 00:06:36,068 --> 00:06:38,242 and replace them with a single zero. 173 00:06:38,242 --> 00:06:40,891 So this now gives me the shortened version 174 00:06:40,891 --> 00:06:43,224 of 2018:0:0:0:0:0:4815:54ae. 175 00:06:51,900 --> 00:06:54,570 Now, this does reduce my number of hexadecimal characters 176 00:06:54,570 --> 00:06:58,350 from the 32 I started with down to just 17 characters, 177 00:06:58,350 --> 00:07:00,240 so about half as long. 178 00:07:00,240 --> 00:07:01,410 Now, that's pretty good, 179 00:07:01,410 --> 00:07:03,120 but there's another rule that I can use 180 00:07:03,120 --> 00:07:05,220 in the world of IPv6 shorthand 181 00:07:05,220 --> 00:07:07,530 that can help me reduce this even further. 182 00:07:07,530 --> 00:07:10,320 Now, this rule says that if you have multiple segments 183 00:07:10,320 --> 00:07:11,670 that have just zeros 184 00:07:11,670 --> 00:07:14,070 and no other hexadecimal digits represented, 185 00:07:14,070 --> 00:07:17,100 you can summarize that by using a double colon. 186 00:07:17,100 --> 00:07:18,120 Now, this rule is special 187 00:07:18,120 --> 00:07:21,300 because you can only use this double colon thing one time 188 00:07:21,300 --> 00:07:22,830 inside your address. 189 00:07:22,830 --> 00:07:24,870 So, using the double colon rule, 190 00:07:24,870 --> 00:07:29,400 I can summarize all five sets of zeros into a double colon, 191 00:07:29,400 --> 00:07:33,210 and it will look like 2018::4815:54ae. 192 00:07:36,030 --> 00:07:37,200 Now, that is really good, 193 00:07:37,200 --> 00:07:41,010 because I went from 32 hexadecimal digits down to 17, 194 00:07:41,010 --> 00:07:44,820 and now I'm down all the way to 12 hexadecimal digits. 195 00:07:44,820 --> 00:07:46,170 You could see how using the shorthand 196 00:07:46,170 --> 00:07:48,150 is pretty darn helpful. 197 00:07:48,150 --> 00:07:51,840 So how can you recognize an IP version six address versus 198 00:07:51,840 --> 00:07:53,850 an IP version four address? 199 00:07:53,850 --> 00:07:55,170 Well, IP version four 200 00:07:55,170 --> 00:07:57,720 is always going to use dotted octet notation 201 00:07:57,720 --> 00:08:00,900 or dotted decimal notation in those four octets. 202 00:08:00,900 --> 00:08:03,360 So that means you're going to be looking for dots 203 00:08:03,360 --> 00:08:04,500 and not colons, 204 00:08:04,500 --> 00:08:07,230 and you're going to be looking for numbers from zero to 255, 205 00:08:07,230 --> 00:08:08,940 and there should be no letters in there, 206 00:08:08,940 --> 00:08:11,160 like A, B, C, D, E, or F, 207 00:08:11,160 --> 00:08:12,990 like you would see in hexadecimal. 208 00:08:12,990 --> 00:08:15,750 On the other hand, when you're looking at IP version six, 209 00:08:15,750 --> 00:08:18,000 you're going to be using hexadecimal digits, 210 00:08:18,000 --> 00:08:20,550 which includes numbers and the letters A through F, 211 00:08:20,550 --> 00:08:22,860 as well as colons to separate them 212 00:08:22,860 --> 00:08:25,110 into groups of four or less. 213 00:08:25,110 --> 00:08:26,610 Alright, to drive this point home, 214 00:08:26,610 --> 00:08:28,350 let's take a look at a sample question 215 00:08:28,350 --> 00:08:30,030 you may see on the exam. 216 00:08:30,030 --> 00:08:32,880 Which of the following is an IP version six address? 217 00:08:32,880 --> 00:08:34,440 Now, this is a fair question to ask, 218 00:08:34,440 --> 00:08:35,970 and you'll get a couple of options. 219 00:08:35,970 --> 00:08:38,400 For our use case, I'm just going to give you three. 220 00:08:38,400 --> 00:08:41,909 Option A, 192.168.1.1. 221 00:08:41,909 --> 00:08:46,910 Option B, 12:34:56:78:90:AB. 222 00:08:48,300 --> 00:08:53,220 Or 1234::5678:90AB. 223 00:08:54,288 --> 00:08:55,470 Now let's see, 224 00:08:55,470 --> 00:08:57,600 first, we can just knock out A, right, 225 00:08:57,600 --> 00:09:00,960 because A is clearly an IP version four address. 226 00:09:00,960 --> 00:09:03,660 We know that because it's got decimal numbers and dots 227 00:09:03,660 --> 00:09:05,940 and there are no colons and no letters. 228 00:09:05,940 --> 00:09:08,280 But the second two, B and C, 229 00:09:08,280 --> 00:09:11,730 both look like they could be an IP version six address. 230 00:09:11,730 --> 00:09:14,160 So how do we tell which one is and which one isn't? 231 00:09:14,160 --> 00:09:17,910 Well, the second one here is not an IP version six address. 232 00:09:17,910 --> 00:09:19,530 This is actually a MAC address, 233 00:09:19,530 --> 00:09:21,990 and the way you can remember this is that MAC addresses 234 00:09:21,990 --> 00:09:25,530 are always going to have 12 hexadecimal digits 235 00:09:25,530 --> 00:09:27,990 and they're always going to be separated by colons. 236 00:09:27,990 --> 00:09:30,060 Now, these 12 hexadecimal digits 237 00:09:30,060 --> 00:09:32,100 will be grouped in pairs of two. 238 00:09:32,100 --> 00:09:37,100 So for the second one, you see 12:34:56:78:90:AB, 239 00:09:39,450 --> 00:09:41,700 and that tells me that is a MAC address 240 00:09:41,700 --> 00:09:46,050 because it is six groupings of two separated by a colon. 241 00:09:46,050 --> 00:09:48,990 Now, the last one is an IP version six address, 242 00:09:48,990 --> 00:09:51,210 and one of the other things here that gives this away 243 00:09:51,210 --> 00:09:54,630 is not just the fact that we have some number of digits 244 00:09:54,630 --> 00:09:57,870 between zero and 32 that are hexadecimal, 245 00:09:57,870 --> 00:09:59,430 but we're also using colons 246 00:09:59,430 --> 00:10:01,920 and we're grouping things based on fours, 247 00:10:01,920 --> 00:10:03,990 and you're seeing a double colon there, 248 00:10:03,990 --> 00:10:06,930 which is used as that shorthand in IPv6. 249 00:10:06,930 --> 00:10:08,250 These are the clues you're looking for 250 00:10:08,250 --> 00:10:10,950 when trying to identify an IPv6 address. 251 00:10:10,950 --> 00:10:12,630 Make sure you're looking for hexadecimal, 252 00:10:12,630 --> 00:10:14,820 make sure you're looking for groups of four or less, 253 00:10:14,820 --> 00:10:16,620 and make sure you're looking for any double colons, 254 00:10:16,620 --> 00:10:18,900 because if you see that, it's a dead giveaway 255 00:10:18,900 --> 00:10:21,450 that this is an IP version six address. 256 00:10:21,450 --> 00:10:23,730 Alright, now that we've covered what the address looks like, 257 00:10:23,730 --> 00:10:25,920 let's talk about the different address types 258 00:10:25,920 --> 00:10:28,230 that you may come across with IP version six, 259 00:10:28,230 --> 00:10:29,640 and there's really three of them. 260 00:10:29,640 --> 00:10:32,497 These are unicast addresses, multicast addresses, 261 00:10:32,497 --> 00:10:34,200 and anycast addresses. 262 00:10:34,200 --> 00:10:36,900 Now, one of the interesting things about IP version six 263 00:10:36,900 --> 00:10:39,900 versus IP version four is that in IP version six 264 00:10:39,900 --> 00:10:42,660 you can actually assign a single interface on a client 265 00:10:42,660 --> 00:10:45,630 with multiple different IP version six addresses, 266 00:10:45,630 --> 00:10:47,370 and these assignments can be a mixture 267 00:10:47,370 --> 00:10:48,600 of the three different types, 268 00:10:48,600 --> 00:10:51,300 unicast, multicast, and anycast. 269 00:10:51,300 --> 00:10:53,430 So even if you only have one network interface card 270 00:10:53,430 --> 00:10:54,510 in your workstation, 271 00:10:54,510 --> 00:10:57,750 you can actually have multiple IP version six addresses, 272 00:10:57,750 --> 00:10:59,130 and you can have different types 273 00:10:59,130 --> 00:11:03,000 of IP version six addresses too assigned on that one card. 274 00:11:03,000 --> 00:11:05,160 Now, when we talk about a unicast address, 275 00:11:05,160 --> 00:11:08,490 unicast address are used to identify a single interface. 276 00:11:08,490 --> 00:11:11,340 These are broken down into globally-routed unicast addresses 277 00:11:11,340 --> 00:11:13,200 and link-local addresses. 278 00:11:13,200 --> 00:11:15,060 Now, a globally-routed unicast address 279 00:11:15,060 --> 00:11:17,610 is similar to what we had in IP version four 280 00:11:17,610 --> 00:11:21,360 when we talked about unicast class A, B, and C addresses. 281 00:11:21,360 --> 00:11:22,830 In IP version six, 282 00:11:22,830 --> 00:11:24,750 a globally-routed unicast address 283 00:11:24,750 --> 00:11:29,750 will always begin with 2000, all the way up to 3999. 284 00:11:29,940 --> 00:11:31,110 This will be your first segment 285 00:11:31,110 --> 00:11:33,540 inside your IP version six address. 286 00:11:33,540 --> 00:11:36,510 For example, if you see the IP version six address 287 00:11:36,510 --> 00:11:41,510 of 2584:0db8:8583:1234:5678:882e:0370:7334, 288 00:11:52,290 --> 00:11:54,720 this is a globally-routed unicast address 289 00:11:54,720 --> 00:11:57,960 because that first segment, which was 2584, 290 00:11:57,960 --> 00:12:02,400 is between 2000 and 3999 when you're reading it 291 00:12:02,400 --> 00:12:04,200 as a hexadecimal number. 292 00:12:04,200 --> 00:12:05,640 Now, a link-local address, 293 00:12:05,640 --> 00:12:07,770 which is also known as a local use address, 294 00:12:07,770 --> 00:12:11,610 is very much like a private IP inside of IP version four. 295 00:12:11,610 --> 00:12:13,410 A link-local address can only be used 296 00:12:13,410 --> 00:12:14,790 on your local area network, 297 00:12:14,790 --> 00:12:18,480 and it will always have FE80 as its first segment 298 00:12:18,480 --> 00:12:20,610 in the IP version six address. 299 00:12:20,610 --> 00:12:23,550 Now, whenever an IP version six system starts up itself, 300 00:12:23,550 --> 00:12:26,040 it's automatically going to create a link-local address 301 00:12:26,040 --> 00:12:29,190 for each IP version six interface on that system, 302 00:12:29,190 --> 00:12:30,780 even if a globally-routable address 303 00:12:30,780 --> 00:12:32,850 was already manually configured or obtained 304 00:12:32,850 --> 00:12:36,060 through a configuration protocol like DHCP. 305 00:12:36,060 --> 00:12:37,821 Now, to do this, it's going to use something known 306 00:12:37,821 --> 00:12:42,821 as a Stateless Address Autoconfiguration, or SLAAC. 307 00:12:42,870 --> 00:12:44,670 With stateless auto configuration, 308 00:12:44,670 --> 00:12:46,230 The host doesn't need to obtain addresses 309 00:12:46,230 --> 00:12:47,760 or other configuration information 310 00:12:47,760 --> 00:12:49,260 from a centralized server, 311 00:12:49,260 --> 00:12:51,720 and instead it can independently assign itself 312 00:12:51,720 --> 00:12:53,160 a link-local address, 313 00:12:53,160 --> 00:12:55,560 test the uniqueness of that link-local address, 314 00:12:55,560 --> 00:12:57,600 assign the link-local address to itself, 315 00:12:57,600 --> 00:12:58,650 contact the router, 316 00:12:58,650 --> 00:12:59,970 provide direction to the node 317 00:12:59,970 --> 00:13:02,010 on how to proceed with auto configuration, 318 00:13:02,010 --> 00:13:04,050 and even configure the global unicast address 319 00:13:04,050 --> 00:13:05,610 that it wants to use. 320 00:13:05,610 --> 00:13:07,890 We're going to come back to this concept in just a few minutes 321 00:13:07,890 --> 00:13:11,206 as we dive a bit deeper as we talk about EUI-64 322 00:13:11,206 --> 00:13:13,320 and the Neighbor Discovery Protocol, 323 00:13:13,320 --> 00:13:14,670 because both of these processes 324 00:13:14,670 --> 00:13:16,380 are going to be used with SLAAC, 325 00:13:16,380 --> 00:13:19,440 the Stateless Address Autoconfiguration Protocol. 326 00:13:19,440 --> 00:13:20,760 The next type of address we have 327 00:13:20,760 --> 00:13:22,980 is what's known as a multicast address. 328 00:13:22,980 --> 00:13:25,110 Now, multicast addresses are used to identify 329 00:13:25,110 --> 00:13:27,480 a group of interfaces so that a packet can be sent 330 00:13:27,480 --> 00:13:28,680 to a multicast address 331 00:13:28,680 --> 00:13:29,513 and then be delivered 332 00:13:29,513 --> 00:13:31,830 to all the interfaces inside of the group. 333 00:13:31,830 --> 00:13:34,170 In IP version six, a multicast address 334 00:13:34,170 --> 00:13:36,810 will always contain FF as the first two digits 335 00:13:36,810 --> 00:13:38,130 within the first segment. 336 00:13:38,130 --> 00:13:40,110 So if you see FF at the beginning 337 00:13:40,110 --> 00:13:41,730 of an IP version six address, 338 00:13:41,730 --> 00:13:44,490 remember, this is a multicast address. 339 00:13:44,490 --> 00:13:45,720 The final type we have 340 00:13:45,720 --> 00:13:48,030 is what's known as an anycast address. 341 00:13:48,030 --> 00:13:51,180 Anycast addresses are used to identify a set of interfaces 342 00:13:51,180 --> 00:13:54,030 so that a packet can be sent to any member of a set. 343 00:13:54,030 --> 00:13:55,950 We're going to talk more about how an anycast works 344 00:13:55,950 --> 00:13:59,370 as we cover IP version six data flows in a separate lesson, 345 00:13:59,370 --> 00:14:01,530 but anycast addresses are actually allocated 346 00:14:01,530 --> 00:14:03,450 from the unicast address space, 347 00:14:03,450 --> 00:14:04,770 so there's really no way to determine 348 00:14:04,770 --> 00:14:07,710 if an IP version six is unicast or anycast 349 00:14:07,710 --> 00:14:11,040 just by looking at the IP version six address on it. 350 00:14:11,040 --> 00:14:13,200 Alright, now let's go back and talk a little bit more about 351 00:14:13,200 --> 00:14:16,680 the Stateless Address Autoconfiguration, or SLAAC process. 352 00:14:16,680 --> 00:14:17,820 In IP version six, 353 00:14:17,820 --> 00:14:20,370 there's an autoconfiguration process known as SLAAC 354 00:14:20,370 --> 00:14:21,870 that's use to discover the current network 355 00:14:21,870 --> 00:14:23,460 that an interface is located on, 356 00:14:23,460 --> 00:14:26,400 and select its own host ID based on its MAC address 357 00:14:26,400 --> 00:14:29,190 using the EUI-64 process. 358 00:14:29,190 --> 00:14:32,460 This EUI, or Extended Unique Identifier process, 359 00:14:32,460 --> 00:14:33,900 will allow a host to assign itself 360 00:14:33,900 --> 00:14:37,800 a unique 64-bit IP version six interface identifier called 361 00:14:37,800 --> 00:14:40,650 an EUI-64. 362 00:14:40,650 --> 00:14:44,760 Now, the IPv6 EUI-64 format is obtained using 363 00:14:44,760 --> 00:14:47,280 the interface's 48-bit MAC address. 364 00:14:47,280 --> 00:14:51,060 The MAC address is first separate into two 24-bit portions. 365 00:14:51,060 --> 00:14:53,910 The first half of the MAC address contains the OUI, 366 00:14:53,910 --> 00:14:56,550 or the Organizationally Unique Identifier, 367 00:14:56,550 --> 00:14:58,230 and the second one is going to contain 368 00:14:58,230 --> 00:15:00,780 the specific network interface card identifier. 369 00:15:00,780 --> 00:15:05,670 Then we're going to put a 16-bit hexadecimal value of FFFE 370 00:15:05,670 --> 00:15:08,430 that we're going to insert between these two 24-bits 371 00:15:08,430 --> 00:15:11,580 to create the 64-bit EUI address. 372 00:15:11,580 --> 00:15:13,920 Now, this gives you the 64-bits that you would need 373 00:15:13,920 --> 00:15:16,080 to identify your interface on a network, 374 00:15:16,080 --> 00:15:18,720 and then the interface uses the auto discovery 375 00:15:18,720 --> 00:15:20,340 to determine the network that it's on 376 00:15:20,340 --> 00:15:23,400 and add the network portion of the IP version six address, 377 00:15:23,400 --> 00:15:25,320 which is the first 64 bits, 378 00:15:25,320 --> 00:15:27,960 to the front of this EUI-64 address 379 00:15:27,960 --> 00:15:30,090 that we just created from its own MAC address 380 00:15:30,090 --> 00:15:33,780 to create a unique unicast, globally-routable IPv6 address 381 00:15:33,780 --> 00:15:35,580 that it's going to be able to use. 382 00:15:35,580 --> 00:15:39,390 Now, DHCP can be used with IPv6 if you prefer, 383 00:15:39,390 --> 00:15:43,230 by using something known as the DHCPv6 protocol. 384 00:15:43,230 --> 00:15:44,063 This would allow you 385 00:15:44,063 --> 00:15:46,380 to have a DHCP server automatically assign things 386 00:15:46,380 --> 00:15:48,810 from a DHCP version six server, 387 00:15:48,810 --> 00:15:52,020 but since the autoconfiguration process with EUI-64 388 00:15:52,020 --> 00:15:54,930 is already built into the IPv6 protocol by default, 389 00:15:54,930 --> 00:15:57,810 you really don't need to use DHCP version six. 390 00:15:57,810 --> 00:16:00,840 If you do decide you want to use DHCP version six though, 391 00:16:00,840 --> 00:16:02,310 you can use this to assign 392 00:16:02,310 --> 00:16:05,100 what addresses each interface is going to get. 393 00:16:05,100 --> 00:16:07,320 As I said though, in IPv6, 394 00:16:07,320 --> 00:16:09,120 we're usually going to choose its own address 395 00:16:09,120 --> 00:16:11,130 based on its MAC address by default, 396 00:16:11,130 --> 00:16:13,500 and this uses something known as NDP, 397 00:16:13,500 --> 00:16:15,360 or the Neighbor Discovery Protocol, 398 00:16:15,360 --> 00:16:17,850 to learn more about the Layer 2 addresses on the network 399 00:16:17,850 --> 00:16:19,470 based on their MAC addresses, 400 00:16:19,470 --> 00:16:22,170 and then pick its own host ID based on that. 401 00:16:22,170 --> 00:16:25,230 So let's explore the Neighbor Discovery Protocol for a bit. 402 00:16:25,230 --> 00:16:26,550 The Neighbor Discovery Protocol 403 00:16:26,550 --> 00:16:28,320 is used to learn the Layer 2 addresses 404 00:16:28,320 --> 00:16:29,970 that are on a given network. 405 00:16:29,970 --> 00:16:32,460 NDP will perform router solicitation, 406 00:16:32,460 --> 00:16:35,160 router advertisement, neighbor solicitation, 407 00:16:35,160 --> 00:16:37,710 neighbor advertisement, and redirection. 408 00:16:37,710 --> 00:16:40,080 Router solicitation is when your client is going to send 409 00:16:40,080 --> 00:16:42,330 a message to locate the routers on its network, 410 00:16:42,330 --> 00:16:44,850 because it has to figure out what the default gateway is 411 00:16:44,850 --> 00:16:46,470 so it has a way to get out of your network 412 00:16:46,470 --> 00:16:47,880 and onto the internet. 413 00:16:47,880 --> 00:16:50,190 Routers can do advertisement over NDP as well, 414 00:16:50,190 --> 00:16:51,570 and say, "Hey, I'm a router. 415 00:16:51,570 --> 00:16:52,403 I'm over here. 416 00:16:52,403 --> 00:16:53,340 You can solicit me. 417 00:16:53,340 --> 00:16:55,080 I'm right here. Come to me." 418 00:16:55,080 --> 00:16:57,990 Neighbor solicitation is where your IPv6 starts going around 419 00:16:57,990 --> 00:17:00,720 and saying, "What other nodes are on this network?" 420 00:17:00,720 --> 00:17:02,640 This allows your interface to try to determine 421 00:17:02,640 --> 00:17:05,940 what link-layer addresses or Layer 2 addresses are out there 422 00:17:05,940 --> 00:17:08,940 so it can learn them and know how to talk to them directly. 423 00:17:08,940 --> 00:17:10,650 Neighbor advertisement is just like 424 00:17:10,650 --> 00:17:11,880 the router advertisement, 425 00:17:11,880 --> 00:17:13,230 but it happens with your neighbors. 426 00:17:13,230 --> 00:17:14,227 These are the other clients saying, 427 00:17:14,227 --> 00:17:15,569 "Hey, I'm over here. 428 00:17:15,569 --> 00:17:16,829 I'm a printer. I can do this." 429 00:17:16,829 --> 00:17:17,880 Or, "Hey, I'm over here. 430 00:17:17,880 --> 00:17:19,859 I'm a file server. I can do this for you." 431 00:17:19,859 --> 00:17:20,970 And that way, you know who's there 432 00:17:20,970 --> 00:17:22,589 and what they have to offer. 433 00:17:22,589 --> 00:17:24,240 Finally, we have redirection, 434 00:17:24,240 --> 00:17:26,099 and this is where the routers can inform the host 435 00:17:26,099 --> 00:17:27,810 of better first hop routers 436 00:17:27,810 --> 00:17:30,510 to increase the efficiency of your network over time. 437 00:17:30,510 --> 00:17:33,240 For example, if I'm sitting here in Orlando, Florida, 438 00:17:33,240 --> 00:17:36,120 and I think my best first hop router is going to be in New York 439 00:17:36,120 --> 00:17:37,620 to get over to California, 440 00:17:37,620 --> 00:17:40,140 that may not be the most efficient route for me to use. 441 00:17:40,140 --> 00:17:42,000 Instead, there could be another router sitting 442 00:17:42,000 --> 00:17:43,020 in Atlanta, Georgia, 443 00:17:43,020 --> 00:17:45,337 that might tell me it's a better first hop by saying, 444 00:17:45,337 --> 00:17:46,950 "Hey, I'm actually closer to you. 445 00:17:46,950 --> 00:17:48,030 You should talk to me. 446 00:17:48,030 --> 00:17:50,040 Don't go all the way to New York to get to California. 447 00:17:50,040 --> 00:17:51,750 Come to me first. I'll handle it for you. 448 00:17:51,750 --> 00:17:53,730 It's just a simple redirection." 449 00:17:53,730 --> 00:17:56,910 Now, for the exam, you don't need to know NDP in depth, 450 00:17:56,910 --> 00:17:59,010 but you should understand the concept of NDP 451 00:17:59,010 --> 00:18:00,990 and how it's used in IP version six, 452 00:18:00,990 --> 00:18:02,430 and how it takes a lot of the functions 453 00:18:02,430 --> 00:18:04,860 from Layer 2 and Layer 3 of the OSI model 454 00:18:04,860 --> 00:18:07,050 for router advertisement and neighbor discovery, 455 00:18:07,050 --> 00:18:09,090 and it handles all of those for you. 456 00:18:09,090 --> 00:18:10,620 Now, when it comes to the exam, 457 00:18:10,620 --> 00:18:12,450 I want you to remember a couple of key things 458 00:18:12,450 --> 00:18:14,310 for IP version six. 459 00:18:14,310 --> 00:18:18,720 First, IP version six has 128 bits of addressable space 460 00:18:18,720 --> 00:18:19,590 inside of it, 461 00:18:19,590 --> 00:18:23,490 as opposed to the 32 bits that we had in IP version four. 462 00:18:23,490 --> 00:18:26,520 Second, when you're dealing with IP version six, 463 00:18:26,520 --> 00:18:29,430 you can use a shorthand to shorten your addresses down, 464 00:18:29,430 --> 00:18:32,640 and that way you can take four zeros and make them one zero, 465 00:18:32,640 --> 00:18:33,900 or sets of zeros, 466 00:18:33,900 --> 00:18:36,690 and use a double colon to collapse those all down 467 00:18:36,690 --> 00:18:38,338 and make it shorter for you to write. 468 00:18:38,338 --> 00:18:41,700 Third, every time you're looking at an IPv6 address, 469 00:18:41,700 --> 00:18:44,070 you should remember that it's written in hexadecimal, 470 00:18:44,070 --> 00:18:45,510 not in decimal. 471 00:18:45,510 --> 00:18:48,000 This means you're going to have numbers zero through nine 472 00:18:48,000 --> 00:18:50,130 and letters A through F. 473 00:18:50,130 --> 00:18:51,630 And then the last thing I want you to remember 474 00:18:51,630 --> 00:18:55,200 is that we have three different types of IPv6 address types. 475 00:18:55,200 --> 00:18:57,990 These are unicast addresses, multicast addresses, 476 00:18:57,990 --> 00:18:59,463 and anycast addresses.