Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connection information #9

Merged
merged 1 commit into from
May 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 151 additions & 0 deletions dns-metrics.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -175,9 +175,160 @@
}
}
}
},
"conn_info": {
"$ref": "#/$defs/conn_info"
}
},
"required": [ "since", "until" ]
},
"udp_conn": {
"title": "DNS Metric UDP Connection Information",
"description": "An object with the metrics around the UDP connections used to sent and received for the given stats object",
"type": "object",
"properties": {
"packets_sent": {
"description": "The number of packets sent",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

packets or datagrams? it becoms important when fragmentation is at play ...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I donno, suggestion? It also needs to work when inherit into TCP/TLS... etc

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so, it should not be shared. There is no information about number of packets for TCP as normally we don't have any visibility into SYN/ACK/retry magic around TCP.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thread migrated to separate issue: #10

"type": "integer"
},
"packets_received": {
"description": "The number of packets received",
"type": "integer"
},
"socket_errors": {
"description": "The number of various socket errors that occurred",
"type": "integer"
}
}
},
"tcp_conn": {
"$ref": "#/$defs/udp_conn",
"title": "DNS Metric TCP Connection Information",
"description": "An object with the metrics around the TCP connections used to sent and received for the given stats object",
"properties": {
"handshakes": {
"description": "The number of handshakes performed",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

performed = successful? or attempted?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤷 this is cut&paste from @nicki-krizek 's comment

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thread migrated to: #11

"type": "integer"
},
"handshakes_failed": {
"description": "The number of failed handshakes",
"type": "integer"
}
}
},
"conn_latency_stats": {
"type": "object",
"properties": {
"avg": {
"description": "The average latency, in nanoseconds",
"type": "integer"
},
"min": {
"description": "The minimum latency, in nanoseconds",
"type": "integer"
},
"max": {
"description": "The maximum latency, in nanoseconds",
"type": "integer"
},
"stddev": {
"description": "The standard deviation for latency, in nanoseconds",
"type": "integer"
},
"buckets": {
"description": "??TODO??",
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
}
}
},
Comment on lines +219 to +249
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can have a generic "latency" object in the schema and reference it from all other places? It should be the same for DNS queries as well, I think.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thread migrated to: #12

"conn_latency": {
"title": "DNS Metric Connection Latency",
"description": "An object with the metrics around connection latency used for the given connection information object",
"type": "object",
"properties": {
"initial": {
"description": "Latency within the handshake, from the initial packet sent to the first reaction received",
"$ref": "#/$defs/conn_latency_stats"
},
"handshake": {
"description": "Latency from the initial packet to the handshake completion",
"$ref": "#/$defs/conn_latency_stats"
},
"connection": {
"description": "Latency from the initial packet sent to the connection closed, timed outed, failed or abandoned",
"$ref": "#/$defs/conn_latency_stats"
}
}
},
"conn_resumption": {
"title": "DNS Metric Connection Resumption",
"description": "An object with the metrics around connection resumption used for the given connection information object",
"type": "object",
"properties": {
"initialized": {
"description": "The number of attempted resumptions",
"type": "integer"
},
"established": {
"description": "The number of resumptions handshakes completed",
"type": "integer"
},
"fallbacks": {
"description": "The number of resumptions denied by counterpart",
"type": "integer"
}
}
},
"tls_conn": {
"$ref": "#/$defs/tcp_conn",
"title": "DNS Metric TLS Connection Information",
"description": "An object with the metrics around the TLS connections used to sent and received for the given stats object",
"properties": {
"resumption": {
"$ref": "#/$defs/conn_resumption"
}
}
},
"quic_conn": {
"$ref": "#/$defs/tls_conn",
"title": "DNS Metric QUIC Connection Information",
"description": "An object with the metrics around the QUIC connections used to sent and received for the given stats object",
"properties": {
}
},
"conn_info": {
"oneOf": [
{
"properties": {
"type": { "const": "udp" }
},
"$ref": "#/$defs/udp_conn"
},
{
"properties": {
"type": { "const": "tcp" }
},
"$ref": "#/$defs/tcp_conn"
},
{
"properties": {
"type": { "const": "tls_conn" }
},
"$ref": "#/$defs/tls_conn"
},
{
"properties": {
"type": { "const": "quic_conn" }
},
"$ref": "#/$defs/quic_conn"
}
]
}
}
}
5 changes: 5 additions & 0 deletions examples/stats_periodic.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,10 @@
1
]
]
},
"conn_info": {
"type": "udp",
"packets_sent": 100,
"packets_received": 100
}
}