Coder Social home page Coder Social logo

Comments (8)

socketpair avatar socketpair commented on June 19, 2024

(Sorry, I have very old laptop, so I can't edit messages)
Also, HTTP/2 reduces RTT, has internal PING, allows to read as a stream, say, 42 GB without blocking any other operations, has dependency tree of requests and priorities.

from nbd.

abligh avatar abligh commented on June 19, 2024

from nbd.

socketpair avatar socketpair commented on June 19, 2024

No, HTTP/2 is completely different protocol. Yes it’s slightly related to HTTP/1.1. But actually, it’s generic stream multiplexer.

For example, two simultaneous write commands should look like two parallel streams inside one TCP-connection, multiplexed by HTTP/2. So, I don't mean wrapping current protocol in HTTP/2. I mean implementing same semantic as in current NBD, but using framing from HTTP/2. Just like gRPC does.

Do you familiar with details of HTTP/2 ?

from nbd.

abligh avatar abligh commented on June 19, 2024

from nbd.

socketpair avatar socketpair commented on June 19, 2024

Well, I use NBD with qemu-nbd to write qcow2 images from CEPH. In order to increase performance, I read from CEPH with 10 streams in parallel. In my code, it writes to NBD in parallel in one connection. And I need to wait while really big chunk is written to socket (4 MB) before small chunk from another stream can be written. 4 MB is the standard chunk in RBD. And if there are 9 big chunks in queue, everyting is worth.

Yes, I can open 10 NBD connections, but what is purpose of multiplexing in current NBD then?

from nbd.

socketpair avatar socketpair commented on June 19, 2024

What does HTTP/2 framing actually buy you?

Because server can limit window size for each stream (i.e. each IO request) and allow another IO to be submitted.

from nbd.

yoe avatar yoe commented on June 19, 2024

The trouble with framing NBD over HTTP/2 is that you'd have to implement HTTP/2 in the kernel. Not sure that's a terribly good idea; it requires a lot of baggage that we really don't need for NBD.

There are some other, lower layer, protocols such as SCTP, which might be worthwhile to layer NBD on top of; but HTTP/2 doesn't seem like a very good idea.

from nbd.

yoe avatar yoe commented on June 19, 2024

Additionally, once structured replies have been implemented, a server should be able to multiplex multiple read replies in the same server, too.

from nbd.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.