---
name: Session Layer
maintainer: Florin Coras <fcoras@cisco.com>
features:
  - Manages allocation and tracking of sessions (6-tuple lookup tables)
  - App namespaces that constrain application access to network resources
  - Conveys data and notifications (ctrl and io) between transport protocols
    and apps
  - Transport protocol interface:
      - Provides generic transport protocol template
      - Converts between transport and application representation of data
      - Schedules sessions/connections for sending
  - Application interface:
      - Maintains per application state
      - Manages allocation of shared memory resources used for exchanging data
        between applications and transports
      - Exposes a native C and a binary api for builtin and external apps
        respectively
description: "The session layer facilitates the interaction between northbound
              applications and southbound transport protocols. To this end,
              northbound, through the app-interface sub layer, the session
              layer exposes APIs for applications to interact with abstract
              units of communication, i.e., sessions. And southbound, through
              the transport protocol interface, it exposes APIs that allow
              transport protocols to exchange data and events (ctrl and io)
              with applications, without actually being aware of how that
              communication is carried out."
state: production
properties: [API, CLI, STATS, MULTITHREAD]