Presentation material for TokyoRubyKaigi11.
Describes techniques used by H2O, including: techniques to optimize TCP for responsiveness, server-push and cache digests.
Reorganizing Website Architecture for HTTP/2 and BeyondKazuho Oku
This document discusses reorganizing website architecture for HTTP/2 and beyond. It summarizes some issues with HTTP/2 including errors in prioritization where some browsers fail to specify resource priority properly. It also discusses the problem of TCP head-of-line blocking where pending data in TCP buffers can delay higher priority resources. The document proposes solutions to these issues such as prioritizing resources on the server-side and writing only what can be sent immediately to avoid buffer blocking. It also examines the mixed success of HTTP/2 push and argues the server should not push already cached resources.
source : http://www.opennaru.com/apm/apache-tomcat-auto-provisioning/
OPENMARU APM은 Apache 웹서버와 Tomcat 에 대하여 자동으로 설치와 구성 그리고 튜닝하며 해당 구성에 대한 설치보고서를 자동생성하는 OPENMARU Installer 기능을 제공합니다.
이 기능은 OS 만 설치되어 있으면 수분 이내에 웹 서버와 WAS 서버를 설치하고 고난이도의 클러스터링 설정이나 리눅스 튜닝을 자동으로 수행하여 즉시 서비스할 수 있는 환경을 구성해주는 자동 프로비져닝 기능입니다.
기존의 엔지니어의 기술 지원에 의존적인 웹서버와 WAS 구성을 전문가 수준으로 자동으로 구성하여, 구축기간 뿐만아니라 비용 절감 효과를 제공합니다.
Updating Embedded Linux devices in the field requires robust, atomic, and fail-safe software update mechanisms to fix bugs remotely without rendering devices unusable. A commonly used open source updater is SWUpdate, a Linux application that can safely install updates downloaded over the network or from local media using techniques like separate recovery systems and ping-ponging between OS images. It aims to provide atomic system image updates with rollback capabilities and audit logs to ensure devices remain functional after updates.
This document discusses dynamically tracing C code using runtime execution logs. It provides tips for building the environment, using the menuconfig system, makefiles, toolchains and runtime tracing with Qemu logs and Linux ftrace. Ftrace in particular allows tracing kernel functions and call graphs to help understand code flow and task relationships when statically tracing C/C++ sources proves difficult due to macros and configurations.
Tutorial: Using GoBGP as an IXP connecting routerShu Sugimoto
- Show you how GoBGP can be used as a software router in conjunction with quagga
- (Tutorial) Walk through the setup of IXP connecting router using GoBGP
This is the slide deck I presented at the first CommCon event in the UK: it goes through some of the possible strategies for scaling WebRTC applications, mostly if you're using Janus but not only.
Linux offers an extensive selection of programmable and configurable networking components from traditional bridges, encryption, to container optimized layer 2/3 devices, link aggregation, tunneling, several classification and filtering languages all the way up to full SDN components. This talk will provide an overview of many Linux networking components covering the Linux bridge, IPVLAN, MACVLAN, MACVTAP, Bonding/Team, OVS, classification & queueing, tunnel types, hidden routing tricks, IPSec, VTI, VRF and many others.
Channels in Golang allow goroutines to communicate by passing values. Channels can be synchronous or asynchronous. Synchronous channels block until a value is received, while asynchronous channels use a buffer. The select statement allows waiting on multiple channels. Channels use an hchan structure to track metadata like send/receive queues. When a channel is closed, it unblocks all waiting goroutines and causes send operations to panic. Only the sender should close a channel to avoid panics.
How to Choose a Software Update Mechanism for Embedded Linux DevicesLeon Anavi
How to Choose a Software Update Mechanism for Embedded Linux Devices
by Leon Anavi, Konsulko Group
Embedded Linux Conference NA 2022 and Open Source Summit NA 2022
Atomic software system update of an embedded Linux device has always been an important part of any product, especially nowadays with the existing large fleets of connected devices and Internet of Things. There are several different widely used in the industry approaches: A/B updates with dual redundant scheme, delta updates, container-based updates and combined strategies. Open source technologies such as Mender, RAUC and libostree based solutions implement these strategies and provide tools to manage updates of multiple devices. What are the advantages and disadvantages? How to choose an appropriate open source solution for a specific project? This session explores a number of different open source Linux software update technologies with practical examples for integrating them using the Yocto Project and OpenEmbedded. In order to better understand the strengths and weaknesses of each technology, we deep dive in various use cases. The talk is appropriate for anyone with basic knowledge about Linux. It will hopefully help managers, engineers and developers better understand the technical challenges and the available open source solutions with which to overcome them easier and faster so that they can focus on the unique core features of their products.
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...Igalia
By Víctor M. Jáquez.
Slides at https://github.com/01org/gstreamer-vaapi/tree/master/docs/slides/gstconf2015
GStreamer-VAAPI is a set of GStreamer elements (vaapidecode, vaapipostroc, vaapisink, and several encoders) and libgstvapi, a library that wraps libva under a GObject/GStreamer semantics.
This talk will be about VAAPI and its integration with GStreamer. We will show a general overview of VAAPI architecture, the role of libgstvaapi, and finally, the design of GStreamer elements. Afterwards we will show what is ahead in the development of GStreamer-VAAPI, and the current problems and challenges.
Multiple Sites and Disaster Recovery with Ceph: Andrew Hatfield, Red HatOpenStack
Multiple Sites and Disaster Recovery with Ceph
Audience: Intermediate
Topic: Storage
Abstract: Ceph is the leading storage solution for OpenStack. As OpenStack deployments become more mission critical and widely deployed, multiple site requirements are increasing as is the need to ensure disaster recovery and business continuity. Learn about the new capabilities in Ceph that assist customers with meeting these requirements for block and object uses.
Speaker Bio: Andrew Hatfield, Red Hat
Andrew has over 20 years experience in the IT industry across APAC, specialising in Databases, Directory Systems, Groupware, Virtualisation and Storage for Enterprise and Government organisations. When not helping customers slash costs and increase agility by moving to the software-defined storage future, he’s enjoying the subtle tones of Islay Whisky and shredding pow pow on the world’s best snowboard resorts.
OpenStack Australia Day Government - Canberra 2016
https://events.aptira.com/openstack-australia-day-canberra-2016/
Conan is a C/C++ package manager that allows defining and consuming packages from source code or pre-compiled binaries. It supports dependency management, configuration, and testing of C/C++ projects. The document provides an example of using Conan to retrieve and link to the Poco networking library in a C++ project, and describes how to create, test, and publish Conan packages from source code.
Welcome to the third webinar in the "Taming the Dragon" series about Zenoh and its use for robotics, autonomous vehicle and Internet-scale HPC communities.
In this webinar, Julien Enoch, our Senior Solutions Architect here at ZettaScale Technology, talks about how Zenoh can be used to swarm and teleoperate ROS and ROS2-based robots and give them access to the ease-of-use, efficiency, performance and connectivity of the Zenoh platform.
Zenoh is a Pub/Sub/Query protocol that unifies data in motion, data at rest and computations from embedded microcontrollers up to data centers.
You can read more about Zenoh and give it a try here: https://www.zettascale.tech/product/zenoh
Stay up to date with the latest news:
Twitter: https://twitter.com/zettascaletech
LinkedIn: https://www.linkedin.com/company/zettascaletech/
Website: https://www.zettascale.tech/
Newsletter: http://eepurl.com/igPw31
- The document discusses Linux network stack monitoring and configuration. It begins with definitions of key concepts like RSS, RPS, RFS, LRO, GRO, DCA, XDP and BPF.
- It then provides an overview of how the network stack works from the hardware interrupts and driver level up through routing, TCP/IP and to the socket level.
- Monitoring tools like ethtool, ftrace and /proc/interrupts are described for viewing hardware statistics, software stack traces and interrupt information.
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...Codemotion
gRPC is a high performance, language-neutral, general RPC framework developed and open sourced by Google. Built on the HTTP/2 standard, gRPC brings many benefits such as bidirectional streaming, flow control, header compression, multiplexing and more. In this session, you will learn about gRPC and how you can use it in your applications.
The document discusses various techniques for transitioning from IPv4 to IPv6, including dual stack, tunnels, and translation. Dual stack allows simultaneous support of both IPv4 and IPv6 by keeping both protocol stacks. Tunnels encapsulate IPv6 packets in IPv4 packets to carry IPv6 traffic over IPv4 networks. Translation techniques like NAT64 algorithmically translate IPv4 and IPv6 addresses to allow communication between IPv4-only and IPv6-only nodes. Newer methods like 464XLAT and DS-Lite aim to address IPv4 exhaustion by sharing public IPv4 addresses among more clients.
This document introduces UniRx, which brings reactive extensions to Unity using C#. It discusses problems with using coroutines and callbacks for asynchronous code in Unity. UniRx uses IObservable to asynchronously handle network requests, events, and multithreading in a way that is composable, separates concerns, and avoids callback hell. It provides additional methods for Unity like ObservableMonoBehaviour and converting callbacks to observables. The conclusion is that UniRx is better than coroutines or tasks for asynchronous and reactive programming in Unity.
gRPC is a modern open source RPC framework that enables client and server applications to communicate transparently. It is based on HTTP/2 for its transport mechanism and Protocol Buffers as its interface definition language. Some benefits of gRPC include being fast due to its use of HTTP/2, supporting multiple programming languages, and enabling server push capabilities. However, it also has some downsides such as potential issues with load balancing of persistent connections and requiring external services for service discovery.
The document summarizes the use of LLVM for code generation when recompiling Nintendo games as native games. LLVM provides a full compiler infrastructure that can be used to generate code for various platforms from a common intermediate representation (LLVM bitcode). The document discusses using LLVM for code generation from 6502 assembly to generate native code for emulation. Optimizations available through LLVM are also discussed.
Troubleshooting common oslo.messaging and RabbitMQ issuesMichael Klishin
This document discusses common issues with oslo.messaging and RabbitMQ and how to diagnose and resolve them. It provides an overview of oslo.messaging and how it uses RabbitMQ for RPC calls and notifications. Examples are given of where timeouts could occur in RPC calls. Methods for debugging include enabling debug logging, examining RabbitMQ queues and connections, and correlating logs from services. Specific issues covered include RAM usage, unresponsive nodes, rejected TCP connections, TLS connection failures, and high latency. General tips emphasized are using tools to gather data and consulting log files.
Lei Shi & Mei Wang, Qihoo 360
Virtualization is one of the most complicated software in the world. The VMware workstation is very popular in many fields. The windows 10 has a lot of mitigation technology to get avoid of exploitation. It's a great challenge to make a vm escape in VMware workstation under Win 10. Especially when the guest and host are both win 10 and the guest user are NO-ADMIN. This talk will present how to make a vm escape and execute arbitrary code in the host from a NO-ADMIN guest user under Win 10(both the guest and host are Win 10). They have developed three different exploitation. This talk will introduce them and show a very elegant exploitation technology of vm escape. Besides the vm escape technology, this talk will also show the exploitation technology in Win 10. It is quite attractive because there's a process continuation, saying that the guest can execute the exploitation without crashing/disturbing the host process(VMware workstation virtual machine process). The exploitation is very reliable, it reaches nearly 100% successful rate.
Conan.io - The C/C++ package manager for DevelopersUilian Ries
Conan is a decentralized package manager for C and C++ that handles both source code and pre-compiled binaries. It addresses issues with building dependencies from source by allowing developers to define packages through recipes that specify dependencies and build instructions. Conan packages are cached locally and identified by name, version, and user/channel to allow isolation of builds. The Conan community contributes package recipes through open source projects on GitHub like the Conan Center and Bincrafters organization.
DigitalOcean uses Ceph for block and object storage backing for their cloud services. They operate 37 production Ceph clusters running Nautilus and one on Luminous, storing over 54 PB of data across 21,500 OSDs. They deploy and manage Ceph clusters using Ansible playbooks and containerized Ceph packages, and monitor cluster health using Prometheus and Grafana dashboards. Upgrades can be challenging due to potential issues uncovered and slow performance on HDD backends.
This document outlines the process flow for receiving a packet on a network interface, passing it through various networking stacks in the kernel, and delivering it to a socket or application. Key steps include:
1) The packet is received by the network interface driver and passed to netif_receive_skb.
2) It then goes through processing such as checksum verification, filtering by iptables, and defragmentation if needed.
3) The packet is then routed and delivered to the appropriate socket using functions like ip_local_deliver.
4) Data from the packet is then placed into the receive queue for the socket's application to read.
The document discusses optimizations to TCP and HTTP/2 to improve responsiveness on the web. It describes how TCP slow start works and the delays introduced in standard HTTP/2 usage from TCP/TLS handshakes. The author proposes adjusting the TCP send buffer polling threshold to allow switching between responses more quickly based on TCP congestion window state. Benchmark results show this can reduce response times by eliminating an extra round-trip delay.
This is the slide deck I presented at the first CommCon event in the UK: it goes through some of the possible strategies for scaling WebRTC applications, mostly if you're using Janus but not only.
Linux offers an extensive selection of programmable and configurable networking components from traditional bridges, encryption, to container optimized layer 2/3 devices, link aggregation, tunneling, several classification and filtering languages all the way up to full SDN components. This talk will provide an overview of many Linux networking components covering the Linux bridge, IPVLAN, MACVLAN, MACVTAP, Bonding/Team, OVS, classification & queueing, tunnel types, hidden routing tricks, IPSec, VTI, VRF and many others.
Channels in Golang allow goroutines to communicate by passing values. Channels can be synchronous or asynchronous. Synchronous channels block until a value is received, while asynchronous channels use a buffer. The select statement allows waiting on multiple channels. Channels use an hchan structure to track metadata like send/receive queues. When a channel is closed, it unblocks all waiting goroutines and causes send operations to panic. Only the sender should close a channel to avoid panics.
How to Choose a Software Update Mechanism for Embedded Linux DevicesLeon Anavi
How to Choose a Software Update Mechanism for Embedded Linux Devices
by Leon Anavi, Konsulko Group
Embedded Linux Conference NA 2022 and Open Source Summit NA 2022
Atomic software system update of an embedded Linux device has always been an important part of any product, especially nowadays with the existing large fleets of connected devices and Internet of Things. There are several different widely used in the industry approaches: A/B updates with dual redundant scheme, delta updates, container-based updates and combined strategies. Open source technologies such as Mender, RAUC and libostree based solutions implement these strategies and provide tools to manage updates of multiple devices. What are the advantages and disadvantages? How to choose an appropriate open source solution for a specific project? This session explores a number of different open source Linux software update technologies with practical examples for integrating them using the Yocto Project and OpenEmbedded. In order to better understand the strengths and weaknesses of each technology, we deep dive in various use cases. The talk is appropriate for anyone with basic knowledge about Linux. It will hopefully help managers, engineers and developers better understand the technical challenges and the available open source solutions with which to overcome them easier and faster so that they can focus on the unique core features of their products.
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...Igalia
By Víctor M. Jáquez.
Slides at https://github.com/01org/gstreamer-vaapi/tree/master/docs/slides/gstconf2015
GStreamer-VAAPI is a set of GStreamer elements (vaapidecode, vaapipostroc, vaapisink, and several encoders) and libgstvapi, a library that wraps libva under a GObject/GStreamer semantics.
This talk will be about VAAPI and its integration with GStreamer. We will show a general overview of VAAPI architecture, the role of libgstvaapi, and finally, the design of GStreamer elements. Afterwards we will show what is ahead in the development of GStreamer-VAAPI, and the current problems and challenges.
Multiple Sites and Disaster Recovery with Ceph: Andrew Hatfield, Red HatOpenStack
Multiple Sites and Disaster Recovery with Ceph
Audience: Intermediate
Topic: Storage
Abstract: Ceph is the leading storage solution for OpenStack. As OpenStack deployments become more mission critical and widely deployed, multiple site requirements are increasing as is the need to ensure disaster recovery and business continuity. Learn about the new capabilities in Ceph that assist customers with meeting these requirements for block and object uses.
Speaker Bio: Andrew Hatfield, Red Hat
Andrew has over 20 years experience in the IT industry across APAC, specialising in Databases, Directory Systems, Groupware, Virtualisation and Storage for Enterprise and Government organisations. When not helping customers slash costs and increase agility by moving to the software-defined storage future, he’s enjoying the subtle tones of Islay Whisky and shredding pow pow on the world’s best snowboard resorts.
OpenStack Australia Day Government - Canberra 2016
https://events.aptira.com/openstack-australia-day-canberra-2016/
Conan is a C/C++ package manager that allows defining and consuming packages from source code or pre-compiled binaries. It supports dependency management, configuration, and testing of C/C++ projects. The document provides an example of using Conan to retrieve and link to the Poco networking library in a C++ project, and describes how to create, test, and publish Conan packages from source code.
Welcome to the third webinar in the "Taming the Dragon" series about Zenoh and its use for robotics, autonomous vehicle and Internet-scale HPC communities.
In this webinar, Julien Enoch, our Senior Solutions Architect here at ZettaScale Technology, talks about how Zenoh can be used to swarm and teleoperate ROS and ROS2-based robots and give them access to the ease-of-use, efficiency, performance and connectivity of the Zenoh platform.
Zenoh is a Pub/Sub/Query protocol that unifies data in motion, data at rest and computations from embedded microcontrollers up to data centers.
You can read more about Zenoh and give it a try here: https://www.zettascale.tech/product/zenoh
Stay up to date with the latest news:
Twitter: https://twitter.com/zettascaletech
LinkedIn: https://www.linkedin.com/company/zettascaletech/
Website: https://www.zettascale.tech/
Newsletter: http://eepurl.com/igPw31
- The document discusses Linux network stack monitoring and configuration. It begins with definitions of key concepts like RSS, RPS, RFS, LRO, GRO, DCA, XDP and BPF.
- It then provides an overview of how the network stack works from the hardware interrupts and driver level up through routing, TCP/IP and to the socket level.
- Monitoring tools like ethtool, ftrace and /proc/interrupts are described for viewing hardware statistics, software stack traces and interrupt information.
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...Codemotion
gRPC is a high performance, language-neutral, general RPC framework developed and open sourced by Google. Built on the HTTP/2 standard, gRPC brings many benefits such as bidirectional streaming, flow control, header compression, multiplexing and more. In this session, you will learn about gRPC and how you can use it in your applications.
The document discusses various techniques for transitioning from IPv4 to IPv6, including dual stack, tunnels, and translation. Dual stack allows simultaneous support of both IPv4 and IPv6 by keeping both protocol stacks. Tunnels encapsulate IPv6 packets in IPv4 packets to carry IPv6 traffic over IPv4 networks. Translation techniques like NAT64 algorithmically translate IPv4 and IPv6 addresses to allow communication between IPv4-only and IPv6-only nodes. Newer methods like 464XLAT and DS-Lite aim to address IPv4 exhaustion by sharing public IPv4 addresses among more clients.
This document introduces UniRx, which brings reactive extensions to Unity using C#. It discusses problems with using coroutines and callbacks for asynchronous code in Unity. UniRx uses IObservable to asynchronously handle network requests, events, and multithreading in a way that is composable, separates concerns, and avoids callback hell. It provides additional methods for Unity like ObservableMonoBehaviour and converting callbacks to observables. The conclusion is that UniRx is better than coroutines or tasks for asynchronous and reactive programming in Unity.
gRPC is a modern open source RPC framework that enables client and server applications to communicate transparently. It is based on HTTP/2 for its transport mechanism and Protocol Buffers as its interface definition language. Some benefits of gRPC include being fast due to its use of HTTP/2, supporting multiple programming languages, and enabling server push capabilities. However, it also has some downsides such as potential issues with load balancing of persistent connections and requiring external services for service discovery.
The document summarizes the use of LLVM for code generation when recompiling Nintendo games as native games. LLVM provides a full compiler infrastructure that can be used to generate code for various platforms from a common intermediate representation (LLVM bitcode). The document discusses using LLVM for code generation from 6502 assembly to generate native code for emulation. Optimizations available through LLVM are also discussed.
Troubleshooting common oslo.messaging and RabbitMQ issuesMichael Klishin
This document discusses common issues with oslo.messaging and RabbitMQ and how to diagnose and resolve them. It provides an overview of oslo.messaging and how it uses RabbitMQ for RPC calls and notifications. Examples are given of where timeouts could occur in RPC calls. Methods for debugging include enabling debug logging, examining RabbitMQ queues and connections, and correlating logs from services. Specific issues covered include RAM usage, unresponsive nodes, rejected TCP connections, TLS connection failures, and high latency. General tips emphasized are using tools to gather data and consulting log files.
Lei Shi & Mei Wang, Qihoo 360
Virtualization is one of the most complicated software in the world. The VMware workstation is very popular in many fields. The windows 10 has a lot of mitigation technology to get avoid of exploitation. It's a great challenge to make a vm escape in VMware workstation under Win 10. Especially when the guest and host are both win 10 and the guest user are NO-ADMIN. This talk will present how to make a vm escape and execute arbitrary code in the host from a NO-ADMIN guest user under Win 10(both the guest and host are Win 10). They have developed three different exploitation. This talk will introduce them and show a very elegant exploitation technology of vm escape. Besides the vm escape technology, this talk will also show the exploitation technology in Win 10. It is quite attractive because there's a process continuation, saying that the guest can execute the exploitation without crashing/disturbing the host process(VMware workstation virtual machine process). The exploitation is very reliable, it reaches nearly 100% successful rate.
Conan.io - The C/C++ package manager for DevelopersUilian Ries
Conan is a decentralized package manager for C and C++ that handles both source code and pre-compiled binaries. It addresses issues with building dependencies from source by allowing developers to define packages through recipes that specify dependencies and build instructions. Conan packages are cached locally and identified by name, version, and user/channel to allow isolation of builds. The Conan community contributes package recipes through open source projects on GitHub like the Conan Center and Bincrafters organization.
DigitalOcean uses Ceph for block and object storage backing for their cloud services. They operate 37 production Ceph clusters running Nautilus and one on Luminous, storing over 54 PB of data across 21,500 OSDs. They deploy and manage Ceph clusters using Ansible playbooks and containerized Ceph packages, and monitor cluster health using Prometheus and Grafana dashboards. Upgrades can be challenging due to potential issues uncovered and slow performance on HDD backends.
This document outlines the process flow for receiving a packet on a network interface, passing it through various networking stacks in the kernel, and delivering it to a socket or application. Key steps include:
1) The packet is received by the network interface driver and passed to netif_receive_skb.
2) It then goes through processing such as checksum verification, filtering by iptables, and defragmentation if needed.
3) The packet is then routed and delivered to the appropriate socket using functions like ip_local_deliver.
4) Data from the packet is then placed into the receive queue for the socket's application to read.
The document discusses optimizations to TCP and HTTP/2 to improve responsiveness on the web. It describes how TCP slow start works and the delays introduced in standard HTTP/2 usage from TCP/TLS handshakes. The author proposes adjusting the TCP send buffer polling threshold to allow switching between responses more quickly based on TCP congestion window state. Benchmark results show this can reduce response times by eliminating an extra round-trip delay.
This document discusses programming TCP for responsiveness when sending HTTP/2 responses. It describes how to reduce head-of-line blocking by filling the TCP congestion window before sending data. The key points are reading TCP states via getsockopt to determine how much data can be sent immediately, and optimizing this only for high latency connections or small congestion windows to avoid additional response delays. Benchmarks show this approach can reduce response times from multiple round-trip times to a single RTT.
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebAll Things Open
Presented at All Things Open 2018
Presented by Alexander Krizhanovsky with Tempesta Technologies INC
10/23/18 - 2:00 PM - Networking/Infrastructure Track
This document introduces HTTP/2, describing its goals of improving on HTTP 1.1 by allowing multiple requests to be sent over a single TCP connection through request multiplexing and header compression. It outlines issues with HTTP 1.1 like head-of-line blocking and slow start that cause latency. HTTP/2 aims to address these by sending requests concurrently in interleaved frames and compressing headers. The document demonstrates these concepts and how to troubleshoot HTTP/2 connections using the Chrome network console and Wireshark.
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 erapeychevi
The new HTTP/2 protocol which is going to replace HTTP 1.1 was finished on February. Together with it, QUIC is being developed rapidly. Discover why are they so important for the Web and how will they influence the way we optimize the Web stack for the HTTP/2 era.
A technical description of http2, including background of HTTP what's been problematic with it and how http2 and its features improves the web.
See the "http2 explained" document with the complete transcript and more: http://daniel.haxx.se/http2/
(Updated version to slides shown on April 13th, 2016)
Talk about HTTP/2, how it has been deployed, did it meet its promises and how QUIC is going to attempt to fix some of the remaining issues. Held in FOSDEM at Febyrar 2017.
- HTTP/2 aims to reduce HTTP response times by improving bandwidth efficiency and reducing the number of connections and messages needed. It allows requests to be multiplexed over a single connection.
- While it can't reduce latency at the packet level, it aims to reduce overall response times through features like header compression, server push, and priority hints.
- HTTP/2 is currently supported by major browsers and servers. Implementations so far show response time reductions of 5-60% compared to HTTP/1.1.
Intilop Corporation is a pioneer in developing and providing ‘Customizable Silicon IP’ in the area of Networking, Network Security, data storage-SAN/NAS and embedded applications that allows customers to differentiate their products and make quick enhancements. Intilop and its customers have successfully implemented these in several ASICs, SOCs, FPGAs and full-scale systems.
The document introduces HTTP/2 and discusses limitations of HTTP 1.1 including head of line blocking, TCP slow start, and latency issues. It describes key features of HTTP/2 such as multiplexing requests over a single TCP connection, header compression, and server push to reduce page load times. The presentation includes demos of HTTP/2 in Chrome dev tools and Wireshark to troubleshoot HTTP/2 connections.
The web has dramatically evolved over the last 20+ years, yet HTTP - the workhorse of the Web - has not. Web developers have worked around HTTP's limitations, but:
--> Performance still falls short of full bandwidth utilization
--> Web design and maintenance are more complex
--> Resource consumption increases for client and server
--> Cacheability of resources suffers
HTTP/2 attempts to solve many of the shortcomings and inflexibilities of HTTP/1.1
This document provides instructions for upgrading a router's firmware and describes various router networking configuration options. It discusses upgrading firmware by dragging and dropping files, configuring NTP for time synchronization, using the router as a DNS server and cache, setting up DHCP for IP address leasing, implementing bandwidth management through speed limiting and queues, and using ARP for MAC address resolution.
This document provides a primer on browser networking. It begins with an introduction and overview of the target audience. The content includes an explanation of the TCP/IP network model and layers. Key aspects of TCP such as the three-way handshake, flow control, slow start, and head of line blocking are described. The history of web protocols like HTTP 0.9, HTTP 1.0, HTTP 1.1, and developments like HTTP 2.0, SPDY, and QUIC are summarized. Examples and diagrams are provided to illustrate concepts. Resources for further reading are included.
Reconsider TCPdump for Modern TroubleshootingAvi Networks
Are you tired of troubleshooting with TCPdump? The Avi Vantage Platform is here to help. Learn how you can reconsider your decades-old CPU-intensive logging tools – and gain intuitive, real-time analytics, faster time-to-resolution, modern SSL / TLS encryption, and (most importantly) happy IT teams focused on delivering applications.
Watch this Avi webinar to learn:
- Why TCPdump should be your tool of last resort
- How headers compressed with HTTP/2, PFS, and distributed systems have rendered certain tools useless
- How you can replace TCPdump with intelligent logs and analytics
- How to future proof your troubleshooting tools with HTTP/3, TLS 1.3, containers and Kubernetes
Watch on-demand here https://www.networkworld.com/resources/form?placement_id=de4979d3-4f46-498e-8285-2bdad91ca3fb&brand_id=512
В докладе рассказывается о расширении для стека протоколов TCP/IP в ОС Linux, которое необходимо для того, чтобы HTTPS работал в том же стеке, что TCP и IP. DDoS-атаки такого типа как HTTP-флуд на уровне приложений, как правило, подавляются HTTP-акселераторами или балансировщиками нагрузки HTTP. Однако интерфейс сокетов Linux, используемый программным обеспечением, не дает той продуктивности, которая необходима при предельных нагрузках, вызванных DDoS-атаками. HTTP-серверы на базе стеков TCP/IP в пространстве пользователя становятся популярными в связи с увеличением их эффективности, но стеки TCP/IP представляют собой масштабный и сложный код, поэтому неблагоразумно реализовывать и исполнять его дважды — в пространстве пользователя и пространстве ядра. Стек TCP/IP в пространстве ядра хорошо интегрирован со многими мощными инструментами, например IPTables, IPVS, tc, tcpdump, которые недоступны для стека TCP/IP в пространстве пользователя или требуют сложных интерфейсов. Докладчик представит решение Tempesta FW, которое передает обработку HTTPS ядру. HTTPS встроен в стек TCP/IP Linux. Исполняя функцию межсетевого экрана HTTP, Tempesta FW устанавливает набор ограничений по скорости передачи и набор эвристических правил для защиты от таких атак как HTTPS-флуд и Slow HTTP.
This document provides an introduction to IPv6 including a discussion of IPv6 addresses, headers, autoconfiguration, DNS, and the transition from IPv4. It describes key aspects of IPv6 such as the 128-bit addresses, extension headers, stateless address autoconfiguration, neighbor discovery, and duplicate address detection. The document also discusses DNS records for IPv6, transition technologies like dual-stack and tunneling, and some security considerations for IPv6 deployment.
This document summarizes a presentation about the QUIC protocol. It begins with an overview of QUIC and its goals of eliminating overhead from the strict layering of TCP, TLS, and HTTP. It then discusses problems with the traditional protocols like multiple roundtrips needed for HTTP requests, TCP handshake overhead, and inefficient usage of bandwidth. QUIC aims to address these by being UDP-based and combining connection establishment and encryption with sending and receiving data in one roundtrip or less. The presentation also covers how prior protocols like SPDY and HTTP/2 improved performance but were still bottlenecked by relying on TCP. It concludes with an explanation of bufferbloat and how excessive buffering in network nodes can increase latency and jitter.
The document discusses the performance of HTTP/2 compared to HTTP/1.1 across different network conditions. It summarizes results from testing 8 real websites under 16 bandwidth and latency combinations with varying packet loss rates. Overall, HTTP/2 performs better for document complete time and speed index, especially on slower connections, though results vary depending on the specific site and metrics measured.
Cache aware-server-push in H2O version 1.5Kazuho Oku
This document discusses cache-aware server push in H2O version 1.5. It describes calculating a fingerprint of cached assets using a Golomb compressed set to identify what assets need to be pushed from the server. It also discusses implementing this fingerprint using a cookie or service worker. The hybrid approach stores responses in the service worker cache and updates the cookie fingerprint. H2O 1.5 implements cookie-based fingerprints to cancel push indications for cached assets, potentially improving page load speeds.
JSON SQL Injection and the Lessons LearnedKazuho Oku
This document discusses JSON SQL injection and lessons learned from vulnerabilities in SQL query builders. It describes how user-supplied JSON input containing operators instead of scalar values could manipulate queries by injecting conditions like id!='-1' instead of a specific id value. This allows accessing unintended data. The document examines how SQL::QueryMaker and a strict mode in SQL::Maker address this by restricting query parameters to special operator objects or raising errors on non-scalar values. While helpful, strict mode may break existing code, requiring changes to parameter handling. The vulnerability also applies to other languages' frameworks that similarly convert arrays to SQL IN clauses.
This document discusses using the prove command-line tool to run tests and other scripts. Prove is a test runner that uses the Test Anything Protocol (TAP) to aggregate results. It can run tests and scripts written in any language by specifying the interpreter with --exec. Extensions other than .t can be run by setting --ext. Prove searches for tests in the t/ directory by default but can run any kind of scripts or tasks placed in t/, such as service monitoring scripts. The .proverc file can save common prove options for a project.
JSX - developing a statically-typed programming language for the WebKazuho Oku
Kazuho Oku presents JSX, a statically-typed programming language that compiles to JavaScript. JSX aims to improve productivity over JavaScript by enabling errors to be caught at compile-time rather than runtime. It also aims to optimize code size and execution speed compared to JavaScript through type information and compiler optimizations. Oku discusses JSX language features like classes and types, benchmarks showing improved performance over JavaScript, and efforts to bind JSX to W3C standards through automatic translation of interface definition languages.
The document discusses the JSX Optimizer, which performs optimizations on JavaScript code that JavaScript VMs cannot. It aims to minimize the need for inline caching, pressure on the garbage collector, and maintain the original code structure while optimizing. Some optimizations included are constant folding, inlining functions, and unboxing. Challenges include switching to SSA form and maintaining debuggability of the original code. Benchmark results show a 13.5-28.7% increase in frames per second for the Box2D game engine.
On Dec. 4, 1963, the Second Vatican Council solemnly approved its first two documents: the constitution on the Sacred Liturgy, Sacrosanctum Concilium, and the decree Inter Mirifica, regarding the mass media. The latter document is much less known than the former one.
Nonetheless, Inter Mirifica offers some crucial principles to guide us in a world where we find ourselves ever more immersed in mass communication: the press, film, television, along with the newer forms of media.
During the preparation for Vatican II, the Church keenly realized the importance of this topic, and Pope John XXIII established a special body to work on a text that might articulate the Church’s teaching on the mass media and promote her action in this area. The result of this work was an extensive document, entitled “On the instruments of social communication,” which was presented to the Council on Nov. 23, 1962.
挂科无法毕业鉴于此购买文凭【q薇1954292140】一比一原版(UIC毕业证)加泰罗尼亚国际大学毕业证如何办理改成绩单GPA,文凭购买,毕业证办理,文凭办理只是基础业务。【q薇1954292140】一比一还原国外大学毕业证,定制国外大学学历,制作国外大学文凭,复刻国外大学毕业证书。学位证1:1完美还原海外各大学毕业材料上的工艺:水印,阴影底纹,钢印LOGO烫金烫银,LOGO烫金烫银复合重叠。文字图案浮雕、激光镭射、紫外荧光、温感、复印防伪等防伪工艺。
【办理加泰罗尼亚国际大学成绩单Buy Universitat Internacional de Catalunya Transcripts】
购买日韩成绩单、英国大学成绩单、美国大学成绩单、澳洲大学成绩单、加拿大大学成绩单(q微1954292140)新加坡大学成绩单、新西兰大学成绩单、爱尔兰成绩单、西班牙成绩单、德国成绩单。成绩单的意义主要体现在证明学习能力、评估学术背景、展示综合素质、提高录取率,以及是作为留信认证申请材料的一部分。
加泰罗尼亚国际大学成绩单能够体现您的的学习能力,包括加泰罗尼亚国际大学课程成绩、专业能力、研究能力。(q微1954292140)具体来说,成绩报告单通常包含学生的学习技能与习惯、各科成绩以及老师评语等部分,因此,成绩单不仅是学生学术能力的证明,也是评估学生是否适合某个教育项目的重要依据!
Buy Universitat Internacional de Catalunya Diploma《正式成绩单论文没过》有文凭却得不到认证。又该怎么办?鉴于此,购买西班牙毕业证【q微1954292140】西班牙文凭购买,西班牙文凭购买,西班牙文凭定制,西班牙文凭补办。专业在线定制西班牙大学文凭,定做西班牙本科文凭,【q微1954292140】复制西班牙Universitat Internacional de Catalunya completion letter。在线快速补办西班牙本科毕业证、硕士文凭证书,购买西班牙学位证、加泰罗尼亚国际大学Offer,西班牙大学文凭在线购买。
【主营项目】
一、工作未确定,回国需先给父母、亲戚朋友看下文凭的情况,办理毕业证|办理加泰罗尼亚国际大学毕业证(UIC毕业证书)文凭: 买大学毕业证|买大学文凭【q薇1954292140】学位证明书如何办理申请?
二、回国进私企、外企、自己做生意的情况,这些单位是不查询毕业证真伪的,而且国内没有渠道去查询国外文凭的真假,也不需要提供真实教育部认证。鉴于此,办理加泰罗尼亚国际大学毕业证【q薇1954292140】西班牙学位证(UIC毕业证书)加泰罗尼亚国际大学毕业证书如何办理国外大学毕业证, 文凭办理, 国外文凭办理, 留信网认证
三.材料咨询办理、认证咨询办理加泰罗尼亚国际大学毕业证(UIC毕业证书)请加学历顾问【微信:1954292140】毕业证购买指大学文凭购买,毕业证办理和文凭办理。学院文凭定制,学校原版文凭补办,扫描件文凭定做,100%文凭复刻。经常操作的国家有美国毕业证,英国毕业证,澳洲毕业证,加拿大毕业证,以及德国毕业证,法国毕业证、荷兰毕业证、瑞士毕业证、日本毕业证、韩国毕业证、新西兰毕业证、新加坡毕业证、泰国毕业证、马来西亚毕业证等。包括了本科毕业证,硕士毕业证。
ICP -2 Review – What It Is, and How to Participate and Provide Your FeedbackAPNIC
Joyce Chen, Senior Advisor, Strategic Engagement at APNIC, presented on the ICP-2 review process at the APAC DNS Forum 2025 held in Hanoi, Vietnam from 8 to 9 May 2025.
What to Expect When Hiring Shopify Development Services_ A Technical Walkthro...CartCoders
Get custom Shopify development services tailored to your store’s needs. From theme setup to full-scale integrations, our Shopify experts help create reliable, fast-loading, and conversion-focused online stores that fit your brand and drive more sales.
Darley - BSides Nairobi (2025-06-07) Epochalypse 2038 - Time is Not on Our Si...treyka
Epochalypse 2038: Time is Not on Our Side
Presented by Trey Darley, Founder – Threshold Continuity Alliance
BSides Nairobi – 2025-06-07
The Year 2038 Problem is real — and it's already here.
At exactly 03:14:07 UTC on January 19, 2038, 32-bit signed Unix time overflows. Systems that use 32-bit time_t will reset to 1901 and/or fail outright. But this isn’t just about old embedded gear. It’s about trust, cryptographic integrity, log coherence, financial timestamps, system coordination, and the fragile scaffolding of global infrastructure.
This talk explores a dangerous and still largely invisible class of vulnerabilities: timestamp fragility and time synchronization failure.
We cover:
- Why over 60% of global software systems still depend on Unix epoch time
- How 2038 bugs can manifest subtly — without a crash, and without warning
- Why critical infrastructure (energy, telecom, aviation, finance) is especially at risk
- How even modern firmware is being shipped today with latent Y2038 bugs
- The implications for TLS certificates, forensic timelines, billing systems, and safety-critical protocols
- How time can be maliciously spoofed, delayed, or misaligned — and why legacy NTP is often unauthenticated
- A pragmatic call for 2038 rollover testbeds, code audits, and hardened time infrastructure
- Recommendations for deploying secure time protocols (NTS, RFC 8915), GPS + Rubidium/Cesium fallback, and air-gapped sync
You’ll leave with a grounded understanding of:
- Why time isn’t just an input — it’s an untrusted vector
- What engineers, regulators, and defenders must do now to avert a long-tail catastrophe
- How underserved regions may suffer disproportionately — but also leap ahead by refusing to inherit broken time
About the Speaker
Trey Darley is the founder of the Threshold Continuity Alliance (TCA), an initiative focused on strategic risk, infrastructure integrity, and time-based vulnerability remediation. A long-time figure in the global cybersecurity community, Trey works at the intersection of symbolic systems, resilience engineering, and future ethics.
Predicting Site Quality Google Patent US9767157B2 - Behzad Hussain.pdfBehzad Hussain
𝐏𝐚𝐭𝐞𝐧𝐭 𝐈𝐧𝐟𝐨𝐫𝐦𝐚𝐭𝐢𝐨𝐧
𝗣𝗮𝘁𝗲𝗻𝘁 𝗡𝗼.: US9767157B2
𝗧𝗶𝘁𝗹𝗲: Predicting Site Quality
𝗔𝘀𝘀𝗶𝗴𝗻𝗲𝗲: Google Inc., Mountain View, CA
𝗜𝗻𝘃𝗲𝗻𝘁𝗼𝗿𝘀: Navneet Panda; Yun Zhou
𝗜𝘀𝘀𝘂𝗲 𝗗𝗮𝘁𝗲: September 19, 2017
𝐀𝐛𝐬𝐭𝐫𝐚𝐜𝐭
This patent describes methods and systems for automatically predicting a quality score for a website (or “site”) that can be used as a ranking signal in search engines:
1. 𝗕𝗮𝘀𝗲𝗹𝗶𝗻𝗲 𝘀𝗶𝘁𝗲 𝗾𝘂𝗮𝗹𝗶𝘁𝘆 𝘀𝗰𝗼𝗿𝗲𝘀 obtained for previously scored sites.
2. 𝗣𝗵𝗿𝗮𝘀𝗲 𝗺𝗼𝗱𝗲𝗹𝘀 that map phrase-specific relative frequency measures to baseline quality scores.
3. 𝗔𝗴𝗴𝗿𝗲𝗴𝗮𝘁𝗲 𝘀𝗰𝗼𝗿𝗶𝗻𝗴 of a new site by applying the phrase model to its phrase frequencies and then predicting its overall site quality score from the aggregate.
𝐒𝐲𝐬𝐭𝐞𝐦 𝐀𝐫𝐜𝐡𝐢𝐭𝐞𝐜𝐭𝐮𝐫𝐞 (𝐅𝐢𝐠. 𝟏)
1. 𝗨𝘀𝗲𝗿 𝗗𝗲𝘃𝗶𝗰𝗲 & 𝗡𝗲𝘁𝘄𝗼𝗿𝗸: Users submit queries via a device (e.g., browser) over a network.
2. 𝗦𝗲𝗮𝗿𝗰𝗵 𝗦𝘆𝘀𝘁𝗲𝗺: Contains an Indexing Engine (builds the index database) and a Ranking Engine (ranks results).
3. 𝗦𝗶𝘁𝗲 𝗦𝗰𝗼𝗿𝗶𝗻𝗴 𝗘𝗻𝗴𝗶𝗻𝗲: Computes site quality scores using the phrase model and provides these scores to the ranking engine as part of the ranking signals.
𝐏𝐡𝐫𝐚𝐬𝐞 𝐌𝐨𝐝𝐞𝐥 𝐆𝐞𝐧𝐞𝐫𝐚𝐭𝐢𝐨𝐧 (𝐅𝐢𝐠. 𝟐)
1. 𝗧𝗼𝗸𝗲𝗻𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝗮𝗻𝗱 𝗻-𝗴𝗿𝗮𝗺 𝗘𝘅𝘁𝗿𝗮𝗰𝘁𝗶𝗼𝗻: For each site in a corpus of previously scored sites, extract n-grams (typically 2- to 5-grams) from page content.
2. 𝗥𝗲𝗹𝗮𝘁𝗶𝘃𝗲 𝗙𝗿𝗲𝗾𝘂𝗲𝗻𝗰𝘆 𝗖𝗮𝗹𝗰𝘂𝗹𝗮𝘁𝗶𝗼𝗻: For each extracted n-gram, compute its relative frequency as the ratio of pages containing that n-gram to total pages on the site.
3. 𝗕𝘂𝗰𝗸𝗲𝘁 𝗣𝗮𝗿𝘁𝗶𝘁𝗶𝗼𝗻𝗶𝗻𝗴: Group sites into 20–100 buckets based on their relative frequency measures for each n-gram, ensuring roughly equal bucket sizes or equal interval ranges.
4. 𝗕𝗮𝘀𝗲𝗹𝗶𝗻𝗲 𝗦𝗰𝗼𝗿𝗲 𝗔𝗴𝗴𝗿𝗲𝗴𝗮𝘁𝗶𝗼𝗻: For each bucket, calculate an average baseline quality score from the known scores of sites in that bucket.
5. 𝗣𝗵𝗿𝗮𝘀𝗲 𝗠𝗼𝗱𝗲𝗹 𝗖𝗼𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗶𝗼𝗻: Associate each n-gram with its vector of bucket-average quality scores. Optionally exclude “neutral” phrases whose scores are statistically indistinguishable from the global average.
𝐒𝐢𝐭𝐞 𝐐𝐮𝐚𝐥𝐢𝐭𝐲 𝐏𝐫𝐞𝐝𝐢𝐜𝐭𝐢𝐨𝐧 𝐏𝐫𝐨𝐜𝐞𝐬𝐬 (𝐅𝐢𝐠. 𝟑)
1. 𝗥𝗲𝗹𝗮𝘁𝗶𝘃𝗲 𝗙𝗿𝗲𝗾𝘂𝗲𝗻𝗰𝘆 𝗳𝗼𝗿 𝗡𝗲𝘄 𝗦𝗶𝘁𝗲: Extract the same set of n-grams from the new (previously unscored) site and compute their relative frequencies.
2. 𝗕𝘂𝗰𝗸𝗲𝘁 𝗟𝗼𝗼𝗸𝘂𝗽: For each phrase, map its relative frequency to the corresponding bucket’s average score in the phrase model.
3. 𝗔𝗴𝗴𝗿𝗲𝗴𝗮𝘁𝗲 𝗦𝗰𝗼𝗿𝗲 𝗖𝗼𝗺𝗽𝘂𝘁𝗮𝘁𝗶𝗼𝗻: Compute an aggregate score across all phrases’ bucket scores—typically via a weighted or unweighted mean. Weights can reflect phrase frequency, distance from a “neutral” score, or limit the influence of overly frequent phrases.
3D Graphics means creating images that look real and have depth, height, and width, just like real-life objects. These graphics are made using special software and help to make things look more realistic and detailed in games, movies, design, and much more.
On the 29th of June, 1936, Pius XI addressed a pontifical encyclical entitled "Vigilanti Cura" to all the Catholic bishops in the United States. This encyclical was dedicated to "The Motion Picture" and justified his intervention by "the lamentable progress of the motion picture art and industry in the portrayal of sin and vice". I've appropriated the title of his encyclical for my film, putting it to a completely different use to that originally intended. The 'photogenic quality' of the Latin terminology has, however, been preserved and, as per Adorno: "like a neon light which has just been switched on, the commercial and promotional nature of contemporary culture glows brightly". Vigilanti Cura is an irreverent film; insolent and deliberately confusing; a grab-bag of immorality. The montage combines a range of archival imagery from Humanite magazine with images sourced from the media (the military parade of the 14th of July, the current sorry crop of political celebrities ...) or from the cinema (the automatic writing of a puzzle composed of motifs borrowed from existing films). Vigilanti Cura ... or merely a tacit admission of the downfall of contemporary man, drowning in a sea of political, social and religious fundamentalisms. Where is he to be found? Locked in a vis-a-vis with depression and ego. Psychoanalysis no longer serves as a pretext for the dissolution of sexual and social taboos; it now provokes withdrawal into an auto-reflexive isolation, to the extent that societal problems get frozen in the mirror of Auto-Medusification. The mirror has become our idol - let's destroy it!
Cloud Computing – iCloud
Cloud computing is a modern technology that allows users to store and access data over the internet instead of using local storage devices. One of the most popular cloud services is Apple's iCloud, which is specially designed for Apple users.
iCloud helps users keep their data safe, accessible, and synchronized across all Apple devices like iPhones, iPads, and MacBooks. It is simple to use, secure, and saves time by automatically backing up important information.
How to Make Money as a Cam Model – Tips, Tools & Real TalkCam Sites Expert
Want to turn your charm, confidence, and camera into a real source of income? This presentation reveals everything you need to know about making money as a cam model — whether you're just starting out or looking to boost your earnings. From choosing the right platform, building your fanbase, and setting up your cam space, to marketing yourself and creating passive income with clips, this guide covers it all. I’ll also share real-world insights from my experience on CamsRating.com. No BS — just proven tips, smart tools, and sexy strategies to get paid doing what you love.
2. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Who am I?
n Kazuho Oku
n Major works:
⁃ Palmscape / Xiino (web browser for Palm OS)
• awarded M.I.T. TR 100/2002
⁃ Mitoh project 2004 super creator
⁃ Q4M (message queue plugin for MySQL)
• MySQL Conference Community Awards 2011
⁃ H2O (HTTP/2 server)
• Japan OSS Contribution Award 2015
2 Developing the fastest HTTP/2 server
13. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
The reasons HTTP/1.1 is slow
n concurrency is too small
⁃ multiple round-trips required when issuing many
requests
n no prioritization between. requests
⁃ can suspend HTML / image streams in favor of
CSS / JS
n big request / response headers
⁃ typically hundreds of octets
⁃ becomes an overhead when issuing many reqs.
13 Developing the fastest HTTP/2 server
18. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
TCP slow start
n Initial Congestion Window (IW)=10
⁃ only 10 packets can be sent in first RTT
⁃ used to be IW=3
n window increase: 1.5x/RTT
18 Developing the fastest HTTP/2 server
0
100,000
200,000
300,000
400,000
500,000
600,000
700,000
800,000
1 2 3 4 5 6 7 8
bytes transmi,ed
RTT
TCP slow start (IW10, MSS1460)
19. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Flow of the ideal HTTP
n fastest within the limits of TCP/IP
n receive a request 0-RTT, and:
⁃ first send CSS/JS*
⁃ then send the HTML
⁃ then send the images*
*: but only the ones not cached by the browser
19 Developing the fastest HTTP/2 server
client server
1 RTT
request
response
20. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
The reality in HTTP/2
n TCP establishment: +1 RTT
n TLS handshake: +2 RTT*
n HTML fetch: +1 RTT
n JS,CSS fetch: +2 RTT**
n Total: 6 RTT
*: 1 RTT on reconnection
**: servers often cannot switch to sending JS,CSS
instantly, due to the output buffered in TCP send buffer
20 Developing the fastest HTTP/2 server
client server
1 RTT
TCP SYN
TCP SYNACK
TLS Handshake
TLS Handshake
TLS Handshake
TLS Handshake
GET /
HTML
GET css,js
css, js
〜〜
24. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Typical sequence of HTTP/2
24 Developing the fastest HTTP/2 server
HTTP/2 200 OK
<!DOCTYPE HTML>
…
<SCRIPT SRC=”jquery.js”>
…
client server
GET /
GET /jquery.js
need to switch sending from HTML
to JS at this very moment
(means that amount of data sent in
* must be smaller than IW)
1 RTT
*
25. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Buffering in TCP and TLS layer
25 Developing the fastest HTTP/2 server
TCP send buffer
CWND
unacked poll threshold
BIO buf.
// ordinary code (non-blocking)
while (SSL_write(…) != SSL_ERR_WANT_WRITE)
;
TLS Records
sent immediately not immediately sent
HTTP/2 frames
26. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Why do we have buffers?
26 Developing the fastest HTTP/2 server
n TCP send buffer:
⁃ reduce ping-pong bet. kernel and application
n BIO buffer:
⁃ for data that couldnʼt be stored in TCP send buffer
TCP send buffer
CWND
unacked poll threshold
BIO buf.
TLS Records
sent immediately not immediately sent
HTTP/2 frames
28. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Adjust poll threshold
28 Developing the fastest HTTP/2 server
TCP send buffer
CWND
unacked poll threshold
n set poll threshold to the end of CWND?
⁃ setsockopt(TCP_NOTSENT_LOWAT)
⁃ in linux, the minimum is CWND + 1 octet
• becomes unstable when set to CWND + 0
TLS Records
sent immediately not immediately sent
HTTP/2 frames
30. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Further improvement: read TCP states
30 Developing the fastest HTTP/2 server
CWND
unacked poll threshold
// calc size of data to send by calling getsockopt(TCP_INFO)
if (poll_for_write(fd) == SOCKET_IS_READY) {
capacity = CWND + unacked + ONE_MSS - TLS_overhead;
SSL_write(prepare_http2_frames(capacity));
}
TLS Records
sent immediately not immediately sent
HTTP/2 frames
TCP send buffer
31. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Issues in the proposed approach
n increased delay bet. ACK recv. → data send
⁃ leads to slower peak speed
⁃ reason:
• traditional approach: completes within kernel
• this approach: application needs to be notified to
generate new data
n solution:
⁃ use the approach only when necessary
• i.e. when RTT is big and CWND is small
• increased delay can be ignored if: delay << RTT
31 Developing the fastest HTTP/2 server
32. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Code for calculating size of data to send
size_t get_suggested_write_size() {
getsockopt(fd, IPPROTO_TCP, TCP_INFO, &tcp_info, sizeof(tcp_info));
if (tcp_info.tcpi_rtt < min_rtt || tcp_info.tcpi_snd_cwnd > max_cwnd)
return UNKNOWN;
switch (SSL_get_current_cipher(ssl)->id) {
case TLS1_CK_RSA_WITH_AES_128_GCM_SHA256:
case …:
tls_overhead = 5 + 8 + 16;
break;
default:
return UNKNOWN;
}
packets_sendable = tcp_info.tcpi_snd_cwnd > tcp_info.tcpi_unacked ?
tcp_info.tcpi_snd_cwnd - tcp_info.tcpi_unacked : 0;
return (packets_sendable + 1) * (tcp_info.tcpi_snd_mss - tls_overhead);
}
32 Developing the fastest HTTP/2 server
35. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Same problem exists with load balancers
n L4 L/B or TLS terminator also act as buffers
⁃ impact bigger than that of TCP send buffer of
httpd
n solution:
⁃ best: donʼt use L/B
⁃ next to best: implement mitigations in L/B
⁃ long-term: TCP migration + L3 NAT or DSR
• i.e. accept in L/B, then transfer the connection to
HTTP/2 server
35 Developing the fastest HTTP/2 server
38. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Use-case: conceal request process time
n ex. RTT=50ms, process time=200ms
38 Developing the fastest HTTP/2 server
req.
process request
push-asset
HTML
push-asset
push-asset
push-asset
req.
process request
asset
HTML
asset
asset
asset
req.
450ms (5 RTT + processing =me)
250ms (1 RTT + processing =me)
without push with push
39. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Use-case: conceal network distance
n CDNsʼ use-case
⁃ utilize the conn. while waiting for app. response
⁃ side-effect: reduce the number of app DCs
39 Developing the fastest HTTP/2 server
req.
push-asset
HTML
push-asset
push-asset
push-asset
client edge server (CDN) app. server
req.
HTML
40. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Issues of server-push
n how to determine if a resource is already cached
⁃ shouldnʼt push a resource already in cache
• waste of bandwidth (and time)
⁃ canʼt issue a request to identify the cache state
• since it would waste 1 RTT we are trying to reduce!
40 Developing the fastest HTTP/2 server
41. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Cache-aware server push
n experimental feature since H2O 1.5
n create a digest of URLs found in browser cache
⁃ uses Golomb coded sets
• space-efficient variant of bloom filter
n server uses the digest to determine whether or not
to push
41 Developing the fastest HTTP/2 server
42. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Memo: fresh vs. stale
n two states of a cached resource
n fresh:
⁃ resource that can be used
⁃ example: Expires: Jan 1 2030
n stale:
⁃ needs revalidation before use
• i.e. issue GET with if-modified-since
42 Developing the fastest HTTP/2 server
43. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Generating a digest
1. calc hashcode of URLs of every fresh cache
⁃ range: 0 .. #-of-URL / false-positive-rate
2. sort the hashcodes, remove duplicates
3. emit the first element using the following encoding:
1. “value * FPR” using unary coding
2. “value mod (1/false-positive-rate)” using binary
coding
4. for every other element, emit the delta from
preceding element subtracted by one using the
encoding
5. pad 1 up to the byte boundary
43 Developing the fastest HTTP/2 server
44. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Generating a digest
n scenario:
⁃ FPR: 1/256
⁃ URLs of fresh resources in cache:
• https://example.com/ecma.js
• https://example.com/style.css
n calc hash modulo 512: 0x3d, 0x16b
n sort, remove dupes, and emit the delta:
⁃ 0x3d → 0 00111101
⁃ 0x16b - 0x3d - 1 → 0x12d → 10 00101101
⁃ padding → 111111
44 Developing the fastest HTTP/2 server
45. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Overhead of sending the digest
n size: #-of-URLs * (1/log2(FPR) + 1.x) bits
n 1,400 URLs can be stored in 1 packet
⁃ when false-positive-rate set to 1/128
n can raise FPR to cram more URLs
⁃ false-positive means the resource is not pushed,
browser can just pull it
⁃ pushing some of the required resources is better
than none
45 Developing the fastest HTTP/2 server
46. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Where to store the digest?
n cookie
⁃ pros: runs on any browser, anytime
⁃ cons: digest becomes inaccurate
• only the browser knows whatʼs in the browser cache
n ServiceWorker (+ServiceWorker Cache)
⁃ pros: runs on Chrome, Firefox
⁃ cons: doesnʼt start until leaving the landing page
n HTTP/2 frame
⁃ pros: minimal octets transferred
• thanks to the knowledge of HTTP/2 connection
⁃ cons: needs to be implemented by browser developer
46 Developing the fastest HTTP/2 server
47. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Discussion at IETF
n IETF 95 (April)
⁃ initial submission of the internet draft
• co-author: Mark Nottingham (HTTP WG Chair)
⁃ defines the HTTP/2 frame
• since itʼs the best way in the long-term
• store the frame in headers / cookies for the short-
term
n IETF 96, HTTP Workshop (July)
⁃ to define digest calculation of stale resources
47 Developing the fastest HTTP/2 server
48. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Handling stale resources
n hash key changed to URL + Etag
⁃ anyone needs support for last-modified?
n server uses URL + Etag of the resource to check the
digest
⁃ push the resource in case a match is not found
⁃ push 304 Not Modified in case a match is found
48 Developing the fastest HTTP/2 server
49. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Difficulties in pushing 304
n Etag cannot always be obtained immediately
⁃ cannot build If-Match request header without
etag
⁃ the “request*” of a pushed resource SHOULD be
sent before the main response
n proposed solution:
⁃ allow 304 against a non-conditional GET
*: in case of server-push, the server generates both request and response, sends
them to the client.
49 Developing the fastest HTTP/2 server
50. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Using server-push from Ruby
n Link: rel=preload header
⁃ web server pushes the specified URL
HTTP/1.1 200 OK
Content-Type: text/html
Link: </style.css>; rel=preload # this header!!!
⁃ supported by:
• H2O, nghttpx (nghttp2), mod_h2 (Apache)
⁃ patch for nginx exists
50 Developing the fastest HTTP/2 server
51. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
The issue with Link: rel=preload
n cannot initiate push while processing the request
51 Developing the fastest HTTP/2 server
client HTTP/2 server Web app.
GET /
can’t push at
this moment
GET /
200 OK
Link: …200 OK
process request
52. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
1xx Early Metadata
52 Developing the fastest HTTP/2 server
n send Link: rel=preload as interim response
⁃ application sends 1xx then processes the request
n supported in H2O 2.1
n might propose for standardization in IETF
GET / HTTP/1.1
Host: example.com
HTTP/1.1 1xx Early Metadata
Link: </style.css>; rel=preload
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
<!DOCTYPE HTML>
...
53. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Sending 1xx from Rack
n in case of Unicorn:
Proc.new do |env|
env[”unicorn.socket”].write(
”HTTP/1.1 1xx Early Metadatarn” +
”Link: </style.js>; rel=preloadrn” +
”rn”);
# time-consuming operation ...
[ 200, [ ... ], [ ... ] ]
end
...we need to define the formal API
53 Developing the fastest HTTP/2 server
56. Copyright (C) 2016 DeNA Co.,Ltd. All Rights Reserved.
Q&A
n Q. Can it be made faster than the limits o TCP/IP?
n A. Yes!
⁃ shorten the RTT!
• CDNsʼ approach
⁃ make DNS query part of TLS handshake
• was part of TLS 1.3 draft (removed as too
premature)
⁃ fairness isnʼt a issue for a private network!
• TCP optimizer for mobile carriers
56 Developing the fastest HTTP/2 server