1 00:00:00,000 --> 00:00:03,367 [AUDIO LOGO] 2 00:00:03,367 --> 00:00:07,700 3 00:00:07,700 --> 00:00:13,880 In this video, let's jump into the command line on both iOS XR 4 00:00:13,880 --> 00:00:17,450 and iOS XE, and we'll get an idea 5 00:00:17,450 --> 00:00:21,860 how route-refresh and software configuration work 6 00:00:21,860 --> 00:00:24,170 on the two different platforms. 7 00:00:24,170 --> 00:00:26,900 We'll also take a look at Wireshark, 8 00:00:26,900 --> 00:00:29,870 so we can see the messages actually being 9 00:00:29,870 --> 00:00:32,610 sent between the two routers on the wire. 10 00:00:32,610 --> 00:00:34,620 So let's jump in and get started. 11 00:00:34,620 --> 00:00:40,910 We'll start on the command line of router 1 looking at iOS XR. 12 00:00:40,910 --> 00:00:44,600 So since router 1 is running iOS XR, 13 00:00:44,600 --> 00:00:48,900 this will do route-refresh automatically by default. 14 00:00:48,900 --> 00:00:53,720 So let's actually begin by going into configuration mode 15 00:00:53,720 --> 00:00:58,370 into BGP, and let's do our neighborship towards router 7. 16 00:00:58,370 --> 00:01:04,069 So that's 50.0.167.7. 17 00:01:04,069 --> 00:01:07,610 We'll go into our address family for IPv4 18 00:01:07,610 --> 00:01:10,880 and let's configure soft reconfiguration, 19 00:01:10,880 --> 00:01:15,880 and you can see here, it only supports inbound. 20 00:01:15,880 --> 00:01:18,700 We haven't really mentioned this before because there's not 21 00:01:18,700 --> 00:01:19,840 much to it. 22 00:01:19,840 --> 00:01:22,840 Doing an outbound reconfiguration 23 00:01:22,840 --> 00:01:24,590 is actually quite simple. 24 00:01:24,590 --> 00:01:27,250 There's no special feature or anything like that. 25 00:01:27,250 --> 00:01:32,260 We simply resend our local BGP table to the neighbor 26 00:01:32,260 --> 00:01:34,840 through any new outbound filters. 27 00:01:34,840 --> 00:01:37,060 So again, we haven't really talked about it 28 00:01:37,060 --> 00:01:39,580 because there's honestly nothing to talk about. 29 00:01:39,580 --> 00:01:43,690 The other router may not be expecting an update from us, 30 00:01:43,690 --> 00:01:46,070 but it'll process it if it comes in. 31 00:01:46,070 --> 00:01:50,260 So there's no notification or any extra storing of tables 32 00:01:50,260 --> 00:01:51,940 or anything else that needs to happen. 33 00:01:51,940 --> 00:01:55,010 For outbound, we just do it. 34 00:01:55,010 --> 00:01:57,670 So that's why the only option here is inbound, 35 00:01:57,670 --> 00:02:01,210 and why we haven't really discussed it. 36 00:02:01,210 --> 00:02:03,690 So let's go ahead and do inbound. 37 00:02:03,690 --> 00:02:08,590 We'll commit those changes, and we'll exit configuration. 38 00:02:08,590 --> 00:02:10,050 Now the first thing we want to note 39 00:02:10,050 --> 00:02:16,980 is if we do a show BGP neighbor for that 50.0.167.7 40 00:02:16,980 --> 00:02:19,950 and we do a received routes, there's not 41 00:02:19,950 --> 00:02:23,040 going to be anything shown, and it actually 42 00:02:23,040 --> 00:02:29,430 tells us right here that this command is only available when 43 00:02:29,430 --> 00:02:33,570 inbound soft reconfiguration is active. 44 00:02:33,570 --> 00:02:35,790 And it also tells us that it's not 45 00:02:35,790 --> 00:02:39,090 going to be active if the neighbor supports 46 00:02:39,090 --> 00:02:40,740 route-refresh. 47 00:02:40,740 --> 00:02:44,340 Now the cool thing is it does tell us here how to fix it, 48 00:02:44,340 --> 00:02:46,300 but we're not going to fix it just yet. 49 00:02:46,300 --> 00:02:48,450 We're going to verify first that it 50 00:02:48,450 --> 00:02:51,840 is in fact using route-refresh and ignoring 51 00:02:51,840 --> 00:02:55,380 the soft reconfiguration that we just configured. 52 00:02:55,380 --> 00:02:58,410 Obviously, we can see that it is, but let's take a look at it 53 00:02:58,410 --> 00:03:02,190 both in debug and in Wireshark. 54 00:03:02,190 --> 00:03:04,770 So first let's turn on our debugs. 55 00:03:04,770 --> 00:03:09,060 So we'll start with a debug BGP update for the address family 56 00:03:09,060 --> 00:03:12,990 IPv4 unicast, and let's jump over 57 00:03:12,990 --> 00:03:15,610 and do a Wireshark capture. 58 00:03:15,610 --> 00:03:20,370 So here we've started a capture on gigabit 3 of router 1, 59 00:03:20,370 --> 00:03:24,660 and we are filtering it to be BGP but not 60 00:03:24,660 --> 00:03:27,450 if the BGP length is 19. 61 00:03:27,450 --> 00:03:30,120 That should specifically keep out BGP 62 00:03:30,120 --> 00:03:34,150 keep alives just so we can see the updates themselves. 63 00:03:34,150 --> 00:03:39,940 So now let's go do a clear on our BGP session. 64 00:03:39,940 --> 00:03:46,060 So we'll say clear BGP IPv4 towards that neighbor, 65 00:03:46,060 --> 00:03:48,450 and we'll do a soft inbound. 66 00:03:48,450 --> 00:03:51,000 So what we see here is it's actually 67 00:03:51,000 --> 00:03:54,810 sending that refresh request over to router 7, 68 00:03:54,810 --> 00:03:57,690 and then we see that we're actually getting our updates 69 00:03:57,690 --> 00:03:59,770 as we requested them. 70 00:03:59,770 --> 00:04:03,780 So as we can see this did not do soft reconfiguration, 71 00:04:03,780 --> 00:04:06,760 it's clearly a route refresh. 72 00:04:06,760 --> 00:04:10,200 We see the request go out, and we see the updates coming in 73 00:04:10,200 --> 00:04:11,190 on our debug. 74 00:04:11,190 --> 00:04:14,440 Let's go see what Wireshark showed us. 75 00:04:14,440 --> 00:04:16,470 So if we take a look here at Wireshark, 76 00:04:16,470 --> 00:04:20,130 we can clearly see that the first message sent here 77 00:04:20,130 --> 00:04:24,510 was from router 1 to router 7, and it is in fact 78 00:04:24,510 --> 00:04:26,880 a route-refresh message. 79 00:04:26,880 --> 00:04:29,160 If we expand the route refresh message, 80 00:04:29,160 --> 00:04:31,770 we can actually see here that it was specifically 81 00:04:31,770 --> 00:04:34,830 for address family IPv4. 82 00:04:34,830 --> 00:04:37,000 And then if we look back up at the top, 83 00:04:37,000 --> 00:04:39,750 we can see that our second message coming in 84 00:04:39,750 --> 00:04:42,960 are the update messages coming from router 7 85 00:04:42,960 --> 00:04:46,950 to router 1 actually doing the route-refresh. 86 00:04:46,950 --> 00:04:51,840 So this was definitely a route-refresh scenario. 87 00:04:51,840 --> 00:04:54,350 So let's go back over to router 1 88 00:04:54,350 --> 00:04:59,630 and take a look at how we get iOS XR to actually do 89 00:04:59,630 --> 00:05:04,100 the soft reconfiguration inbound if the neighbor supports 90 00:05:04,100 --> 00:05:06,820 route-refresh. 91 00:05:06,820 --> 00:05:08,620 So before we go ahead and fix it there's 92 00:05:08,620 --> 00:05:10,810 one more command we can look at here, 93 00:05:10,810 --> 00:05:14,610 the show BGP neighbor detail. 94 00:05:14,610 --> 00:05:17,150 And if we scroll down a bit, we can see right here 95 00:05:17,150 --> 00:05:20,510 under neighbor capabilities that route-refresh 96 00:05:20,510 --> 00:05:25,460 is both advertised and received, meaning both sides support 97 00:05:25,460 --> 00:05:26,990 route-refresh. 98 00:05:26,990 --> 00:05:29,150 So router 1 knows this. 99 00:05:29,150 --> 00:05:32,570 This is why router 1 is doing the route refresh rather than 100 00:05:32,570 --> 00:05:35,000 the soft reconfiguration inbound. 101 00:05:35,000 --> 00:05:37,320 So if we want it to actually do that, 102 00:05:37,320 --> 00:05:39,650 we're going to have to force it. 103 00:05:39,650 --> 00:05:42,800 To do that, we'll go back into configuration mode, 104 00:05:42,800 --> 00:05:46,940 back into the router, back into the neighbor, 105 00:05:46,940 --> 00:05:49,640 back into the address family, and 106 00:05:49,640 --> 00:05:52,310 after the soft reconfiguration inbound, 107 00:05:52,310 --> 00:05:55,890 we're going to have to turn on always. 108 00:05:55,890 --> 00:05:58,650 We'll commit those changes. 109 00:05:58,650 --> 00:06:03,140 Notice that since we still have our debug on, as soon as we 110 00:06:03,140 --> 00:06:06,050 said commit, look what it did. 111 00:06:06,050 --> 00:06:08,900 If we scroll up just a little bit here, 112 00:06:08,900 --> 00:06:13,290 we can see right here that it sent a route-refresh request. 113 00:06:13,290 --> 00:06:15,320 So there's a little bit of irony. 114 00:06:15,320 --> 00:06:21,140 It's doing a route-refresh to populate the local table to do 115 00:06:21,140 --> 00:06:23,480 soft reconfiguration inbound. 116 00:06:23,480 --> 00:06:25,640 So there's nothing wrong with this, 117 00:06:25,640 --> 00:06:29,360 it's just a little interesting that it uses the newer 118 00:06:29,360 --> 00:06:33,800 method of doing a refresh, which is the route-refresh request 119 00:06:33,800 --> 00:06:36,290 to populate the table that we're going 120 00:06:36,290 --> 00:06:40,010 to be using for our soft reconfiguration inbound. 121 00:06:40,010 --> 00:06:43,990 So let's see if that table is actually populated now. 122 00:06:43,990 --> 00:06:45,690 So now let's look at our received routes 123 00:06:45,690 --> 00:06:52,170 again, and notice that now we're getting a prefix from router 7. 124 00:06:52,170 --> 00:06:55,030 So this is working properly. 125 00:06:55,030 --> 00:06:58,020 We now have this local copy. 126 00:06:58,020 --> 00:07:05,220 Also if we were to do a show IP BGP for the prefix 108.8.8.0, 127 00:07:05,220 --> 00:07:08,850 notice here on the entry from router 7, 128 00:07:08,850 --> 00:07:13,960 it's listing it as both received and used. 129 00:07:13,960 --> 00:07:17,130 This means that it was received through soft reconfiguration. 130 00:07:17,130 --> 00:07:20,190 It's being stored locally, and it also 131 00:07:20,190 --> 00:07:24,390 happens to be, in this case, the path that we're using. 132 00:07:24,390 --> 00:07:28,800 Also if we look at the details of that neighborship now, 133 00:07:28,800 --> 00:07:32,340 notice that under address family IPv4, 134 00:07:32,340 --> 00:07:35,490 next to the inbound software configuration allowed, 135 00:07:35,490 --> 00:07:39,900 it actually says to override route-refresh. 136 00:07:39,900 --> 00:07:43,050 So now that this is supposedly working properly, 137 00:07:43,050 --> 00:07:44,640 let's verify it. 138 00:07:44,640 --> 00:07:49,670 So let's go ahead and do a soft clear to that neighbor again. 139 00:07:49,670 --> 00:07:51,490 So the main thing we want to see here 140 00:07:51,490 --> 00:07:55,660 is that it did not send a route-refresh message. 141 00:07:55,660 --> 00:07:59,470 Now it's showing the replay of the local table that's 142 00:07:59,470 --> 00:08:01,630 what these debugs are, but there's 143 00:08:01,630 --> 00:08:03,700 no route-refresh message being sent. 144 00:08:03,700 --> 00:08:05,980 In fact, we can see right here that it's 145 00:08:05,980 --> 00:08:09,400 marking the neighbor for soft reconfiguration. 146 00:08:09,400 --> 00:08:12,950 We could also see this in Wireshark. 147 00:08:12,950 --> 00:08:18,240 Notice that we only have two route-refresh messages here. 148 00:08:18,240 --> 00:08:20,820 The first one is the one we looked at initially. 149 00:08:20,820 --> 00:08:24,410 The second one is from when we enabled 150 00:08:24,410 --> 00:08:26,510 the soft reconfiguration inbound. 151 00:08:26,510 --> 00:08:28,760 We saw that it did a route refresh 152 00:08:28,760 --> 00:08:30,750 to get that information. 153 00:08:30,750 --> 00:08:34,679 But notice this third time that we did the clear, 154 00:08:34,679 --> 00:08:38,419 there's no route-refresh message for the third time 155 00:08:38,419 --> 00:08:40,730 we clear the neighborship. 156 00:08:40,730 --> 00:08:44,330 So we can see clearly this is doing software reconfiguration 157 00:08:44,330 --> 00:08:45,480 now. 158 00:08:45,480 --> 00:08:47,780 So let's go back to router 1. 159 00:08:47,780 --> 00:08:50,480 First let's turn off all of our debugging, 160 00:08:50,480 --> 00:08:54,140 and now let's look at this same feature on iOS XE. 161 00:08:54,140 --> 00:08:56,930 So let's jump over to router 7 next. 162 00:08:56,930 --> 00:09:01,140 So first on router 7, let's look at its default behavior. 163 00:09:01,140 --> 00:09:04,640 So let's start with a debug IP BGP update. 164 00:09:04,640 --> 00:09:09,500 Then we'll do an inbound clear to our router neighbor. 165 00:09:09,500 --> 00:09:12,740 So although this one doesn't actually say in the debug 166 00:09:12,740 --> 00:09:15,450 that it sent a route-refresh request, 167 00:09:15,450 --> 00:09:19,340 we can see that as soon as we hit Enter, all of a sudden 168 00:09:19,340 --> 00:09:23,570 we received all these updates coming from router 1. 169 00:09:23,570 --> 00:09:25,310 So that's a pretty good indicator 170 00:09:25,310 --> 00:09:26,990 that it was a route-refresh. 171 00:09:26,990 --> 00:09:32,080 We can also, of course, see this in Wireshark. 172 00:09:32,080 --> 00:09:35,290 As we can see here in Wireshark, we now 173 00:09:35,290 --> 00:09:39,620 have a third route-refresh message in our output. 174 00:09:39,620 --> 00:09:44,050 And notice that this one is coming from the source of .7 175 00:09:44,050 --> 00:09:49,180 going to the destination of .1 So this is 7 asking 1 176 00:09:49,180 --> 00:09:50,920 for the route-refresh. 177 00:09:50,920 --> 00:09:54,370 So this is showing that default behavior. 178 00:09:54,370 --> 00:09:58,750 Something else of interest to note on iOS XE. 179 00:09:58,750 --> 00:10:01,210 If we come back over here to router 7 180 00:10:01,210 --> 00:10:06,490 and instead we do a soft in and hit Enter, 181 00:10:06,490 --> 00:10:11,090 we'll notice that it actually does the exact same thing. 182 00:10:11,090 --> 00:10:19,330 There's no difference between soft in and in on iOS XE. 183 00:10:19,330 --> 00:10:22,150 This is still doing a route-refresh. 184 00:10:22,150 --> 00:10:26,570 If we look at Wireshark, there's a second request 185 00:10:26,570 --> 00:10:30,130 now from router 7 to router 1, so this is clearly 186 00:10:30,130 --> 00:10:32,470 sending out refresh messages. 187 00:10:32,470 --> 00:10:38,050 The point is that both commands do the same thing on iOS XE. 188 00:10:38,050 --> 00:10:40,450 Now let's turn on soft configuration 189 00:10:40,450 --> 00:10:42,260 and see what changes. 190 00:10:42,260 --> 00:10:45,070 So first we'll go into configuration mode. 191 00:10:45,070 --> 00:10:48,490 Router BGP 65001. 192 00:10:48,490 --> 00:10:52,660 For the neighbor, 50.0.167.1. 193 00:10:52,660 --> 00:10:54,910 We will do soft configuration. 194 00:10:54,910 --> 00:11:00,020 Just like iOS XR, inbound is, of course, the only option. 195 00:11:00,020 --> 00:11:02,290 We'll end our configuration. 196 00:11:02,290 --> 00:11:05,560 And as we can see, just like iOS XR, 197 00:11:05,560 --> 00:11:08,830 this already did another route-refresh 198 00:11:08,830 --> 00:11:13,190 to populate the soft reconfiguration inbound table. 199 00:11:13,190 --> 00:11:16,010 So this is doing the exact same thing. 200 00:11:16,010 --> 00:11:19,300 Now if we do our clear in again, notice 201 00:11:19,300 --> 00:11:22,330 how it's just doing a soft reconfiguration inbound. 202 00:11:22,330 --> 00:11:24,880 It did not get all those updates again, 203 00:11:24,880 --> 00:11:27,220 and it completed in 2 milliseconds. 204 00:11:27,220 --> 00:11:29,908 The other update really didn't tell us how long it took, 205 00:11:29,908 --> 00:11:31,450 so we don't really have a comparison, 206 00:11:31,450 --> 00:11:33,520 but it was pretty quick. 207 00:11:33,520 --> 00:11:36,790 Also note that if we again do the soft in, 208 00:11:36,790 --> 00:11:39,440 this is going to do the exact same thing. 209 00:11:39,440 --> 00:11:44,650 So these two commands in and soft in on iOS XE 210 00:11:44,650 --> 00:11:47,060 do exactly the same thing. 211 00:11:47,060 --> 00:11:50,830 The only real difference is whether soft reconfiguration 212 00:11:50,830 --> 00:11:53,740 inbound is enabled or not. 213 00:11:53,740 --> 00:11:57,070 Just as a quick note in case you're wondering why there's 214 00:11:57,070 --> 00:12:01,450 two different commands, on older versions of the code going back 215 00:12:01,450 --> 00:12:06,340 quite a bit, in was to do route-refresh, 216 00:12:06,340 --> 00:12:11,020 soft in was to do soft reconfiguration inbound. 217 00:12:11,020 --> 00:12:14,740 And if you tried to do soft in without enabling the feature, 218 00:12:14,740 --> 00:12:17,860 the router would yell at you and say, no, you can't do that. 219 00:12:17,860 --> 00:12:22,010 You haven't enabled soft reconfiguration inbound yet. 220 00:12:22,010 --> 00:12:25,700 Now it just looks and sees, oh, well, route-refresh is enabled. 221 00:12:25,700 --> 00:12:26,650 That's good enough. 222 00:12:26,650 --> 00:12:29,230 So I see that you type soft in, but we'll just 223 00:12:29,230 --> 00:12:30,430 do a route-refresh. 224 00:12:30,430 --> 00:12:35,260 So both commands on current code do the same thing just 225 00:12:35,260 --> 00:12:39,490 based on whether soft reconfiguration inbound is 226 00:12:39,490 --> 00:12:43,060 enabled, and of course, assuming route-refresh 227 00:12:43,060 --> 00:12:47,550 was negotiated with the neighbor during bring up. 228 00:12:47,550 --> 00:12:51,750 Just to completely verify, let's go back here to Wireshark, 229 00:12:51,750 --> 00:12:53,490 and we can see here that there was 230 00:12:53,490 --> 00:12:57,720 that last route-refresh message sent to populate the software 231 00:12:57,720 --> 00:12:59,160 configuration table. 232 00:12:59,160 --> 00:13:01,740 But after that, there are no more 233 00:13:01,740 --> 00:13:04,950 even though we did the clear two more times. 234 00:13:04,950 --> 00:13:08,580 They're not here because they were soft reconfiguration. 235 00:13:08,580 --> 00:13:13,440 And just like on iOS XR, go back over to router 7. 236 00:13:13,440 --> 00:13:16,170 We can see that received table here as well. 237 00:13:16,170 --> 00:13:22,350 If we do a show IP BGP neighbor for the 50.0.167.1, 238 00:13:22,350 --> 00:13:24,480 we can do received routes. 239 00:13:24,480 --> 00:13:29,070 Here we can see the table that we received from router 1. 240 00:13:29,070 --> 00:13:34,170 So we can see that this is working exactly as we expected. 241 00:13:34,170 --> 00:13:39,300 In this video, we took a look at how iOS XR and iOS 242 00:13:39,300 --> 00:13:44,280 XE behave in regard to soft reconfiguration 243 00:13:44,280 --> 00:13:47,370 inbound versus route-refresh. 244 00:13:47,370 --> 00:13:51,120 We saw that both of them will do route-refresh by default, 245 00:13:51,120 --> 00:13:54,690 but, of course, we can enable the soft reconfiguration 246 00:13:54,690 --> 00:13:55,830 inbound. 247 00:13:55,830 --> 00:13:57,940 The interesting thing to take away from this, 248 00:13:57,940 --> 00:14:02,370 though, is even if you enable soft reconfiguration inbound 249 00:14:02,370 --> 00:14:07,650 on iOS XR, it actually won't do it if the neighbor itself 250 00:14:07,650 --> 00:14:11,970 supports route-refresh, so you have to actually force it 251 00:14:11,970 --> 00:14:14,170 by saying always. 252 00:14:14,170 --> 00:14:16,440 I hope this has been informative for you, 253 00:14:16,440 --> 00:14:19,580 and I'd like to thank you for viewing. 254 00:14:19,580 --> 00:14:23,000