summaryrefslogtreecommitdiff
path: root/doc/mpls/opaque_lsa.txt
blob: 7d5c7fed417d3711990323d2d70d09859443d778 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
1. List of "opaque-type dependent" callback functions per LSA-type.

 <ospf_opaque_lsaN_functab>  (N = 9,10,11)
      |
      |    struct
      |    list            struct                        struct
      +-> +-------+        listnode                      listnode
          | head  |-----> +------+                      +------
          | tail  |       | next |--------------------> | next 
          | count |    /--| prev |<---------------------| prev
          +-------+       | data |----+                 |
          |///////|       +------+    |
          +-------+                   |
                                      |
           struct                     |
           ospf_opaque_tabent         |
          +----------------------+ <--+
          | opaque_type          |
          +----------------------+
          | (Callback functions) |
          +----------------------+


2. Self-originated Opaque-LSAs per LSA-type.

2.1 Type-11 (AS-external) Opaque-LSAs

               struct
               ospf
        +---> +-------------------+
        |     |///////////////////|
        |     +-------------------+
        |     | opaque            |
        |     +-------------------+
        |     |///////////////////|
        |     +-------------------+
        |     | opaque_lsa_self   |---+
        |     +-------------------+   |
        |     |///////////////////|   |
        |     +-------------------+   |
        |                             |
  ......|.............................|.......................................
  :     |                             |   Almost common for type-9,10,11 LSA :
  :     |     +-----------------------+                                      :
  :     |     |                                                              :
  :     |     |    struct                                                    :
  :     |     |    list            struct                        struct      :
  :     |     +-> +-------+        listnode                      listnode    :
  :     |         | head  |-----> +------+                      +------      :
  :     |         | tail  |       | next |--------------------> | next       :
  :     |         | count |    /--| prev |<---------------------| prev       :
  :     |         +-------+       | data |---+                  |            :
  :     |         |///////|       +------+   |                               :
  :     |         +-------+                  |                               :
  :     |                                    |                               :
  :     |      struct                        |                               :
  :     |      opaque_info_per_type          |                               :
  :     |     +-------------------+ <--------+                               :
  :     |     | opaque_type       | <------------+                           :
  :     |     +-------------------+              |                           :
  :     |     | status            |              |                           :
  :     |     +-------------------+              |                           :
  :     |     | t_opaque_lsa_self |              |                           :
  :     |     +-------------------+              |                           :
  :     +-----| owner             |              |       struct              :
  :           +-------------------+              |       ospf_opaque_tabent  :
  :           | functab           |-------------------> +----------------    :
  :           +-------------------+              |      | opaque_type        :
  :           | id_list           |---+          |      |(Callback Funcs)    :
  :           +-------------------+   |          |      |                    :
  :                                   |          |                           :
  :           +-----------------------+          |                           :
  :           |                                  |                           :
  :           |    struct                        |                           :
  :           |    list            struct        |               struct      :
  :           +-> +-------+        listnode      |               listnode    :
  :               | head  |-----> +------+       |              +------      :
  :               | tail  |       | next |--------------------> | next       :
  :               | count |    /--| prev |<---------------------| prev       :
  :               +-------+       | data |---+   |              |            :
  :               |///////|       +------+   |   |                           :
  :               +-------+                  |   |                           :
  :                                          |   |                           :
  :            struct                        |   |                           :
  :            opaque_info_per_id            |   |                           :
  :           +-------------------+ <--------+   |                           :
  :           | opaque_id         |              |                           :
  :           +-------------------+              |                           :
  :           | t_opaque_lsa_self |              |                           :
  :           +-------------------+              |                           :
  :           | opqctl_type       |--------------+                           :
  :           +-------------------+                                          :
  :           | lsa               |---+                                      :
  :           +-------------------+   |                                      :
  :                                   |                                      :
  :            struct                 |                                      :
  :            ospf_lsa               |                                      :
  :           +-------------+ <-------+                                      :
  :           |/////////////|                 struct                         :
  :           +-------------+                 lsa_header                     :
  :           | data        |--------------> +--------                       :
  :           +-------------+                |                               :
  :           |/////////////|                                                :
  :           +-------------+                                                :
  :  +--------| area        |                                                :
  :  |        +-------------+                                                :
  : ---       |/////////////|                                                :
  :           +-------------+                                                :
  :     +-----| oi          |                                                :
  :     |     +-------------+                                                :
  :    ---                                                                   :
  :..........................................................................:

2.2 Type-10 (area-local) Opaque-LSAs

               struct
               ospf
              +---------+ <-----------+
              |/////////|             |
              +---------+             |
                                      |
               struct                 |
               ospf_area              |
     +--+---> +-----------------+     |
     |  |     | top             |-----+
     |  |     +-----------------+
     |  |     |/////////////////|              struct
     |  |     +-----------------+              ospf_lsa
     |  |     | router_lsa_self |-----------> +---------
     |  |     +-----------------+             |
     |  |     | opaque_lsa_self |-----+       |
     |  |     +-----------------+     |
     |  |     |/////////////////|     |
     |  |     +-----------------+     |
     |  |                             |
  ...|..|.............................|.......................................
  :  |  |                             |   Almost common for type-9,10,11 LSA :
  :  |  |     +-----------------------+                                      :
  :  |  |     |                                                              :
  :  |  |     |    struct                                                    :
  :  |  |     |    list            struct                        struct      :
  :  |  |     +-> +-------+        listnode                      listnode    :
  :  |  |         | head  |-----> +------+                      +------      :
  :  |  |         | tail  |       | next |--------------------> | next       :
  :  |  |         | count |    /--| prev |<---------------------| prev       :
  :  |  |         +-------+       | data |---+                  |            :
  :  |  |         |///////|       +------+   |                               :
  :  |  |         +-------+                  |                               :
  :  |  |                                    |                               :
  :  |  |      struct                        |                               :
  :  |  |      opaque_info_per_type          |                               :
  :  |  |     +-------------------+ <--------+                               :
  :  |  |     | opaque_type       | <------------+                           :
  :  |  |     +-------------------+              |                           :
  :  |  |     | status            |              |                           :
  :  |  |     +-------------------+              |                           :
  :  |  |     | t_opaque_lsa_self |              |                           :
  :  |  |     +-------------------+              |                           :
  :  |  +-----| owner             |              |       struct              :
  :  |        +-------------------+              |       ospf_opaque_tabent  :
  :  |        | functab           |-------------------> +----------------    :
  :  |        +-------------------+              |      | opaque_type        :
  :  |        | id_list           |---+          |      |(Callback Funcs)    :
  :  |        +-------------------+   |          |      |                    :
  :  |                                |          |                           :
  :  |        +-----------------------+          |                           :
  :  |        |                                  |                           :
  :  |        |    struct                        |                           :
  :  |        |    list            struct        |               struct      :
  :  |        +-> +-------+        listnode      |               listnode    :
  :  |            | head  |-----> +------+       |              +------      :
  :  |            | tail  |       | next |--------------------> | next       :
  :  |            | count |    /--| prev |<---------------------| prev       :
  :  |            +-------+       | data |---+   |              |            :
  :  |            |///////|       +------+   |   |                           :
  :  |            +-------+                  |   |                           :
  :  |                                       |   |                           :
  :  |         struct                        |   |                           :
  :  |         opaque_info_per_id            |   |                           :
  :  |        +-------------------+ <--------+   |                           :
  :  |        | opaque_id         |              |                           :
  :  |        +-------------------+              |                           :
  :  |        | t_opaque_lsa_self |              |                           :
  :  |        +-------------------+              |                           :
  :  |        | opqctl_type       |--------------+                           :
  :  |        +-------------------+                                          :
  :  |        | lsa               |---+                                      :
  :  |        +-------------------+   |                                      :
  :  |                                |                                      :
  :  |         struct                 |                                      :
  :  |         ospf_lsa               |                                      :
  :  |        +-------------+ <-------+                                      :
  :  |        |/////////////|                 struct                         :
  :  |        +-------------+                 lsa_header                     :
  :  |        | data        |--------------> +--------                       :
  :  |        +-------------+                |                               :
  :  |        |/////////////|                                                :
  :  |        +-------------+                                                :
  :  +--------| area        |                                                :
  :           +-------------+                                                :
  :           |/////////////|                                                :
  :           +-------------+                                                :
  :     +-----| oi          |                                                :
  :     |     +-------------+                                                :
  :    ---                                                                   :
  :..........................................................................:

2.3 Type-9 (link-local) Opaque-LSAs

               struct
               ospf_area
     +------> +---------+ <---------+
     |        |/////////|           |
     |        +---------+           |
     |                              |
     |         struct               |
     |         ospf_interface       |
     |  +-+-> +-----------------+   |
     |  | |   |/////////////////|   |
     |  | |   +-----------------+   |
     |  | |   | area            |---+
     |  | |   +-----------------+
     |  | |   |/////////////////|              struct
     |  | |   +-----------------+              ospf_lsa
     |  | |   |network_lsa_self |-----------> +---------
     |  | |   +-----------------+             |
     |  | |   | opaque_lsa_self |-----+       |
     |  | |   +-----------------+     |
     |  | |   |/////////////////|     |
     |  | |   +-----------------+     |
     |  | |                           |
  ...|..|.|...........................|.......................................
  :  |  | |                           |   Almost common for type-9,10,11 LSA :
  :  |  | |   +-----------------------+                                      :
  :  |  | |   |                                                              :
  :  |  | |   |    struct                                                    :
  :  |  | |   |    list            struct                        struct      :
  :  |  | |   +-> +-------+        listnode                      listnode    :
  :  |  | |       | head  |-----> +------+                      +------      :
  :  |  | |       | tail  |       | next |--------------------> | next       :
  :  |  | |       | count |    /--| prev |<---------------------| prev       :
  :  |  | |       +-------+       | data |---+                  |            :
  :  |  | |       |///////|       +------+   |                               :
  :  |  | |       +-------+                  |                               :
  :  |  | |                                  |                               :
  :  |  | |    struct                        |                               :
  :  |  | |    opaque_info_per_type          |                               :
  :  |  | |   +-------------------+ <--------+                               :
  :  |  | |   | opaque_type       | <------------+                           :
  :  |  | |   +-------------------+              |                           :
  :  |  | |   | status            |              |                           :
  :  |  | |   +-------------------+              |                           :
  :  |  | |   | t_opaque_lsa_self |              |                           :
  :  |  | |   +-------------------+              |                           :
  :  |  | +---| owner             |              |       struct              :
  :  |  |     +-------------------+              |       ospf_opaque_tabent  :
  :  |  |     | functab           |-------------------> +----------------    :
  :  |  |     +-------------------+              |      | opaque_type        :
  :  |  |     | id_list           |---+          |      |(Callback Funcs)    :
  :  |  |     +-------------------+   |          |      |                    :
  :  |  |                             |          |                           :
  :  |  |     +-----------------------+          |                           :
  :  |  |     |                                  |                           :
  :  |  |     |    struct                        |                           :
  :  |  |     |    list            struct        |               struct      :
  :  |  |     +-> +-------+        listnode      |               listnode    :
  :  |  |         | head  |-----> +------+       |              +------      :
  :  |  |         | tail  |       | next |--------------------> | next       :
  :  |  |         | count |    /--| prev |<---------------------| prev       :
  :  |  |         +-------+       | data |---+   |              |            :
  :  |  |         |///////|       +------+   |   |                           :
  :  |  |         +-------+                  |   |                           :
  :  |  |                                    |   |                           :
  :  |  |      struct                        |   |                           :
  :  |  |      opaque_info_per_id            |   |                           :
  :  |  |     +-------------------+ <--------+   |                           :
  :  |  |     | opaque_id         |              |                           :
  :  |  |     +-------------------+              |                           :
  :  |  |     | t_opaque_lsa_self |              |                           :
  :  |  |     +-------------------+              |                           :
  :  |  |     | opqctl_type       |--------------+                           :
  :  |  |     +-------------------+                                          :
  :  |  |     | lsa               |---+                                      :
  :  |  |     +-------------------+   |                                      :
  :  |  |                             |                                      :
  :  |  |      struct                 |                                      :
  :  |  |      ospf_lsa               |                                      :
  :  |  |     +-------------+ <-------+                                      :
  :  |  |     |/////////////|                 struct                         :
  :  |  |     +-------------+                 lsa_header                     :
  :  |  |     | data        |--------------> +--------                       :
  :  |  |     +-------------+                |                               :
  :  |  |     |/////////////|                                                :
  :  |  |     +-------------+                                                :
  :  +--|-----| area        |                                                :
  :     |     +-------------+                                                :
  :     |     |/////////////|                                                :
  :     |     +-------------+                                                :
  :     +-----| oi          |                                                :
  :           +-------------+                                                :
  :..........................................................................:


3. Internal structures for MPLS-TE parameter management.

       struct                         
       ospf_mpls_te
      +-------------+
      | status      |
      +-------------+
      | iflist      |---+
      +-------------+   |
      |(Router-TLV) |   |
      +-------------+   |
                        |
  +---------------------+
  |  
  |      struct                     
  |      list            struct                        struct
  +---> +-------+        listnode                      listnode
        | head  |-----> +------+                      +------
        | tail  |       | next |--------------------> | next 
        | count |    /--| prev |<---------------------| prev
        +-------+       | data |---+                  |
        |///////|       +------+   |
        +-------+                  |
                                   |
  +--------------------------------+
  |
  |    struct
  |    ospf_mpls_te_linkparms
  +-> +----------------+
      | instance       |                       struct
      +----------------+                       interface
      | ifp            |--------------------> +----------+
      +----------------+               +----> |//////////|
      | area           |----+          |      +----------+
      +----------------+    |          |      | info     |-----+
      | flags          |    |          |      +----------+     |
      +----------------+    |          |      |//////////|     |
      | (Link-TLV)     |    |          |      +----------+     |
      +----------------+    |          |                       |
      | (Link-SubTLVs) |    |          |       struct          |
      +----------------+    |          |       ospf_if_info    |
                            |          |      +----------+ <---+
                            |          |      |//////////|
       struct               |          |      +----------+
       ospf_area            |          |      | oifs     |-----+
  +-> +--------------+ <----+          |      +----------+     |
  |   |//////////////|                 |                       |
  |   +--------------+                 |       struct          |
  |                                    |       route_table     |
  |    struct                          |      +-----------+ <--+
  |    ospf_interface                  |      | route_top | - - - - -.
  |   +--------------+ <----+          |      +-----------+          .
  |   |//////////////|      |          |                             .
  |   +--------------+      |          |       struct                .
  |   | ifp          |------|----------+       route_node            .
  |   +--------------+      |                 +-----------+ < - - - - 
  |   |//////////////|      |                 |///////////|
  |   +--------------+      |                 +-----------+
  +---| area         |      +-----------------| info      |
      +--------------+                        +-----------+
      |//////////////|                        |///////////|
      +--------------+                        +-----------+