tcpdump mailing list archives
Re: pcap DLT request for virtio-scsi SCSI transport
From: Guy Harris <guy () alum mit edu>
Date: Thu, 26 Apr 2012 12:13:18 -0700
On Mar 26, 2012, at 2:17 AM, Cong Meng wrote:
I drafted some description. Should I make an HTML version?
Yes, matching the style of the other ones, once the issues that are raised are resolved. (Of course, for the diagrams, we just cheat and use <pre>.)
LINKTYPE_VIRTIO_SCSI Packet structure +---------------+ | Pack Type | | (4 Octets) | +---------------+ | Tag | | (4 Octets) | +---------------+ | Initiator | | (4 Octets) | +---------------+ | Target | | (4 Octets) | +---------------+ | Lun | | (4 Octets) | +---------------+ | CDB Size | | (4 Octets) | +---------------+ | Sense Size | | (4 Octets) | +---------------+ | Header Size | | (4 Octets) | +---------------+ | Data Size | | (4 Octets) | +---------------+ | | | Header | | | +---------------+ | | | Data | | | +---------------+ Description Pack Type: REQ_CMD 0x000 REQ_TMF 0x010 REQ_ANQ 0x011 REQ_ANS 0x012 RESP_CMD 0x100 RESP_TMF 0x110 RESP_ANQ 0x111 RESP_ANS 0x112
So what do the packet types mean? Are they:
REQ_CMD SCSI command
RESP_CMD SCSI command response
REQ_TMF task management function
RESP_TMF task management function response
REQ_ANQ asynchronous notification query
RESP_ANQ asynchronous notification query response
REQ_ANS asynchronous notification subscription
RESP_ANS asynchronous notification subscription response?
And do they all have the same contents, with the same fields filled in, or are some fields not used for some packet
types?
Tag: The tag to match a response to corresponding request.
I.e., both requests and responses have tag values, and the tag values for a given request and its response are the same?
CDB Size: The maximal size of CDB. Sense Size: The maximal size of Sense data.
So is that the maximum size or the actual size? The description of a SCSI command request is
struct virtio_scsi_req_cmd {
// Read−only
u8 lun[8];
u64 id;
u8 task_attr ;
u8 prio;
u8 crn;
char cdb [ cdb_size ] ;
char dataout [ ] ;
// Write−only part
u32 sense_len ;
u32 residual ;
u16 status_qualifier ;
u8 status ;
u8 response ;
u8 sense [ sense_size ];
char datain [ ] ;
};
so would "CDB Size" be the same as cdb_size and "Sense Size" be the same as sense_size?
Header Size: The size of the header of a request/response. Data Size: The size of Data-Out or Data-In. Header: The request or response header. This header is described in Appendix H of the virtio specification: http://ozlabs.org/~rusty/virtio-spec/virtio-0.9.4.pdf
Are the headers:
REQ_CMD, RESP_CMD struct virtio_scsi_req_cmd
REQ_TMF, RESP_TMF struct virtio_scsi_ctrl containing struct virtio_scsi_ctrl_tmf
REQ_ANQ, RESP_ANQ struct virtio_scsi_ctrl containing struct virtio_scsi_ctrl_an
REQ_ANS, RESP_ANS struct virtio_scsi_ctrl containing struct virtio_scsi_ctrl_an
Or is the header for a REQ_xxx the "Read-only part" and for a RESP_XXX the "Write-only part"?
And do the headers include the LUN, given that the packet structure also includes a LUN - although the packet
structure's LUN is 4 bytes rather than 8 bytes?
Do they include the type field in struct virtio_scsi_ctrl, given that the type field seems to be VIRTIO_SCSI_T_TMF for
REQ_TMF/RESP_TMF, VIRTIO_SCSI_T_AN_QUERY for REQ_ANQ/RESP_ANQ, and VIRTIO_SCSI_T_AN_SUBSCRIBE for REQ_ANS/RESP_ANS, so
it's redundant?
Data: Data-Out or Data-In block.
The request description above includes "dataout" and "datain" fields; are those absent from the Header field and, instead, contained in the Data field? - This is the tcpdump-workers list. Visit https://cod.sandelman.ca/ to unsubscribe.
Current thread:
- Re: pcap DLT request for virtio-scsi SCSI transport Guy Harris (Apr 26)
