Multi-part Messages in KMIP John Leiseboer, QuintessenceLabs.

Slides:



Advertisements
Similar presentations
Umut Girit  One of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer.
Advertisements

Adobe’s Real Time Messaging Protocol
TCP - Part I Relates to Lab 5. First module on TCP which covers packet format, data transfer, and connection management.
CCNA – Network Fundamentals
Intermediate TCP/IP TCP Operation.
UDP & TCP Where would we be without them!. UDP User Datagram Protocol.
1 TCP - Part I Relates to Lab 5. First module on TCP which covers packet format, data transfer, and connection management.
1 CS 4396 Computer Networks Lab Transmission Control Protocol (TCP) Part I.
Transport Layer – TCP (Part1) Dr. Sanjay P. Ahuja, Ph.D. Fidelity National Financial Distinguished Professor of CIS School of Computing, UNF.
TCP/IP Protocol Suite 1 Chapter 13 Upon completion you will be able to: Stream Control Transmission Protocol Be able to name and understand the services.
TCP/IP Protocol Suite 1 Chapter 13 Upon completion you will be able to: Stream Control Transmission Protocol Be able to name and understand the services.
UNIT 07 Process – to – Process Delivery: UDP,TCP and SCTP
Internet Control Message Protocol (ICMP). Introduction The Internet Protocol (IP) is used for host-to-host datagram service in a system of interconnected.
Netprog: TCP Details1 TCP Details Introduction to Networking John Otto TA Jan 31, 2007 Recital 4.
CSEE W4140 Networking Laboratory Lecture 6: TCP and UDP Jong Yul Kim
William Stallings Data and Computer Communications 7 th Edition (Selected slides used for lectures at Bina Nusantara University) Transport Layer.
CSCE 515: Computer Network Programming TCP Details Wenyuan Xu Department of Computer Science and Engineering.
3-1 Transport services and protocols r provide logical communication between app processes running on different hosts r transport protocols run in end.
Internet Command Message Protocol (ICMP) CS-431 Dick Steflik.
Gursharan Singh Tatla Transport Layer 16-May
Process-to-Process Delivery:
Chapter 16 Stream Control Transmission Protocol (SCTP)
TRANSPORT LAYER T.Najah Al-Subaie Kingdom of Saudi Arabia Prince Norah bint Abdul Rahman University College of Computer Since and Information System NET331.
1 Chapter Internetworking Part 4 (Transport Protocols, UDP and TCP, Protocol Port Numbers)
1 Semester 2 Module 10 Intermediate TCP/IP Yuda college of business James Chen
CS/EE 145A Reliable Transmission over Unreliable Channel Netlab.caltech.edu/course.
TCP/IP Essentials A Lab-Based Approach Shivendra Panwar, Shiwen Mao Jeong-dong Ryoo, and Yihan Li Chapter 5 UDP and Its Applications.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Version 4.0 Network Services Networking for Home and Small Businesses – Chapter 6.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 2.6 UDP Principles (Chapter 24) (User Datagram Protocol)
TCP/IP Transport and Application (Topic 6)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 2.5 Internetworking Chapter 25 (Transport Protocols, UDP and TCP, Protocol Port Numbers)
1 The Internet and Networked Multimedia. 2 Layering  Internet protocols are designed to work in layers, with each layer building on the facilities provided.
TCP1 Transmission Control Protocol (TCP). TCP2 Outline Transmission Control Protocol.
© Jörg Liebeherr (modified by M. Veeraraghavan) 1 ICMP: A helper protocol to IP The Internet Control Message Protocol (ICMP) is the protocol used for error.
(Business) Process Centric Exchanges
Inter-process communication: Socket. socket Internet socket From Wikipedia, the free encyclopedia Jump to: navigation,
Chapter 15 – Part 2 Networks The Internal Operating System The Architecture of Computer Hardware and Systems Software: An Information Technology Approach.
Lecture 4 Overview. Ethernet Data Link Layer protocol Ethernet (IEEE 802.3) is widely used Supported by a variety of physical layer implementations Multi-access.
CSC 600 Internetworking with TCP/IP Unit 5: IP, IP Routing, and ICMP (ch. 7, ch. 8, ch. 9, ch. 10) Dr. Cheer-Sun Yang Spring 2001.
1 Chapter 7 Switching, Packets, Frames, Parity, Checksums, and CRCs.
Network Architecture Protocol hierarchies Design Issues for the layers
Get Random Proposal John Leiseboer 11 October 2012.
Stream Control Transmission Protocol
Multi-part Messages in KMIP John Leiseboer, QuintessenceLabs.
UDP & TCP Where would we be without them!. UDP User Datagram Protocol.
TCP/IP Protocol Suite 1 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 16 Stream Control Transmission.
ISA 95 Working Group (Business) Process Centric Exchanges Dennis Brandl A Modest Proposal July 22, 2015.
1 Kyung Hee University Chapter 11 User Datagram Protocol.
3. END-TO-END PROTOCOLS (PART 1) Rocky K. C. Chang Department of Computing The Hong Kong Polytechnic University 22 March
PRESENTATION ON SECURE SOCKET LAYER (SSL) BY: ARZOO THAKUR M.E. C.S.E (REGULAR) BATCH
1 Chapter 24 Internetworking Part 4 (Transport Protocols, UDP and TCP, Protocol Port Numbers)
Ch23 Ameera Almasoud 1 Based on Data Communications and Networking, 4th Edition. by Behrouz A. Forouzan, McGraw-Hill Companies, Inc., 2007.
Network Layer & IP Protocol.
Chapter 11 User Datagram Protocol
Chapter 9: Transport Layer
5. End-to-end protocols (part 1)
Layered Architectures
TCP.
TCP/IP Transmission Control Protocol / Internet Protocol
Understand the OSI Model Part 2
TCP - Part I Karim El Defrawy
Process-to-Process Delivery:
CPEG514 Advanced Computer Networkst
Internet Applications & Programming
TCP - Part I Relates to Lab 5. First module on TCP which covers packet format, data transfer, and connection management.
Transport Protocols: TCP Segments, Flow control and Connection Setup
Process-to-Process Delivery: UDP, TCP
UDP Principles (Chapter 24) (User Datagram Protocol)
Based on notes from D. Hollinger
Transport Layer 9/22/2019.
Presentation transcript:

Multi-part Messages in KMIP John Leiseboer, QuintessenceLabs

Response Message Response Header Protocol Version Time Stamp Batch Count Batch Item Operation Unique Batch Item ID Result Status Response Payload Message Extension Vendor ID = QLABS_MULTI_RESPONSE_ID Criticality Indicator = TRUE Vendor Extension = Packet Number = n Final Indicator = TRUE | FALSE [Length] [Length] … [Length] We have appended a message extension that indicates that the response consists of multiple parts, the packet (or sequence) number of the part contained in this message, and a final indicator (TRUE => last part; FALSE => not the last part). The criticality indicator is set to TRUE, meaning that if the receiver does not understand the extension, it should throw away the message. No other part of the message is changed. Each response message of the multi-part response is formatted as shown; i.e. each message part is a complete response message. It is only the contents of the response payload that get split across packets

What the receiving party needs to do The party receiving this form of message must identify and parse the message extension. If the receiver does not understand the extension, it throws away the message. If it does understand the message extension, then it processes the response payload. How it processes the payload is operation and implementation dependent. One way of processing, is to parse the (partial) response, and if it makes sense, do stuff with it, like return it to the caller. If the partial response cannot be fully parsed, perhaps because the part ends part way through a structure or other item, then the receiver needs to buffer the partial response until enough of the rest of the response (which come in one or more following messages) can be reassembled to create useful results. When the receiver sees that the final indicator is set to TRUE, it knows that the multi-part response has finished, and the receiver should do whatever it has to do when it sees the end of a response.

Why is there a packet number? Although KMIP currently specifies TLS (over TCP), which guarantees packet order, no lost packets, and no duplicated packets, this is not the case for all protocols. And in many systems, connections can be lost for a variety of reasons. The packet number allows sessions to restart from where they were interrupted (very useful for very large messages which is a likely scenario for multi-part messages), and to assist the receiver in message reassembly if a protocol that can lose, duplicate or reorder packets is used.

What are the item lengths specified in the response payload? The length of each item in the response payload is just that - the length of the item, but ONLY IF IT IS CONTAINED ENTIRELY WITHIN the current part. There is an implicit requirement here that the sender know and correctly populate the length of the items that fit entirely within the current part. Where items spill over a part boundary, that item's length is indicated in the message extension for the part containing the end of the item. The diagram on the next page shows an example.

Structure (L1=?) { Structure (L2=?) { Structure (L3=?) { Structure (L4=?) { Item (L5) {}. Item (L6=?){ PACKET #1, FINAL = FALSE. } Structure (L7=?) { PACKET #2, FINAL = FALSE, L6, L4. } PACKET #3, FINAL = FALSE, L7, L3. Item (L8) {} Item (L9) {} } PACKET #4, FINAL = TRUE, L2, L1 Response Payload Message Extension

The structures with length L1, L2, L3 and L4, as well as the item of length L6 all start in packet #1, and spill over the packet boundary. Their lengths are unknown at the time of transmission of packet #1 (indicated by Li=?), so a special "unknown/indefinite" length value is written in the length field for these items (FF..FF could be used). The item with length L6 and the structure with length L4 end in packet #2. The sender can now indicate the length of these items in the message extension for packet #2. The receiver uses this information to identify the end of these items. In packet #3, the structures with length L7 and L3 end. The sender indicates the length of these structures in the message extension. And finally, the structures with length L2 and L1 end in the final packet, #4. Again the sender indicates these lengths in the message extension. Note the order of the length indications in the message extension. Order is LIFO (last in first out - like a stack). To put this in really simple terms: a) if the sender knows the length when it sends an item, then it fills in the length of the item at the start of the item (as in current specification); b) if the sender does not know the length of the item when it sends the item, it fills in a special "unknown" length value at the start of the item, calculates the item's length across all parts as it streams the item, and indicates the length in the message extension for the packet containing the end of the item.

Request Message Request Header Protocol Version … Batch Count Batch Item Operation Unique Batch Item ID Request Payload Message Extension Vendor ID = QLABS_MULTI_REQUEST_ID Criticality Indicator = TRUE Vendor Extension = Packet Number = n Final Indicator = TRUE | FALSE [Length] [Length] … [Length] The same mechanism looks like it might also work for streaming Request Messages from the Client to the Server. This opens up the possibility of full-duplex streaming between client and server. The server could begin to send a response before receiving the complete set of request parts.

ClientServer Request packet #1 Request packet #2 Request packet #u Request packet #n, FINAL Response packet #1 Response packet #2 Response packet #3 Response packet #i Response packet #j Response packet #k Response packet #m, FINAL Client sends multi-part request message. Concurrently, server sends multi- part response message when it has sufficient request message parts to begin streaming out response parts. Request and response packet numbers generally have no relationship to each other; e.g. Request #1 triggers no response. Request #1 combined with Request #2 triggers Responses #1, #2, and #3, and possibly even Responses #i, #j, …. If the server detects an unrecoverable error early in the request stream, it could initiate an error response that gives the client an opportunity to abort its request stream; i.e. server FINAL could be returned before client FINAL is sent.