Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking issue: mplex deprecation #553

Open
3 of 8 tasks
marten-seemann opened this issue Jun 15, 2023 · 12 comments
Open
3 of 8 tasks

Tracking issue: mplex deprecation #553

marten-seemann opened this issue Jun 15, 2023 · 12 comments

Comments

@marten-seemann
Copy link
Contributor

marten-seemann commented Jun 15, 2023

Things left to do:

@achingbrain Anything left to do on the JS side?
@mxinden @thomaseizinger Anything left to do on the Rust side? Feel free to add to above list.

@Menduist
Copy link
Contributor

Menduist commented Jun 15, 2023

Eth consensus still specifies mplex as a "must have" multiplexer: https://github.com/ethereum/consensus-specs/blob/9e50c74a372c0d8349764ef411b22cfa71f2a656/specs/phase0/p2p-interface.md?plain=1#L164

And some eth2 clients still don't have a prod-ready yamux (nimbus doesn't, last time I talked to lodestar they didn't, and I think teku doesn't)

edit: apparently jvm-libp2p barely supports yamux

@dapplion
Copy link

And some eth2 clients still don't have a prod-ready yamux (nimbus doesn't, last time I talked to lodestar they didn't, and I think teku doesn't)

Lodestar latest stable supports mplex only but we have a complete implementation of yamux in heavy testing for the last 1-2 months. Hopefully we can rollut soonish

@achingbrain
Copy link
Member

achingbrain commented Jun 15, 2023

Anything left to do on the JS side?

  • Add a deprecation notice to the mplex readme
  • Deprecate the mplex module on npm

People can still configure js-libp2p with mplex and continue to use it if they wish, they'll just get a warning when they do an npm install.

@marten-seemann
Copy link
Contributor Author

Eth consensus still specifies mplex as a "must have" multiplexer: https://github.com/ethereum/consensus-specs/blob/9e50c74a372c0d8349764ef411b22cfa71f2a656/specs/phase0/p2p-interface.md?plain=1#L164

Thank you @Menduist, I wasn't aware. What would be the process to get that spec changed?

@Menduist
Copy link
Contributor

The first step would be for every client to have yamux enabled by default (which requires stable support in their underlying libp2ps, and proper testing)

Once that is done & we are confident in all yamuxes, we can update the specs to remove mandatory support

@thomaseizinger
Copy link
Contributor

@mxinden @thomaseizinger Anything left to do on the Rust side?

Nope. It is already "annoying" to use because you need to add a separate dependency.

A next step could be to remove it from the mono-repo and add it to a community maintained one for people that still want to use it.

@marten-seemann
Copy link
Contributor Author

Kubo removed mplex support: ipfs/kubo#9958.

@BigLep
Copy link
Contributor

BigLep commented Aug 22, 2023

Per ipfs/kubo#10069, Kubo is actually going to disable mplex by default for the next Kubo release and then followup with removing mplex in the next release.

I know the woes of mplex have been decried many times before. Is there a canonical place that we point to for explaining why not to use mplex. I think it would be good to link to that from this issue (and others like ipfs/kubo#10069)

@p-shahi
Copy link
Member

p-shahi commented Aug 23, 2023

Per ipfs/kubo#10069, Kubo is actually going to disable mplex by default for the next Kubo release and then followup with removing mplex in the next release.

I know the woes of mplex have been decried many times before. Is there a canonical place that we point to for explaining why not to use mplex. I think it would be good to link to that from this issue (and others like ipfs/kubo#10069)

When libp2p/blog#106 is done we can point users to this blog post. Afaik there's no other place other than https://docs.libp2p.io/concepts/multiplex/mplex/#drawbacks atm

bors bot pushed a commit to sigp/lighthouse that referenced this issue Aug 24, 2023
## Issue Addressed

N/A

## Proposed Changes

In #4431 , we seem to have removed support for mplex as it is being deprecated in libp2p. See libp2p/specs#553 . Related rust-libp2p PR libp2p/rust-libp2p#3920
However, since this isn't part of the official [consensus specs](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#multiplexing), we still need to support mplex. 

> Clients MUST support [mplex](https://github.com/libp2p/specs/tree/master/mplex) and MAY support [yamux](https://github.com/hashicorp/yamux/blob/master/spec.md).

This PR adds back mplex support as before.
bors bot pushed a commit to sigp/lighthouse that referenced this issue Aug 24, 2023
## Issue Addressed

N/A

## Proposed Changes

In #4431 , we seem to have removed support for mplex as it is being deprecated in libp2p. See libp2p/specs#553 . Related rust-libp2p PR libp2p/rust-libp2p#3920
However, since this isn't part of the official [consensus specs](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#multiplexing), we still need to support mplex. 

> Clients MUST support [mplex](https://github.com/libp2p/specs/tree/master/mplex) and MAY support [yamux](https://github.com/hashicorp/yamux/blob/master/spec.md).

This PR adds back mplex support as before.
bors bot pushed a commit to sigp/lighthouse that referenced this issue Aug 24, 2023
## Issue Addressed

N/A

## Proposed Changes

In #4431 , we seem to have removed support for mplex as it is being deprecated in libp2p. See libp2p/specs#553 . Related rust-libp2p PR libp2p/rust-libp2p#3920
However, since this isn't part of the official [consensus specs](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#multiplexing), we still need to support mplex. 

> Clients MUST support [mplex](https://github.com/libp2p/specs/tree/master/mplex) and MAY support [yamux](https://github.com/hashicorp/yamux/blob/master/spec.md).

This PR adds back mplex support as before.
@thomaseizinger
Copy link
Contributor

Afaik there's no other place other than docs.libp2p.io/concepts/multiplex/mplex/#drawbacks atm

I guess an even better phrasing for this would be: "If you need a dedicated muxer, yamux should be used. Overall, QUIC should be preferred over TCP"?

@mxinden
Copy link
Member

mxinden commented Aug 24, 2023

Is there a canonical place that we point to for explaining why not to use mplex.

Afaik there's no other place other than https://docs.libp2p.io/concepts/multiplex/mplex/#drawbacks atm

Other past discussion: #402

@p-shahi
Copy link
Member

p-shahi commented Aug 24, 2023

Afaik there's no other place other than docs.libp2p.io/concepts/multiplex/mplex/#drawbacks atm

I guess an even better phrasing for this would be: "If you need a dedicated muxer, yamux should be used. Overall, QUIC should be preferred over TCP"?

good point @thomaseizinger pushing change now

Woodpile37 pushed a commit to Woodpile37/lighthouse that referenced this issue Jan 6, 2024
N/A

In sigp#4431 , we seem to have removed support for mplex as it is being deprecated in libp2p. See libp2p/specs#553 . Related rust-libp2p PR libp2p/rust-libp2p#3920
However, since this isn't part of the official [consensus specs](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#multiplexing), we still need to support mplex.

> Clients MUST support [mplex](https://github.com/libp2p/specs/tree/master/mplex) and MAY support [yamux](https://github.com/hashicorp/yamux/blob/master/spec.md).

This PR adds back mplex support as before.
Woodpile37 pushed a commit to Woodpile37/lighthouse that referenced this issue Jan 6, 2024
N/A

In sigp#4431 , we seem to have removed support for mplex as it is being deprecated in libp2p. See libp2p/specs#553 . Related rust-libp2p PR libp2p/rust-libp2p#3920
However, since this isn't part of the official [consensus specs](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#multiplexing), we still need to support mplex.

> Clients MUST support [mplex](https://github.com/libp2p/specs/tree/master/mplex) and MAY support [yamux](https://github.com/hashicorp/yamux/blob/master/spec.md).

This PR adds back mplex support as before.
@dhuseby dhuseby moved this to Triage in libp2p Specs May 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Triage
Development

No branches or pull requests

8 participants