OS-7503: snoop(1m) should learn about SVP

Details

Issue Type:New Feature
Priority:4 - Normal
Status:Resolved
Created at:2019-01-10T16:49:04.109Z
Updated at:2019-01-17T04:32:12.281Z

People

Created by:Former user
Reported by:Former user
Assigned to:Former user

Resolution

Fixed: A fix for this issue is checked into the tree and tested.
(Resolution Date: 2019-01-17T04:31:58.830Z)

Fix Versions

2019-01-31 Kenneth Parcell (Release Date: 2019-01-31)

Description

Since SVP (SmartDC VxLAN protocol) is used for fabric lookups with Triton, it would be helpful if snoop understands the protocol and can display it meaningfully.

Comments

Comment by Former user
Created at 2019-01-16T17:08:26.114Z

To test, I ran the updated binary against some saved captures between a CN and a portolan instance:

# ./snoop -i /tmp/shootdown-2.snoop
  1   0.00000 192.168.4.38 -> 192.168.4.40 SVP V=2 OP=SVP_R_LOG_REQ ID=1546452992
  2   0.05955 192.168.4.40 -> 192.168.4.38 SVP R port=38466
  3   0.00556 192.168.4.40 -> 192.168.4.38 SVP V=2 OP=SVP_R_LOG_ACK ID=1546452992
  4   0.05183 192.168.4.38 -> 192.168.4.40 SVP C port=38466
  5   4.14047 192.168.4.37 -> 192.168.4.40 SVP V=2 OP=SVP_R_LOG_REQ ID=858652672
  6   0.05194 192.168.4.40 -> 192.168.4.37 SVP R port=34819
  7   0.01341 192.168.4.40 -> 192.168.4.37 SVP V=2 OP=SVP_R_LOG_ACK ID=858652672
  8   0.05857 192.168.4.37 -> 192.168.4.40 SVP C port=34819
  9   3.61920 192.168.4.38 -> 192.168.4.40 SVP V=2 OP=SVP_R_LOG_REQ ID=1563230208
 10   0.05866 192.168.4.40 -> 192.168.4.38 SVP R port=38466
 11   0.00347 192.168.4.40 -> 192.168.4.38 SVP V=2 OP=SVP_R_LOG_ACK ID=1563230208
 12   0.05384 192.168.4.38 -> 192.168.4.40 SVP C port=38466
...

With -v

ETHER:  ----- Ether Header -----
ETHER:
ETHER:  Packet 133 arrived at 17:17:23.89773
ETHER:  Packet size = 106 bytes
ETHER:  Destination = 90:b8:d0:a6:d7:93,
ETHER:  Source      = 0:25:90:f3:6:3,
ETHER:  Ethertype = 0800 (IP)
ETHER:
IP:   ----- IP Header -----
IP:
IP:   Version = 4
IP:   Header length = 20 bytes
IP:   Type of service = 0x00
IP:         xxx. .... = 0 (precedence)
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:         .... ..0. = not ECN capable transport
IP:         .... ...0 = no ECN congestion experienced
IP:   Total length = 92 bytes
IP:   Identification = 23638
IP:   Flags = 0x4
IP:         .1.. .... = do not fragment
IP:         ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 60 seconds/hops
IP:   Protocol = 6 (TCP)
IP:   Header checksum = 58a8
IP:   Source address = 192.168.4.37, 192.168.4.37
IP:   Destination address = 192.168.4.40, 192.168.4.40
IP:   No options
IP:
TCP:  ----- TCP Header -----
TCP:
TCP:  Source port = 34819
TCP:  Destination port = 1296 (SVP)
TCP:  Sequence number = 238443974
TCP:  Acknowledgement number = 3093970589
TCP:  Data offset = 32 bytes
TCP:  Flags = 0x18
TCP:        0... .... = No ECN congestion window reduced
TCP:        .0.. .... = No ECN echo
TCP:        ..0. .... = No urgent pointer
TCP:        ...1 .... = Acknowledgement
TCP:        .... 1... = Push
TCP:        .... .0.. = No reset
TCP:        .... ..0. = No Syn
TCP:        .... ...0 = No Fin
TCP:  Window = 32806
TCP:  Checksum = 0xc0c8
TCP:  Urgent pointer = 0
TCP:  Options: (12 bytes)
TCP:    - No operation
TCP:    - No operation
TCP:    - TS Val = 72913235, TS Echo = 349035521
TCP:
SVP:    ----- SVP Header -----
SVP:
SVP:    Version = 2
SVP:    Op = SVP_R_VL3_REQ
SVP:    Packet length = 24 bytes
SVP:    Id = 1244528640
SVP:    CRC = 884b3a41
SVP:
SVP:    Virtual network id = 4385813
SVP:    Type = SVP_VL3_IP
SVP:    VL3 Address = 10.51.50.8
SVP:

Comment by Former user
Created at 2019-01-17T01:35:25.017Z

For unknown ops, it just displays the hex value:

# ./snoop -i /tmp/svp-capture.snoop
  1   0.00000 192.168.4.37 -> 192.168.4.40 SVP V=2 OP=0xe ID=2016346112
  2   0.00527 192.168.4.40 -> 192.168.4.37 SVP V=2 OP=0xf ID=2016346112
  3   0.05533 192.168.4.37 -> 192.168.4.40 SVP C port=36110
  4   2.92492 192.168.4.37 -> 192.168.4.40 SVP V=2 OP=SVP_R_LOG_REQ ID=2033123328
  5   0.05782 192.168.4.40 -> 192.168.4.37 SVP R port=36110
  6   0.00360 192.168.4.40 -> 192.168.4.37 SVP V=2 OP=SVP_R_LOG_ACK ID=2033123328
  7   0.05354 192.168.4.37 -> 192.168.4.40 SVP C port=36110
  8   1.89904 192.168.4.37 -> 192.168.4.40 SVP V=2 OP=SVP_R_VL3_REQ ID=2049900544
  9   0.05373 192.168.4.40 -> 192.168.4.37 SVP R port=36110
 10   0.01047 192.168.4.40 -> 192.168.4.37 SVP V=2 OP=SVP_R_VL3_ACK ID=2049900544
 11   0.05668 192.168.4.37 -> 192.168.4.40 SVP C port=36110
# ./snoop -vi /tmp/svp-capture.snoop
ETHER:  ----- Ether Header -----
ETHER:
ETHER:  Packet 1 arrived at 19:40:3.60586
ETHER:  Packet size = 122 bytes
ETHER:  Destination = 90:b8:d0:a6:d7:93,
ETHER:  Source      = 0:25:90:f3:6:3,
ETHER:  Ethertype = 0800 (IP)
ETHER:
IP:   ----- IP Header -----
IP:
IP:   Version = 4
IP:   Header length = 20 bytes
IP:   Type of service = 0x00
IP:         xxx. .... = 0 (precedence)
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:         .... ..0. = not ECN capable transport
IP:         .... ...0 = no ECN congestion experienced
IP:   Total length = 108 bytes
IP:   Identification = 24313
IP:   Flags = 0x4
IP:         .1.. .... = do not fragment
IP:         ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 60 seconds/hops
IP:   Protocol = 6 (TCP)
IP:   Header checksum = 55f5
IP:   Source address = 192.168.4.37, 192.168.4.37
IP:   Destination address = 192.168.4.40, 192.168.4.40
IP:   No options
IP:
TCP:  ----- TCP Header -----
TCP:
TCP:  Source port = 36110
TCP:  Destination port = 1296 (SVP)
TCP:  Sequence number = 1805876386
TCP:  Acknowledgement number = 1761542120
TCP:  Data offset = 32 bytes
TCP:  Flags = 0x18
TCP:        0... .... = No ECN congestion window reduced
TCP:        .0.. .... = No ECN echo
TCP:        ..0. .... = No urgent pointer
TCP:        ...1 .... = Acknowledgement
TCP:        .... 1... = Push
TCP:        .... .0.. = No reset
TCP:        .... ..0. = No Syn
TCP:        .... ...0 = No Fin
TCP:  Window = 32806
TCP:  Checksum = 0x26fa
TCP:  Urgent pointer = 0
TCP:  Options: (12 bytes)
TCP:    - No operation
TCP:    - No operation
TCP:    - TS Val = 90175996, TS Echo = 184783148
TCP:
SVP:    ----- SVP Header -----
SVP:
SVP:    Version = 2
SVP:    Op = 0xe
SVP:    Packet length = 40 bytes
SVP:    Id = 2016346112
SVP:    CRC = 53a9d4fc
SVP:
SVP:

Comment by Jira Bot
Created at 2019-01-17T04:32:12.281Z

illumos-joyent commit a947aa5f9e3d25d6638e832f6ef7015d604e3a2e (branch master, by Jason King)

OS-7503 snoop(1m) should learn about SVP
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Approved by: Robert Mustacchi <rm@joyent.com>