The document discusses RTMFP, a proprietary transport protocol developed by Adobe. It was designed to securely deliver media flows over the internet in a more efficient manner than existing protocols. RTMFP establishes sessions between endpoints to allow for the transfer of multiple unidirectional flows with low latency. It uses techniques like parallel opens and NAT traversal to establish sessions quickly while being secure and congestion controlled.
The objective of this presentation is to break the mainframe myths and to present the reality so that the audiences can realize the power of mainframes.
Achieving genuine elastic multitenancy with the Waratek Cloud VM for Java : J...JAX London
John Matthew Holt, Waratek CTO, explains how Waratek Cloud VM for Java transforms the JVM with key Cloud characteristics including genuine multitenancy, granular elasticity, instant scalability, realtime metering and prioritization of resources by application, to futureproof your Java investment in the age of Cloud computing.
The objective of this presentation is to break the mainframe myths and to present the reality so that the audiences can realize the power of mainframes.
Achieving genuine elastic multitenancy with the Waratek Cloud VM for Java : J...JAX London
John Matthew Holt, Waratek CTO, explains how Waratek Cloud VM for Java transforms the JVM with key Cloud characteristics including genuine multitenancy, granular elasticity, instant scalability, realtime metering and prioritization of resources by application, to futureproof your Java investment in the age of Cloud computing.
This presentation is meant to cover the basis of what streaming media is. There is a definition given, a history, and how streaming media is used today, along with a video example.
The One Ingredient Your Social Media Marketing Is MissingSocial Strand Media
Smart brands know that 80% of the time they don't control their brand -- their customers do. Smart brands measure not only quantifiable metrics, but also soft metrics. They know how to measure soft metrics and tie them back to their bottom line.
breve introducción a una de las mayores atrocidades que pudo hacer el hombre en el siglo XX, seguida de un análisis bioético de la moralidad de las intervenciones humanas en la vida.
Our blog went from 40K uniques to over 500K uniques in one year and here's why. We were also a finalist in Social Media Examiner's Top Social Media Blogs 2012 and 2013.
"Una realtà non ci fu data e non c’è, ma dobbiamo farcela noi, se vogliamo essere: e non sarà mai una per tutti, una per sempre, ma di continuo e infinitamente mutabile." (Pirandello). Our identity, as persons, can be defined on a philosophical, psychological or legal level. With the age of Internet, the idea of a digital identity spreads even more, that is all the facets we uses on web, and all the accounts we use in differents sites. That is nothing more than 2.0 version of a Pirandello concept.
This issue of unity in molteplicity is so daily, relevant and urgent, that European Union decided to unify digital and legal identity with eIDAS regulation, in Italy with SPID: not only a single sign on for Public Administration, but also a certified account that will replace all legal documents, a real digital citizenship.
2016 Streaming Media West: Choosing an HTML5 PlayerErica Beavers
This presentation provides a brief overview of how modern video players work, what broadcasters should look for depending on their technical and business goals, and different open-source tools that are available. It will discuss compatible formats, codecs and supported DRMs, user performance, the ability of each media engine to handle edge cases, and the performance of the ABR algorithms. At the end of the presentation, broadcasters will better understand what tools are right for their needs and be able to evaluate the pros and cons of each solution available.
Presentation of the DDS Interoperability demo performed in Washington DC between RTI, TwinOaks and PrismTech.
This demonstration shows the use of the DDS-RTPS interoperability protocol in 9 different scenarios.
You already have working infrastructure. You know the ins and outs of your video protocol.
Everything is working, but you feel like things could work even better. If so, this talk is for you!
This talk explores all the things WebRTC could unlock for you. There could be solutions for problems you didn't
even realize were fixable!
This presentation is meant to cover the basis of what streaming media is. There is a definition given, a history, and how streaming media is used today, along with a video example.
The One Ingredient Your Social Media Marketing Is MissingSocial Strand Media
Smart brands know that 80% of the time they don't control their brand -- their customers do. Smart brands measure not only quantifiable metrics, but also soft metrics. They know how to measure soft metrics and tie them back to their bottom line.
breve introducción a una de las mayores atrocidades que pudo hacer el hombre en el siglo XX, seguida de un análisis bioético de la moralidad de las intervenciones humanas en la vida.
Our blog went from 40K uniques to over 500K uniques in one year and here's why. We were also a finalist in Social Media Examiner's Top Social Media Blogs 2012 and 2013.
"Una realtà non ci fu data e non c’è, ma dobbiamo farcela noi, se vogliamo essere: e non sarà mai una per tutti, una per sempre, ma di continuo e infinitamente mutabile." (Pirandello). Our identity, as persons, can be defined on a philosophical, psychological or legal level. With the age of Internet, the idea of a digital identity spreads even more, that is all the facets we uses on web, and all the accounts we use in differents sites. That is nothing more than 2.0 version of a Pirandello concept.
This issue of unity in molteplicity is so daily, relevant and urgent, that European Union decided to unify digital and legal identity with eIDAS regulation, in Italy with SPID: not only a single sign on for Public Administration, but also a certified account that will replace all legal documents, a real digital citizenship.
2016 Streaming Media West: Choosing an HTML5 PlayerErica Beavers
This presentation provides a brief overview of how modern video players work, what broadcasters should look for depending on their technical and business goals, and different open-source tools that are available. It will discuss compatible formats, codecs and supported DRMs, user performance, the ability of each media engine to handle edge cases, and the performance of the ABR algorithms. At the end of the presentation, broadcasters will better understand what tools are right for their needs and be able to evaluate the pros and cons of each solution available.
Presentation of the DDS Interoperability demo performed in Washington DC between RTI, TwinOaks and PrismTech.
This demonstration shows the use of the DDS-RTPS interoperability protocol in 9 different scenarios.
You already have working infrastructure. You know the ins and outs of your video protocol.
Everything is working, but you feel like things could work even better. If so, this talk is for you!
This talk explores all the things WebRTC could unlock for you. There could be solutions for problems you didn't
even realize were fixable!
Tom Krcha & Petr Pecháček: Adobe rocks! Flash a HTML5WebExpo
Dynamická přednáška nabitá přehledem inspirativních ukázek ze světa Flashe. Přijdte se podívat, co opravdu frčí, co vás na webu čeká a jak Adobe zjednodušuje život tvůrcům aplikací ať už pro web, desktop či Android.
Dále si představíme podporu HTML5, skinování redakčních systémů (Wordpress, Drupal, Joomla) a multi-screen testování webů v Dreamweaver CS5. Augmented Reality, Multi-Touch, Peer-to-Peer, Audio/Video telefonie – to vše a další novinky.
These slides describe the scenario that were demonstrated during the OMG DDS Interoperability demo that was held in Washington DC on the 14th of July 2009, during the last OMG Real-Time Workshop.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
1. RTMFP Overview
for IETF77 TSV AREA
Matthew Kaufman
Sr. Computer Scientist, Project Lead
Adobe Systems
mkaufman@adobe.com
matthew@matthew.at
Copyright 2009 Adobe Systems Incorporated. All rights reserved. Adobe confidential. 1
2. Yes, we’re crazy
! Designed and implemented a new transport protocol
! Twice!
®
Copyright 2010 Adobe Systems Incorporated. 2
3. Yes, we’re crazy
! Designed and implemented a new transport protocol
! Twice!
! But we successfully deployed this to almost every Internet host
! So…
! Who are we?
! Why did we do this?
! And what is it?
®
Copyright 2010 Adobe Systems Incorporated. 3
4. Who are we?
! Matthew Kaufman and Michael Thornburgh
! Background in building ISPs and writing software
! Founded amicima in 2004
! Designed and wrote MFP (Secure Media Flow Protocol), released as open source
! Acquired by Adobe in 2006
! Designed and wrote RTMFP, released in Flash Player 10.0
! Designed and wrote RTMFP Groups, shipping in Flash Player 10.1
®
Copyright 2010 Adobe Systems Incorporated. 4
5. The other way to deploy a new transport protocol
Worldwide Ubiquity of Adobe Flash Player by Version - December 2009
Flash Player
Flash Player 9 Flash Player 10
8 & below
Mature Markets 99.0% 98.9% 94.7%
US/Canada 99.0% 99.0% 94.2%
Europe 99.1% 98.8% 95.6%
Japan 98.0% 97.7% 93.4%
Australia/New Zealand 98.9% 98.6% 94.3%
Emerging Markets 98.2% 98.0% 92.7%
®
Copyright 2010 Adobe Systems Incorporated. 5
6. Overview of Flash Player Communications
! RTMFP is proprietary transport protocol
! Ships in Flash Player 10.0 and later (client-server and peer-to-peer)
! Used by RTMFP Groups (peer-to-peer overlay) in Flash Player 10.1 and later
! Application-level Multicast, Posting, Directed Routing, Object Replication
! RTMP is a (now published) media transport over TCP
! Variants: RTMPT, RTMPS, RTMPE
! Because RTMFP is presently proprietary I can share:
! Things we’ve learned
! Interesting design points (some covered by patent filings, see IPR disclosure)
! How it coexists with other network protocols
! …but I cannot share:
! Bit-level packet formats, details of cryptosystem
®
Copyright 2010 Adobe Systems Incorporated. 6
7. Why a new transport protocol?
! To securely deliver media flows over the Internet
! And do it “better” than existing choices
! For our definition of “better”, of course
! To remember:
! MFP designed in early 2004, open source release in July 2005
! RTMFP designed in late 2006, learned from MFP
! MFP predates DCCP (mostly), DTLS, HIP, ICE
®
Copyright 2010 Adobe Systems Incorporated. 7
8. Things we believe about the Internet
! Delivers datagrams (on a “best effort” basis)
! Lots of end-to-end delay (200km/msec, one way in glass)
! Usually lossless (copper 10-9, glass 10-12, wireless emulates)
! Usually in-order
! Possibly congested
! Signaled by loss (and that loss can be bursty, and is usually near the endpoints)
! Likely path asymmetry
! Isn’t secure
! Lots of scanning and denial-of-service attacks, untraceable address spoofing, some
eavesdropping, some MITM
! Filled with NA(P)T and firewall devices, “end-to-end” gone
! (but not forgotten)
®
Copyright 2010 Adobe Systems Incorporated. 8
9. Things we believe about Computers
! Fast and still getting faster
! Manipulating data is fast, moving data is slow
! Especially slow to move data over the network (but even off-chip on-system matters)
! O(1) operations are better than O(n) operations
! Especially when n is large
! Anything we want to do must be possible as a normal user on most
popular operating systems
! No raw sockets
! No ECN
! No way to force the source address when bound to INADDR_ANY
! Network availability can and will change as the computer moves
! Even as simple as “unplugged Ethernet cable, let wireless card take over”
®
Copyright 2010 Adobe Systems Incorporated. 9
10. Things which therefore follow…
! The fewer the round trips, the better
! The shorter the packet, the better
! Especially if you’re encrypting the packet
! Even if it makes the ASCII drawings optimized for 32-bit aligned structures look bad
! The receiver should pick the data structure index when possible
! We must use UDP (NAT/firewall, Operating System, TCP won’t do)
! We must encrypt everything all the time
! We must not consume state (or even respond, if possible) until we are sure we
want to talk to the other end
! We must not think we know our own IP address or UDP port number
! We must not believe that addresses do not change mid-session
! We must respect loss as congestion and respond appropriately
®
Copyright 2010 Adobe Systems Incorporated. 10
11. The Problem
! Real-time media delivery for Rich Internet Applications
! Multiple streams of:
! Audio
! Video
! Control
! File transfer
! Over the real Internet
! Congestion
! Packet loss
! Insecure (tapping, active attacks, denial-of-service attacks)
! With Peer-to-Peer capabilities
! NAT and firewall traversal
®
Copyright 2010 Adobe Systems Incorporated. 1
11
1
12. The Solution
! Connectivity philosophy
! “Just Works”
! In real life, on today’s actual Internet
! Dealing with NAT and firewall not an afterthought
! Congestion control required
! One congestion domain between a pair of endpoints
! Avoid excess round-trip times
! “Call setup” from a cold start needs to be fast
! Avoid repeated work
! Clean solution vs. “glue and tape” on existing protocols (or a deep set of new ones)
! Note: We believe in combined signaling and media
! Avoids extra RTTs, repeated NAT traversal effort, key negotiation, etc.
! Easy to separate if combined… reverse is not necessarily true
®
Copyright 2010 Adobe Systems Incorporated. 1
12
2
13. Layering
! Good:
! Reuse existing solutions (TCP for reliable transfer, SSL for security)
! Avoiding redesigning and rewriting (and the associated risks of doing so)
®
Copyright 2010 Adobe Systems Incorporated. 13
14. Layering
! Good:
! Reuse existing solutions (TCP for reliable transfer, SSL for security
! Avoiding redesigning and rewriting (and the associated risks of doing so)
! Bad:
! Information can be lost (soft bit decisions on RF links not visible to higher layers)
! Extra overhead (numerous protocols to add framing to TCP byte streams)
! Extra round trips (set up TCP session, set up SSL session, signaling handshake,…)
! Lower layer issues cannot always be solved by upper layers (SSL can’t fix SYN flood)
®
Copyright 2010 Adobe Systems Incorporated. 14
15. The Solution: Sessions
Session
! Bidirectional, only one between any pair of endpoints
! Parallel Open (load balancing, NAT and firewall traversal)
! Secure (“always on”, set up in 2 RTT with anti-scan and anti-DOS)
! Congestion controlled (dynamic)
! IP address mobility, fast outage recovery
®
Copyright 2010 Adobe Systems Incorporated. 1
15
5
16. The Solution: Flows
Flows
! Many, no set-up time (“! RTT”, no rekeying)
! Named
! Unidirectional
! Prioritized
! In- or out-of-order delivery
! Variable reliability
! Buffer management
®
Copyright 2010 Adobe Systems Incorporated. 1
16
6
17. The Solution: How It Works
! Request for a Flow to an endpoint for which there is no open session
! Session Established
! Flow(s) Established
! Flow Close or Exception
! RTT measured as necessary
! IP mobility handled as necessary
! Eventually, Session Closed
! No more flows for a period of time
! Or session fails
®
Copyright 2010 Adobe Systems Incorporated. 1
17
7
18. The Solution: How It Works: Session Establishment
! Session Establishment
! 4-way handshake (anti-DOS, anti-scanning)
! Parallel Open
! Security exchange embedded in handshake
! Session IDs chosen (by the receiver who will need to demultiplex by these IDs)
! Session nonce exchanged
! Usable for later signature operations without another RTT to exchange nonces
®
Copyright 2010 Adobe Systems Incorporated. 1
18
8
19. Session Establishment: Parallel Open
Target
Target
Initiator
Forwarder
?
?
! Initiator Hello message is sent to all candidate addresses for target
! Simultaneously or offset in time
! First to respond with correct certificate wins
! Load balancing without hardware
! Simultaneously open to private (behind NAT) and public address
! Simultaneously open to a forwarding server (NAT traversal)
®
Copyright 2010 Adobe Systems Incorporated. 1
19
9
20. Session Establishment: Endpoint Discriminator
A Initiator Target
B Initiator Target
C Redirector
Initiator
Target
D Forwarder
Initiator Target
! Initiator Hello message contains Endpoint Discriminator (EPD)
! A node may Ignore, Respond, Redirect, or Forward
! Ignore: Blocks port-scanning attempts, must know address and EPD
! Respond: Normal case
! Redirect: Supply an alternative (list of) IP address(es), results in more Initiator Hello messages being sent
! Forward: Send the Initiator Hello onward to another (connected) node for NAT traversal
®
Copyright 2010 Adobe Systems Incorporated. 2
20
0
21. Session Establishment: NAT traversal
Forwarder
Initiator Target
! Initiator and Target are both behind port-restricted (firewalling) NAT
! Target has an open Session to the Forwarder host
®
Copyright 2010 Adobe Systems Incorporated. 2
21
1
22. Session Establishment: NAT traversal
Forwarder
Initiator Target
! Initiator tries to parallel-open to Target’s EPD at both Target’s address
and Forwarder’s address
! This opens “hole” at Initiator end
! Direct message is blocked by NAT/firewall at Target’s end
®
Copyright 2010 Adobe Systems Incorporated. 2
22
2
23. Session Establishment: NAT traversal
Forwarder
Initiator Target
! Forwarder sends Initiator’s IHello (and derived address) to Target over
existing session
®
Copyright 2010 Adobe Systems Incorporated. 2
23
3
24. Session Establishment: NAT traversal
Forwarder
Initiator Target
! Target receives forwarded IHello containing Initiator’s address and
sends RHello
! This opens the “hole” necessary at the Target’s end
! At Initiator’s end “hole” is still open
®
Copyright 2010 Adobe Systems Incorporated. 2
24
4
26. Session Establishment: Lookup and NAT traversal
Redirector
&
Forwarder
Initiator Target
! Initiator and Target are both behind port-restricted (firewalling) NAT
! Target has an open Session to the Redirector-Forwarder host
®
Copyright 2010 Adobe Systems Incorporated. 2
26
6
27. Session Establishment: Lookup and NAT traversal
Redirector
&
Forwarder
Initiator Target
! Initiator tries to open to Target’s EPD at Redirector-Forwarder’s Address
! Doesn’t need to know Target’s address
®
Copyright 2010 Adobe Systems Incorporated. 2
27
7
28. Session Establishment: Lookup and NAT traversal
Redirector
&
Forwarder
Initiator Target
! Redirector-Forwarder:
! Sends Target’s IP address(es) to Initiator as a Redirect message
! Forwards Initiator’s IHello message (with derived address) to Target over existing
Session
®
Copyright 2010 Adobe Systems Incorporated. 2
28
8
29. Session Establishment: Lookup and NAT traversal
Redirector
&
Forwarder
Initiator Target
! Initiator adds Target’s address to candidate address list and sends IHello
! This opens the “hole” necessary at Initiator’s end
! Target receives forwarded IHello containing Initiator’s address and sends RHello
! This opens the “hole” necessary at the Target’s end
®
Copyright 2010 Adobe Systems Incorporated. 2
29
9
31. Session Establishment: 4-way handshake
Initiator Hello
EPD Responder Hello
Tag Tag Echo
Cookie
Initiator Initial Keying Responder Cert.
Initiator Session ID
Cookie Echo
Initiator Cert.
Responder Initial Keying
Session Key Initiator Part
Signature Responder Session ID
Session Key Responder Part
Signature
! Takes 2 round trip times
®
Copyright 2010 Adobe Systems Incorporated. 3
31
1
32. The Solution: How It Works: Sessions
! Once a session is up:
! RTT regularly measured
! IP mobility handled as necessary
! Congestion control
! Dynamic response
! Real-time priority traffic causes sender to more smoothly adjust
! Knowledge that receiver is receiving real-time priority from 3rd party changes
response
! Congestion (packet loss) is determined from data acknowledgements in flows
®
Copyright 2010 Adobe Systems Incorporated. 3
32
2
33. Session: IP address mobility
1 2
A B A B
B
3 4
A B A B
B B
! A can determine that B’s address has changed (same Session ID, new IP address)
! No data lost from B to A
! A continues sending data to B’s old address, sends probes to B’s new address
! Prevents hijack (otherwise could replay B’s data from a new address)
! When probe response is received from B’s new address, A switches to sending to new
address
! Data from A to B is lost for one round-trip time to new address
! Sometimes “mobility” is just “someone rebooted the NAT box”
®
Copyright 2010 Adobe Systems Incorporated. 3
33
3
34. Session: Dynamic Congestion Management
B
A
C
! When A is sending “real-time” traffic it sets the “real-time” bit in its outgoing packets to B
! And also changes its response to packet loss when sending to B to react more smoothly
! As a result B will set the “receiving real-time not from you” bit in its outgoing packets to C
! C will be more “timid” and will react more strongly to packet loss when sending to B
! To leave bandwidth in B’s incoming network connection, since there’s a nearly 50% chance that is where the
congestion is
®
Copyright 2010 Adobe Systems Incorporated. 3
34
4
35. The Solution: How It Works: Flows
! Flow Establishment
! No handshake or need to pre-establish
! Sending
! Framing
! Each message can have a different reliability
! None, Full, Partial
! Forward sequence number
! Fragmentation
! Sequence numbers (no wrap)
! Receiving
! As-received or sequence number ordering (even with partial/no reliability)
! Acknowledgements sent
! Notification of packet loss
! Buffer flow control
! Either end can close (and receiver can reject immediately)
! Return associations
®
Copyright 2010 Adobe Systems Incorporated. 3
35
5
36. Variable-Length Values
! We use variable-length unsigned integers throughout
! Moving bits in and out of the CPU or L1 cache is expensive
! Twiddling bits is cheap
! We require (in most cases) at least 64 bits of range
! We never wrap or scale
! Example: sequence numbers
! The number of bytes grows if there are many
! But in order to have many, there must be enough bandwidth
! Allows unambiguous selective acknowledgement no matter what the window size
®
Copyright 2010 Adobe Systems Incorporated. 36
37. Congestion control
! Required
! RFC 2914
! RFC 3714
! Most real-time media doesn’t do it
! Might be ok if your application isn’t popular
! Prioritization requires it
! Window-based works better than equation-based + fine rate control
(e.g., token buckets)
! Instability from increased time constants (including failure to stop when acks stop)
! OS timing granularity
! Burst avoidance
! Send no more than 6 packets per ack, no matter how big CWND is
®
Copyright 2010 Adobe Systems Incorporated. 37
38. Security
! Always on
! Details are external to protocol
! But protocol defines how to exchange what is needed
! Protocol features can make security even more important
! Example: IP address mobility without security is just “session hijacking support”
! More subtle: Encrypting IP addresses hides them from NAT
! And a false-positive is ok if the retransmission is encrypted differently
®
Copyright 2010 Adobe Systems Incorporated. 38
39. Session multiplexing
Scrambled Session ID (Encrypted) Packet
! Don’t rely on source/destination IP and port
! Explicit Session ID
! But scrambled so that it looks more like noise
! Avoids NAT false-positives
! Annoys DPI boxes
®
Copyright 2010 Adobe Systems Incorporated. 39
40. Encapsulated Network-Layer Information
Checksum Network-Layer Information Pad
Encrypted Part
! The specific cryptosystem encapsulates the network layer
! It defines how to encrypt and decrypt everything after the Session ID
! For convenience, the network layer ignores padding
! The encapsulation is also responsible for data integrity
®
Copyright 2010 Adobe Systems Incorporated. 40
41. Encapsulated Network-Layer Information: Flash Player
SSEQ Checksum Network-Layer Information Pad HMAC
Encrypted Part
! In the Flash Player cryptosystem:
! Integrity is provided by a checksum or HMAC (negotiated at startup)
! The HMAC is outside the encryption
! Doesn’t matter for our block cipher, but does matter for some stream ciphers
! Session-level sequence numbers are optional (negotiated at startup)
®
Copyright 2010 Adobe Systems Incorporated. 41
42. Network-Layer information
! Flags
! Time-critical Forward notification
! Time-critical Reverse notification
! Timestamp Present
! Timestamp Echo Present
! Initiator/Responder Mark
! If a cryptosystem happens to use the same session key in each direction, this
protects against reflecting packets back at a sender
! Timestamp (optional)
! 4 millisecond clock, not opaque (so other end can advance before echoing if needed)
! Timestamp Echo (optional)
! One or more chunks
®
Copyright 2010 Adobe Systems Incorporated. 42
43. Chunks
! Tag-Length-Value (Fixed-size tag and length for fast parsing)
! Session Setup
! Initiator Hello
! Responder Hello
! Initiator Initial Keying
! Responder Initial keying
! Responder Hello Cookie Change
! Responder Redirect
! Control (In-session)
! Ping, Ping Reply
! Re-keying Initiate, Re-keying Response
! Close, Close Acknowledge
! Forwarded Initiator Hello
! Flows (In-session)
! User Data, Next User Data
! Buffer Probe
! User Data Acknowledge (Bitmap), User Data Acknowledge (Ranges)
! Flow Exception Report
! 0x00 and 0xff are reserved so that either may be used to pad
®
Copyright 2010 Adobe Systems Incorporated. 43
44. Chunks: Initiator Hello
! Sent to one or more candidate addresses for Responder
! Contains Endpoint Discriminator and Tag
! Endpoint Discriminator (EPD)
! Opaque data, understood by cryptosystem
! Cryptosystem sets up the EPD such that a Responder can tell if this is for them
! Preferably via a one-way function, so eavesdroppers cannot tell desired identity
unless they know it (then they can precompute EPD(s) to match against)
! Tag
! Opaque data, understood by sender transport protocol implementation
! Transport can match up a returned tag with an opening session
! Chosen randomly
! A Forwarded Initiator Hello (from introducer) also contains a sockaddr
®
Copyright 2010 Adobe Systems Incorporated. 44
45. Chunks: Responder Hello
! Sent in response to Initiator Hello or Forwarded Initiator Hello with EPD
of “this” endpoint
! If the EPD is for “another” endpoint the Initiator Hello is ignored (no “port scan”)
! Unless this is an introducer, in which case Responder Redirect is sent instead and/or
Forwarded Initiator Hello sent onward
! Contains a Tag Echo, Cookie, Responder Cert
! Tag Echo
! Cookie
! Generated statelessly, allows Responder to only accept next packet if this was
actually received by Initiator. Eliminates “SYN flood” attacks.
! Responder Cert
! Opaque data, understood by cryptosystem
! Might have things like an identity, public key
®
Copyright 2010 Adobe Systems Incorporated. 45
46. Canonical EPDs
! Note that more than one EPD might map to a single endpoint
! And that endpoint will have a single Cert
! And we don’t want to have >1 session open to a single endpoint
! If we do, we don’t share the congestion domain, so prioritization is lost
! So we have the concept of a “Canonical EPD”
! A Cert can be turned into a Canonical EPD
! When we receive a Responder Hello back at the Initiator we check to see if the
computed Canonical EPD matches the Canonical EPD of any existing session
! If so, we put the opening flows from the opening session onto the already-open
session, and stop opening the new session
! This is one of the reasons why the API is flows, not sessions
! Another is to make handling Session glare easier… when we detect and resolve
glare, we can move the flows to the winning session
®
Copyright 2010 Adobe Systems Incorporated. 46
47. Chunks: Initiator Initial Keying
! Contains: Cookie Echo, Initiator Session ID, Initiator Cert, Session Key Initiator
Component, Signature
! Cookie Echo
! Echo of the Cookie provided by Responder. Responder will only process if valid.
! If Responder thinks it is “partially correct” can request a “cookie change” (e.g., source address
changed since cookie generated, but rest of cookie looks good)
! Initiator Session ID
! Session ID to use – picked by the receiver
! Initiator Cert
! Opaque data known by cryptosystem, just like Responder cert
! Session Key Initiator Component
! Opaque data known by cryptosystem. May contain multiple parts (e.g., to negotiate HMAC)
! Signature
! Opaque data understood by cryptosystem. Cryptosystem asked to compute after all previous parts
are computed and serialized.
®
Copyright 2010 Adobe Systems Incorporated. 47
48. Chunks: Responder Initial Keying
! Contains: Responder Session ID, Session Key Responder Component,
Signature
! Once both end’s cryptosystems reach this point:
! Initiator Component and Responder Component can be combined
! Block cipher key can be changed
! Transport level:
! Switches to using newly chosen Session IDs
! Can begin sending flow data on the newly created Session
! Entire handshake has retransmission rules to deal with lost packets
! Certs and signatures need to be kept compact, as some UDP paths
won’t fragment and have small MTUs
®
Copyright 2010 Adobe Systems Incorporated. 48
49. Chunks: User Data
! API for flows is “per write” not “per byte” framing
! Writes can be fragmented into multiple User Data chunks if needed
! User Data chunk contains:
! Flags (fragmentation, options-present, abandon, final)
! Flow ID (variable-length)
! Sequence Number (variable-length) – each User Data chunk has one unique #
! Sequence Number (and fragment count) exposed in receiver API
! Forward Sequence Number Offset (variable-length) – for partially-reliable in-order
delivery
! An optional Option List (some of which may be mandatory-to-understand)
! Metadata – instead of “well-known ports”, opaque to protocol itself
! Flow association – to create full-duplex (or more) associations of flows
! Data
®
Copyright 2010 Adobe Systems Incorporated. 49
50. Metadata
! Opaque to protocol
! Sent with each user data until acknowledged
! Allows a flow to start by just sending data, not waiting for a round trip to “open a flow”
! Allows flows to start with partially-reliable transmission
®
Copyright 2010 Adobe Systems Incorporated. 50
51. Chunks: Next User Data
! Compact form of User Data when multiple User Data are sent in same
packet
! Multiple small writes in same flow before packet dispatch
! Small fragments when doing PLPMTUD
! Flow ID, Sequence Number, and FSN Offset are implicit, options are
usually not required to be duplicated
! A single packet never contains data from more than one flow
! Priority inversion
! Head-of-line blocking
®
Copyright 2010 Adobe Systems Incorporated. 51
52. Chunks: Acknowledgements
! True selective acknowledgements
! “No Take-backs”
! Two kinds
! List of ranges
! Bitmap
! Both include cumulative ack point and buffer advertisement
! Buffer Probe exists to force an acknowledgement in case transmitter
finds that advertised buffer has gone to zero
! Flow Exception exists so that receiver can reject a flow or close it early
®
Copyright 2010 Adobe Systems Incorporated. 52
53. Sending Data: Transmit Priority and congestion control
! Multiple priority levels, some considered “real-time”
! “Real-time” sets the appropriate header bit
! Different AIMD responses
! AIMD responses change if “real-time reverse notification” is being received
! There is “slow start”
! There is “Fast TCP”-style added growth for large delay*bandwidth
! Loss is derived from the selective acknowledgements
! Duplicate missing ack detection
! Ultimately there is RTO
! RTO is capped at a reasonably short value
! And eventually a session will die if acknowledgements stop
! Or can be closed via a two-way handshake agreement (this is done when there are no flows
on a session for a period of time), or an “emergency” close (stack being shut down)
®
Copyright 2010 Adobe Systems Incorporated. 53
54. Sending Data: Partial Reliability
! Each write into a flow can be fully reliable or partially reliable
! Partially reliable means that:
! It is possible that the resulting User Data chunk(s) may never be sent
! It is possible that the resulting User Data chunk(s) may be sent, but abandoned (not
retransmitted even if not acknowledged) after a period of time
! In-order delivery is supported at the receiver by sending a Forward
Sequence Number, advising of the lowest sequence number which
might still be retransmitted
! Sent as an offset from the Sequence Number to keep the variable-length encoding
size smaller
! If data flow stops, Forward Sequence Number Update(s) (User Data
chunk, but with no actual data) might need to be sent in order to release
data at the receiver as data is abandoned
®
Copyright 2010 Adobe Systems Incorporated. 54
55. Implementation
! C++
! !13000 lines
! ! 100k
! Largely single-threaded
! Slow cryptographic operations can be run in separate work-queue thread(s)
! Platform-independent
! Tested on Win32, MacOS X (PPC, PPC64, x86, x86-64), Linux (x86 and ARM), etc.
! API hides Sessions
! Application deals only with Flows
! Portable and flexible
! Cryptosystem and Metadata plug-ins, Platform Adaptor, API Adaptor
®
Copyright 2010 Adobe Systems Incorporated. 5
55
5
56. RTMFP-based UDP/NAT connectivity test
! Runs in my garage, not a production service:
! http://cc.rtmfp.net
! Establishes an RTMFP session
! Then (using some extra hooks at the server) does what STUN does, in
reverse, using existing RTMFP protocol behavior
! Probes you with IHello and Forwarded IHello and listens for replies
! 4 UDP ports across 3 IP addresses on one server
! Tests both mapping and filtering behavior and report results
®
Copyright 2010 Adobe Systems Incorporated. 56