YARP 1.1 is here with new requested reverse proxy features

Sam Spencer

We are pleased to announce that YARP 1.1 has been released to nuget.org. YARP 1.1 is an incremental release, adding some commonly requested features since the 1.0 release in November.

What is YARP?

YARP is an open source project to create a highly customizable reverse proxy built on the Microsoft .NET platform. To learn more, see the GitHub repo at https://github.com/microsoft/reverse-proxy or the 1.0 Announcement post.

What’s new in 1.1?

  • Zero Byte Reads – This is a perf optimization which is especially valuable for proxying web socket and gRPC streams. A zero byte read is used to detect if data is waiting on the stream, and only then is a memory buffer allocated for the reads. This improves the memory scalability when handling large numbers of streaming requests which may be idle.

  • Multi-value header matching – Header matching rules for routes now support headers with multiple values, or multiple instances of the same header name.

  • HTTP/3 Support – On .NET 6, YARP supports inbound and outbound requests using HTTP/3. This is dependent on enabling the HTTP/3 functionality for .NET 6, which is a preview feature.

  • Multiple configuration sources – YARP configuration can now be loaded from multiple sources, merging multiple route and cluster lists together. The sources can be a mix of config files and/or code-based providers, providing more flexibility with how dynamic configuration is handled.

  • Http.Sys delegation – If YARP is hosted by Http.sys, then it can route requests to other processes on the same machine also using Http.Sys.

  • APIs for Middleware – Added APIs for middleware giving them real-time access to clusters and routes, and the ability to modify the cluster after routing has already run. These are the key building blocks for creating custom A/B testing and rolling upgrade systems.

  • Documentation – In addition to documentation for the features above, articles have been added for configuration filters, Lets Encrypt and Web Socket support. All the docs have been edited with a view to improving them for those not intimately familiar with the details of ASP.NET Core.

Join the ASP.NET Community Standup

On May 3rd at 10AM Pacific, the team will join the weekly ASP.NET Community Standup to discuss all things YARP 1.1!

Contributors

In addition to the contributions from the YARP team members, we are very grateful to have received a number of PRs and issues from the community. Thank you to those who contributed PRs to make this release happen – @dpbevin, @specialforest, @kahbazi, @stanvanrooy, @NGloreous, @ericmutta, @Steve-Fenton, @illay1994, @macsux, @rwkarg, @horse315, @kkbruce, @mmitche, @damienbod, @tomaustin700, @Henfau, @jerry-shao.

Closing

Over the next couple of weeks we will be planning the feature set for the next YARP release. One of the big areas of investment is Kubernetes integration being led by @dpbevin.

We really value the feedback and questions in the GitHub issues and discussions, so please keep them coming.

1 comment

Leave a comment

  • John King

    I’m wonder that did ms realized that .net’s library(.dll) can not provide it’s functions to anyother language than .net lanauge(C#,F#) ?
    it’s good to see such a libaray avaialbe on nuget, but if ms want more people to use your “Yarp” , then you should lean from Java eco-system like (zipkin, Elasticsearch,Spark,Kafka).
    for example :
    1. Yarp can be a full functional revers proxy software (need better configuration support)
    2. FASTER can be a software that like redis but with cross-platform support

    we really need a great software that build with C# to be a brank of .net, otherwise .net’s community is dying !