blob: 86f2d02fed9cc22eef98f783f9f4e7a3146e902a [file] [log] [blame]
Charles Chan78a737f2019-09-12 13:55:22 -07001Troubleshooting Guide
2*********************
3
Charles Chan4ade88d2019-09-16 16:30:31 -07004Overview
5========
6
Zack Williamsd63d35b2020-06-23 14:12:46 -07007The **Trellis Troubleshooting Tools (T3)** is an ONOS application intended to
8**help you troubleshoot traffic-related problems** in your network by **tracing
9installed flows and groups**.
10
11T3 works both on simulated OVS-based topologies but also on real HW, basing
12it's internal decisions on the driver assigned to the device.
13
14T3 also currently supports dual links between leaf and spine and properly
15handles the difference between deferred and immediate rules. Dual Homed hosts
16are also supported in T3.
Charles Chan4ade88d2019-09-16 16:30:31 -070017
18To activate this tool on your ONOS environment, you need to run:
19
20.. code-block:: console
21
Charles Chan8299f072019-09-23 11:32:26 -070022 onos> app activate t3
Charles Chan4ade88d2019-09-16 16:30:31 -070023
24T3 supports tracing of following packet types:
25
26- L2 Unicast
27- L2 Broadcast
28- L3 Unicast (both IPv4 and IPv6)
29- L3 Multicast (both IPv4 and IPv6)
30- LLDP and BDDP
31- ARP
32- DHCP
33
34
Seyeon Jeong50d3c452020-05-29 14:07:57 -070035Network Information Base (NIB)
36==============================
37T3 analyzes network states that are stored in the NIB.
38A NIB is a collection of snapshots captured from various ONOS stores such as flows, groups, links...etc.
39The NIB, acting as a cache, allows T3 troubleshooting logic to avoid massive interaction with live ONOS subsystems,
40enabling near-runtime or postmortem analysis in a production environment.
41
42There are two methods of loading the network snapshots into the NIB:
43(1) from a live running system or (2) from a onos-diagnostics file dump.
44Users can choose one load command before troubleshooting commands,
45or can run troubleshooting commands alone (then the NIB is automatically loaded via (1)).
46
47
48t3-load-file
49=========================
50T3 offers this command to fill the NIB with files that represent snapshots of the network states in a certain time.
51
52t3-load-file Help
53------------------------------
54
55.. code-block:: console
56
57 onos> t3-load-file --help
58 DESCRIPTION
59 onos:t3-load-file
60
61 Load the NIB with onos-diagnostics dump files
62
63 SYNTAX
64 onos:t3-load-file [options] rootDir
65
66 ARGUMENTS
67 rootDir
68 Specify the location of the directory where the previous onos-diagnostics command has extracted its dump files (e.g. /tmp/onos-diags/127.0.0.1)
69
70 OPTIONS
71 --help
72 Display this help message
73 -j, --json
74 Output JSON
75
76t3-load-file Example
77---------------------------------
78User is expected to run the tool ``onos-diagnostics`` [#onos-diagnostics_src]_ [#onos-diagnostics_man]_
79to generate target files first.
80
81.. code-block:: console
82
83 user$ onos-diagnostics -xj [IP_ONOS_INSTANCE_1 IP_ONOS_INSTANCE_2 ...]
84 Collecting diagnostics on [IP_ONOS_INSTANCE_1]...logs netcfg.json devices.json device-drivers.json links.json hosts.json ports.json edge-ports.json flows.json groups.json masters.json routes.json mcast-host-show.json Done.
85 Collecting diagnostics on [IP_ONOS_INSTANCE_2]...logs netcfg.json devices.json device-drivers.json links.json hosts.json ports.json edge-ports.json flows.json groups.json masters.json routes.json mcast-host-show.json Done.
86
87Then, execute this command with the path of the location where those JSON files are extracted.
88User can check the creation time and a summary of the NIB contents.
89
90.. code-block:: console
91
92 onos> t3-load-file /tmp/onos-diags/[IP_ONOS_INSTANCE_TARGET]
93 Load target files in: /tmp/onos-diags/[IP_ONOS_INSTANCE_TARGET]/
94 FlowNib created 03-06-2020 01:30 from FILE
95 GroupNib created 03-06-2020 01:30 from FILE
96 LinkNib created 03-06-2020 01:30 from FILE
97 HostNib created 03-06-2020 01:30 from FILE
98 DeviceNib created 03-06-2020 01:30 from FILE
99 DriverNib created 03-06-2020 01:30 from FILE
100 MastershipNib created 03-06-2020 01:30 from FILE
101 EdgePortNib created 03-06-2020 01:30 from FILE
102 RouteNib created 03-06-2020 01:30 from FILE
103 NetworkConfigNib created 03-06-2020 01:30 from FILE
104 MulticastRouteNib created 03-06-2020 01:30 from FILE
105
pierventre601b49e2020-06-27 16:24:40 +0200106Alternatively, it is possible to use ``onos-diagnostics-k8s`` [#onos-diagnostics-k8s_src]_ [#onos-diagnostics_man]_
107in Kubernetes enabled environments.
108
Seyeon Jeong50d3c452020-05-29 14:07:57 -0700109t3-load-snapshot
110=============================
111T3 offers this command to fill the NIB with snapshots of the network states at the execution time.
112
113t3-load-snapshot Help
114----------------------------------
115
116.. code-block:: console
117
118 onos> t3-load-snapshot --help
119 DESCRIPTION
120 onos:t3-load-snapshot
121
122 Load the NIB with the network states stored in the ONOS instance where the T3 is running
123
124 SYNTAX
125 onos:t3-load-snapshot [options]
126
127 OPTIONS
128 --help
129 Display this help message
130 -j, --json
131 Output JSON
132
133t3-load-snapshot Example
134-------------------------------------
135User can check the creation time and a summary of the NIB contents.
136**SNAPSHOT** indicates that the source of the current NIB is the ONOS instance where the T3 is running.
137
138.. code-block:: console
139
140 onos> t3-load-snapshot
141 Load current network states from ONOS stores
142 FlowNib created 03-06-2020 01:40 from SNAPSHOT
143 GroupNib created 03-06-2020 01:40 from SNAPSHOT
144 LinkNib created 03-06-2020 01:40 from SNAPSHOT
145 HostNib created 03-06-2020 01:40 from SNAPSHOT
146 DeviceNib created 03-06-2020 01:40 from SNAPSHOT
147 DriverNib created 03-06-2020 01:40 from SNAPSHOT
148 MastershipNib created 03-06-2020 01:40 from SNAPSHOT
149 EdgePortNib created 03-06-2020 01:40 from SNAPSHOT
150 RouteNib created 03-06-2020 01:40 from SNAPSHOT
151 NetworkConfigNib created 03-06-2020 01:40 from SNAPSHOT
152 MulticastRouteNib created 03-06-2020 01:40 from SNAPSHOT
153
154If one of T3 commands below is used before loading the NIB from **SNAPSHOT** or **FILE** (so the NIB is empty),
155the command internally executes **t3-load-snapshot** to proceed with auto-filled NIB.
156
157.. code-block:: console
158
159 onos> t3-troubleshoot-simple 00:AA:00:00:00:01/None 00:AA:00:00:00:02/None
160 *** NIB is invalid. Snapshots for the NIB have been auto-filled: ***
161 Load current network states from ONOS stores
162 FlowNib created 03-06-2020 01:44 from SNAPSHOT
163 GroupNib created 03-06-2020 01:44 from SNAPSHOT
164 LinkNib created 03-06-2020 01:44 from SNAPSHOT
165 ...
166 Tracing between: 00:AA:00:00:00:01/None and 00:AA:00:00:00:02/None
167 Tracing Packet: DefaultTrafficSelector{criteria=[IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_TYPE:ipv4, VLAN_VID:None, IPV4_SRC:10.0.2.1/32, IPV4_DST:10.0.2.2/32]}
168 Paths
169 [of:0000000000000204/3, of:0000000000000204/4]
170 Result:
171 Reached required destination Host of:0000000000000204/4
172
173
Charles Chan4ade88d2019-09-16 16:30:31 -0700174t3-troubleshoot
175===============
Zack Williamsd63d35b2020-06-23 14:12:46 -0700176
Charles Chan4ade88d2019-09-16 16:30:31 -0700177As of right now the tools provides a CLI command (troubleshoot).
Zack Williamsd63d35b2020-06-23 14:12:46 -0700178
179As arguments to the CLI command you have to pass arguments describing the
180packet you want to trace through the network.
Charles Chan4ade88d2019-09-16 16:30:31 -0700181
182t3-troubleshoot Help
183--------------------
184
185.. code-block:: console
186
Charles Chan8299f072019-09-23 11:32:26 -0700187 onos> t3-troubleshoot --help
188 DESCRIPTION
189 onos:troubleshoot
Charles Chan4ade88d2019-09-16 16:30:31 -0700190
Charles Chan8299f072019-09-23 11:32:26 -0700191 troubleshoots flows and groups between source and destination
Charles Chan4ade88d2019-09-16 16:30:31 -0700192
Charles Chan8299f072019-09-23 11:32:26 -0700193 SYNTAX
194 onos:troubleshoot [options]
Charles Chan4ade88d2019-09-16 16:30:31 -0700195
Charles Chan8299f072019-09-23 11:32:26 -0700196 OPTIONS
197 -sm, --srcMac
198 Source MAC
199 -j, --json
200 Output JSON
201 --help
202 Display this help message
203 -v, --verbose
204 Outputs complete path
205 -ipp, --ipProto
206 IP Proto
207 -s, --srcIp
208 Source IP
209 -dm, --dstMac
210 Destination MAC
211 -ml, --mplsLabel
212 Mpls label of incoming packet
213 -vv, --veryverbose
214 Outputs flows and groups for every device
215 -udps, --udpSrc
216 UDP Source
217 -mb, --mplsBos
218 MPLS BOS
219 -et, --ethType
220 ETH Type
221 (defaults to ipv4)
222 -sp, --srcPort
223 Source Port
224 -dtp, --dstTcpPort
225 destination TCP Port
226 -udpd, --udpDst
227 UDP Destination
228 -stp, --srcTcpPort
229 Source TCP Port
230 -d, --dstIp
231 Destination IP
232 -vid, --vlanId
233 Vlan of incoming packet
234 (defaults to None)
Charles Chan4ade88d2019-09-16 16:30:31 -0700235
236Default Verbosity Level
237-----------------------
238Let's look at an example.
239
240.. code-block:: console
241
Charles Chan8299f072019-09-23 11:32:26 -0700242 onos> t3-troubleshoot -s 10.0.2.1 -sp of:0000000000000204/3 -sm 00:AA:00:00:00:01 -et IPV4 -d 10.0.3.1 -dm 00:00:00:00:02:04 -vid None
Charles Chan4ade88d2019-09-16 16:30:31 -0700243
244with this command we are asking the t3 tool to trace a packet with
245
246- Source IP of ``10.0.2.1/32``
247- Input port ``of:0000000000000204/3``
248- Source MAC ``00:AA:00:00:00:01``
249- ethType ``IPv4``
250- Source TCP Port ``12345``
251- Destination IP ``10.0.3.1/32``
252- Destination MAC ``00:AA:00:00:00:01``
253- Destination TCP Port ``80`` and
254- VLAN ID ``None``
255
256This command has a verbosity level of 0 and will output just the paths that the packet might take inside the network.
257In the example deployment taken from trellis.py [#trellis.py]_, the output will be:
258
259.. code-block:: console
260
Charles Chan8299f072019-09-23 11:32:26 -0700261 Tracing packet: [IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_SRC:00:AA:00:00:00:01, ETH_TYPE:ipv4, VLAN_VID:None, IPV4_SRC:10.0.2.1/32, IPV4_DST:10.0.3.1/32, TCP_SRC:12345, TCP_DST:80, MPLS_BOS:true]
262 Paths
263 [of:0000000000000204/3, of:0000000000000204/2, of:0000000000000227/1, of:0000000000000227/2, of:0000000000000205/2, of:0000000000000205/3]
264 [of:0000000000000204/3, of:0000000000000204/1, of:0000000000000226/1, of:0000000000000226/2, of:0000000000000205/1, of:0000000000000205/3]
265 Result:
266 Reached required destination Host
267 Reached required destination Host
Charles Chan4ade88d2019-09-16 16:30:31 -0700268
269Middle Verbosity Level
270----------------------
271There are also two other verbosity levels.
272
273.. code-block:: console
274
Charles Chan8299f072019-09-23 11:32:26 -0700275 onos> t3-troubleshoot -v -s 10.0.2.1 -sp of:0000000000000204/3 -sm 00:AA:00:00:00:01 -et IPV4 -d 10.0.3.1 -dm 00:00:00:00:02:04 -vid None
Charles Chan4ade88d2019-09-16 16:30:31 -0700276
277prints flows selectors and groupId that are met along the path
278
279.. code-block:: console
280
Charles Chan8299f072019-09-23 11:32:26 -0700281 Tracing packet: [IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_SRC:00:AA:00:00:00:01, ETH_TYPE:ipv4, VLAN_VID:None, IPV4_SRC:10.0.2.1/32, IPV4_DST:10.0.3.1/32, TCP_SRC:12345, TCP_DST:80, MPLS_BOS:true]
282 Path [of:0000000000000204/3, of:0000000000000204/2, of:0000000000000227/1, of:0000000000000227/2, of:0000000000000205/2, of:0000000000000205/3]
283 Device of:0000000000000204
284 Input from of:0000000000000204/3
285 Flows
286 flowId=a20000bd57cb49, selector=[]
287 flowId=900000d4173ff7, selector=[IN_PORT:3, VLAN_VID:None]
288 flowId=9000004b3d1965, selector=[IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_TYPE:ipv4, VLAN_VID:20]
289 flowId=900000499769f5, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.0/24]
290 flowId=a2000038b487e7, selector=[]
291 Groups
292 groupId=GroupId{id=0x70000010}
293 groupId=GroupId{id=0x9200000d}
294 groupId=GroupId{id=0x9000000c}
295 groupId=GroupId{id=0xffe0002}
296 groupId=GroupId{id=0x9200000f}
297 groupId=GroupId{id=0x9000000e}
298 groupId=GroupId{id=0xffe0001}
299 Output through of:0000000000000204/2
300 Device of:0000000000000227
301 Input from of:0000000000000227/1
302 Flows
303 flowId=a200005577bcd6, selector=[]
304 flowId=900000498457b2, selector=[IN_PORT:1, VLAN_VID:None]
305 flowId=900000f87746c9, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:27, ETH_TYPE:mpls_unicast, VLAN_VID:4094]
306 flowId=a200005bfd6ed7, selector=[]
307 flowId=9000009f3d554f, selector=[ETH_TYPE:mpls_unicast, MPLS_LABEL:205, MPLS_BOS:true]
308 flowId=a20000e601fc35, selector=[]
309 Groups
310 groupId=GroupId{id=0x70000017}
311 groupId=GroupId{id=0x20000016}
312 groupId=GroupId{id=0xffe0002}
313 Output through of:0000000000000227/2
314 Device of:0000000000000205
315 Input from of:0000000000000205/2
316 Flows
317 flowId=a200008d542817, selector=[]
318 flowId=900000be3179a0, selector=[IN_PORT:1, VLAN_VID:None]
319 flowId=900000766be164, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:05, ETH_TYPE:ipv4, VLAN_VID:4094]
320 flowId=900000ec1d5779, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.1/32]
321 flowId=a2000042d8e6b5, selector=[]
322 Groups
323 groupId=GroupId{id=0x2000002a}
324 groupId=GroupId{id=0x1e0003}
325 groupId=GroupId{id=0x2000002a}
326 groupId=GroupId{id=0x1e0003}
327 Output through of:0000000000000205/3
328 Path [of:0000000000000204/3, of:0000000000000204/1, of:0000000000000226/1, of:0000000000000226/2, of:0000000000000205/1, of:0000000000000205/3]
329 Device of:0000000000000204
330 Input from of:0000000000000204/3
331 Flows
332 flowId=a20000bd57cb49, selector=[]
333 flowId=900000d4173ff7, selector=[IN_PORT:3, VLAN_VID:None]
334 flowId=9000004b3d1965, selector=[IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_TYPE:ipv4, VLAN_VID:20]
335 flowId=900000499769f5, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.0/24]
336 flowId=a2000038b487e7, selector=[]
337 Groups
338 groupId=GroupId{id=0x70000010}
339 groupId=GroupId{id=0x9200000d}
340 groupId=GroupId{id=0x9000000c}
341 groupId=GroupId{id=0xffe0002}
342 groupId=GroupId{id=0x9200000f}
343 groupId=GroupId{id=0x9000000e}
344 groupId=GroupId{id=0xffe0001}
345 Output through of:0000000000000204/1
346 Device of:0000000000000226
347 Input from of:0000000000000226/1
348 Flows
349 flowId=a20000e9b27d24, selector=[]
350 flowId=9000004bd76105, selector=[IN_PORT:1, VLAN_VID:None]
351 flowId=90000069f274d1, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:26, ETH_TYPE:mpls_unicast, VLAN_VID:4094]
352 flowId=a200000ec7529e, selector=[]
353 flowId=90000050f9a350, selector=[ETH_TYPE:mpls_unicast, MPLS_LABEL:205, MPLS_BOS:true]
354 flowId=a20000b15cada6, selector=[]
355 Groups
356 groupId=GroupId{id=0x7000000b}
357 groupId=GroupId{id=0x20000009}
358 groupId=GroupId{id=0xffe0002}
359 Output through of:0000000000000226/2
360 Device of:0000000000000205
361 Input from of:0000000000000205/1
362 Flows
363 flowId=a200008d542817, selector=[]
364 flowId=900000be3179a0, selector=[IN_PORT:1, VLAN_VID:None]
365 flowId=900000766be164, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:05, ETH_TYPE:ipv4, VLAN_VID:4094]
366 flowId=900000ec1d5779, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.1/32]
367 flowId=a2000042d8e6b5, selector=[]
368 Groups
369 groupId=GroupId{id=0x2000002a}
370 groupId=GroupId{id=0x1e0003}
371 groupId=GroupId{id=0x2000002a}
372 groupId=GroupId{id=0x1e0003}
373 Output through of:0000000000000205/3
374 Result:
375 Reached required destination Host
376 Reached required destination Host
Charles Chan4ade88d2019-09-16 16:30:31 -0700377
378High Verbosity Level
379--------------------
380The most verbose output you can get is
381
382.. code-block:: console
383
Charles Chan8299f072019-09-23 11:32:26 -0700384 onos> t3-troubleshoot -vv -s 10.0.2.1 -sp of:0000000000000204/3 -sm 00:AA:00:00:00:01 -et IPV4 -d 10.0.3.1 -dm 00:00:00:00:02:04 -vid None
Charles Chan4ade88d2019-09-16 16:30:31 -0700385
Zack Williamsd63d35b2020-06-23 14:12:46 -0700386This verbosity level prints all the flows and groups that are met along the
387path:
Charles Chan4ade88d2019-09-16 16:30:31 -0700388
389.. code-block:: console
390
Charles Chan8299f072019-09-23 11:32:26 -0700391 Tracing packet: [IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_SRC:00:AA:00:00:00:01, ETH_TYPE:ipv4, VLAN_VID:None, IPV4_SRC:10.0.2.1/32, IPV4_DST:10.0.3.1/32, TCP_SRC:12345, TCP_DST:80, MPLS_BOS:true]
392 Path [of:0000000000000204/3, of:0000000000000204/2, of:0000000000000227/1, of:0000000000000227/2, of:0000000000000205/2, of:0000000000000205/3]
393 Device of:0000000000000204
394 Input from of:0000000000000204/3
395 Flows
396 ADDED, bytes=733506, packets=8691, table=0, priority=0, selector=[], treatment=[transition=TABLE:10]
397 ADDED, bytes=11110, packets=61, table=10, priority=32768, selector=[IN_PORT:3, VLAN_VID:None], treatment=[immediate=[VLAN_PUSH:vlan, VLAN_ID:20], transition=TABLE:20]
398 ADDED, bytes=8698, packets=29, table=20, priority=32768, selector=[IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_TYPE:ipv4, VLAN_VID:20], treatment=[transition=TABLE:30]
399 ADDED, bytes=16612, packets=50, table=30, priority=48010, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.0/24], treatment=[deferred=[GROUP:0x70000010], transition=TABLE:60]
400 ADDED, bytes=34400, packets=112, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]]
401 Groups
402 id=0x70000010, state=ADDED, type=SELECT, bytes=16906, packets=53, appId=org.onosproject.segmentrouting, referenceCount=3
403 id=0x70000010, bucket=1, bytes=490, packets=5, actions=[GROUP:0x9200000d]
404 id=0x70000010, bucket=2, bytes=16416, packets=48, actions=[GROUP:0x9200000f]
405 id=0x9200000d, state=ADDED, type=INDIRECT, bytes=490, packets=5, appId=org.onosproject.segmentrouting, referenceCount=0
406 id=0x9200000d, bucket=1, bytes=490, packets=5, actions=[VLAN_POP, MPLS_PUSH:mpls_unicast, MPLS_LABEL:205, GROUP:0x9000000c, VLAN_PUSH:vlan, VLAN_ID:4095]
407 id=0x9000000c, state=ADDED, type=INDIRECT, bytes=490, packets=5, appId=org.onosproject.segmentrouting, referenceCount=0
408 id=0x9000000c, bucket=1, bytes=490, packets=5, actions=[ETH_DST:00:00:00:00:02:27, ETH_SRC:00:00:00:00:02:04, VLAN_ID:4094, GROUP:0xffe0002]
409 id=0xffe0002, state=ADDED, type=INDIRECT, bytes=726, packets=7, appId=org.onosproject.segmentrouting, referenceCount=0
410 id=0xffe0002, bucket=1, bytes=726, packets=7, actions=[VLAN_POP, OUTPUT:2]
411 id=0x9200000f, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0
412 id=0x9200000f, bucket=1, bytes=16416, packets=48, actions=[VLAN_POP, MPLS_PUSH:mpls_unicast, MPLS_LABEL:205, GROUP:0x9000000e, VLAN_PUSH:vlan, VLAN_ID:4095]
413 id=0x9000000e, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0
414 id=0x9000000e, bucket=1, bytes=16416, packets=48, actions=[ETH_DST:00:00:00:00:02:26, ETH_SRC:00:00:00:00:02:04, VLAN_ID:4094, GROUP:0xffe0001]
415 id=0xffe0001, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0
416 id=0xffe0001, bucket=1, bytes=16416, packets=48, actions=[VLAN_POP, OUTPUT:1]
417 Output through of:0000000000000204/2
418 Device of:0000000000000227
419 Input from of:0000000000000227/1
420 Flows
421 ADDED, bytes=702318, packets=8511, table=0, priority=0, selector=[], treatment=[transition=TABLE:10]
422 ADDED, bytes=343130, packets=4234, table=10, priority=32768, selector=[IN_PORT:1, VLAN_VID:None], treatment=[immediate=[VLAN_PUSH:vlan, VLAN_ID:4094], transition=TABLE:20]
423 ADDED, bytes=754, packets=7, table=20, priority=32768, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:27, ETH_TYPE:mpls_unicast, VLAN_VID:4094], treatment=[transition=TABLE:23]
424 ADDED, bytes=17566, packets=57, table=23, priority=0, selector=[], treatment=[transition=TABLE:24]
425 ADDED, bytes=510, packets=5, table=24, priority=100, selector=[ETH_TYPE:mpls_unicast, MPLS_LABEL:205, MPLS_BOS:true], treatment=[deferred=[MPLS_POP:ipv4, DEC_TTL, GROUP:0x70000017], transition=TABLE:60]
426 ADDED, bytes=17566, packets=57, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]]
427 Groups
428 id=0x70000017, state=ADDED, type=SELECT, bytes=754, packets=7, appId=org.onosproject.segmentrouting, referenceCount=2
429 id=0x70000017, bucket=1, bytes=754, packets=7, actions=[GROUP:0x20000016]
430 id=0x20000016, state=ADDED, type=INDIRECT, bytes=754, packets=7, appId=org.onosproject.segmentrouting, referenceCount=0
431 id=0x20000016, bucket=1, bytes=754, packets=7, actions=[ETH_DST:00:00:00:00:02:05, ETH_SRC:00:00:00:00:02:27, VLAN_ID:4094, GROUP:0xffe0002]
432 id=0xffe0002, state=ADDED, type=INDIRECT, bytes=754, packets=7, appId=org.onosproject.segmentrouting, referenceCount=0
433 id=0xffe0002, bucket=1, bytes=754, packets=7, actions=[VLAN_POP, OUTPUT:2]
434 Output through of:0000000000000227/2
435 Device of:0000000000000205
436 Input from of:0000000000000205/2
437 Flows
438 ADDED, bytes=2105886, packets=24084, table=0, priority=0, selector=[], treatment=[transition=TABLE:10]
439 ADDED, bytes=358792, packets=4275, table=10, priority=32768, selector=[IN_PORT:1, VLAN_VID:None], treatment=[immediate=[VLAN_PUSH:vlan, VLAN_ID:4094], transition=TABLE:20]
440 ADDED, bytes=16416, packets=48, table=20, priority=32768, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:05, ETH_TYPE:ipv4, VLAN_VID:4094], treatment=[transition=TABLE:30]
441 ADDED, bytes=196, packets=2, table=30, priority=64010, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.1/32], treatment=[deferred=[GROUP:0x2000002a], transition=TABLE:60]
442 ADDED, bytes=1370884, packets=15163, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]]
443 Groups
444 id=0x2000002a, state=ADDED, type=INDIRECT, bytes=196, packets=2, appId=org.onosproject.segmentrouting, referenceCount=1
445 id=0x2000002a, bucket=1, bytes=196, packets=2, actions=[ETH_DST:00:AA:00:00:00:03, ETH_SRC:00:00:00:00:02:05, VLAN_ID:30, GROUP:0x1e0003]
446 id=0x1e0003, state=ADDED, type=INDIRECT, bytes=12960, packets=126, appId=org.onosproject.segmentrouting, referenceCount=1
447 id=0x1e0003, bucket=1, bytes=12960, packets=126, actions=[VLAN_POP, OUTPUT:3]
448 id=0x2000002a, state=ADDED, type=INDIRECT, bytes=196, packets=2, appId=org.onosproject.segmentrouting, referenceCount=1
449 id=0x2000002a, bucket=1, bytes=196, packets=2, actions=[ETH_DST:00:AA:00:00:00:03, ETH_SRC:00:00:00:00:02:05, VLAN_ID:30, GROUP:0x1e0003]
450 id=0x1e0003, state=ADDED, type=INDIRECT, bytes=12960, packets=126, appId=org.onosproject.segmentrouting, referenceCount=1
451 id=0x1e0003, bucket=1, bytes=12960, packets=126, actions=[VLAN_POP, OUTPUT:3]
452 Output through of:0000000000000205/3
453 Path [of:0000000000000204/3, of:0000000000000204/1, of:0000000000000226/1, of:0000000000000226/2, of:0000000000000205/1, of:0000000000000205/3]
454 Device of:0000000000000204
455 Input from of:0000000000000204/3
456 Flows
457 ADDED, bytes=733506, packets=8691, table=0, priority=0, selector=[], treatment=[transition=TABLE:10]
458 ADDED, bytes=11110, packets=61, table=10, priority=32768, selector=[IN_PORT:3, VLAN_VID:None], treatment=[immediate=[VLAN_PUSH:vlan, VLAN_ID:20], transition=TABLE:20]
459 ADDED, bytes=8698, packets=29, table=20, priority=32768, selector=[IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_TYPE:ipv4, VLAN_VID:20], treatment=[transition=TABLE:30]
460 ADDED, bytes=16612, packets=50, table=30, priority=48010, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.0/24], treatment=[deferred=[GROUP:0x70000010], transition=TABLE:60]
461 ADDED, bytes=34400, packets=112, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]]
462 Groups
463 id=0x70000010, state=ADDED, type=SELECT, bytes=16906, packets=53, appId=org.onosproject.segmentrouting, referenceCount=3
464 id=0x70000010, bucket=1, bytes=490, packets=5, actions=[GROUP:0x9200000d]
465 id=0x70000010, bucket=2, bytes=16416, packets=48, actions=[GROUP:0x9200000f]
466 id=0x9200000d, state=ADDED, type=INDIRECT, bytes=490, packets=5, appId=org.onosproject.segmentrouting, referenceCount=0
467 id=0x9200000d, bucket=1, bytes=490, packets=5, actions=[VLAN_POP, MPLS_PUSH:mpls_unicast, MPLS_LABEL:205, GROUP:0x9000000c, VLAN_PUSH:vlan, VLAN_ID:4095]
468 id=0x9000000c, state=ADDED, type=INDIRECT, bytes=490, packets=5, appId=org.onosproject.segmentrouting, referenceCount=0
469 id=0x9000000c, bucket=1, bytes=490, packets=5, actions=[ETH_DST:00:00:00:00:02:27, ETH_SRC:00:00:00:00:02:04, VLAN_ID:4094, GROUP:0xffe0002]
470 id=0xffe0002, state=ADDED, type=INDIRECT, bytes=726, packets=7, appId=org.onosproject.segmentrouting, referenceCount=0
471 id=0xffe0002, bucket=1, bytes=726, packets=7, actions=[VLAN_POP, OUTPUT:2]
472 id=0x9200000f, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0
473 id=0x9200000f, bucket=1, bytes=16416, packets=48, actions=[VLAN_POP, MPLS_PUSH:mpls_unicast, MPLS_LABEL:205, GROUP:0x9000000e, VLAN_PUSH:vlan, VLAN_ID:4095]
474 id=0x9000000e, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0
475 id=0x9000000e, bucket=1, bytes=16416, packets=48, actions=[ETH_DST:00:00:00:00:02:26, ETH_SRC:00:00:00:00:02:04, VLAN_ID:4094, GROUP:0xffe0001]
476 id=0xffe0001, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0
477 id=0xffe0001, bucket=1, bytes=16416, packets=48, actions=[VLAN_POP, OUTPUT:1]
478 Output through of:0000000000000204/1
479 Device of:0000000000000226
480 Input from of:0000000000000226/1
481 Flows
482 ADDED, bytes=701910, packets=8507, table=0, priority=0, selector=[], treatment=[transition=TABLE:10]
483 ADDED, bytes=358984, packets=4275, table=10, priority=32768, selector=[IN_PORT:1, VLAN_VID:None], treatment=[immediate=[VLAN_PUSH:vlan, VLAN_ID:4094], transition=TABLE:20]
484 ADDED, bytes=16608, packets=48, table=20, priority=32768, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:26, ETH_TYPE:mpls_unicast, VLAN_VID:4094], treatment=[transition=TABLE:23]
485 ADDED, bytes=17158, packets=53, table=23, priority=0, selector=[], treatment=[transition=TABLE:24]
486 ADDED, bytes=16608, packets=48, table=24, priority=100, selector=[ETH_TYPE:mpls_unicast, MPLS_LABEL:205, MPLS_BOS:true], treatment=[deferred=[MPLS_POP:ipv4, DEC_TTL, GROUP:0x7000000b], transition=TABLE:60]
487 ADDED, bytes=17158, packets=53, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]]
488 Groups
489 id=0x7000000b, state=ADDED, type=SELECT, bytes=16608, packets=48, appId=org.onosproject.segmentrouting, referenceCount=2
490 id=0x7000000b, bucket=1, bytes=16608, packets=48, actions=[GROUP:0x20000009]
491 id=0x20000009, state=ADDED, type=INDIRECT, bytes=16608, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0
492 id=0x20000009, bucket=1, bytes=16608, packets=48, actions=[ETH_DST:00:00:00:00:02:05, ETH_SRC:00:00:00:00:02:26, VLAN_ID:4094, GROUP:0xffe0002]
493 id=0xffe0002, state=ADDED, type=INDIRECT, bytes=16608, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0
494 id=0xffe0002, bucket=1, bytes=16608, packets=48, actions=[VLAN_POP, OUTPUT:2]
495 Output through of:0000000000000226/2
496 Device of:0000000000000205
497 Input from of:0000000000000205/1
498 Flows
499 ADDED, bytes=2105886, packets=24084, table=0, priority=0, selector=[], treatment=[transition=TABLE:10]
500 ADDED, bytes=358792, packets=4275, table=10, priority=32768, selector=[IN_PORT:1, VLAN_VID:None], treatment=[immediate=[VLAN_PUSH:vlan, VLAN_ID:4094], transition=TABLE:20]
501 ADDED, bytes=16416, packets=48, table=20, priority=32768, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:05, ETH_TYPE:ipv4, VLAN_VID:4094], treatment=[transition=TABLE:30]
502 ADDED, bytes=196, packets=2, table=30, priority=64010, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.1/32], treatment=[deferred=[GROUP:0x2000002a], transition=TABLE:60]
503 ADDED, bytes=1370884, packets=15163, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]]
504 Groups
505 id=0x2000002a, state=ADDED, type=INDIRECT, bytes=196, packets=2, appId=org.onosproject.segmentrouting, referenceCount=1
506 id=0x2000002a, bucket=1, bytes=196, packets=2, actions=[ETH_DST:00:AA:00:00:00:03, ETH_SRC:00:00:00:00:02:05, VLAN_ID:30, GROUP:0x1e0003]
507 id=0x1e0003, state=ADDED, type=INDIRECT, bytes=12960, packets=126, appId=org.onosproject.segmentrouting, referenceCount=1
508 id=0x1e0003, bucket=1, bytes=12960, packets=126, actions=[VLAN_POP, OUTPUT:3]
509 id=0x2000002a, state=ADDED, type=INDIRECT, bytes=196, packets=2, appId=org.onosproject.segmentrouting, referenceCount=1
510 id=0x2000002a, bucket=1, bytes=196, packets=2, actions=[ETH_DST:00:AA:00:00:00:03, ETH_SRC:00:00:00:00:02:05, VLAN_ID:30, GROUP:0x1e0003]
511 id=0x1e0003, state=ADDED, type=INDIRECT, bytes=12960, packets=126, appId=org.onosproject.segmentrouting, referenceCount=1
512 id=0x1e0003, bucket=1, bytes=12960, packets=126, actions=[VLAN_POP, OUTPUT:3]
513 Output through of:0000000000000205/3
514 Result:
515 Reached required destination Host
516 Reached required destination Host
Charles Chan4ade88d2019-09-16 16:30:31 -0700517
518Successful Example
519------------------
Zack Williamsd63d35b2020-06-23 14:12:46 -0700520
521In this example we trace a packet that should be bridged between two hosts in
522the same subnet
Charles Chan4ade88d2019-09-16 16:30:31 -0700523
524.. code-block:: console
525
Charles Chan8299f072019-09-23 11:32:26 -0700526 onos> t3-troubleshoot -s 10.0.2.1 -sp of:0000000000000204/3 -sm 00:AA:00:00:00:01 -et IPV4 -d 10.0.3.1 -dm 00:AA:00:00:00:02 -vid None
527 Tracing packet: [IN_PORT:3, ETH_DST:00:AA:00:00:00:02, ETH_SRC:00:AA:00:00:00:01, ETH_TYPE:ipv4, VLAN_VID:None, IPV4_SRC:10.0.2.1/32, IPV4_DST:10.0.2.2/32, TCP_SRC:12345, TCP_DST:80, MPLS_BOS:true]
528 Paths
529 [of:0000000000000204/3, of:0000000000000204/4]
530 Result:
531 Reached required destination Host
Charles Chan4ade88d2019-09-16 16:30:31 -0700532
533Failed Example
534--------------
Zack Williamsd63d35b2020-06-23 14:12:46 -0700535
Charles Chan4ade88d2019-09-16 16:30:31 -0700536Obviously failures can happen along one of the paths that the packet can take.
Zack Williamsd63d35b2020-06-23 14:12:46 -0700537
538In our sample we removed a flow in ``of:0000000000000226`` thus disabling that
539possible path for our initial packet.
540
541The output of our trace would then look something like:
Charles Chan4ade88d2019-09-16 16:30:31 -0700542
543.. code-block:: console
544
Charles Chan8299f072019-09-23 11:32:26 -0700545 onos> t3-troubleshoot -s 10.0.2.1 -sp of:0000000000000204/3 -sm 00:AA:00:00:00:01 -et IPV4 -d 10.0.3.1 -dm 00:00:00:00:02:04 -vid None
546 Tracing packet: [IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_SRC:00:AA:00:00:00:01, ETH_TYPE:ipv4, VLAN_VID:None, IPV4_SRC:10.0.2.1/32, IPV4_DST:10.0.3.1/32, TCP_SRC:12345, TCP_DST:80, MPLS_BOS:true]
547 Paths
548 [of:0000000000000204/3, of:0000000000000204/2, of:0000000000000227/1, of:0000000000000227/2, of:0000000000000205/2, of:0000000000000205/3]
549 [of:0000000000000204/3, of:0000000000000204/1, of:0000000000000226/1]
550 Result:
551 Reached required destination Host
552 No output out of device of:0000000000000226 Packet is dropped
Charles Chan4ade88d2019-09-16 16:30:31 -0700553
Zack Williamsd63d35b2020-06-23 14:12:46 -0700554Notice that on the second path that was previously going through
555``of:0000000000000226`` now the packet is dropped due to the rule we removed.
Charles Chan4ade88d2019-09-16 16:30:31 -0700556
557Example of Various Packet Types
558-------------------------------
559These sample commands refer to the Mininet environment found in trellis.py [#trellis.py]_
560
561- L2 Unicast IPv4
562
563 .. code-block:: console
564
Charles Chan8299f072019-09-23 11:32:26 -0700565 t3-troubleshoot -s 10.0.2.1 -sp of:0000000000000204/3 -sm 00:AA:00:00:00:01 -d 10.0.2.2 -dm 00:AA:00:00:00:02
Charles Chan4ade88d2019-09-16 16:30:31 -0700566
567- L2 Unicast IPv6
568
569 .. code-block:: console
570
Charles Chan8299f072019-09-23 11:32:26 -0700571 t3-troubleshoot -vv -s 2000::301 -sp of:0000000000000205/5 -sm 00:BB:00:00:00:03 -d 2000::302 -dm 00:BB:00:00:00:04 -et ipv6
Charles Chan4ade88d2019-09-16 16:30:31 -0700572
573- L3 Unicast IPv4
574
575 .. code-block:: console
576
Charles Chan8299f072019-09-23 11:32:26 -0700577 t3-troubleshoot -s 10.0.2.1 -sp of:0000000000000204/3 -sm 00:AA:00:00:00:01 -d 10.0.3.1 -dm 00:00:00:00:02:04
Charles Chan4ade88d2019-09-16 16:30:31 -0700578
579- L3 Unicast IPv6
580
581 .. code-block:: console
582
Charles Chan8299f072019-09-23 11:32:26 -0700583 t3-troubleshoot -vv -s 2000::301 -sp of:0000000000000205/5 -sm 00:BB:00:00:00:03 -d 2000::202 -dm 00:00:00:00:02:05 -et ipv6
Charles Chan4ade88d2019-09-16 16:30:31 -0700584
585- ARP
586
587 .. code-block:: console
588
Charles Chan8299f072019-09-23 11:32:26 -0700589 t3-troubleshoot -sp of:0000000000000204/3 -et ARP
Charles Chan4ade88d2019-09-16 16:30:31 -0700590
591- DHCP
592
593 .. code-block:: console
594
Charles Chan8299f072019-09-23 11:32:26 -0700595 t3-troubleshoot -vv -s 10.0.2.1 -sp of:0000000000000204/3 -sm 00:AA:00:00:00:01 -d 10.0.3.253 -dm 00:00:00:00:02:04 -ipp 17 -udps 67 -udpd 67
Charles Chan4ade88d2019-09-16 16:30:31 -0700596
597- LLDP
598
599 .. code-block:: console
600
Charles Chan8299f072019-09-23 11:32:26 -0700601 t3-troubleshoot -sp of:0000000000000204/3 -et lldp
Charles Chan4ade88d2019-09-16 16:30:31 -0700602
603- BDDP
604
605 .. code-block:: console
606
Charles Chan8299f072019-09-23 11:32:26 -0700607 t3-troubleshoot -sp of:0000000000000204/3 -et bddp
Charles Chan4ade88d2019-09-16 16:30:31 -0700608
609- LLDP from CONTROLLER
610
611 T3 is also capable of tracing packets coming in from the CONTROLLER.
Zack Williamsd63d35b2020-06-23 14:12:46 -0700612
613 We use the same input port with the possibility to give CONTROLLER as logical
614 port number.
615
616 This is a mere convenience to carry the information inside T3 and do the
617 proper flooding to all the ports of the given device.
618
619 This case is not treated like all the rest and the input port here is a
620 logical entity that has no match on any physical element on the device.
Charles Chan4ade88d2019-09-16 16:30:31 -0700621
622 .. code-block:: console
623
Charles Chan8299f072019-09-23 11:32:26 -0700624 t3-troubleshoot -sp of:0000000000000204/CONTROLLER -et lldp
Charles Chan4ade88d2019-09-16 16:30:31 -0700625
626- Multicast
627
628 T3 is also capable of tracing multicast packets.
629
630 .. code-block:: console
631
Charles Chan8299f072019-09-23 11:32:26 -0700632 t3-troubleshoot -vv -sp of:0000000000000205/9 -et ipv4 -d 224.0.0.1 -dm 01:00:5e:00:00:01
Charles Chan4ade88d2019-09-16 16:30:31 -0700633
634
635t3-troubleshoot-simple
636======================
Zack Williamsd63d35b2020-06-23 14:12:46 -0700637
638T3 also offers a simplified version of the command to be able to ping between
639two given hosts without having to specify all the information.
640
641This commands bases itself on top of some configuration present in ONOS through
642netcfg, namely the VLAN interface configuration and the segment routing leaf
643router MAC for L3 Unicast. If that is not present the user needs to input this
644information manually recurring to the the previously shown command. Same
645verbosity levels and output as the troubleshoot command are possible.
Charles Chan4ade88d2019-09-16 16:30:31 -0700646
647t3-troubleshoot-simple Help
648---------------------------
649.. code-block:: console
650
Charles Chan8299f072019-09-23 11:32:26 -0700651 onos> t3-troubleshoot-simple --help
652 DESCRIPTION
653 onos:troubleshoot-simple
Charles Chan4ade88d2019-09-16 16:30:31 -0700654
Charles Chan8299f072019-09-23 11:32:26 -0700655 Given two hosts troubleshoots flows and groups between them, in case of segment routing
Charles Chan4ade88d2019-09-16 16:30:31 -0700656
Charles Chan8299f072019-09-23 11:32:26 -0700657 SYNTAX
658 onos:troubleshoot-simple [options] one two
Charles Chan4ade88d2019-09-16 16:30:31 -0700659
Charles Chan8299f072019-09-23 11:32:26 -0700660 ARGUMENTS
661 one
662 One host ID
663 two
664 Another host ID
Charles Chan4ade88d2019-09-16 16:30:31 -0700665
Charles Chan8299f072019-09-23 11:32:26 -0700666 OPTIONS
667 -vv, --veryverbose
668 Outputs flows and groups for every device
669 -j, --json
670 Output JSON
671 --help
672 Display this help message
673 -et, --ethType
674 ETH Type
675 (defaults to ipv4)
676 -v, --verbose
677 Outputs complete path
Charles Chan4ade88d2019-09-16 16:30:31 -0700678
679t3-troubleshoot-simple Example
680------------------------------
681Examples are given for the same trellis.py [#trellis.py]_ script.
682
683- L2 Unicast
684
685 Hosts are under the same leaf, only interface configuration is needed.
686
687 .. code-block:: console
688
Charles Chan8299f072019-09-23 11:32:26 -0700689 t3-troubleshoot-simple -v -et IPV4 00:AA:00:00:00:01/None 00:AA:00:00:00:02/None
Charles Chan4ade88d2019-09-16 16:30:31 -0700690
691- L3 Multicast
692
693 Hosts are under different leafs, also segment routing configuration config is needed for the leaf's routerMac.
694
695 .. code-block:: console
696
Charles Chan8299f072019-09-23 11:32:26 -0700697 t3-troubleshoot-simple -et IPV4 00:AA:00:00:00:01/None 00:AA:00:00:00:03/None
Charles Chan4ade88d2019-09-16 16:30:31 -0700698
699
700t3-troubleshoot-pingall
701=======================
702T3 also offers a ping-all command to be able to test ping between any given hosts of an EthType.
703This commands bases itself on top of the simplified Host to Host command. It has two verbosity levels,
704one just with Host and Destination with the result message of the Trace and one that shows also the packet and the paths.
705
706t3-troubleshoot-pingall Help
707----------------------------
708.. code-block:: console
709
Charles Chan8299f072019-09-23 11:32:26 -0700710 onos> t3-troubleshoot-pingall --help
711 DESCRIPTION
712 onos:t3-troubleshoot-pingall
Charles Chan4ade88d2019-09-16 16:30:31 -0700713
Charles Chan8299f072019-09-23 11:32:26 -0700714 Traces a ping between all hosts in the system of a given ETH type
Charles Chan4ade88d2019-09-16 16:30:31 -0700715
Charles Chan8299f072019-09-23 11:32:26 -0700716 SYNTAX
717 onos:t3-troubleshoot-pingall [options]
Charles Chan4ade88d2019-09-16 16:30:31 -0700718
Charles Chan8299f072019-09-23 11:32:26 -0700719 OPTIONS
720 -j, --json
721 Output JSON
722 --help
723 Display this help message
724 -et, --ethType
725 ETH Type
726 (defaults to ipv4)
727 -v, --verbose
728 Outputs trace for each host to host combination
Charles Chan4ade88d2019-09-16 16:30:31 -0700729
730t3-troubleshoot-pingall Examples
731--------------------------------
732- IPv4 hosts
733
734 .. code-block:: console
735
Charles Chan8299f072019-09-23 11:32:26 -0700736 t3-troubleshoot-pingall
Charles Chan4ade88d2019-09-16 16:30:31 -0700737
738- IPv6 hosts
739
740 .. code-block:: console
741
742 t3-troubleshoot-pingall -et IPV6
743
744
745t3-troubleshoot-mcast
746=====================
Zack Williamsd63d35b2020-06-23 14:12:46 -0700747
748T3 also offers a mcast command queries the system for all the multicast routes
749given a certain vlanId. It prints all the traces given a certain group, source
750and source connect point. It has two "standard" verbosity levels.
Charles Chan4ade88d2019-09-16 16:30:31 -0700751
752t3-troubleshoot-mcast Help
753--------------------------
754.. code-block:: console
755
Charles Chan8299f072019-09-23 11:32:26 -0700756 onos> t3-troubleshoot-mcast --help
757 DESCRIPTION
758 onos:t3-troubleshoot-mcast
Charles Chan4ade88d2019-09-16 16:30:31 -0700759
Seyeon Jeong50d3c452020-05-29 14:07:57 -0700760 Traces all the mcast routes present in the system
Charles Chan4ade88d2019-09-16 16:30:31 -0700761
Charles Chan8299f072019-09-23 11:32:26 -0700762 SYNTAX
763 onos:t3-troubleshoot-mcast [options]
Charles Chan4ade88d2019-09-16 16:30:31 -0700764
Charles Chan8299f072019-09-23 11:32:26 -0700765 OPTIONS
766 -j, --json
767 Output JSON
768 --help
769 Display this help message
770 -vv, --veryverbose
771 Outputs details of every trace
772 -vid, --vlanId
773 Vlan of incoming packet
774 (defaults to None)
775 -v, --verbose
776 Outputs trace for each host to host combination
Charles Chan4ade88d2019-09-16 16:30:31 -0700777
778REST API
779========
780T3 now also offers a way to execute the troubleshoot through REST API endpoints.
781You can find the description and test the API at the ONOS docs endpoint here:
782
783.. code-block:: text
784
Charles Chan8299f072019-09-23 11:32:26 -0700785 <ONOS_IP>:8181/onos/v1/docs/#/t3
Charles Chan4ade88d2019-09-16 16:30:31 -0700786
787The rest API offered are a non verbose and a verbose version of the troubleshoot simple command.
Zack Williamsd63d35b2020-06-23 14:12:46 -0700788
789It bases itself on top of some configuration present in ONOS through netcfg,
790namely the VLAN interface configuration and the segment routing leaf router MAC
791for L3 Unicast.
792
793The use need to specify just the Source Host, the destination host and the ETH
794type.
Charles Chan4ade88d2019-09-16 16:30:31 -0700795
796.. code-block:: console
797
Charles Chan8299f072019-09-23 11:32:26 -0700798 curl -X GET --header 'Accept: application/json' 'http://localhost:8181/onos/v1/t3/t3/simple/<host_src>/<host_dst>/<eht_type>'
Charles Chan4ade88d2019-09-16 16:30:31 -0700799
800.. code-block:: console
801
Charles Chan8299f072019-09-23 11:32:26 -0700802 curl -X GET --header 'Accept: application/json' 'http://localhost:8181/onos/v1/t3/t3/simple/<host_src>/<host_dst>/<eht_type>/verbose
Charles Chan4ade88d2019-09-16 16:30:31 -0700803
804
805Last Resort
806===========
807
Zack Williamsd63d35b2020-06-23 14:12:46 -0700808In the case where you can't figure out what is going wrong even with help of
809T3, you can seek help on Trellis developer mailing list
810``trellis-dev@opennetworking.org``.
811
Charles Chan4ade88d2019-09-16 16:30:31 -0700812There are a few things we would like you to attach:
813
814- **Issue description**
Zack Williamsd63d35b2020-06-23 14:12:46 -0700815
816- **Environment description**, such as ONOS version, switch model and OF-DPA
817 version
818
Charles Chan4ade88d2019-09-16 16:30:31 -0700819- **Steps of reproduction**, as detail as possible
Zack Williamsd63d35b2020-06-23 14:12:46 -0700820
Charles Chan4ade88d2019-09-16 16:30:31 -0700821- **Diagnostics**.
Zack Williamsd63d35b2020-06-23 14:12:46 -0700822
Seyeon Jeong50d3c452020-05-29 14:07:57 -0700823We have built a tool ``onos-diagnostics`` [#onos-diagnostics_src]_ [#onos-diagnostics_man]_
pierventre601b49e2020-06-27 16:24:40 +0200824to help you easily collect and package ONOS diagnostics.
Charles Chan4ade88d2019-09-16 16:30:31 -0700825
pierventre601b49e2020-06-27 16:24:40 +0200826Alternatively, you can use ``onos-diagnostics-k8s`` [#onos-diagnostics-k8s_src]_ [#onos-diagnostics_man]_.
Charles Chan4ade88d2019-09-16 16:30:31 -0700827
828Reference
829=========
830
Seyeon Jeong50d3c452020-05-29 14:07:57 -0700831.. [#onos-diagnostics_src] `<https://github.com/opennetworkinglab/onos/blob/master/tools/package/runtime/bin/onos-diagnostics>`_
832.. [#onos-diagnostics_man] `<https://wiki.onosproject.org/display/ONOS/ONOS+Remote+Admin+Tools>`_
pierventre601b49e2020-06-27 16:24:40 +0200833.. [#onos-diagnostics-k8s_src] `<https://github.com/opennetworkinglab/onos/blob/master/tools/package/runtime/bin/onos-diagnostics-k8s>`_
Charles Chan4ade88d2019-09-16 16:30:31 -0700834.. [#trellis.py] `<https://github.com/opennetworkinglab/routing/blob/master/trellis/trellis.py>`_