WEBVTT

1
00:00.000 --> 00:00.090 align:middle line:84%


2
00:00.090 --> 00:01.923 align:middle line:90%
Look, I know what you're
thinking right now.

3
00:01.923 --> 00:04.500 align:middle line:90%
You're jumping into the next
generation of networking, where

4
00:04.500 --> 00:07.380 align:middle line:90%
it's all about software-defined
networking and automation,

5
00:07.380 --> 00:09.130 align:middle line:90%
and you may have a
little hesitancy.

6
00:09.130 --> 00:11.400 align:middle line:90%
You may be thinking,
I don't know anything

7
00:11.400 --> 00:12.570 align:middle line:84%
about software development.

8
00:12.570 --> 00:14.400 align:middle line:84%
And that's totally OK.

9
00:14.400 --> 00:15.900 align:middle line:90%
That's why you're
here right now.

10
00:15.900 --> 00:19.490 align:middle line:90%
What we're doing in this skill
is just setting the foundation

11
00:19.490 --> 00:22.680 align:middle line:90%
so that we can ease into
bigger topics, like digging

12
00:22.680 --> 00:24.660 align:middle line:90%
into actual
software-defined networking

13
00:24.660 --> 00:26.682 align:middle line:84%
platforms or automation.

14
00:26.682 --> 00:28.140 align:middle line:90%
So by the end of
this Nugget, we'll

15
00:28.140 --> 00:30.030 align:middle line:90%
actually understand
what software defined
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

15
00:28.140 --> 00:30.030 align:middle line:90%
actually understand
what software defined

16
00:30.030 --> 00:32.130 align:middle line:90%
networking brings to
the table and what

17
00:32.130 --> 00:34.613 align:middle line:84%
an API does in the first place.

18
00:34.613 --> 00:36.030 align:middle line:90%
That way, in the
upcoming Nuggets,

19
00:36.030 --> 00:37.613 align:middle line:90%
we can start looking
a little bit more

20
00:37.613 --> 00:41.010 align:middle line:90%
of the different categories
of APIs and what types of data

21
00:41.010 --> 00:42.090 align:middle line:84%
they interact with.

22
00:42.090 --> 00:42.630 align:middle line:84%
Get ready.

23
00:42.630 --> 00:45.088 align:middle line:90%
We're going to have a lot of
fun setting up this foundation

24
00:45.088 --> 00:46.830 align:middle line:84%
about what APIs do.

25
00:46.830 --> 00:47.820 align:middle line:84%
Let's get going.

26
00:47.820 --> 00:50.190 align:middle line:90%
Do you remember this slide
from the previous skill,

27
00:50.190 --> 00:53.360 align:middle line:90%
when we were talking about the
architecture of an application?

28
00:53.360 --> 00:54.360 align:middle line:84%
If you don't, that's OK.

29
00:54.360 --> 00:56.760 align:middle line:90%
We're going to set it
up again really briefly.

30
00:56.760 --> 01:00.450 align:middle line:90%
When you are interacting with
f website that might actually
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

30
00:56.760 --> 01:00.450 align:middle line:90%
When you are interacting with
f website that might actually

31
01:00.450 --> 01:03.510 align:middle line:90%
be a website that's
running an application,

32
01:03.510 --> 01:05.040 align:middle line:84%
here's how it's structured.

33
01:05.040 --> 01:08.220 align:middle line:90%
You log into the website, and
this is all you really see.

34
01:08.220 --> 01:10.522 align:middle line:84%
You see the web front end--

35
01:10.522 --> 01:11.730 align:middle line:84%
which is what we'll call it--

36
01:11.730 --> 01:15.270 align:middle line:90%
and your web browser
downloads an HTML document,

37
01:15.270 --> 01:19.140 align:middle line:90%
it downloads a CSS document,
and it downloads a JavaScript

38
01:19.140 --> 01:19.910 align:middle line:84%
document.

39
01:19.910 --> 01:22.980 align:middle line:90%
And your web browser is designed
to download these documents

40
01:22.980 --> 01:25.440 align:middle line:90%
and turn them into
a pretty website

41
01:25.440 --> 01:26.980 align:middle line:84%
that you can interact with.

42
01:26.980 --> 01:30.420 align:middle line:90%
So your front end-- you see
the pretty website that's
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

42
01:26.980 --> 01:30.420 align:middle line:90%
So your front end-- you see
the pretty website that's

43
01:30.420 --> 01:32.790 align:middle line:90%
got the design, and the
art, and the pictures,

44
01:32.790 --> 01:35.290 align:middle line:90%
and maybe some products
that you want to buy,

45
01:35.290 --> 01:36.953 align:middle line:84%
and that's all you ever see.

46
01:36.953 --> 01:38.370 align:middle line:90%
But maybe on that
website, there's

47
01:38.370 --> 01:40.020 align:middle line:84%
also some fields to fill out.

48
01:40.020 --> 01:44.280 align:middle line:90%
Maybe there's something like
a first name, and a last name,

49
01:44.280 --> 01:46.560 align:middle line:84%
and a Sign Up button.

50
01:46.560 --> 01:49.200 align:middle line:90%
So you fill out these fields and
you click the Sign Up button.

51
01:49.200 --> 01:50.640 align:middle line:84%
What happens then?

52
01:50.640 --> 01:54.210 align:middle line:90%
You see, what you've done here
is you've just created data,

53
01:54.210 --> 01:56.790 align:middle line:90%
like my name here and
my last name here,

54
01:56.790 --> 01:58.560 align:middle line:90%
and you've instructed
that website

55
01:58.560 --> 02:02.350 align:middle line:90%
to do something with that
data, to process that data.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

55
01:58.560 --> 02:02.350 align:middle line:90%
to do something with that
data, to process that data.

56
02:02.350 --> 02:04.530 align:middle line:90%
And this is where the
application website

57
02:04.530 --> 02:07.710 align:middle line:90%
hands the data off
to other resources.

58
02:07.710 --> 02:09.449 align:middle line:90%
Behind the scenes,
what's really going on

59
02:09.449 --> 02:13.530 align:middle line:90%
is that website will
transmit this form data here

60
02:13.530 --> 02:15.900 align:middle line:84%
to a back-end server.

61
02:15.900 --> 02:18.120 align:middle line:90%
This back-end server
will validate, OK,

62
02:18.120 --> 02:21.550 align:middle line:90%
we've got a valid first
name and a valid last name.

63
02:21.550 --> 02:23.480 align:middle line:90%
And if it's coded
correctly, it will

64
02:23.480 --> 02:25.320 align:middle line:90%
make sure it's not
trying to run a SQL

65
02:25.320 --> 02:28.050 align:middle line:90%
injection or a cross-site
scripting injection,

66
02:28.050 --> 02:31.170 align:middle line:90%
and then it'll do something
with that information.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

66
02:28.050 --> 02:31.170 align:middle line:90%
and then it'll do something
with that information.

67
02:31.170 --> 02:34.330 align:middle line:90%
Maybe it sends it off to
a customer support team.

68
02:34.330 --> 02:37.470 align:middle line:90%
Maybe it sends it to a
analytics platform, where

69
02:37.470 --> 02:39.660 align:middle line:84%
they can analyze sign-up data.

70
02:39.660 --> 02:42.960 align:middle line:90%
Or maybe it forwards it straight
into a database, where it can

71
02:42.960 --> 02:45.640 align:middle line:84%
store, historically, that data.

72
02:45.640 --> 02:47.640 align:middle line:90%
Not only will it store
things like my first name

73
02:47.640 --> 02:50.820 align:middle line:90%
and last name, but it may store,
what website did I come from,

74
02:50.820 --> 02:53.010 align:middle line:90%
or what time did I click
the Sign Up button?

75
02:53.010 --> 02:55.050 align:middle line:90%
The big thing that
now we're setting up

76
02:55.050 --> 02:58.470 align:middle line:90%
is, how do each of these
individual unique servers

77
02:58.470 --> 02:59.910 align:middle line:84%
communicate to each other?

78
02:59.910 --> 03:02.820 align:middle line:90%
Servers and
applications send data
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

78
02:59.910 --> 03:02.820 align:middle line:90%
Servers and
applications send data

79
03:02.820 --> 03:06.110 align:middle line:90%
to each other using
what's called an API.

80
03:06.110 --> 03:09.690 align:middle line:90%
And that's what we're trying to
set up in this exact Nugget is,

81
03:09.690 --> 03:13.770 align:middle line:90%
what does an API really
do, and how does it fit in

82
03:13.770 --> 03:15.360 align:middle line:84%
with a networking landscape?

83
03:15.360 --> 03:17.280 align:middle line:90%
What does software-defined
networking do,

84
03:17.280 --> 03:18.300 align:middle line:84%
and how does it do it?

85
03:18.300 --> 03:20.730 align:middle line:84%
It all comes back to APIs.

86
03:20.730 --> 03:23.040 align:middle line:90%
Let's clear the
screen one more time

87
03:23.040 --> 03:26.610 align:middle line:90%
and talk about how an API
differs a little bit from what

88
03:26.610 --> 03:27.750 align:middle line:84%
we just did.

89
03:27.750 --> 03:30.900 align:middle line:90%
You see, again, when we
opened up our browser
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

89
03:27.750 --> 03:30.900 align:middle line:90%
You see, again, when we
opened up our browser

90
03:30.900 --> 03:33.210 align:middle line:90%
and we typed in
the URL to go to,

91
03:33.210 --> 03:35.070 align:middle line:90%
what really happened
here is we got

92
03:35.070 --> 03:39.150 align:middle line:90%
sent through the internet to a
web server that holds nothing

93
03:39.150 --> 03:42.150 align:middle line:90%
more than HTML
documents, CSS documents,

94
03:42.150 --> 03:43.560 align:middle line:84%
and JavaScript documents.

95
03:43.560 --> 03:48.180 align:middle line:90%
So when we access that website--
we'll just call it mysite.com--

96
03:48.180 --> 03:50.190 align:middle line:90%
what we're really doing
is the web browser

97
03:50.190 --> 03:53.220 align:middle line:90%
is just going to the server
and downloading these documents

98
03:53.220 --> 03:54.760 align:middle line:84%
onto our local computer.

99
03:54.760 --> 03:56.790 align:middle line:90%
So our browser loads
these documents

100
03:56.790 --> 03:58.680 align:middle line:90%
and turns them into
a pretty website.

101
03:58.680 --> 04:01.048 align:middle line:90%
That's the gist of how
web development works.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

101
03:58.680 --> 04:01.048 align:middle line:90%
That's the gist of how
web development works.

102
04:01.048 --> 04:03.340 align:middle line:90%
Obviously, there's some more
complicated aspects to it,

103
04:03.340 --> 04:04.423 align:middle line:84%
but that's the gist of it.

104
04:04.423 --> 04:05.670 align:middle line:84%
That's the highlights of it.

105
04:05.670 --> 04:09.240 align:middle line:90%
An API does something
very, very similar.

106
04:09.240 --> 04:12.240 align:middle line:90%
Instead of us, a human,
interacting with mysite.com

107
04:12.240 --> 04:15.870 align:middle line:90%
now, now we're going
to tell an application

108
04:15.870 --> 04:17.990 align:middle line:84%
to interact with mysite.com.

109
04:17.990 --> 04:21.060 align:middle line:90%
It'll still leverage
HTTP as the protocol,

110
04:21.060 --> 04:24.660 align:middle line:90%
but instead of
returning HTML, or CSS,

111
04:24.660 --> 04:27.090 align:middle line:90%
or JavaScript documents,
what it actually

112
04:27.090 --> 04:30.870 align:middle line:90%
returns are documents
that contain raw data.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

112
04:27.090 --> 04:30.870 align:middle line:90%
returns are documents
that contain raw data.

113
04:30.870 --> 04:35.310 align:middle line:90%
And these documents come in
the shape of XML or JSON.

114
04:35.310 --> 04:39.030 align:middle line:90%
You see, applications don't
care for an HTML, or CSS,

115
04:39.030 --> 04:41.680 align:middle line:90%
or JavaScript document because
it doesn't need to be pretty.

116
04:41.680 --> 04:44.460 align:middle line:90%
It doesn't need to be
formatted for human eyes.

117
04:44.460 --> 04:47.370 align:middle line:90%
The application
just wants raw data

118
04:47.370 --> 04:49.590 align:middle line:90%
that it could
easily comb through,

119
04:49.590 --> 04:54.060 align:middle line:90%
and XML and JSON are very
easy for applications to comb

120
04:54.060 --> 04:54.670 align:middle line:84%
through.

121
04:54.670 --> 04:57.360 align:middle line:90%
So instead of returning
these HTML, CSS,

122
04:57.360 --> 05:00.740 align:middle line:90%
or JavaScript documents,
the API may go straight
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

122
04:57.360 --> 05:00.740 align:middle line:90%
or JavaScript documents,
the API may go straight

123
05:00.740 --> 05:03.080 align:middle line:90%
to the database, grab
the data out of it

124
05:03.080 --> 05:06.920 align:middle line:90%
that it wants, and returns
that data in the form of an XML

125
05:06.920 --> 05:08.300 align:middle line:84%
or JSON document.

126
05:08.300 --> 05:10.730 align:middle line:90%
From there, my application
can do whatever

127
05:10.730 --> 05:11.900 align:middle line:84%
it wants to with that data.

128
05:11.900 --> 05:13.607 align:middle line:90%
It can make decisions
on how to use it.

129
05:13.607 --> 05:15.440 align:middle line:90%
And the key thing that
we're setting up here

130
05:15.440 --> 05:19.790 align:middle line:90%
is this is how applications
communicate to each other.

131
05:19.790 --> 05:22.880 align:middle line:90%
I can say with an extremely
high degree of certainty

132
05:22.880 --> 05:24.740 align:middle line:90%
that, if you have a
software development

133
05:24.740 --> 05:27.360 align:middle line:90%
department within
your organization,

134
05:27.360 --> 05:30.870 align:middle line:90%
they are developing or
working with APIs regularly.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

134
05:27.360 --> 05:30.870 align:middle line:90%
they are developing or
working with APIs regularly.

135
05:30.870 --> 05:33.320 align:middle line:90%
In fact, they may be
developing scheduled tasks that

136
05:33.320 --> 05:36.890 align:middle line:90%
tell your own application
to reach out to some API

137
05:36.890 --> 05:39.255 align:middle line:90%
on the internet and
grab data on a schedule.

138
05:39.255 --> 05:40.130 align:middle line:84%
Maybe it's every day.

139
05:40.130 --> 05:41.400 align:middle line:84%
Maybe it's every hour.

140
05:41.400 --> 05:42.958 align:middle line:84%
So this is all well and good.

141
05:42.958 --> 05:45.250 align:middle line:90%
Up until this point, we've
talked a lot about websites,

142
05:45.250 --> 05:47.625 align:middle line:90%
but we're not here to talk
about app development, are we?

143
05:47.625 --> 05:50.390 align:middle line:90%
We're here to talk
about network automation

144
05:50.390 --> 05:52.730 align:middle line:84%
and software-defined networking.

145
05:52.730 --> 05:55.280 align:middle line:90%
Software-defined
networking is the new era

146
05:55.280 --> 05:58.100 align:middle line:90%
that we're in, so it's time
to bring up a new diagram

147
05:58.100 --> 05:59.720 align:middle line:90%
and talk about
network automation,

148
05:59.720 --> 06:03.530 align:middle line:90%
software-defined networking,
and where APIs fit in with that.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

148
05:59.720 --> 06:03.530 align:middle line:90%
software-defined networking,
and where APIs fit in with that.

149
06:03.530 --> 06:07.460 align:middle line:90%
Cisco has made it a point to say
that just about every platform

150
06:07.460 --> 06:11.240 align:middle line:90%
that they produce now must
have some form of API,

151
06:11.240 --> 06:14.400 align:middle line:90%
some way to interact
with it programmatically.

152
06:14.400 --> 06:16.760 align:middle line:90%
So just about every device
that they're rolling out

153
06:16.760 --> 06:19.280 align:middle line:90%
these days has an
API sitting on it,

154
06:19.280 --> 06:21.360 align:middle line:90%
waiting for you
to interact with.

155
06:21.360 --> 06:24.890 align:middle line:90%
So you could theoretically
write an application

156
06:24.890 --> 06:28.400 align:middle line:90%
that pulls data straight
out of these devices.

157
06:28.400 --> 06:30.830 align:middle line:90%
I'm also going to throw
the ASA line of products
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

157
06:28.400 --> 06:30.830 align:middle line:90%
I'm also going to throw
the ASA line of products

158
06:30.830 --> 06:33.740 align:middle line:90%
in here too, because
they also have an API.

159
06:33.740 --> 06:36.140 align:middle line:90%
And then, of course, we
can interact directly

160
06:36.140 --> 06:37.970 align:middle line:90%
with the Firepower
Management Center.

161
06:37.970 --> 06:39.565 align:middle line:90%
So keeping that
little Nugget in mind,

162
06:39.565 --> 06:40.940 align:middle line:90%
this is where
we're going to talk

163
06:40.940 --> 06:43.880 align:middle line:90%
about what software-defined
networking is really

164
06:43.880 --> 06:44.900 align:middle line:84%
doing for us.

165
06:44.900 --> 06:47.840 align:middle line:90%
In the traditional way of
working with network devices--

166
06:47.840 --> 06:50.060 align:middle line:90%
let's say we deployed these
three Firepower threat

167
06:50.060 --> 06:52.640 align:middle line:90%
devices, and then a
couple Firepower devices,

168
06:52.640 --> 06:53.630 align:middle line:84%
maybe some ASAs--

169
06:53.630 --> 06:56.610 align:middle line:90%
the traditional way was we
would deploy this device,

170
06:56.610 --> 06:58.370 align:middle line:90%
we would plug a
console cable in,

171
06:58.370 --> 07:00.830 align:middle line:90%
and we'd start typing on the
command line programming.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

171
06:58.370 --> 07:00.830 align:middle line:90%
and we'd start typing on the
command line programming.

172
07:00.830 --> 07:02.720 align:middle line:90%
Or maybe we did it
from a web browser,

173
07:02.720 --> 07:05.810 align:middle line:90%
or ASDM and the old Java
days, or things like that.

174
07:05.810 --> 07:09.690 align:middle line:90%
The point is we configured
these devices one at a time,

175
07:09.690 --> 07:13.440 align:middle line:90%
and in large deployments, that
took a lot more time to do.

176
07:13.440 --> 07:15.440 align:middle line:90%
But then they
introduced this concept

177
07:15.440 --> 07:18.800 align:middle line:90%
of software-defined
networking controllers.

178
07:18.800 --> 07:23.810 align:middle line:90%
Now we have one place to log
in and see the entire network.

179
07:23.810 --> 07:27.170 align:middle line:90%
And as long as our devices, like
these Firepower threat devices

180
07:27.170 --> 07:29.810 align:middle line:90%
here, know where
this controller is--

181
07:29.810 --> 07:32.510 align:middle line:90%
they've been onboard it into
that controller-- we can
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

181
07:29.810 --> 07:32.510 align:middle line:90%
they've been onboard it into
that controller-- we can

182
07:32.510 --> 07:35.750 align:middle line:90%
configure the batch of
them, or view or monitor

183
07:35.750 --> 07:38.670 align:middle line:90%
the batch of them
from this one login.

184
07:38.670 --> 07:40.280 align:middle line:84%
So again, here's you.

185
07:40.280 --> 07:42.210 align:middle line:90%
Instead of going to
your shopping website,

186
07:42.210 --> 07:45.530 align:middle line:90%
now we're going to the Firepower
Management Center website.

187
07:45.530 --> 07:48.470 align:middle line:90%
And under the hood,
you now have an idea

188
07:48.470 --> 07:50.690 align:middle line:90%
of this three-tier
application that's

189
07:50.690 --> 07:53.510 align:middle line:90%
actually what's running on
Firepower Management Center.

190
07:53.510 --> 07:55.610 align:middle line:90%
You see the web front
end, but then there's

191
07:55.610 --> 07:58.460 align:middle line:90%
going to be an application and
database behind the scenes.

192
07:58.460 --> 08:00.950 align:middle line:90%
And what's really going
on behind the scenes
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

192
07:58.460 --> 08:00.950 align:middle line:90%
And what's really going
on behind the scenes

193
08:00.950 --> 08:04.940 align:middle line:90%
is Firepower Management
Center is an application that

194
08:04.940 --> 08:07.850 align:middle line:90%
is programmatically
communicating

195
08:07.850 --> 08:10.020 align:middle line:84%
to all of our other devices.

196
08:10.020 --> 08:13.760 align:middle line:90%
So using APIs, Firepower
Management Center

197
08:13.760 --> 08:15.860 align:middle line:90%
is sending requests
for information,

198
08:15.860 --> 08:19.100 align:middle line:90%
or data, or configuration
changes to the Firepower threat

199
08:19.100 --> 08:22.910 align:middle line:90%
defense device, or the ASA,
or the Firepower devices,

200
08:22.910 --> 08:26.810 align:middle line:90%
and data is being streamed
back in to Firepower Management

201
08:26.810 --> 08:30.390 align:middle line:90%
Center, where it's then
housed in a database.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

201
08:26.810 --> 08:30.390 align:middle line:90%
Center, where it's then
housed in a database.

202
08:30.390 --> 08:33.049 align:middle line:90%
So thanks to automation
and the simplicity

203
08:33.049 --> 08:36.440 align:middle line:90%
of software-defined
networking, we, the end user,

204
08:36.440 --> 08:39.289 align:middle line:90%
only have to interact
with one pane of glass

205
08:39.289 --> 08:42.200 align:middle line:90%
into our network with
one networking device.

206
08:42.200 --> 08:43.570 align:middle line:84%
That's the controller.

207
08:43.570 --> 08:46.100 align:middle line:90%
And from there, the
controller can communicate

208
08:46.100 --> 08:49.310 align:middle line:90%
to all the different network
devices to gather information

209
08:49.310 --> 08:49.932 align:middle line:84%
out of it.

210
08:49.932 --> 08:51.140 align:middle line:84%
Now, here's the real kicker--

211
08:51.140 --> 08:54.620 align:middle line:90%
APIs come in many
different shapes and sizes.

212
08:54.620 --> 08:58.880 align:middle line:90%
Most APIs communicate
over HTTP--

213
08:58.880 --> 09:01.303 align:middle line:90%
or really, HTTPS
for security's sake,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

213
08:58.880 --> 09:01.303 align:middle line:90%
or really, HTTPS
for security's sake,

214
09:01.303 --> 09:02.720 align:middle line:90%
to make sure the
data is encrypted

215
09:02.720 --> 09:04.160 align:middle line:84%
as it flows across the wire.

216
09:04.160 --> 09:07.967 align:middle line:90%
Some older APIs use a
variant called SOAP,

217
09:07.967 --> 09:09.800 align:middle line:90%
and you don't need to
really bother yourself

218
09:09.800 --> 09:11.900 align:middle line:84%
too much with SOAP APIs.

219
09:11.900 --> 09:13.490 align:middle line:90%
Just know that it
exists and it's

220
09:13.490 --> 09:16.770 align:middle line:90%
really prevalent in Cisco's
collaboration platform.

221
09:16.770 --> 09:19.790 align:middle line:90%
But in recent history-- and
recent as the last 10 years--

222
09:19.790 --> 09:24.800 align:middle line:90%
APIs over HTTP have evolved
to leverage all of the options

223
09:24.800 --> 09:27.590 align:middle line:90%
that HTTP can really give
it, and these are often

224
09:27.590 --> 09:29.960 align:middle line:84%
called REST APIs.

225
09:29.960 --> 09:31.910 align:middle line:90%
The concept with a
REST API is we're just
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

225
09:29.960 --> 09:31.910 align:middle line:90%
The concept with a
REST API is we're just

226
09:31.910 --> 09:34.790 align:middle line:90%
going to be leveraging all
of the different components

227
09:34.790 --> 09:37.800 align:middle line:90%
that the HTTP
protocol offers for us

228
09:37.800 --> 09:40.040 align:middle line:90%
so that we can interact
programmatically

229
09:40.040 --> 09:43.410 align:middle line:90%
with either our controller
or our network devices.

230
09:43.410 --> 09:45.800 align:middle line:90%
So the first type of API
that you should know about

231
09:45.800 --> 09:50.030 align:middle line:90%
is really going to be APIs
that operate over HTTPS.

232
09:50.030 --> 09:52.550 align:middle line:90%
And you really want to
focus in on REST API.

233
09:52.550 --> 09:54.470 align:middle line:90%
When you're creating
applications

234
09:54.470 --> 09:58.220 align:middle line:90%
and you're creating code, your
preferred method of doing this

235
09:58.220 --> 10:01.320 align:middle line:90%
is probably going to be
using REST API first.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

235
09:58.220 --> 10:01.320 align:middle line:90%
is probably going to be
using REST API first.

236
10:01.320 --> 10:03.555 align:middle line:90%
But at the end of the
day, the purpose of an API

237
10:03.555 --> 10:07.600 align:middle line:90%
is just for applications to
exchange data back and forth.

238
10:07.600 --> 10:09.930 align:middle line:90%
So you could make a
pretty strong argument

239
10:09.930 --> 10:16.950 align:middle line:90%
that SNMP is a kind of API,
or NetFlow is a kind of API.

240
10:16.950 --> 10:20.370 align:middle line:90%
There are also protocols
designed specifically

241
10:20.370 --> 10:23.790 align:middle line:90%
for network automation,
like NETCONF.

242
10:23.790 --> 10:27.450 align:middle line:90%
NETCONF operates using
SSH as a transport

243
10:27.450 --> 10:30.450 align:middle line:90%
and it sends XML
requests, and commands,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

243
10:27.450 --> 10:30.450 align:middle line:90%
and it sends XML
requests, and commands,

244
10:30.450 --> 10:32.670 align:middle line:90%
and data back and
forth to each other.

245
10:32.670 --> 10:36.720 align:middle line:90%
NETCONF is an extremely popular
network automation programming

246
10:36.720 --> 10:40.030 align:middle line:90%
interface because it's been
around for a long time--

247
10:40.030 --> 10:41.730 align:middle line:84%
since 2006.

248
10:41.730 --> 10:45.090 align:middle line:90%
But in recent history,
network automation developers

249
10:45.090 --> 10:48.240 align:middle line:90%
are starting to shift
more towards the REST API

250
10:48.240 --> 10:51.030 align:middle line:90%
side of things, but leveraging
all of the things that

251
10:51.030 --> 10:52.680 align:middle line:84%
made NETCONF good.

252
10:52.680 --> 10:54.700 align:middle line:84%
So they're creating RESTCONF.

253
10:54.700 --> 10:57.420 align:middle line:90%
Again, this is a protocol
designed specifically

254
10:57.420 --> 11:01.290 align:middle line:90%
for network automation
that's leveraging REST APIs.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

254
10:57.420 --> 11:01.290 align:middle line:90%
for network automation
that's leveraging REST APIs.

255
11:01.290 --> 11:04.300 align:middle line:90%
So we're talking about
HTTP and HTTPS again.

256
11:04.300 --> 11:07.110 align:middle line:90%
So if we're looking specifically
at the security platform

257
11:07.110 --> 11:09.930 align:middle line:90%
and the things that are on
the screen here, of course,

258
11:09.930 --> 11:11.880 align:middle line:90%
Firepower Management
Center as well as

259
11:11.880 --> 11:15.465 align:middle line:90%
many of our network devices come
with the human-readable front

260
11:15.465 --> 11:17.160 align:middle line:90%
end that you're used
to seeing, which

261
11:17.160 --> 11:20.580 align:middle line:90%
is using HTML, CSS,
and JavaScript.

262
11:20.580 --> 11:23.460 align:middle line:90%
But from an application
programming standpoint,

263
11:23.460 --> 11:27.330 align:middle line:84%
these all leverage REST APIs.

264
11:27.330 --> 11:31.050 align:middle line:90%
So our application can
leverage the HTTP protocol,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

264
11:27.330 --> 11:31.050 align:middle line:90%
So our application can
leverage the HTTP protocol,

265
11:31.050 --> 11:34.440 align:middle line:90%
requesting data or requesting
that a configuration be

266
11:34.440 --> 11:37.980 align:middle line:90%
changed, and responses
are sent back typically

267
11:37.980 --> 11:39.630 align:middle line:84%
in the JSON format.

268
11:39.630 --> 11:41.640 align:middle line:90%
And the same thing goes
with communications

269
11:41.640 --> 11:45.310 align:middle line:90%
between Firepower Management
Center and our network devices.

270
11:45.310 --> 11:47.520 align:middle line:90%
So when we make a change
maybe from the front end,

271
11:47.520 --> 11:51.300 align:middle line:90%
when we say we want all of these
devices to have a new policy,

272
11:51.300 --> 11:55.860 align:middle line:90%
Firepower Management Center uses
the APIs to push these policies

273
11:55.860 --> 11:58.560 align:middle line:90%
out, and these
devices respond back

274
11:58.560 --> 12:01.170 align:middle line:90%
with OK response messages
or any data that's
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

274
11:58.560 --> 12:01.170 align:middle line:90%
with OK response messages
or any data that's

275
12:01.170 --> 12:02.210 align:middle line:84%
pertinent to that chain.

276
12:02.210 --> 12:04.710 align:middle line:90%
Now, the last type of API that
I'm going to be talking about

277
12:04.710 --> 12:06.900 align:middle line:90%
is another one that we're going
to be talking about in depth

278
12:06.900 --> 12:08.730 align:middle line:90%
towards the end of
this course, and that

279
12:08.730 --> 12:10.620 align:middle line:84%
comes down to telemetry.

280
12:10.620 --> 12:12.600 align:middle line:90%
This is another thing
that APIs really

281
12:12.600 --> 12:13.980 align:middle line:84%
bring to the table for us.

282
12:13.980 --> 12:16.230 align:middle line:90%
Remember, again, Firepower
Management Center's

283
12:16.230 --> 12:19.650 align:middle line:90%
going to be storing all
sorts of data and statistics

284
12:19.650 --> 12:20.940 align:middle line:84%
coming from these devices.

285
12:20.940 --> 12:22.560 align:middle line:84%
Well, how does that really work?

286
12:22.560 --> 12:24.720 align:middle line:90%
Under the hood, Firepower
Management Center

287
12:24.720 --> 12:27.340 align:middle line:90%
sets up what's
called subscriptions.

288
12:27.340 --> 12:29.640 align:middle line:90%
It says, I want to know
about all of the times

289
12:29.640 --> 12:32.280 align:middle line:90%
that a configuration changes,
or I want to know about all
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

289
12:29.640 --> 12:32.280 align:middle line:90%
that a configuration changes,
or I want to know about all

290
12:32.280 --> 12:35.220 align:middle line:90%
of the times that your
CPU threshold is overused,

291
12:35.220 --> 12:36.400 align:middle line:84%
or anything like that.

292
12:36.400 --> 12:39.480 align:middle line:90%
And this data will
automatically be streamed back

293
12:39.480 --> 12:43.365 align:middle line:90%
to Firepower Management Center,
which stores it in a database.

294
12:43.365 --> 12:45.240 align:middle line:90%
And that, at the end of
the day, is the point

295
12:45.240 --> 12:46.620 align:middle line:84%
of streaming telemetry.

296
12:46.620 --> 12:48.990 align:middle line:90%
It's just to get a
constant feed of data

297
12:48.990 --> 12:51.390 align:middle line:90%
back to a centralized
database so that we could view

298
12:51.390 --> 12:53.530 align:middle line:84%
the whole network in one place.

299
12:53.530 --> 12:55.350 align:middle line:90%
So this sets up the
fundamentals of what

300
12:55.350 --> 12:57.600 align:middle line:90%
software-defined
networking really does

301
12:57.600 --> 13:00.570 align:middle line:90%
and how they leverage
APIs for communicating
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

301
12:57.600 --> 13:00.570 align:middle line:90%
and how they leverage
APIs for communicating

302
13:00.570 --> 13:02.940 align:middle line:90%
from one central place to
all of the different nodes

303
13:02.940 --> 13:04.080 align:middle line:84%
around our environment.

304
13:04.080 --> 13:05.580 align:middle line:90%
So in the next
couple Nuggets, we're

305
13:05.580 --> 13:07.650 align:middle line:90%
going to be talking more
about the directions

306
13:07.650 --> 13:10.170 align:middle line:90%
or the different types
of APIs that we're

307
13:10.170 --> 13:11.700 align:middle line:84%
going to be interacting with.

308
13:11.700 --> 13:13.082 align:middle line:84%
That's been API Fundamentals.

309
13:13.082 --> 13:14.790 align:middle line:90%
I hope this has been
informative for you,

310
13:14.790 --> 13:17.290 align:middle line:90%
and I'd like to thank
you for viewing.
