This document describes iSCSI implementations for the Linux operating system and BSD lineage.
If you aren't familiar with iSCSI technology, try to imagine that you can replace stiff parallel SCSI cable with handy Ethernet cable. In short, iSCSI encapsulates SCSI protocol into the IP transport protocols and carries packages over IP networks. If you want to know more, here is RFC 3270.
We have several options under an open source license.
If you are looking for an initiator implementation, I can say that the majority of iSCSI storage system vendors guarantee their storage systems to work with sfnet initiator instead of offering their own Linux initiator implementations.
If you are looking for a target implementation, an iSCSI storage system, it's tricky. An UNH target and an Ardis target might work, but neither target has been in production use in my opinion. So I decided to start to write another implementation.
Initially, this was implemented for a Cisco SN 5400 Series Storage Router and then was GPLed. This implementation is very stable and was considered as the standard iSCSI initiator implantation (it was very close to the mainline inclusion). It is still maintained, however, no more development. Some distributions are shipped with this implementation.
Note that linux-iscsi version 3.X (for 2.4 kernels) and 4.X (for 2.6 kernels) refer to sfnet and linux-iscsi version 5.X does not.
Finally, we have an iSCSI initiator implementation in mainline (this implementation will be included in 2.6.15). As compared with sfnet, it is still less stable slightly, however, it will be improved.
linux-iscsi version 5.x refers to open-iscsi (don't confuse it with another linux-iscsi, sfnet initiator).
This implementation had been distributed with PyX Technologies, Inc storage systems (has been acquired by SBE, Inc). They GPLed the code for mainline inclusion and failed.
They claims that it supports Error Recovery Level 2 (ERL2), however, GPLed versions only support ERL0 like most other iSCSI initiator implementations.
This is developed by UNH and HP people. The target implementation runs in kernel mode.
Here are a few things I know about it.
The target implementation runs in user mode. It seems that this implementation has been maintained no longer.
It runs in the kernel space except for authentication. It seems that this implementation has been maintained no longer.
This implementation is often referred to IET. I've been the maintainer and written the greater part of the code. So I know many things about this project.
Some brave people seem to use it in production use. Novell SUSE Linux 10 includes it.
I heard that FreeBSD developers were interested in porting open-iscsi initiator. However, it seems that they started from scratch and the development is still in an early stage.
Bell Labs has a FreeBSD initiator implementation that runs in user mode. I heard somewhere that they are modifying the implementation to make it run in kernel mode.
Wasabi Systems offers iSCSI solutions that enable you to build an iSCSI storage system by using NetBSD.
There seems to be no iSCSI working implementations in OpenBSD.