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

[XrdHttp and XrdHttpTPC] Pass packet marking information from HTTP headers to the XRootD layer #2024

Closed
ccaffy opened this issue Jun 2, 2023 · 7 comments · Fixed by #2101
Assignees
Milestone

Comments

@ccaffy
Copy link
Contributor

ccaffy commented Jun 2, 2023

XRootD supports packet marking with UDP firefly: https://xrootd.slac.stanford.edu/doc/dev56/xrd_config.htm#_Toc135684345

This functionality works with XrootD. The user can pass the information about the experiment and its activity by specifying in the opaque data of a transfer the following key/value: scitag.flow=<experimentID><<6|<activityID> .

For HTTP TPC transfer, the user will pass these information via specific headers as described here: https://docs.google.com/document/d/1x9JsZ7iTj44Ta06IHdkwpv5Q2u4U2QGLWnUeN2Zf5ts/edit#heading=h.ksbp08p3u6lb

  • TransferFlowExperiment
  • TransferHeaderFlowExperiment
  • TransferFlowActivity
  • TransferHeaderFlowActivity

I believe I just need to pass the information coming from the headers to the xroot layer by appending scitag.flow=expe|activity ?

@ccaffy ccaffy self-assigned this Jun 2, 2023
@abh3
Copy link
Member

abh3 commented Jun 2, 2023 via email

@ccaffy
Copy link
Contributor Author

ccaffy commented Jun 5, 2023

Thanks, I'll back off then. Let's use this issue to track the progress of this topic.

@bbockelm
Copy link
Contributor

bbockelm commented Jun 5, 2023

@ccaffy - setting aside the question headers, I don't think the implementation is that simple once fireflies are requested.

For XrdHttp: the xrootd protocol handler only sees the requests to/from memory. I don't think it has enough information to create the fireflies -- the connection information is only known at the HTTP layer so the HTTP layer needs to be sending the fireflies.

For HTTP-TPC: Similar situation. The socket is only known to libcurl. You'd need the fireflies sent at the main loop handling the transfer.

So, while we're waiting on the resolution of the header values, you can probably still look at how to best construct the fireflies using the existing classes.

@abh3
Copy link
Member

abh3 commented Jun 5, 2023 via email

@bbockelm
Copy link
Contributor

bbockelm commented Jun 7, 2023

Actually, the original design would handle this

I don't understand this comment. Let's ignore the headers for a second -- how are you planning on implementing the fireflies / packet marking. None of the shared layers see the HTTP socket so, while we could reuse quite a bit of logic, there's custom handling and sending of firefly packets needed, right?

@xrootd-dev
Copy link

xrootd-dev commented Jun 8, 2023 via email

@ccaffy
Copy link
Contributor Author

ccaffy commented Nov 22, 2023

Done and merged via #2109

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

Successfully merging a pull request may close this issue.

5 participants