Sample Header Ad - 728x90

Network block device sharing over sctp/dccp

0 votes
1 answer
89 views
As we work with a local drive, we create read and write requests to the backend block devices. In general, they can not be and should not be fulfilled in their issue order. For example, write requests can happen with a delay (typically, in free time as the write cache is too big), and also read requests can be served much more quickly from the page cache. Thing are becoming much more problematic if we work with a network shared block device. The 3 ways I know: * nbd, alias network block device * iscsi, that is scsi protocol over a tcp socket * and we can also use ordinary files mounted on an nfs or cifs directory. However, things are not so simple over a network connection. That happens typically over tcp, and tcp serializes the communication, do we want or not. Thus, concurrent requests over a tcp-shared network block device, must be fulfilled as they arrived over the network. That is not always the correct way to do, not even in the case of today with broadly used SSD backends, simply because cached memory pages could be served on the spot. In my opinion, the obvious solution would be to use some more advanced protocol to handle correctness and giving more freedom over the ordering of the requests. That could be maybe sctp or dccp. They are well developed protocols in the linux kernel, and they make possible to reorder the answers, compared to their issue timestamp or network arrival order. Does such a thing exist? As far I can see, * nbd is tcp-only * nfs can be also udp, but that is sub-optimal * iscsi is also tcp-only. Does some way exist to use some more advanced protocol for the network sharing of a block device?
Asked by peterh (10459 rep)
Oct 16, 2024, 02:37 PM
Last activity: Oct 17, 2024, 01:17 AM