Skip to content

A93: xDS ExtProc Support#484

Open
markdroth wants to merge 43 commits into
grpc:masterfrom
markdroth:xds_ext_proc
Open

A93: xDS ExtProc Support#484
markdroth wants to merge 43 commits into
grpc:masterfrom
markdroth:xds_ext_proc

Conversation

@markdroth

Copy link
Copy Markdown
Member

No description provided.

@markdroth markdroth marked this pull request as ready for review September 18, 2025 22:50
Comment thread A93-xds-ext-proc.md Outdated
Comment thread A93-xds-ext-proc.md Outdated
Comment thread A93-xds-ext-proc.md Outdated
@markdroth

Copy link
Copy Markdown
Member Author

@kannanjgithub @eshitachandwani @rishesh007 FYI, it looks like we don't actually have a use-case for the mode override feature, and the logic for that is a little ugly, so I've removed it from the design. We can consider adding it in the future if/when we encounter a use-case for it.

Comment thread A93-xds-ext-proc.md
Comment thread A93-xds-ext-proc.md Outdated
Comment thread A93-xds-ext-proc.md
Comment thread A93-xds-ext-proc.md
Comment thread A93-xds-ext-proc.md
Comment thread A93-xds-ext-proc.md
Comment thread A93-xds-ext-proc.md
Comment thread A93-xds-ext-proc.md Outdated
Comment thread A93-xds-ext-proc.md
Comment thread A93-xds-ext-proc.md Outdated
control back to the sender) until its corresponding write has passed
flow control. For example, for path (1) above, when reading client
messages from downstream, the filter will not release flow control back
to the downstream until its write to the ext_proc sidestream has cleared

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does until its write to the ext_proc sidestream has cleared flow control. mean? Does it mean until we have written that message to side stream or does it mean until we have received window update for that message?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't actually have to have it fully written to the sidestream, but we do have to have allocated enough flow control to send it at both the ext_proc layer and the HTTP/2 layer.

I've attempted to clarify the wording here.

Comment thread A93-xds-ext-proc.md
DATA frames as HTTP/2 does, which would allow making incremental
progress.

The initial window sizes for all four paths are set by the filter in

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where are FlowControlInit initial window sizes to be set by the filter taken from? Should we add them to GrpcService config?

@markdroth markdroth Jun 11, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think each data plane implementation needs to figure this out on its own. A simple implementation would be to just use hard-coded values. But data planes may ultimately want some mechanism to dynamically tune these values when they are under memory pressure. In C-core, we plan to eventually use our ResourceQuota mechanism to do that.

I don't think it's appropriate to set these values from the control plane, because the control plane cannot know how much memory pressure a given data plane is under.

Comment thread A93-xds-ext-proc.md
send a window update that reduces the window, but it must be prepared
to handle any data that the sender has already sent.

As the receiver reads data, it must send back a window update telling

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The design doc says : The receiver SHOULD reset the GRPC stream with a protocol error otherwise. Should we add that here too? Also what does it mean to reset the stream? Is it equivalent to the stream failing with non-OK status or something else?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants