An overview on how the native iSCSI stack works can be found in the FreeBSD Handbook, at http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-iscsi.html.
Aim of this project was to create a new kernel-based iSCSI target and initiator. For the target side, there are two main components:
ctld(8), the userspace daemon, responsible for handling configuration, listening for incoming connections, performing authentication and iSCSI parameter negotiation, handling discovery sessions, and, for normal sessions, handing off connections to the kernel after the iSCSI Login phase finishes successfully,
- iSCSI frontend to CAM Target Layer, which handles Full Feature phase.
For the initiator side, there are three:
iscsid(8), which performs connection, Login Phase, and discovery,
iscsictl(8), administrative utility to add, show and remove iSCSI sessions; it also handles configuration file, the syntax is the same as with previous initiator (iscsi.conf(5)),
iscsi(4), the kernel part, which handles Full Feature phase.
All this code was committed to 10-CURRENT and first shipped in 10.0-RELEASE. A number of enhancements, including performance improvements, will appear in 10.1-RELEASE.
The project is sponsored by the FreeBSD Foundation.