Home | History | Annotate | Download | only in net
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // This protocol buffer defines the message format between the probe clients
      6 // and the probe servers.
      7 
      8 syntax = "proto2";
      9 
     10 package chrome_browser_net;
     11 
     12 // Chrome requires this.
     13 option optimize_for = LITE_RUNTIME;
     14 
     15 // Next available id: 10.
     16 message ProbePacket {
     17   enum Type {
     18     UNKNOWN = 0;
     19     HELLO_REQUEST = 1;
     20     HELLO_REPLY = 2;
     21     PROBE_REQUEST = 3;
     22     PROBE_REPLY = 4;
     23   }
     24 
     25   message Header {
     26     required uint32 version = 1;
     27     optional uint32 checksum = 2;
     28     optional Type type = 3;
     29   }
     30 
     31   message Token {
     32     required uint64 timestamp_micros = 1;
     33     required bytes hash = 2;  // 16-byte MD5 hash value for authorization.
     34   }
     35 
     36   optional Header header = 1;
     37   optional Token token = 2;              // For authorization.
     38   // For differentiating different batches of packets.
     39   optional uint32 group_id = 3;
     40   optional uint32 packet_index = 4;      // Packet index in each batch.
     41   optional uint32 probe_size_bytes = 5;  // Specify the probe packet size.
     42   // Time duration between sending two consecutive packets.
     43   optional uint32 pacing_interval_micros = 6;
     44   // Total number of probe packets to send from the server.
     45   optional uint32 number_probe_packets = 7;
     46   optional int64 server_processing_micros = 9;
     47   optional bytes padding = 8;
     48 }
     49