Solved FreeBSD iscsi Target to Windows Server multipath configuration notes

As it took me the better part of the evening to sort out how to get Windows Server to import an iSCSI volume from FreeBSD with properly working MPIO, please allow me to document my woes

On the target side (FreeBSD 11.1) I configured two gigabit interfaces as 172.16.0.1/24 and 172.16.1.1/24 (different networks), a zfs zvol as /dev/zvol/storage/ntfs , then created /etc/ctl.conf as follows

Code:
portal-group pgroup0 {
    discovery-auth-group no-authentication
    listen 172.16.0.1
}

portal-group pgroup1 {
    discovery-auth-group no-authentication
    listen 172.16.1.1
}

target iqn.2018-03.deiriarte.cl:target01 {
    alias "target01"
    auth-group no-authentication
    portal-group pgroup0
    portal-group pgroup1
    lun 0 {
        path /dev/zvol/storage/ntfs
        blocksize 4096
        size 2560G
    }
}

And enabled ctld(8) as per handbook. That was the easy part.

On the Windows Server 2008R2 client (initiator side) I have two interfaces, 172.16.0.2/24 and 172.16.1.2/24 connected to the above.
Now, it took me a while to discover that, while the iSCSI initiator GUI has several multipath options, none of them worked as I expected them, that is, load-balancing I/O through both ethernet adapters. Also, if i manually configured two sessions to the FreeBSD box, I ended up with two mapping to the same LUN on the Windows initiator.

It turns out that while Windows Server is fully MPIO capable, the required software is not installed by default. After following this advice I could properly configure MPIO on the initiator side, and, as expected, the throughput nearly doubled. Apparently the same is required on more modern versions of Redmond's server OS as well
 
Back
Top