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