Skip to the content.

sysfs net

/proc/net

搜索每一个字段实现的位置 proc_create_net("

这是一个超级大的目录

├── anycast6
├── arp
├── bnep
├── connector
├── dev
├── dev_mcast
├── dev_snmp6
│   ├── br-3177677df140
│   ├── br-a7c25b8e6a73
│   ├── br-c06975109cc3
│   ├── br-in
│   ├── cni0
│   ├── docker0
│   ├── enp5s0
│   ├── enp6s0
│   ├── flannel.1
│   ├── lo
│   ├── ovs-system
│   ├── tailscale0
│   ├── veth1004d86a
│   ├── veth1536e405
│   ├── veth40bec009
│   ├── veth9e2dea91
│   ├── vethe1fb6ce5
│   ├── vif12.0
│   ├── vif12.1
│   ├── vif12.2
│   ├── vif13.0
│   ├── vif13.1
│   ├── vif13.2
│   ├── vif21.0
│   ├── vif21.1
│   ├── vif21.2
│   ├── vif26.0
│   ├── vif26.1
│   ├── vif26.2
│   ├── vif27.0
│   ├── vif27.1
│   ├── vif27.2
│   ├── vif28.0
│   ├── vif28.1
│   ├── vif28.2
│   ├── vif29.0
│   ├── vif29.1
│   ├── vif29.2
│   ├── vif5.0
│   ├── vif5.1
│   ├── vif5.2
│   ├── vif9.0
│   ├── vif9.1
│   ├── vif9.2
│   └── wlo1
├── fib_trie
├── fib_triestat
├── hci
├── icmp
├── icmp6
├── if_inet6
├── igmp
├── igmp6
├── ip6_flowlabel
├── ip6_mr_cache
├── ip6_mr_vif
├── ip_mr_cache
├── ip_mr_vif
├── ip_tables_matches
├── ip_tables_names
├── ip_tables_targets
├── ipv6_route
├── l2cap
├── mcfilter
├── mcfilter6
├── netfilter
│   ├── nf_log
│   └── nfnetlink_log
├── netlink
├── netstat
├── packet
├── protocols
├── psched
├── ptype
├── raw
├── raw6
├── rfcomm
├── route
├── rpc
│   ├── auth.rpcsec.context
│   │   ├── channel
│   │   └── flush
│   ├── auth.rpcsec.init
│   │   ├── channel
│   │   └── flush
│   ├── auth.unix.gid
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   ├── auth.unix.ip
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   ├── gss_krb5_enctypes
│   ├── nfs4.idtoname
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   ├── nfs4.nametoid
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   ├── nfsd
│   ├── nfsd.export
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   ├── nfsd.fh
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   └── use-gss-proxy
├── rt6_stats
├── rt_acct
├── rt_cache
├── sco
├── snmp
├── snmp6
├── sockstat
├── sockstat6
├── softnet_stat
├── stat
│   ├── arp_cache
│   ├── ndisc_cache
│   └── rt_cache
├── tcp
├── tcp6
├── udp
├── udp6
├── udplite
├── udplite6
├── unix
└── wireless

/proc/net/dev : 统计

🧀  column -t /proc/net/dev
Inter-|           Receive     |        Transmit
face              |bytes      packets  errs      drop  fifo  frame  compressed  multicast        |bytes      packets     errs     drop  fifo  colls  carrier  compressed
lo:               1359509820  1327480  0         0     0     0      0           0                1359509820  1327480  0     0     0      0        0           0
enp6s0:           3682998     14228    0         0     0     0      0           3614             736744      3334     0     0     0      0        0           0
enp5s0:           75513003    941577   0         0     0     0      0           27447            581828683   2765235  0     0     0      0        0           0
wlo1:             1230709118  1731240  0         0     0     0      0           0                215042305   808231   0     6     0      0        0           0
ovs-system:       0           0        0         0     0     0      0           0                0           0        0     0     0      0        0           0
br-in:            596100352   1737488  0         0     0     0      0           0                1174354586  2669311  0     0     0      0        0           0
tailscale0:       17177731    308895   0         0     0     0      0           0                116894797   411671   0     0     0      0        0           0
br-90f636c9ff3f:  0           0        0         0     0     0      0           0                0           0        0     333   0      0        0           0
br-a7c25b8e6a73:  0           0        0         0     0     0      0           0                0           0        0     333   0      0        0           0
br-c06975109cc3:  0           0        0         0     0     0      0           0                0           0        0     331   0      0        0           0
docker0:          0           0        0         0     0     0      0           0                0           0        0     331   0      0        0           0
br-3177677df140:  0           0        0         0     0     0      0           0                0           0        0     331   0      0        0           0
vif101.2:         13632207    54632    0         0     0     0      0           0                189461386   76442    0     51    0      0        0           0
vif101.3:         749181354   2189328  0         0     0     0      0           0                639916777   1463514  0     48    0      0        0           0
vif117.2:         5834        31       0         0     0     0      0           0                544888      3365     0     92    0      0        0           0
vif117.3:         0           0        0         0     0     0      0           0                550722      3396     0     91    0      0        0           0
vif11.2:          13454       50       0         0     0     0      0           0                13947       36       0     33    0      0        0           0
vif11.3:          2555        16       0         0     0     0      0           0                6616        48       0     33    0      0        0           0
vif16.2:          0           0        0         0     0     0      0           0                10012       60       0     32    0      0        0           0
vif16.3:          0           0        0         0     0     0      0           0                10012       60       0     31    0      0        0           0
vif88.2:          0           0        0         0     0     0      0           0                2152        22       0     60    0      0        0           0
vif88.3:          4418        69       0         0     0     0      0           0                81010       498      0     60    0      0        0           0
vif80.2:          12774       137      0         0     0     0      0           0                11429       124      0     30    0      0        0           0
vif80.3:          10173       106      0         0     0     0      0           0                14030       155      0     30    0      0        0           0

/proc/net/unix

net/unix/af_unix.c : unix_seq_show

/proc/sys/net

-  bridge            ->
-  core              -> net/core/sysctl_net_core.c
-  ipv4              -> net/ipv4/sysctl_net_ipv4.c
-  ipv6
-  mptcp             -> net/mptcp/ctrl.c
-  netfilter         -> net/netfilter/nf_conntrack_standalone.c
-  nf_conntrack_max
-  unix              -> net/unix/sysctl_net_unix.c

可以把 /proc/sys/net 下的所有文件都提供下

🧀  cat /proc/sys/net/core/message_burst
10
1076034/var2/log 13900k
🧀  cat /proc/sys/net/core/message_cost
5
1076034/var2/log 13900k
🤒  cat /proc/sys/net/ipv4/ip_local_port_range
32768   60999

和这个 IP_LOCAL_PORT_RANGE 是什么关系?

如果有所谓的 IANA 限制,只是分配而已,为什么代码上还需要考虑到他们?

/sys/class/net

/sys/class/net/$dev/statistics

/proc/pid/net

和 /proc/net 中的内容相同,但是是取决于 process 所在的 namespace ,我猜测实现的难度并不高

例如 unix_net_init 中,可以参考 unix_seq_ops 的执行携带参数 net 的,net 就是当时的 namespace 了

	if (!proc_create_net("unix", 0, net->proc_net, &unix_seq_ops,
			     sizeof(struct seq_net_private)))
		goto err_sysctl;

cat /sys/class/net/enp5s0/address

如何快速获取到 interface 对应的源码

通过: rg DEVICE_ATTR | grep address

实现的文件的内容都在这里 : net/core/net-sysfs.c

不同类型的设备的结构不同

 addr_assign_type   carrier_changes      dormant             ifalias     mtu                    owner            proto_down   testing        uevent
 addr_len           carrier_down_count   duplex              ifindex     name_assign_type       phys_port_id     queues       threaded       upper_ovs-system
 address            carrier_up_count     flags               iflink      napi_defer_hard_irqs   phys_port_name   speed        tun_flags
 broadcast          dev_id               gro_flush_timeout   link_mode   netdev_group           phys_switch_id   statistics   tx_queue_len
 carrier            dev_port             group               master      operstate              power            subsystem    type

tap

static DEVICE_ATTR_RO(tun_flags);
static DEVICE_ATTR_RO(owner);
static DEVICE_ATTR_RO(group);

static struct attribute *tun_dev_attrs[] = {
	&dev_attr_tun_flags.attr,
	&dev_attr_owner.attr,
	&dev_attr_group.attr,
	NULL
};

static const struct attribute_group tun_attr_group = {
	.attrs = tun_dev_attrs
};

wg

似乎是没有额外的内容的。

/proc/$pid/net/dev

在 13900k 的物理机中:

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo: 45488359171 23380032    0    0    0     0          0         0 45488359171 23380032    0    0    0     0       0          0
enp5s0: 12001938009 10367664    0    0    0     0          0    210901 4255357361 5780796    0    0    0     0       0          0
  wlo1: 136959341039 126634386    0 186926    0     0          0         0 24044948181 38983909    0    0    0     0       0          0
ovs-system:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 br-in: 11233358375 5109264    0    0    0     0          0         0 40134605873 3851332    0    0    0     0       0          0
tailscale0: 1427722   14051    0    0    0     0          0         0 42078882   74818    0    0    0     0       0          0
br-3177677df140:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
br-a7c25b8e6a73:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
br-c06975109cc3:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
docker0:       0       0    0    0    0     0          0         0    28211     156    0    0    0     0       0          0
vif50.2: 37193504  460048    0    0    0     0          0         0 33599674510 1067168    0 10119    0     0       0          0
vif50.3:  864968   19822    0    0    0     0          0         0 29531579  276515    0 10165    0     0       0          0
vif5.2: 1077035    9777    0    0    0     0          0         0 171396607   22809    0    0    0     0       0          0
vif5.3:       0       0    0    0    0     0          0         0  2759654   15949    0    0    0     0       0          0
vif55.2: 9271023   67999    0    0    0     0          0         0 2704004959  193348    0    1    0     0       0          0
vif55.3: 2897523   12626    0    0    0     0          0         0 14026330   87299    0    1    0     0       0          0
vif45.2:   19156     278    0    0    0     0          0         0  3796804   22299    0    3    0     0       0          0
vif45.3:   19154     277    0    0    0     0          0         0  3796786   22300    0   16    0     0       0          0
vif11.2:   17280     141    0    0    0     0          0         0  1789236   10489    0    0    0     0       0          0
vif11.3:  825921    4871    0    0    0     0          0         0   980595    5759    0    0    0     0       0          0
vif51.2:  731750    2936    0    0    0     0          0         0  3266848   23181    0    0    0     0       0          0
vif51.3:  730932    2917    0    0    0     0          0         0  3266670   23184    0    1    0     0       0          0

13900k 的容器中:

bash-5.0# cat /proc/self/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  eth0:    1830      15    0    0    0     0          0         0        0       0    0    0    0     0       0          0

具体代码就不看了,就是 namespace 下可以看到的 network device 吧

/proc/$pid/fd 中的 socket 可以被找到详细信息的

🧀  l
Permissions Size User     Date Modified Name
lrwx------     - martins3 28 Sep 16:15   0 -> /dev/pts/6
lrwx------     - martins3 28 Sep 16:15   1 -> /dev/pts/6
lrwx------     - martins3 28 Sep 16:15   2 -> /dev/pts/6
lrwx------     - martins3 28 Sep 16:15   3 -> socket:[695550]
lrwx------     - martins3 28 Sep 16:15   4 -> anon_inode:[eventfd]
l-wx------     - martins3 28 Sep 16:15   5 -> /home/martins3/data/hack/vm/base/s/pid
lrwx------     - martins3 28 Sep 16:15   6 -> anon_inode:[signalfd]
lrwx------     - martins3 28 Sep 16:15   7 -> anon_inode:[eventfd]
lrwx------     - martins3 28 Sep 16:15   8 -> anon_inode:[eventfd]
lrwx------     - martins3 28 Sep 16:15   9 -> socket:[695551]
lrwx------     - martins3 28 Sep 16:15   10 -> socket:[695552]
lrwx------     - martins3 28 Sep 16:15   11 -> socket:[695553]
lrwx------     - martins3 28 Sep 16:15   12 -> socket:[695559]

grep -l 695559 /proc/net/{tcp,udp,tcp6,udp6,unix}

/proc/net/tcp 中内容

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。