ng

US
2003/0131182
A1
homogeneous
(e.g.,
identical
device
types,
sizes,
or
con?gu
rations) as
Well
as
heterogeneous
(e.g.,
different
device
types,
siZes
or
con?gurations).
Data
may
be
read
from,
as
Well
as
Written
to,
various
portions
of
the
storage
devices
132-142
in
response
to
commands
sent
by
hosts
144
and
146.
Communication
among
the
storage
devices
and
hosts
is
accomplished
by
coupling
the
storage
devices
and
hosts
together
via
one
or
more
sWitches,
routers,
or
other
netWork
nodes
con?gured
to
perform
a
sWitching
function.
In
this
example,
sWitches
148, 150,
and
152
communicate
With
one
another
via intersWitch
links
154
and
156.
[0041]
As
indicated
above,
this
invention
pertains
to
“vir
tualiZation”
in
storage
netWorks.
Unlike
prior
methods,
virtualiZation
in
this
invention
is
implemented
through
the
creation
and
implementation
of
a
virtual
enclosure.
This
is
accomplished,
in
part,
through
the
use
of
sWitches
or
other
“interior”
netWork
nodes
of
a
storage
area
netWork
to
implement
the
virtual
enclosure.
Further,
the
virtualiZation
of
this
invention
typically
is
implemented
on
a
per
port
basis.
In other
Words,
a
multi-port
virtualiZation
sWitch
Will
have
virtualiZation
separately
implemented
on
one
or
more
of
its
ports.
Individual
ports
have
dedicated
logic
for
hand
ing
the
virtualiZation
functions
for
packets
or
frames
handled
by
the
individual
ports.
This
alloWs
virtualiZation
processing
to
scale
With
the
number
of
ports,
and
provides
far
greater
bandWidth
for
virtualiZation
than
can
be
provided
With
host
based
or storage
based
virtualiZation
schemes.
In
such
prior
art
approaches
the
number
of
connections
betWeen
hosts
and
the
netWork
fabric
or
betWeen
storage
nodes
and
the
netWork
fabric are
limited—at
least
in
com
parison
to
the
number
of
ports
in
the
netWork
fabric.
[0042]
In
a
speci?c
and
preferred
embodiment
of
the
invention,
the
virtualiZation
logic
is
separately
implemented
at
individual
ports
of
a
given
sWitch—rather
than
having
centraliZed
processing
for
all
ports
of
a
sWitch.
This
alloWs
the
virtualiZation
processing
capacity
to
be
closely
matched
With
the
exact
needs
of
the
sWitch
(and
the
virtual
enclosure)
on
a
per
port
basis.
If
a
central
processor
is
employed
for the
entire
sWitch
(serving
numerous
ports),
the
processor
must
be
designed/selected
to
handle
maximum
traffic
at
all
ports.
For
many
applications,
this
represents
extremely
high
pro
cessing
requirements
and
a
very
large/expensive
processor.
If
the
central
processor
is
too
small,
the
sWitch
Will
at
times
be
unable
to
keep
up
With
the
sWitching/virtualiZation
demands
of
the
netWork.
[0043]
VirtualiZation
may
take
many
forms.
In
general,
it
may
be
de?ned
as
logic
or
procedures
that
inter-relate
physical
storage
and
virtual
storage
on
a
storage
netWork.
Hosts
see
a
representation
of
available
physical
storage
that
is
not
constrained
by
the
physical
arrangements
or
alloca
tions
inherent
in
that
storage.
One
example
of
a
physical
constraint
that
is
transcended
by
virtualiZation
includes
the
siZe
and
location
of
constituent
physical
storage blocks.
For
example,
logical
units
as
de?ned
by
the
Small
Computer
System
Interface
(SCSI)
standards
come
in
precise
physical
siZes
(e.g.,
36
GB
and
72
GB).
VirtualiZation
can
represent
storage
in
virtual
logical
units
that
are
smaller
or
larger
than
the
de?ned
siZe
of
a
physical
logical
unit.
Further,
virtual
iZation
can
present
a
virtual
logical
unit
comprised
of
regions
from
tWo
or
more
different
physical
logical
units,
sometimes
provided
on
devices
from
different
vendors.
Preferably,
the
virtualiZation
operations
are
transparent
to
at
least
some
netWork
entities
(e.g.,
hosts).
Jul.
10,
2003
[0044]
In
some
general
Ways,
virtualiZation
on
a
storage
area
netWork
is
similar
to
virtual
memory
on
a
typical
computer
system.
VirtualiZation
on
a
netWork,
hoWever,
brings
far
greater
complexity
and
far
greater
?exibility.
The
complexity
arises
directly
from
the
fact
that
there
are a
number
of
separately
interconnected
netWork
nodes.
Virtu
aliZation
must
span
these
nodes.
The
nodes
include
hosts,
storage
subsystems,
and
sWitches
(or
comparable
netWork
traffic
control
devices
such
as
routers).
Often
the
hosts
and/or
storage
subsystems
are
heterogeneous,
being
pro
vided
by
different
vendors.
The
vendors
may
employ
dis
tinctly
different
protocols
(standard
protocols
or
proprietary
protocols).
Thus,
in
many
cases,
virtualiZation
provides
the
ability
to
connect
heterogeneous
initiators
(e.g.,
hosts
or
servers)
to
a
distributed,
heterogeneous
set
of
targets
(stor
age
subsystems),
enabling
the
dynamic
and
transparent
allocation
of
storage.
[0045]
Examples
of
netWork
speci?c
virtualiZation
opera
tions
include
the
folloWing:
RAID
0
through
RAID
5,
concatenation
of
memory
from
tWo
or
more
distinct
logical
units
of
physical
memory,
sparing
(auto-replacement
of
failed
physical
media),
remote
mirroring
of
physical
memory,
logging
information
(e.g.,
errors
and/or
statistics),
load
balancing
among
multiple
physical
memory
systems,
striping
(e.g.,
RAID
0),
security
measures
such
as
access
control
algorithms
for
accessing
physical
memory,
resiZing
of
virtual
memory
blocks,
Logical
Unit
(LUN)
mapping
to
alloW
arbitrary
LUNs
to
serve
as
boot
devices,
backup
of
physical
memory
(point
in
time
copying),
and
the
like.
These
are
merely
examples
of
virtualiZation
functions.
This
inven
tion
is
not
limited
to this
full
set
or
any
particular
subset
thereof.
[0046]
In
some
of
the
discussion
herein,
the
functions
of
virtualiZation
sWitches of
this
invention
are
described
in
terms
of
the
SCSI
protocol.
This
is
because
many
storage
area
netWorks
in
commerce
run
a
SCSI
protocol
to
access
storage
sites.
Frequently,
the
storage
area
netWork
employs
?bre
channel
(FC-PH
(ANSI
X3.230-1994,
Fibre
channel—
Physical
and
Signaling
Interface)
as a
loWer
level
protocol
and
runs
IP
and
SCSI
on
top
of
?bre
channel.
Note
that
the
invention
is
not
limited
to
any
of
these
protocols.
For
example,
?bre
channel
may
be
replaced
With
Ethernet,
In?niband,
and
the
like.
Further
the
higher
level
protocols
need
not
include
SCSI.
For
example,
this
may
include
SCSI
over
FC,
iSCSI
(SCSI
over
IP),
parallel
SCSI
(SCSI
over
a
parallel cable),
serial
SCSI
(SCSI
over
serial
cable,
and
all
the
other
incarnations
of
SCSI.
[0047]
Because
SCSI
is
so
Widely
used
in
storage
area
netWorks,
much
of
the
terminology
used
herein
Will
be
SCSI
terminology.
The
use
of
SCSI
terminology
(e.g.,
“initiator”
and
“target”)
does
not
imply
that
the
describe
procedure
or
apparatus
must
employ
SCSI.
Before
going
further,
it
is
Worth
explaining
a
feW
of
the
SCSI
terms
that
Will
be
used
in
this
discussion.
First
an
“initiator”
is
a
device
(usually
a
host
system)
that
requests
an
operation
to
be
performed
by
another
device.
Typically,
in
the
context
of
this
document,
a
host
initiator
Will
request
a
read
or
Write
operation
be
performed
on
a
region
of
virtual
or
physical
memory.
Next,
a
“target”
is
a
device
that
performs
an
operation
requested
by
an
initiator.
For
example,
a
target
physical
memory
disk
Will
obtain
or
Write
data
as
initially
requested
by
a
host
initiator.
Note
that
While
the
host
initiator
may
provide
instructions
to
read
from
or Write
to
a
“virtual”
target
having
a
virtual