// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This protocol buffer defines the message format between the probe clients
// and the probe servers.
syntax = "proto2";
package chrome_browser_net;
// Chrome requires this.
option optimize_for = LITE_RUNTIME;
// Next available id: 10.
message ProbePacket {
enum Type {
UNKNOWN = 0;
HELLO_REQUEST = 1;
HELLO_REPLY = 2;
PROBE_REQUEST = 3;
PROBE_REPLY = 4;
}
message Header {
required uint32 version = 1;
optional uint32 checksum = 2;
optional Type type = 3;
}
message Token {
required uint64 timestamp_micros = 1;
required bytes hash = 2; // 16-byte MD5 hash value for authorization.
}
optional Header header = 1;
optional Token token = 2; // For authorization.
// For differentiating different batches of packets.
optional uint32 group_id = 3;
optional uint32 packet_index = 4; // Packet index in each batch.
optional uint32 probe_size_bytes = 5; // Specify the probe packet size.
// Time duration between sending two consecutive packets.
optional uint32 pacing_interval_micros = 6;
// Total number of probe packets to send from the server.
optional uint32 number_probe_packets = 7;
optional int64 server_processing_micros = 9;
optional bytes padding = 8;
}