Giter VIP home page Giter VIP logo

lk_onload_stub's Introduction

Linux kernel stub for Onload network APIs

Implement a subset of Onload extensions to be able to run Onload applications on a Linux kernel.

This library is a stub: it exports the symbols to be able to run unmodified binaries, but it does not necessarily implement the original behavior.

Supported Features

MSG_ONEPKT

Linux recv, recvfrom, recvmsg, recvmmsg all support passing this flag, for both TCP and UDP sockets.

SO_TIMESTAMPING: raw hardware timestamps

Support requesting SOF_TIMESTAMPING_RAW_HARDWARE requests even on devices that do not implement this feature.

Intercept setsockopt SO_TIMESTAMPING requests to rewrite as a request for software timestamps.

Intercept recvmsg to convert software timestamps to appear to be hardware timestamps.

Intercept getsockopt SO_TIMESTAMPING requests to convert the response to return the flags as originally passed to setsockopt.

Non-accel API

Export these symbols:

  • int onload_fd_stat - returns 0 for non-accelerated fd - in LKOS, always return 0
  • int onload_is_present - boolean query - in LKOS, always return 0 (false)
  • int onload_socket_nonaccel - opens a non-accelerated socket - in LKOS, call socket()

Stacks API

Export the stack manipulation API:

  • onload_move_fd
  • onload_set_stackname
  • onload_stackname_save
  • onload_stackname_restore
  • onload_stack_opt_get_int
  • onload_stack_opt_get_str
  • onload_stack_opt_reset
  • onload_stack_opt_set_int
  • onload_stack_opt_set_str

These stub implementations are entirely noops:

  • set requests do not actually store state.
  • get requests return error as a result.
  • all sockets always use the same Linux kernel TCP/IP stack.

WODA: wire order delivery API

The library exports symbol onload_ordered_epoll_wait as defined by the wire order delivery API ("WODA").

It does NOT implement the WODA behavior.

Background

Onload is a high performance hybrid userspace network stack. It presents the Linux kernel API, but with optimized implementations of some operations.

Onload extends the Linux API with custom extensions. Applications that depends on these will not be able to run on bare Linux. This library implements some of these extensions.

Contributing

See CONTRIBUTING.md for details.

License

GPLv2; see LICENSE for details.

lk_onload_stub's People

Contributors

wdebruij avatar

Stargazers

ธนัท วงศ์สวัสดิ์ avatar Ali Ali avatar John Carlo Siano Sayago avatar Sabelo Manana  avatar pojith raj R avatar GADAA HOPE  avatar Mozart avatar  avatar

Watchers

James Cloos avatar  avatar Andrew Bower avatar

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.