RMB1 - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

RMB1

Description:

... Metalanguage. Transport Listen channel for establishing connection. Transport Connected or Unconnected Metalanguage for ... Data Link Metalanguage. Unconnected ... – PowerPoint PPT presentation

Number of Views:44
Avg rating:3.0/5.0
Slides: 36
Provided by: homewoodsu
Category:

less

Transcript and Presenter's Notes

Title: RMB1


1
Data Rate Considerations
  • Maximum through put is essential to the success
    of UDI protocols
  • To achieve max throughput need to minimizing
    number of region transitions and blocking of
    flows caused by region serialization
  • Plan to have separate NIC driver for region
    portability
  • Network Service Provider (NSP) per network driver
    (or logical network driver)
  • Multiplexes input to appropriate protocol
  • Output goes through NSP to simplify network driver

2
Approach
  • Initially the following Metalanguages will be
    developed. They will be combined where
    practical.
  • Transport Interface Metalanguage
  • Transport Listen channel for establishing
    connection
  • Transport Connected or Unconnected Metalanguage
    for each connection

3
Approach (contd)
  • Network Interface Metalanguage
  • Unconnected or connected Network Interface
    Metalanguage
  • Enables transport protocols to be added to a
    system relatively easily
  • Transport protocols can bypass the Network
    Interface metalanguages
  • Default path for protocols which bypass the
    network layer
  • TCP can return RST and ICMP error
  • UDP can return ICMP error
  • Provides an interface to a raw socket
  • ICMP
  • IGMP
  • OSPF daemon communications

4
Approach (contd)
  • Forwarding/ARP database interface
  • Routing daemons and monitor
  • Protocols that bypass the network layer
  • Routing daemons which interrogate and update
    forwarding tables
  • Data link providers that store information to
    send data to their destination
  • A forwarding structure
  • Passed between the Forwarding/ARP database and
    its users
  • Passed between Data Link Providers and Data Link
    Requesters
  • Data Link structure is opaque to other modules
  • There is an interface ID which uniquely
    identifies the Data Link Provider

5
Approach (contd)
  • Data Link Metalanguage
  • Unconnected
  • There needs to be a way for a network or data
    link provider to connect to the data link
    provider.

6
TCP Listen Region
  • 1 instance per listen port
  • Responsibilities
  • Queueing connection requests
  • Notifies Transport Service Requester (TSR) of
    connect requests. TSR responsible for creating
    new channels for connection with the same
    attributes.
  • Attributes
  • Connection backlog
  • Un-acked syns
  • Un-accepted acked syns
  • Un-acked syn limit
  • Un-accepted acked syn limit
  • send and recv buffer sizes for new connections
  • actual send and recv buffer sizes

7
Transport Bind
  • struct udi_cp_t gcb gcb udi_ubit32_t
    connection_id udi_td_bind_cb_t
  • udi_td_bind_req ( udi_td_bind_cb_t cb,
    udi_index_t tx_chan_index, udi_index_t
    rx_chan_index)
  • Default endpoint parameters (buffer size, window
    size, window scale factor, etc) need to be
    obtained from a shared database. If
    reader/writer locks are supported, this can be
    global data, otherwise it is the Port, IP, ARP
    database.
  • Connection_id - used to match a connection
    request.

8
Transport Application Bind
  • struct struct sockaddr bind_addr
    udi_td_appl_bind_cb_t
  • udi_td_appl_bind_req ( udi_td_appl_bind_cb_t
    cb)
  • udi_td_appl_bind_ack ( udi_td_appl_bind_cb_t
    )

9
Transport Connect
  • struct udi_sockaddr_t connect_addr
    udi_td_create_connect_cb_t
  • struct struct sockaddr connecting_addr
    udi_ubit32_t connection_id
    udi_tsr_rcvd_connect_cb_t
  • udi_td_create_connect_req ( udi_td_create_conne
    ct_cb_t cb)
  • udi_tsr_create_connect_ack (
    udi_td_create_connect_cb_t )
  • udi_tsr_rcvd_connect_ind ( udi_tsr_rcvd_connect
    _cb_t)
  • udi_td_rcvd_connect_res ( udi_tsr_rcvd_connect_
    cb_t)
  • connection_id
  • used to identify a connection when a bind request
    is later made.

10
Transport Transmit
  • typedef struct udi_cb_t gcb
    udi_td_tx_cb_t chain udi_sockaddr_t
    dest_addr udi_buf_t tx_buf
    udi_boolean_t completion_urgent udi_boolean_t
    fail_if_no_buf udi_td_tx_cb_t
  • udi_tsr_tx_rdy ( udi_td_tx_cb_t cb)
  • udi_td_conn_tx_req ( udi_td_tx_cb_t cd)
  • udi_td_tx_req ( udi_td_tx_cb_t cd)

11
Transport Transmit
  • tx_buf
  • This buffer contains the information needed to
    copy the request
  • Also contains size of request
  • This interface will not work with a 1.01
    environment
  • Fail_if_no_buf
  • Used to implement non-blocking I/O

12
Transport Receive
  • typedef struct udi_cb_t gcb
    udi_td_tx_cb_t chain udi_buf_t rx_buf
    udi_ubit8_t rx_status udi_td_rx_cb_t
  • udi_tsr_rx_ind ( udi_td_rx_cb_t cb)
  • udi_td_rx_rdy ( udi_td_tx_cb_t cd)

13
Transport Option
  • typedef struct udi_cb_t gcb
    udi_td_op_cb_t op void
    params udi_buf_t data_buf
    udi_td_opt_cb_t
  • udi_tsr_rx_ind ( udi_td_opt_cb_t cb)
  • udi_td_opt_ack ( udi_td_opt_cb_t cd)
  • params
  • Standard set for UDP, TCP, and other standard
    transport protocols
  • Driver can specify a set for non standard
    protocols

14
Network Bind
  • struct udi_cp_t gcb gcb
    udi_npd_bind_cb_t
  • udi_npd_bind_req ( udi_npd_bind_cb_t cb,
    udi_index_t tx_chan_index, udi_index_t
    rx_chan_index)

15
Network Application Bind
  • struct sockaddr sockaddr bind_addr
    udi_nd_appl_bind_cb_t
  • udi_nd_appl_bind_req ( udi_nd_appl_bind_cb_t
    cb)
  • udi_nd_appl_bind_ack ( udi_nd_appl_bind_cb_t )
  • bind_addr
  • Traditionally only the address is defined, port
    is not meaningful

16
Network Connect
  • struct udi_sockaddr_t connect_addr
    udi_npd_create_connect_cb_t
  • udi_npd_create_connect_req (
    udi_bpd_create_connect_cb_t cb)
  • udi_npsr_create_connect_ack (
    udi_npd_create_connect_cb_t )
  • connect_addr
  • Traditionally only the address is defined, port
    is not meaningful

17
Network Transmit
  • typedef struct udi_cb_t gcb
    udi_npd_tx_cb_t chain udi_sockaddr_t
    dest_addr udi_buf_t tx_buf
    udi_boolean_t completion_urgent
    udi_npd_tx_cb_t
  • udi_npsr_tx_rdy ( udi_npd_tx_cb_t cb)
  • udi_npd_conn_tx_req ( udi_npd_tx_cb_t cd)
  • udi_npd_tx_req ( udi_npd_tx_cb_t cd)

18
Network Receive
  • typedef struct udi_cb_t gcb
    udi_td_tx_cb_t chain udi_buf_t tx_buf
    udi_ubit8_t rx_status udi_npd_rx_cb_t
  • udi_npsr_rx_ind ( udi_npd_rx_cb_t cb)
  • udi_npd_rx_rdy ( udi_npd_tx_cb_t cd)

19
Network Option
  • typedef struct udi_cb_t gcb
    udi_npd_op_cb_t op void
    params udi_buf_t data_buf
    udi_npd_opt_cb_t
  • udi_npsr_npx_ind ( udi_npd_opt_cb_t cb)
  • udi_npd_opt_ack ( udi_npd_opt_cb_t cd)
  • params
  • Indicates whether or not the caller is supplying
    the network protocol header

20
Forwarding Block
  • typedef struct int dest_addr_size
    udi_sockaddr dest_addr int
    target_addr_size udi_sockaddr target_addr
    int dl_addr_size void dl_addr int
    dl_ifc_id udi_forwarding_block_t

21
Forwarding/ARP Bind
  • struct udi_cp_t gcb gcb udi_fb_bind_cb_t
  • udi_fb_bind_req ( udi_fbpd_bind_cb_t cb,
    udi_index_t tx_chan_index, udi_index_t
    rx_chan_index)

22
Forwarding/ARP Option
  • typedef struct udi_cb_t gcb
    udi_npd_op_cb_t op udi_forwarding_block_t
    fdw_block udi_npd_opt_cb_t
  • udi_npsr_npx_ind ( udi_npd_opt_cb_t cb)
  • udi_npd_opt_ack ( udi_npd_opt_cb_t cd)
  • op
  • Read table
  • Get entry
  • Set entry

23
Data Link Bind
  • struct udi_cp_t gcb gcb udi_dl_bind_cb_t
  • udi_dl_bind_req ( udi_dl_bind_cb_t cb,
    udi_index_t tx_chan_index, udi_index_t
    rx_chan_index)

24
Data Link Transmit
  • typedef struct udi_cb_t gcb
    udi_dl_tx_cb_t chain udi_sockaddr_t
    dest_addr udi_buf_t tx_buf
    udi_boolean_t completion_urgent
    udi_dl_tx_cb_t
  • udi_dlsr_tx_rdy ( udi_dl_tx_cb_t cb)
  • udi_dl_conn_tx_req ( udi_dl_tx_cb_t cd)
  • udi_dl_tx_req ( udi_dl_tx_cb_t cd)

25
Data Link Receive
  • typedef struct udi_cb_t gcb
    udi_td_tx_cb_t chain udi_buf_t tx_buf
    udi_ubit8_t rx_status udi_dl_rx_cb_t
  • udi_dlsr_rx_ind ( udi_dl_rx_cb_t cb)
  • udi_dl_rx_rdy ( udi_dl_tx_cb_t cd)

26
Data Link Option
  • typedef struct udi_cb_t gcb
    udi_dl_op_cb_t op void
    params udi_buf_t data_buf
    udi_dl_opt_cb_t
  • udi_dlsr_npx_ind ( udi_dl_opt_cb_t cb)
  • udi_dl_opt_ack ( udi_dl_opt_cb_t cd)
  • params

27
Mapping of UDI to TLI
28
Issues
  • May need to define a region that can have
    multiple readers and one writer
  • Can we get a timestamp
  • Is the format appropriate
  • How do all the connections get setup
  • Is a network protocol module called a network
    driver or a network module?

29
Timestamp
  • Used for TCP and UDP
  • Also DoD uses it for tracking tragets
  • TCP
  • Monotonically increasing
  • 1 msec to 1 sec tick
  • 4 Bytes
  • Sender and receiver do not need to be
    synchronized
  • Timestamp is simply a serial number
  • Conclusion TCP needs a timer anyway, the tick
    rate is such that it can be used to implement
    this serail number

30
TCP Timestamp (contd)
  • UDP
  • Routers add milliseconds past midnight UTC
  • ICMP
  • Requesting host and responding hosts use
    milliseconds past midnight UTC
  • DoD clock
  • Needs to be synchronized
  • tick rate TBD
  • 4 Bytes
  • What happens if the platform is not capable of
    synchronizing its clock or does not know what to
    synchronize it with?
  • Conclusion TBD

31
Socket Options
  • Following apply to all protocols except where
    noted
  • SO_DEBUG
  • SO_DONTROUTE
  • SO_ERROR (I think the protocols should report
    errors all the time and not use this)
  • SO_KEEPALIVE (TCP only)
  • SO_LINGER (TCP only)
  • SO_OOBINLINE (TCP only)
  • SO_RCVBUF and SO_SENDBUF
  • SO_RCVLOWAT and SO_SNDLOWAT
  • Send does not affect UDP
  • SO_RCVTIMEO and SO_SNDTIMEO
  • Not associated with protocols
  • SO_REUSEADDR and SO_RESUEPORT
  • TCP and UDP
  • SO_USELOOPBACK
  • IP only

32
IPv4 Socket Options
  • IP_HDRINCL
  • raw sockets for application protocols
  • IP_OPTIONS
  • used with higher level protocols to add options
    (e.g. source routing)
  • IP_RECVDSTRADDR
  • UDP receive of ancillary data
  • IP_RECVIF
  • interface index returned as ancillary data
  • IP_TOS, IP_TTL
  • set TOS, TTL associated with higher level
    protocol for a given socket

33
IPv6 Socket Options
  • IPV6_ADDRFORM
  • Enables IPv4/IPv6 address confersion
  • ICMP6 _FILTER
  • raw sockets
  • IPV6_Checksum
  • can supply a header that will be checksummed
  • IPV6_DESTOPTS, IPV6_NOPLIMIT, IPV6_HOPOPTS,
    IPV6_PKTINFO, IPV6_RTHDR
  • Enables return of ancillary data
  • IPV6_PKTOPTIONS
  • Used with TCP as well as UCP
  • Sets ancillary data for future transmissions
  • Can be used with TCP socket to receive ancillary
    data. (sendmsg(), recvmsg() do not work with
    TCP)
  • IPV6_UNICAST_HOPS
  • Sets hop limit for socket

34
TCP Socket Options
  • TCP_KEEPALIVE
  • Changes keepalive time
  • TCP_MAXRT
  • Time before a connection is broken once
    retransmission begins
  • TCP_MAXSEG
  • TCP_NODELAY
  • TCP_STDURG

35
Multicast Socket Options
  • IP_ADD_MEMBERSHIP IPV6_ADD_MEMBERSHIP
  • IP_DROP_MEMBERSHIP IPV6_DROP_MEMBERSHIP
  • IP_MULTICAST_IF IPV6_MULTICAST_IF
  • IP_MULTICAST_TTL IPV6_MULTICAST_HOPS
  • IP_MULTICAST_LOOP IPV6_MULTICAST_LOOP
Write a Comment
User Comments (0)
About PowerShow.com