Charles Chan | 78a737f | 2019-09-12 13:55:22 -0700 | [diff] [blame] | 1 | Troubleshooting Guide |
| 2 | ********************* |
| 3 | |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 4 | Overview |
| 5 | ======== |
| 6 | |
| 7 | The **Trellis Troubleshooting Tools (T3)** is an ONOS application intended to **help you troubleshoot traffic-related problems** in your network by **tracing installed flows and groups**. |
| 8 | T3 works both on simulated OVS-based topologies but also on real HW, basing it's internal decisions on the driver assigned to the device. |
| 9 | T3 also currently supports dual links between leaf and spine and properly handles the difference between deferred and immediate rules. |
| 10 | Dual Homed hosts are also supported in T3. |
| 11 | |
| 12 | To activate this tool on your ONOS environment, you need to run: |
| 13 | |
| 14 | .. code-block:: console |
| 15 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 16 | onos> app activate t3 |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 17 | |
| 18 | T3 supports tracing of following packet types: |
| 19 | |
| 20 | - L2 Unicast |
| 21 | - L2 Broadcast |
| 22 | - L3 Unicast (both IPv4 and IPv6) |
| 23 | - L3 Multicast (both IPv4 and IPv6) |
| 24 | - LLDP and BDDP |
| 25 | - ARP |
| 26 | - DHCP |
| 27 | |
| 28 | |
| 29 | t3-troubleshoot |
| 30 | =============== |
| 31 | As of right now the tools provides a CLI command (troubleshoot). |
| 32 | As arguments to the CLI command you have to pass arguments describing the packet you want to trace through the network. |
| 33 | |
| 34 | t3-troubleshoot Help |
| 35 | -------------------- |
| 36 | |
| 37 | .. code-block:: console |
| 38 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 39 | onos> t3-troubleshoot --help |
| 40 | DESCRIPTION |
| 41 | onos:troubleshoot |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 42 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 43 | troubleshoots flows and groups between source and destination |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 44 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 45 | SYNTAX |
| 46 | onos:troubleshoot [options] |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 47 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 48 | OPTIONS |
| 49 | -sm, --srcMac |
| 50 | Source MAC |
| 51 | -j, --json |
| 52 | Output JSON |
| 53 | --help |
| 54 | Display this help message |
| 55 | -v, --verbose |
| 56 | Outputs complete path |
| 57 | -ipp, --ipProto |
| 58 | IP Proto |
| 59 | -s, --srcIp |
| 60 | Source IP |
| 61 | -dm, --dstMac |
| 62 | Destination MAC |
| 63 | -ml, --mplsLabel |
| 64 | Mpls label of incoming packet |
| 65 | -vv, --veryverbose |
| 66 | Outputs flows and groups for every device |
| 67 | -udps, --udpSrc |
| 68 | UDP Source |
| 69 | -mb, --mplsBos |
| 70 | MPLS BOS |
| 71 | -et, --ethType |
| 72 | ETH Type |
| 73 | (defaults to ipv4) |
| 74 | -sp, --srcPort |
| 75 | Source Port |
| 76 | -dtp, --dstTcpPort |
| 77 | destination TCP Port |
| 78 | -udpd, --udpDst |
| 79 | UDP Destination |
| 80 | -stp, --srcTcpPort |
| 81 | Source TCP Port |
| 82 | -d, --dstIp |
| 83 | Destination IP |
| 84 | -vid, --vlanId |
| 85 | Vlan of incoming packet |
| 86 | (defaults to None) |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 87 | |
| 88 | Default Verbosity Level |
| 89 | ----------------------- |
| 90 | Let's look at an example. |
| 91 | |
| 92 | .. code-block:: console |
| 93 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 94 | 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 Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 95 | |
| 96 | with this command we are asking the t3 tool to trace a packet with |
| 97 | |
| 98 | - Source IP of ``10.0.2.1/32`` |
| 99 | - Input port ``of:0000000000000204/3`` |
| 100 | - Source MAC ``00:AA:00:00:00:01`` |
| 101 | - ethType ``IPv4`` |
| 102 | - Source TCP Port ``12345`` |
| 103 | - Destination IP ``10.0.3.1/32`` |
| 104 | - Destination MAC ``00:AA:00:00:00:01`` |
| 105 | - Destination TCP Port ``80`` and |
| 106 | - VLAN ID ``None`` |
| 107 | |
| 108 | This command has a verbosity level of 0 and will output just the paths that the packet might take inside the network. |
| 109 | In the example deployment taken from trellis.py [#trellis.py]_, the output will be: |
| 110 | |
| 111 | .. code-block:: console |
| 112 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 113 | 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] |
| 114 | Paths |
| 115 | [of:0000000000000204/3, of:0000000000000204/2, of:0000000000000227/1, of:0000000000000227/2, of:0000000000000205/2, of:0000000000000205/3] |
| 116 | [of:0000000000000204/3, of:0000000000000204/1, of:0000000000000226/1, of:0000000000000226/2, of:0000000000000205/1, of:0000000000000205/3] |
| 117 | Result: |
| 118 | Reached required destination Host |
| 119 | Reached required destination Host |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 120 | |
| 121 | Middle Verbosity Level |
| 122 | ---------------------- |
| 123 | There are also two other verbosity levels. |
| 124 | |
| 125 | .. code-block:: console |
| 126 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 127 | 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 Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 128 | |
| 129 | prints flows selectors and groupId that are met along the path |
| 130 | |
| 131 | .. code-block:: console |
| 132 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 133 | 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] |
| 134 | Path [of:0000000000000204/3, of:0000000000000204/2, of:0000000000000227/1, of:0000000000000227/2, of:0000000000000205/2, of:0000000000000205/3] |
| 135 | Device of:0000000000000204 |
| 136 | Input from of:0000000000000204/3 |
| 137 | Flows |
| 138 | flowId=a20000bd57cb49, selector=[] |
| 139 | flowId=900000d4173ff7, selector=[IN_PORT:3, VLAN_VID:None] |
| 140 | flowId=9000004b3d1965, selector=[IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_TYPE:ipv4, VLAN_VID:20] |
| 141 | flowId=900000499769f5, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.0/24] |
| 142 | flowId=a2000038b487e7, selector=[] |
| 143 | Groups |
| 144 | groupId=GroupId{id=0x70000010} |
| 145 | groupId=GroupId{id=0x9200000d} |
| 146 | groupId=GroupId{id=0x9000000c} |
| 147 | groupId=GroupId{id=0xffe0002} |
| 148 | groupId=GroupId{id=0x9200000f} |
| 149 | groupId=GroupId{id=0x9000000e} |
| 150 | groupId=GroupId{id=0xffe0001} |
| 151 | Output through of:0000000000000204/2 |
| 152 | Device of:0000000000000227 |
| 153 | Input from of:0000000000000227/1 |
| 154 | Flows |
| 155 | flowId=a200005577bcd6, selector=[] |
| 156 | flowId=900000498457b2, selector=[IN_PORT:1, VLAN_VID:None] |
| 157 | flowId=900000f87746c9, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:27, ETH_TYPE:mpls_unicast, VLAN_VID:4094] |
| 158 | flowId=a200005bfd6ed7, selector=[] |
| 159 | flowId=9000009f3d554f, selector=[ETH_TYPE:mpls_unicast, MPLS_LABEL:205, MPLS_BOS:true] |
| 160 | flowId=a20000e601fc35, selector=[] |
| 161 | Groups |
| 162 | groupId=GroupId{id=0x70000017} |
| 163 | groupId=GroupId{id=0x20000016} |
| 164 | groupId=GroupId{id=0xffe0002} |
| 165 | Output through of:0000000000000227/2 |
| 166 | Device of:0000000000000205 |
| 167 | Input from of:0000000000000205/2 |
| 168 | Flows |
| 169 | flowId=a200008d542817, selector=[] |
| 170 | flowId=900000be3179a0, selector=[IN_PORT:1, VLAN_VID:None] |
| 171 | flowId=900000766be164, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:05, ETH_TYPE:ipv4, VLAN_VID:4094] |
| 172 | flowId=900000ec1d5779, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.1/32] |
| 173 | flowId=a2000042d8e6b5, selector=[] |
| 174 | Groups |
| 175 | groupId=GroupId{id=0x2000002a} |
| 176 | groupId=GroupId{id=0x1e0003} |
| 177 | groupId=GroupId{id=0x2000002a} |
| 178 | groupId=GroupId{id=0x1e0003} |
| 179 | Output through of:0000000000000205/3 |
| 180 | Path [of:0000000000000204/3, of:0000000000000204/1, of:0000000000000226/1, of:0000000000000226/2, of:0000000000000205/1, of:0000000000000205/3] |
| 181 | Device of:0000000000000204 |
| 182 | Input from of:0000000000000204/3 |
| 183 | Flows |
| 184 | flowId=a20000bd57cb49, selector=[] |
| 185 | flowId=900000d4173ff7, selector=[IN_PORT:3, VLAN_VID:None] |
| 186 | flowId=9000004b3d1965, selector=[IN_PORT:3, ETH_DST:00:00:00:00:02:04, ETH_TYPE:ipv4, VLAN_VID:20] |
| 187 | flowId=900000499769f5, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.0/24] |
| 188 | flowId=a2000038b487e7, selector=[] |
| 189 | Groups |
| 190 | groupId=GroupId{id=0x70000010} |
| 191 | groupId=GroupId{id=0x9200000d} |
| 192 | groupId=GroupId{id=0x9000000c} |
| 193 | groupId=GroupId{id=0xffe0002} |
| 194 | groupId=GroupId{id=0x9200000f} |
| 195 | groupId=GroupId{id=0x9000000e} |
| 196 | groupId=GroupId{id=0xffe0001} |
| 197 | Output through of:0000000000000204/1 |
| 198 | Device of:0000000000000226 |
| 199 | Input from of:0000000000000226/1 |
| 200 | Flows |
| 201 | flowId=a20000e9b27d24, selector=[] |
| 202 | flowId=9000004bd76105, selector=[IN_PORT:1, VLAN_VID:None] |
| 203 | flowId=90000069f274d1, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:26, ETH_TYPE:mpls_unicast, VLAN_VID:4094] |
| 204 | flowId=a200000ec7529e, selector=[] |
| 205 | flowId=90000050f9a350, selector=[ETH_TYPE:mpls_unicast, MPLS_LABEL:205, MPLS_BOS:true] |
| 206 | flowId=a20000b15cada6, selector=[] |
| 207 | Groups |
| 208 | groupId=GroupId{id=0x7000000b} |
| 209 | groupId=GroupId{id=0x20000009} |
| 210 | groupId=GroupId{id=0xffe0002} |
| 211 | Output through of:0000000000000226/2 |
| 212 | Device of:0000000000000205 |
| 213 | Input from of:0000000000000205/1 |
| 214 | Flows |
| 215 | flowId=a200008d542817, selector=[] |
| 216 | flowId=900000be3179a0, selector=[IN_PORT:1, VLAN_VID:None] |
| 217 | flowId=900000766be164, selector=[IN_PORT:1, ETH_DST:00:00:00:00:02:05, ETH_TYPE:ipv4, VLAN_VID:4094] |
| 218 | flowId=900000ec1d5779, selector=[ETH_TYPE:ipv4, IPV4_DST:10.0.3.1/32] |
| 219 | flowId=a2000042d8e6b5, selector=[] |
| 220 | Groups |
| 221 | groupId=GroupId{id=0x2000002a} |
| 222 | groupId=GroupId{id=0x1e0003} |
| 223 | groupId=GroupId{id=0x2000002a} |
| 224 | groupId=GroupId{id=0x1e0003} |
| 225 | Output through of:0000000000000205/3 |
| 226 | Result: |
| 227 | Reached required destination Host |
| 228 | Reached required destination Host |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 229 | |
| 230 | High Verbosity Level |
| 231 | -------------------- |
| 232 | The most verbose output you can get is |
| 233 | |
| 234 | .. code-block:: console |
| 235 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 236 | 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 Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 237 | |
| 238 | This verbosity level prints all the flows and groups that are met along the path |
| 239 | |
| 240 | .. code-block:: console |
| 241 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 242 | 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] |
| 243 | Path [of:0000000000000204/3, of:0000000000000204/2, of:0000000000000227/1, of:0000000000000227/2, of:0000000000000205/2, of:0000000000000205/3] |
| 244 | Device of:0000000000000204 |
| 245 | Input from of:0000000000000204/3 |
| 246 | Flows |
| 247 | ADDED, bytes=733506, packets=8691, table=0, priority=0, selector=[], treatment=[transition=TABLE:10] |
| 248 | 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] |
| 249 | 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] |
| 250 | 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] |
| 251 | ADDED, bytes=34400, packets=112, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]] |
| 252 | Groups |
| 253 | id=0x70000010, state=ADDED, type=SELECT, bytes=16906, packets=53, appId=org.onosproject.segmentrouting, referenceCount=3 |
| 254 | id=0x70000010, bucket=1, bytes=490, packets=5, actions=[GROUP:0x9200000d] |
| 255 | id=0x70000010, bucket=2, bytes=16416, packets=48, actions=[GROUP:0x9200000f] |
| 256 | id=0x9200000d, state=ADDED, type=INDIRECT, bytes=490, packets=5, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 257 | 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] |
| 258 | id=0x9000000c, state=ADDED, type=INDIRECT, bytes=490, packets=5, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 259 | 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] |
| 260 | id=0xffe0002, state=ADDED, type=INDIRECT, bytes=726, packets=7, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 261 | id=0xffe0002, bucket=1, bytes=726, packets=7, actions=[VLAN_POP, OUTPUT:2] |
| 262 | id=0x9200000f, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 263 | 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] |
| 264 | id=0x9000000e, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 265 | 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] |
| 266 | id=0xffe0001, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 267 | id=0xffe0001, bucket=1, bytes=16416, packets=48, actions=[VLAN_POP, OUTPUT:1] |
| 268 | Output through of:0000000000000204/2 |
| 269 | Device of:0000000000000227 |
| 270 | Input from of:0000000000000227/1 |
| 271 | Flows |
| 272 | ADDED, bytes=702318, packets=8511, table=0, priority=0, selector=[], treatment=[transition=TABLE:10] |
| 273 | 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] |
| 274 | 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] |
| 275 | ADDED, bytes=17566, packets=57, table=23, priority=0, selector=[], treatment=[transition=TABLE:24] |
| 276 | 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] |
| 277 | ADDED, bytes=17566, packets=57, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]] |
| 278 | Groups |
| 279 | id=0x70000017, state=ADDED, type=SELECT, bytes=754, packets=7, appId=org.onosproject.segmentrouting, referenceCount=2 |
| 280 | id=0x70000017, bucket=1, bytes=754, packets=7, actions=[GROUP:0x20000016] |
| 281 | id=0x20000016, state=ADDED, type=INDIRECT, bytes=754, packets=7, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 282 | 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] |
| 283 | id=0xffe0002, state=ADDED, type=INDIRECT, bytes=754, packets=7, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 284 | id=0xffe0002, bucket=1, bytes=754, packets=7, actions=[VLAN_POP, OUTPUT:2] |
| 285 | Output through of:0000000000000227/2 |
| 286 | Device of:0000000000000205 |
| 287 | Input from of:0000000000000205/2 |
| 288 | Flows |
| 289 | ADDED, bytes=2105886, packets=24084, table=0, priority=0, selector=[], treatment=[transition=TABLE:10] |
| 290 | 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] |
| 291 | 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] |
| 292 | 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] |
| 293 | ADDED, bytes=1370884, packets=15163, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]] |
| 294 | Groups |
| 295 | id=0x2000002a, state=ADDED, type=INDIRECT, bytes=196, packets=2, appId=org.onosproject.segmentrouting, referenceCount=1 |
| 296 | 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] |
| 297 | id=0x1e0003, state=ADDED, type=INDIRECT, bytes=12960, packets=126, appId=org.onosproject.segmentrouting, referenceCount=1 |
| 298 | id=0x1e0003, bucket=1, bytes=12960, packets=126, actions=[VLAN_POP, OUTPUT:3] |
| 299 | id=0x2000002a, state=ADDED, type=INDIRECT, bytes=196, packets=2, appId=org.onosproject.segmentrouting, referenceCount=1 |
| 300 | 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] |
| 301 | id=0x1e0003, state=ADDED, type=INDIRECT, bytes=12960, packets=126, appId=org.onosproject.segmentrouting, referenceCount=1 |
| 302 | id=0x1e0003, bucket=1, bytes=12960, packets=126, actions=[VLAN_POP, OUTPUT:3] |
| 303 | Output through of:0000000000000205/3 |
| 304 | Path [of:0000000000000204/3, of:0000000000000204/1, of:0000000000000226/1, of:0000000000000226/2, of:0000000000000205/1, of:0000000000000205/3] |
| 305 | Device of:0000000000000204 |
| 306 | Input from of:0000000000000204/3 |
| 307 | Flows |
| 308 | ADDED, bytes=733506, packets=8691, table=0, priority=0, selector=[], treatment=[transition=TABLE:10] |
| 309 | 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] |
| 310 | 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] |
| 311 | 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] |
| 312 | ADDED, bytes=34400, packets=112, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]] |
| 313 | Groups |
| 314 | id=0x70000010, state=ADDED, type=SELECT, bytes=16906, packets=53, appId=org.onosproject.segmentrouting, referenceCount=3 |
| 315 | id=0x70000010, bucket=1, bytes=490, packets=5, actions=[GROUP:0x9200000d] |
| 316 | id=0x70000010, bucket=2, bytes=16416, packets=48, actions=[GROUP:0x9200000f] |
| 317 | id=0x9200000d, state=ADDED, type=INDIRECT, bytes=490, packets=5, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 318 | 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] |
| 319 | id=0x9000000c, state=ADDED, type=INDIRECT, bytes=490, packets=5, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 320 | 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] |
| 321 | id=0xffe0002, state=ADDED, type=INDIRECT, bytes=726, packets=7, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 322 | id=0xffe0002, bucket=1, bytes=726, packets=7, actions=[VLAN_POP, OUTPUT:2] |
| 323 | id=0x9200000f, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 324 | 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] |
| 325 | id=0x9000000e, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 326 | 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] |
| 327 | id=0xffe0001, state=ADDED, type=INDIRECT, bytes=16416, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 328 | id=0xffe0001, bucket=1, bytes=16416, packets=48, actions=[VLAN_POP, OUTPUT:1] |
| 329 | Output through of:0000000000000204/1 |
| 330 | Device of:0000000000000226 |
| 331 | Input from of:0000000000000226/1 |
| 332 | Flows |
| 333 | ADDED, bytes=701910, packets=8507, table=0, priority=0, selector=[], treatment=[transition=TABLE:10] |
| 334 | 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] |
| 335 | 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] |
| 336 | ADDED, bytes=17158, packets=53, table=23, priority=0, selector=[], treatment=[transition=TABLE:24] |
| 337 | 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] |
| 338 | ADDED, bytes=17158, packets=53, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]] |
| 339 | Groups |
| 340 | id=0x7000000b, state=ADDED, type=SELECT, bytes=16608, packets=48, appId=org.onosproject.segmentrouting, referenceCount=2 |
| 341 | id=0x7000000b, bucket=1, bytes=16608, packets=48, actions=[GROUP:0x20000009] |
| 342 | id=0x20000009, state=ADDED, type=INDIRECT, bytes=16608, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 343 | 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] |
| 344 | id=0xffe0002, state=ADDED, type=INDIRECT, bytes=16608, packets=48, appId=org.onosproject.segmentrouting, referenceCount=0 |
| 345 | id=0xffe0002, bucket=1, bytes=16608, packets=48, actions=[VLAN_POP, OUTPUT:2] |
| 346 | Output through of:0000000000000226/2 |
| 347 | Device of:0000000000000205 |
| 348 | Input from of:0000000000000205/1 |
| 349 | Flows |
| 350 | ADDED, bytes=2105886, packets=24084, table=0, priority=0, selector=[], treatment=[transition=TABLE:10] |
| 351 | 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] |
| 352 | 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] |
| 353 | 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] |
| 354 | ADDED, bytes=1370884, packets=15163, table=60, priority=0, selector=[], treatment=[immediate=[NOACTION]] |
| 355 | Groups |
| 356 | id=0x2000002a, state=ADDED, type=INDIRECT, bytes=196, packets=2, appId=org.onosproject.segmentrouting, referenceCount=1 |
| 357 | 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] |
| 358 | id=0x1e0003, state=ADDED, type=INDIRECT, bytes=12960, packets=126, appId=org.onosproject.segmentrouting, referenceCount=1 |
| 359 | id=0x1e0003, bucket=1, bytes=12960, packets=126, actions=[VLAN_POP, OUTPUT:3] |
| 360 | id=0x2000002a, state=ADDED, type=INDIRECT, bytes=196, packets=2, appId=org.onosproject.segmentrouting, referenceCount=1 |
| 361 | 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] |
| 362 | id=0x1e0003, state=ADDED, type=INDIRECT, bytes=12960, packets=126, appId=org.onosproject.segmentrouting, referenceCount=1 |
| 363 | id=0x1e0003, bucket=1, bytes=12960, packets=126, actions=[VLAN_POP, OUTPUT:3] |
| 364 | Output through of:0000000000000205/3 |
| 365 | Result: |
| 366 | Reached required destination Host |
| 367 | Reached required destination Host |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 368 | |
| 369 | Successful Example |
| 370 | ------------------ |
| 371 | In this example we trace a packet that should be bridged between two hosts in the same subnet |
| 372 | |
| 373 | .. code-block:: console |
| 374 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 375 | 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 |
| 376 | 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] |
| 377 | Paths |
| 378 | [of:0000000000000204/3, of:0000000000000204/4] |
| 379 | Result: |
| 380 | Reached required destination Host |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 381 | |
| 382 | Failed Example |
| 383 | -------------- |
| 384 | Obviously failures can happen along one of the paths that the packet can take. |
| 385 | In our sample we removed a flow in ``of:0000000000000226`` thus disabling that possible path for our initial packet. |
| 386 | The output of our trace would then look something like |
| 387 | |
| 388 | .. code-block:: console |
| 389 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 390 | 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 |
| 391 | 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 | Paths |
| 393 | [of:0000000000000204/3, of:0000000000000204/2, of:0000000000000227/1, of:0000000000000227/2, of:0000000000000205/2, of:0000000000000205/3] |
| 394 | [of:0000000000000204/3, of:0000000000000204/1, of:0000000000000226/1] |
| 395 | Result: |
| 396 | Reached required destination Host |
| 397 | No output out of device of:0000000000000226 Packet is dropped |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 398 | |
| 399 | Notice that on the second path that was previously going through ``of:0000000000000226`` now the packet is dropped due to the rule we removed. |
| 400 | |
| 401 | Example of Various Packet Types |
| 402 | ------------------------------- |
| 403 | These sample commands refer to the Mininet environment found in trellis.py [#trellis.py]_ |
| 404 | |
| 405 | - L2 Unicast IPv4 |
| 406 | |
| 407 | .. code-block:: console |
| 408 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 409 | 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 Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 410 | |
| 411 | - L2 Unicast IPv6 |
| 412 | |
| 413 | .. code-block:: console |
| 414 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 415 | 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 Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 416 | |
| 417 | - L3 Unicast IPv4 |
| 418 | |
| 419 | .. code-block:: console |
| 420 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 421 | 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 Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 422 | |
| 423 | - L3 Unicast IPv6 |
| 424 | |
| 425 | .. code-block:: console |
| 426 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 427 | 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 Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 428 | |
| 429 | - ARP |
| 430 | |
| 431 | .. code-block:: console |
| 432 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 433 | t3-troubleshoot -sp of:0000000000000204/3 -et ARP |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 434 | |
| 435 | - DHCP |
| 436 | |
| 437 | .. code-block:: console |
| 438 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 439 | 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 Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 440 | |
| 441 | - LLDP |
| 442 | |
| 443 | .. code-block:: console |
| 444 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 445 | t3-troubleshoot -sp of:0000000000000204/3 -et lldp |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 446 | |
| 447 | - BDDP |
| 448 | |
| 449 | .. code-block:: console |
| 450 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 451 | t3-troubleshoot -sp of:0000000000000204/3 -et bddp |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 452 | |
| 453 | - LLDP from CONTROLLER |
| 454 | |
| 455 | T3 is also capable of tracing packets coming in from the CONTROLLER. |
| 456 | We use the same input port with the possibility to give CONTROLLER as logical port number. |
| 457 | This is a mere convenience to carry the information inside T3 and do the proper flooding to all the ports of the given device. |
| 458 | This case is not treated like all the rest and the input port here is a logical entity that has no match on any physical element on the device. |
| 459 | |
| 460 | .. code-block:: console |
| 461 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 462 | t3-troubleshoot -sp of:0000000000000204/CONTROLLER -et lldp |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 463 | |
| 464 | - Multicast |
| 465 | |
| 466 | T3 is also capable of tracing multicast packets. |
| 467 | |
| 468 | .. code-block:: console |
| 469 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 470 | t3-troubleshoot -vv -sp of:0000000000000205/9 -et ipv4 -d 224.0.0.1 -dm 01:00:5e:00:00:01 |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 471 | |
| 472 | |
| 473 | t3-troubleshoot-simple |
| 474 | ====================== |
| 475 | T3 also offers a simplified version of the command to be able to ping between two given hosts without having to specify all the information. |
| 476 | This commands bases itself on top of some configuration present in ONOS through netcfg, namely the VLAN interface configuration and the segment routing leaf router MAC for L3 Unicast. If that is not present the user needs to input this information manually recurring to the the previously shown command. Same verbosity levels and output as the troubleshoot command are possible. |
| 477 | |
| 478 | t3-troubleshoot-simple Help |
| 479 | --------------------------- |
| 480 | .. code-block:: console |
| 481 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 482 | onos> t3-troubleshoot-simple --help |
| 483 | DESCRIPTION |
| 484 | onos:troubleshoot-simple |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 485 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 486 | Given two hosts troubleshoots flows and groups between them, in case of segment routing |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 487 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 488 | SYNTAX |
| 489 | onos:troubleshoot-simple [options] one two |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 490 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 491 | ARGUMENTS |
| 492 | one |
| 493 | One host ID |
| 494 | two |
| 495 | Another host ID |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 496 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 497 | OPTIONS |
| 498 | -vv, --veryverbose |
| 499 | Outputs flows and groups for every device |
| 500 | -j, --json |
| 501 | Output JSON |
| 502 | --help |
| 503 | Display this help message |
| 504 | -et, --ethType |
| 505 | ETH Type |
| 506 | (defaults to ipv4) |
| 507 | -v, --verbose |
| 508 | Outputs complete path |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 509 | |
| 510 | t3-troubleshoot-simple Example |
| 511 | ------------------------------ |
| 512 | Examples are given for the same trellis.py [#trellis.py]_ script. |
| 513 | |
| 514 | - L2 Unicast |
| 515 | |
| 516 | Hosts are under the same leaf, only interface configuration is needed. |
| 517 | |
| 518 | .. code-block:: console |
| 519 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 520 | t3-troubleshoot-simple -v -et IPV4 00:AA:00:00:00:01/None 00:AA:00:00:00:02/None |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 521 | |
| 522 | - L3 Multicast |
| 523 | |
| 524 | Hosts are under different leafs, also segment routing configuration config is needed for the leaf's routerMac. |
| 525 | |
| 526 | .. code-block:: console |
| 527 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 528 | t3-troubleshoot-simple -et IPV4 00:AA:00:00:00:01/None 00:AA:00:00:00:03/None |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 529 | |
| 530 | |
| 531 | t3-troubleshoot-pingall |
| 532 | ======================= |
| 533 | T3 also offers a ping-all command to be able to test ping between any given hosts of an EthType. |
| 534 | This commands bases itself on top of the simplified Host to Host command. It has two verbosity levels, |
| 535 | one just with Host and Destination with the result message of the Trace and one that shows also the packet and the paths. |
| 536 | |
| 537 | t3-troubleshoot-pingall Help |
| 538 | ---------------------------- |
| 539 | .. code-block:: console |
| 540 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 541 | onos> t3-troubleshoot-pingall --help |
| 542 | DESCRIPTION |
| 543 | onos:t3-troubleshoot-pingall |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 544 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 545 | Traces a ping between all hosts in the system of a given ETH type |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 546 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 547 | SYNTAX |
| 548 | onos:t3-troubleshoot-pingall [options] |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 549 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 550 | OPTIONS |
| 551 | -j, --json |
| 552 | Output JSON |
| 553 | --help |
| 554 | Display this help message |
| 555 | -et, --ethType |
| 556 | ETH Type |
| 557 | (defaults to ipv4) |
| 558 | -v, --verbose |
| 559 | Outputs trace for each host to host combination |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 560 | |
| 561 | t3-troubleshoot-pingall Examples |
| 562 | -------------------------------- |
| 563 | - IPv4 hosts |
| 564 | |
| 565 | .. code-block:: console |
| 566 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 567 | t3-troubleshoot-pingall |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 568 | |
| 569 | - IPv6 hosts |
| 570 | |
| 571 | .. code-block:: console |
| 572 | |
| 573 | t3-troubleshoot-pingall -et IPV6 |
| 574 | |
| 575 | |
| 576 | t3-troubleshoot-mcast |
| 577 | ===================== |
| 578 | T3 also offers a mcast command queries the system for all the multicast routes given a certain vlanId. |
| 579 | It prints all the traces given a certain group, source and source connect point. It has two "standard" verbosity levels. |
| 580 | |
| 581 | t3-troubleshoot-mcast Help |
| 582 | -------------------------- |
| 583 | .. code-block:: console |
| 584 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 585 | onos> t3-troubleshoot-mcast --help |
| 586 | DESCRIPTION |
| 587 | onos:t3-troubleshoot-mcast |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 588 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 589 | Traces all the mcast routes present in the system |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 590 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 591 | SYNTAX |
| 592 | onos:t3-troubleshoot-mcast [options] |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 593 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 594 | OPTIONS |
| 595 | -j, --json |
| 596 | Output JSON |
| 597 | --help |
| 598 | Display this help message |
| 599 | -vv, --veryverbose |
| 600 | Outputs details of every trace |
| 601 | -vid, --vlanId |
| 602 | Vlan of incoming packet |
| 603 | (defaults to None) |
| 604 | -v, --verbose |
| 605 | Outputs trace for each host to host combination |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 606 | |
| 607 | REST API |
| 608 | ======== |
| 609 | T3 now also offers a way to execute the troubleshoot through REST API endpoints. |
| 610 | You can find the description and test the API at the ONOS docs endpoint here: |
| 611 | |
| 612 | .. code-block:: text |
| 613 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 614 | <ONOS_IP>:8181/onos/v1/docs/#/t3 |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 615 | |
| 616 | The rest API offered are a non verbose and a verbose version of the troubleshoot simple command. |
| 617 | It bases itself on top of some configuration present in ONOS through netcfg, namely the VLAN interface configuration and the segment routing leaf router MAC for L3 Unicast. |
| 618 | The use need to specify just the Source Host, the destination host and the ETH type. |
| 619 | |
| 620 | .. code-block:: console |
| 621 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 622 | curl -X GET --header 'Accept: application/json' 'http://localhost:8181/onos/v1/t3/t3/simple/<host_src>/<host_dst>/<eht_type>' |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 623 | |
| 624 | .. code-block:: console |
| 625 | |
Charles Chan | 8299f07 | 2019-09-23 11:32:26 -0700 | [diff] [blame] | 626 | curl -X GET --header 'Accept: application/json' 'http://localhost:8181/onos/v1/t3/t3/simple/<host_src>/<host_dst>/<eht_type>/verbose |
Charles Chan | 4ade88d | 2019-09-16 16:30:31 -0700 | [diff] [blame] | 627 | |
| 628 | |
| 629 | Last Resort |
| 630 | =========== |
| 631 | |
| 632 | In the case where you can't figure out what is going wrong even with help of T3, you can seek help on Trellis developer mailing list ``trellis-dev@opennetworking.org``. |
| 633 | There are a few things we would like you to attach: |
| 634 | |
| 635 | - **Issue description** |
| 636 | - **Environment description**, such as ONOS version, switch model and OF-DPA version |
| 637 | - **Steps of reproduction**, as detail as possible |
| 638 | - **Diagnostics**. |
| 639 | We have built a tool ``onos-diagnostics`` (see `ONOS Remote Admin Tools <https://wiki.onosproject.org/display/ONOS/ONOS+Remote+Admin+Tools>`_) to help you easily collect and package ONOS diagnostics |
| 640 | |
| 641 | |
| 642 | Reference |
| 643 | ========= |
| 644 | |
| 645 | .. [#trellis.py] `<https://github.com/opennetworkinglab/routing/blob/master/trellis/trellis.py>`_ |