It has some statistics for each protocol and the summary methods of each protocol in Linux.
Unfortunatelly man 5 proc
on RHEL 6.5 does not say anything about /proc/net/protocols
. So I took a look at the source: http://lxr.free-electrons.com/source/net/core/sock.c?v=2.6.29#L2202 and http://lxr.free-electrons.com/source/include/net/sock.h#L924.
2169 static void proto_seq_printf(struct seq_file *seq, struct proto *proto)
2170 {
2171 seq_printf(seq, "%-9s %4u %6d %6d %-3s %6u %-3s %-10s "
2172 "%2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c\n",
2173 proto->name,
2174 proto->obj_size,
2175 sock_prot_inuse_get(seq_file_net(seq), proto),
2176 proto->memory_allocated != NULL ? atomic_read(proto->memory_allocated) : -1,
2177 proto->memory_pressure != NULL ? *proto->memory_pressure ? "yes" : "no" : "NI",
2178 proto->max_header,
2179 proto->slab == NULL ? "no" : "yes",
2180 module_name(proto->owner),
2181 proto_method_implemented(proto->close),
2182 proto_method_implemented(proto->connect),
2183 proto_method_implemented(proto->disconnect),
2184 proto_method_implemented(proto->accept),
2185 proto_method_implemented(proto->ioctl),
2186 proto_method_implemented(proto->init),
2187 proto_method_implemented(proto->destroy),
2188 proto_method_implemented(proto->shutdown),
2189 proto_method_implemented(proto->setsockopt),
2190 proto_method_implemented(proto->getsockopt),
2191 proto_method_implemented(proto->sendmsg),
2192 proto_method_implemented(proto->recvmsg),
2193 proto_method_implemented(proto->sendpage),
2194 proto_method_implemented(proto->bind),
2195 proto_method_implemented(proto->backlog_rcv),
2196 proto_method_implemented(proto->hash),
2197 proto_method_implemented(proto->unhash),
2198 proto_method_implemented(proto->get_port),
2199 proto_method_implemented(proto->enter_memory_pressure));
2200 }
So this is information that each protocol provides about itself.
Lets start with the final sections that have lots of "y" and "n".
2164 static char proto_method_implemented(const void *method)
2165 {
2166 return method == NULL ? 'n' : 'y';
2167 }
So it is just information if a particular method is implemented in protocol or not. For example the "cl" column is for close method. For example since TCP has "y" is the "close" column so TCP protocol implements close() and its proto strcut has a non null pointer in 'close' member:
924 struct proto {
925 void (*close)(struct sock *sk,
926 long timeout);
Some of the first columns in the outpit:
- Protocol name
- Size of protocol specific socket structure
- sockets - how many sockets there are now of that type
- memory - Current allocated memory
- press - memory_pressure - it is a flag that indicates working under memory pressure
and so far, you can look at the source yourself
Useful links: