|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: Comments to Comments!
My turn to reply to both Julian and Costa - apologies
for the delay involved. I hope folks have a chance
to read this prior to Adelaide, and I apologize for
the fact that both the timing (last week of the
calendar quarter) and distance from here make it
impossible for me to attend the BOF in Adelaide.
This email includes input from EMC folks in addition
to yours truly.
-- DNS:
> Parties who wish to use IP addresses for extra reliability may encode the
> IP addresses in the target names (e.g. 10.0.4.5/dvd). After all, domain
> names can represent IP addresses. These type of domain names do not
> require DNS for resolution.
Keep in mind that the storage side of this is a closed box that may not be
fully configurable. Allowing the storage to use hostnames may force the
initiator to perform host name resolution whether it wants to or not, and
v.v.
Host name resolution issues should be confined to hosts, with the storage
kept out of this. This objection is primarily about Open Data Connection;
the use of DNS names may be defensible for third party copy. Moving to
a combined data/control connection model would go a long way
towards resolving this.
> It was felt that we should be completely independent of IP addresses
> because of firewall and IP masquerading issues with setting up new TCP
> connections. IP addresses /can/ be used, but only in dotted decimal
> notation.
But this doesn't solve the fundamental problem with NAT/NAPT (of which IP
masquerade is an example) because there's no way of knowing whether
the namespaces and conventions for name resolution match on both sides
of the NAT/NAPT. For example, if I pass "foo" as an identifier, it may
resolve
to foo.emc.com here and foo.eng.cisco.com there - FQDNs eliminate this
simple example but cause other problems because DNS need not be a
globally uniform namespace - in general one is now at the mercy of all
sorts of peculiar DNS configuration oddities. Non-DNS resolution
mechanisms are not a magic cure - different YP/NIS domains and
out of sync /etc/hosts files are capable of causing problems. OTOH,
the use of a combined control/data connection, and avoiding passing
endpoint addresses in the payload makes this problem vanish, except for
Third Party Copy, which is a much more involved story that probably
requires a discussion of ALGs and some serious SHOULD NOTs.
The notion of passing IP addresses as text strings reproduces one of the
most irritating (in 20/20 hindsight) design mistakes of ftp. The problem is
that remapping an IP address may change the length of the text string,
causing all sorts of complications (e.g., what if the packet is at MTU and
the string gets longer?). This won't work in a NAT/NAPT, and makes writing
an ALG to put in such a box unnecessarily painful.
> On the plus side, domain names decouple the iSCSI protocol from the
> underlying addressing architecture. The potential deployment of IPv6 will
> not require any changes to the iSCSI protocol.
Good Grief! Costa can't be serious about this as a reason. Designing
a variable length address field that accommodates IPv4 and IPv6 addresses
is so easy, .. and besides TCP requires no changes for IPv6 and it has
no clue about host names.
-- Parameter negotiation
> An implementation can ignore all free-form text/value pairs and still
operate just fine.
Provided that all the defaults are acceptable. For example, Section 3.7
says:
In order to allow write operations without RTT, the initiator and
target must have agreed to do so by both sending the AllowNoRTT:yes
key-pair attribute to each other (either during Login or through
the Text Command/Response mechanism).
In this case, the default (RTT required on write) appears to be correct, the
bad news is that
implementations that want to negotiate it away buy into the text processing
by comparison to
the small number of bits that are negotiated in FCP. One of the more
important defaults that
must be accepted is No Authentication, but I think the key:value pairing is
an ok way to
support authentication - I'm concerned that it's overkill for the small
number of bits that SCSI
needs to negotiate.
In general, this sort of arbitrary extensibility can be both a virtue and a
vice because while
extensions don't require on-the-wire format changes, they do require
complicated rules
about what key:value pairs are supposed to be in which message and how to
deal with
situations in which some of them are missing.
-- CRC
> A CRC at the TCP layer or higher?
Higher. The read and write data need to be covered by a real CRC. TCP and
IP checksums are
too weak to be acceptable, and routers strip/regenerate layer 2 checksums
leaving no CRC to
cover corruption in the router. Restricting the CRC to data only avoids any
requirement that an ALG
recalculate it, as CRCs are much more difficult to adjust than the 1's
complement TCP and
IP checksums.
-- Ping
> > * What value does the ability to do an iSCSI ping add to the existing
> > ability to do an ICMP ECHO? If little or none, this should be omitted,
see
> > section 3.15.
>
> It makes sure the iSCSI device server is still alive and kicking.
I'm not sure about this one, as a SCSI Inquiry command seems to do about
the same thing, and verifies that the iSCSI engine can actually do something
SCSI, as opposed to just answer a ping. One complication is that Inquiry
can return a check condition that requires further action, in contrast to a
self-contained ping.
-- Combined control and data connections
> If we multiplex LUNs (as we do in the current draft) keeping to a short
TCP
> frame will leave as open to all sorts of troubles (possible deadlocks) due
> to the limited TCP window and our lack of control over the data source and
> sink. Separating the control and data stream we could resort to selective
> resets to get out of trouble - while with a common connection we might
have
> to resort to radical means (e.g., closing connections).
Multiplexing LUNs is the right decision to avoid massive proliferation of
TCP session
state. Separating the control and data streams is not the only way out of
"all sorts of troubles". With combined control and data connections,
holding
another control connection open works for selective resets, with the
possible
exception of Abort Task (which may have to be issued on the connection that
the task was initiated on).
> In addition in a "permissive" environment (like a video server) we might
> require CRC on the control connection while leaving the data connections
up
> to the user.
But there's more than enough flexibility to negotiate this behavior. In any
case,
EMC lives in a part of the world where omitting CRCs is a generally bad
idea,
even for video data.
-- Killing all I/Os
There are two important cases here. In the first case, if the control
connection times
out and closes (or closes for any other reason), then clearly all I/Os have
to be killed.
The problem of concern is in the second case: opening up a new control
connection
CAUSES the old one to be closed as a side effect. That seems unnecessary,
especially
because resets of various forms can be issued down the new connection to
cause the device
to clean up and get into a known state. This interacts with the issue
above about
combining data/control onto one connection and allowing multiple connections
between
an initiator and responder pair.
-- Target Name from Initiator
> The target can ignore any key:value pairs sent by the initiator, so it
need
> not receive its name from the initiator. This feature is useful in case
the
> target is actually a front end for many machines and/or disks, in which
> case the initiator can specify to which target it really wants to interact
> with.
I wonder if going there is a good idea, vs. something like a front end
simply exporting each machine and/or disk on a different TCP port.
The problem with handing the target its address inband is that the
connection address no longer fully specifies what the initiator is
talking to, and that seems wrong.
--David
---------------------------------------------------
David L. Black, Senior Technologist
EMC Corporation, 42 South St., Hopkinton, MA 01748
+1 (508) 435-1000 x75140, FAX: +1 (508) 497-6909
black_david@emc.com Cellular: +1 (978) 394-7754
---------------------------------------------------
Home Last updated: Tue Sep 04 01:08:16 2001 6315 messages in chronological order |