the Chromium logo

The Chromium Projects

Network Stack Objectives

Q2 2014 Objectives

Q4 2011 Objectives

Performance

SSL

Developer productivity

Q2 2011 Objectives

Improve test coverage

Fix bugs and clean up / refactor code

Improve network performance / features

Documentation

Q1 2011 Objectives

Improve test coverage

Fix bugs and clean up / refactor code

Improve network performance / features

Q4 2010 Objectives

Improve test coverage

Fix bugs and clean up / refactor code

Improve network performance / features

Q3 2010 Objectives

Annotations on the status of each objective (at the close of the quarter) shown in red.

High level

Specific items

Feature work and bug fixes for SSL library / crypto. (wtc, agl, rsleevi, davidben)

Feature work on download handling (ahendrickson)

Improvements to cookie handling (rdsmith)

URL Prefetching (gavinp)

HTTP cache (rvargas, gavinp)

HTTP authentication (cbentzel)

Simulated Network Tester (cbentzel, klm, tonyg)

Network Diagnostics (rdsmith, mmenke, eroman)

Proxy handling

Implement HTTP pipelining (vandebo)

WebKit/Chrome network integration (tonyg)

SafeBrowsing (lzheng)


Past objectives

Annotations on the status of each objective (at the close of the quarter) shown in red.

Milestone 6 (branch cut July 19 2010).

#### Run PAC scripts out of process

[Move the evaluation of proxy auto-config scripts out of the browser

process](http://code.google.com/p/chromium/issues/detail?id=11746) to a sandboxed process for better security. (eroman)

Ended up doing multi-threaded PAC execution instead, to address performance

problems associated with speculative requests + slow DNS (crbug.com/11079)

Cache pre-parsed JavaScript

The work on the HTTP cache side is done. Need to write the code for WebKit and V8 use the interface and measure the performance impact. (tonyg, rvargas)

Done. M6 has pre-parsed JS in the memory cache ON by default. It has pre-parsed JS in the disk cache is OFF by default (--enable-preparsed-js-caching).

Switch to NSS for SSL on Windows

Use NSS for SSL on Windows by default. We need to modify NSS to use Windows CryptoAPI for SSL client authentication. (wtc)

Done. NSS is being used for SSL on all platforms.

Improve the network error page

The network error page should help the user diagnose and fix the problem (see also issue 18673), rather than merely displaying a network error code. (eroman, jar, jcivelli)

The UI of the error page has not been improved, however some user-level connectivity tests have been added to help diagnose when a chronic network error is happening (chrome://net-internals/#tests).

#### Implement SSLClientSocketPool

This allows us to implement [late binding of SSL

sockets](http://code.google.com/p/chromium/issues/detail?id=30357) and is a prerequisite refactor for speculative SSL pre-connection and pipelining. (vandebo)

Done.

#### HTTP authentication

#### HTTP cache improvements

Network internals instrumentation, logging, and diagnostics

Done. Replaced the defunct about:net with the new about:net-internals. Instruments a lot more tracing information, support for active and passive logging, and log generation for bug reports.

Define Chromium extensions API for networking

Define an API for Chromium extensions to access the network stack. We already defined an API that exposes proxy settings to extensions. (willchan)

Some drafts were circulated for network interception APIs, but work hasn't been started yet.

The proxy settings API has been revived, and Pam is starting on it.

SafeBrowsing

This is a stretch goal because we may not have time to work on this in Q2.

IPv6

Speculative TCP pre-connection

Jim Roskind has an incomplete changelist that shows where the necessary hooks are for TCP pre-connection. (jar)

Initial implementation has landed; it is off by default, but can be enabled with these flags:

--enable-preconnect

--preconnect-despite-proxy

Improve WebKit resource loading

Improve resource loading so we can pass all of the network tests on Browserscope (Chromium issues 13505, 40014, 40019 and WebKit bug 20710). Most of the work will be in WebKit. (gavinp, tonyg).

Work in progress.

#### Certificate UI


Future

Prioritizing HTTP transactions

#### Other HTTP performance optimizations

#### New unit tests and performance tests

Some parts of the network stack, such as SSL, need more unit tests. Good

test coverage helps bring up new ports. In addition, any bugs that get fixed should get unit tests to prevent regression.

We should [add performance

tests](http://code.google.com/p/chromium/issues/detail?id=6754) to measure the performance of the network stack and track it over time.

Fix SSLUITests

All the SSLUITests are marked as flaky now.

Better histograms

We need better histograms for networking.

#### Integrate loader-specific parts of WebKit into the network stack

Parts of WebKit that throttle and prioritize resource load requests could be moved into the network stack. We can disable WebCore's queuing, and get more context about requests (flesh out the ResourceType enum).

#### Captive portals

[Avoid certificate name mismatch

errors](http://code.google.com/p/chromium/issues/detail?id=71736) when visiting an HTTPS page through a captive portal.

#### HTTP pipelining

We should implement an [optional pipelining

mode](http://code.google.com/p/chromium/issues/detail?id=8991).

#### HTTP authentication

We also need to review the interaction between HTTP authentication and disk

cache. For example, cached pages that were downloaded with authentication should not be retrieved without authentication.

FTP

We need to be able to request FTP URLs through a proxy.

Preference service for network settings

We strive to use the system network settings so that users can control the network settings of all applications easily. However, there will be some configuration settings specific to our network stack, so we need to have our own preference service for those settings. See also issue 266, in which some Firefox users demand that we not use the WinInet proxy settings (the de facto system proxy settings) on Windows.

Share code between HTTP, SPDY, and WebSocket

A lot of code was copied from net/http to net/socket_stream for WebSocket support. We should find out if some code can be shared.

WPAD over DHCP

Support WPAD over DHCP.