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 is to create 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.
As for the initiator, 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.
Code was committed to 10-CURRENT and will ship in 10.0-RELEASE. There is ongoing work on optimization and implementing RDMA (iSER) support.
The project is sponsored by the FreeBSD Foundation.