gvisor netstack (二)

https://www.it610.com/article/1175051551228637184.htm

TCP发送流程
third_partygolibsgithub.comgoogle
etstack	cpip	ransport	cpsnd.go
sendData
    maybeSendSegment
        sendSegment
            sendSegmentFromView
                sendRaw        --connect.go
                    sendTCP
                        r.WritePacket(gso, hdr, data, ProtocolNumber, ttl)
                            WritePacket        --third_partygolibsgithub.comgoogle
etstack	cpipstack
oute.go
                                r.ref.ep.WritePacket //TODO,后面的分析不对,到此截止。
                            e.linkEP.WritePacket    --third_partygolibsgithub.comgoogle
etstack	cpiplinkfdbasedendpoint.go
                                rawfile.NonBlockingWrite3    --third_partygolibsgithub.comgoogle
etstack	cpiplink
awfile
awfile_unsafe.go
                                    NonBlockingWrite
                                        syscall.RawSyscall(syscall.SYS_WRITE, uintptr(fd), uintptr(ptr), uintptr(len(buf)))
root@dc6ca0fab5ce:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope global dynamic 
2: eth0: <UP,LOWER_UP> mtu 1500 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global dynamic 
root@dc6ca0fab5ce:/# 
root@dc6ca0fab5ce:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=0 time=41890 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=0 time=11.5 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=0 time=11.4 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=0 time=11.4 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 938ms
rtt min/avg/max/mdev = 11.362/10480.958/41889.646/18133.814 ms
root@cloud:~# dlv attach 945272
Type 'help' for list of commands.
(dlv) b NonBlockingWrite
Breakpoint 1 set at 0x86b3c0 for gvisor.dev/gvisor/pkg/tcpip/link/rawfile.NonBlockingWrite() pkg/tcpip/link/rawfile/rawfile_unsafe.go:55
(dlv) c
received SIGINT, stopping process (will not forward signal)
> runtime.futex() src/runtime/sys_linux_arm64.s:565 (PC: 0x78e3c)
Warning: debugging optimized function
(dlv) b WritePacket
Command failed: Location "WritePacket" ambiguous: gvisor.dev/gvisor/pkg/tcpip/link/nested.(*Endpoint).WritePacket, gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket, gvisor.dev/gvisor/pkg/tcpip/stack.(*Route).WritePacket, gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).WritePacket, gvisor.dev/gvisor/pkg/tcpip/network/ipv6.(*endpoint).WritePacket…
(dlv) b stack.(*NIC).WritePacket
Breakpoint 2 set at 0x4959f0 for gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket() pkg/tcpip/stack/nic.go:297
(dlv) c
> gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket() pkg/tcpip/stack/nic.go:297 (hits goroutine(7223):1 total:1) (PC: 0x4959f0)
Warning: debugging optimized function
(dlv) bt
 0  0x00000000004959f0 in gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket
    at pkg/tcpip/stack/nic.go:297
 1  0x000000000061a33c in gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).writePacket
    at pkg/tcpip/network/ipv4/ipv4.go:368
 2  0x0000000000619fe8 in gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).WritePacket
    at pkg/tcpip/network/ipv4/ipv4.go:331
 3  0x000000000049bfd0 in gvisor.dev/gvisor/pkg/tcpip/stack.(*Route).WritePacket
    at pkg/tcpip/stack/route.go:410
 4  0x0000000000866424 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.send4
    at pkg/tcpip/transport/icmp/endpoint.go:424
 5  0x0000000000865d08 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.(*endpoint).write
    at pkg/tcpip/transport/icmp/endpoint.go:323
 6  0x00000000008657f8 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.(*endpoint).Write
    at pkg/tcpip/transport/icmp/endpoint.go:240
 7  0x00000000006435a8 in gvisor.dev/gvisor/pkg/sentry/socket/netstack.(*socketOpsCommon).SendMsg
    at pkg/sentry/socket/netstack/netstack.go:2818
 8  0x000000000058cf50 in gvisor.dev/gvisor/pkg/sentry/syscalls/linux.sendTo
    at pkg/sentry/syscalls/linux/sys_socket.go:1110
 9  0x000000000058d2a8 in gvisor.dev/gvisor/pkg/sentry/syscalls/linux.SendTo
    at pkg/sentry/syscalls/linux/sys_socket.go:1123
10  0x0000000000522ea4 in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall
    at pkg/sentry/kernel/task_syscall.go:104
11  0x0000000000523c5c in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke
    at pkg/sentry/kernel/task_syscall.go:239
12  0x00000000005238dc in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter
    at pkg/sentry/kernel/task_syscall.go:199
13  0x00000000005233e0 in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall
    at pkg/sentry/kernel/task_syscall.go:174
14  0x0000000000518e00 in gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute
    at pkg/sentry/kernel/task_run.go:282
15  0x0000000000517d9c in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run
    at pkg/sentry/kernel/task_run.go:97
16  0x0000000000077c84 in runtime.goexit
    at src/runtime/asm_arm64.s:1136
(dlv) c
> gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket() pkg/tcpip/stack/nic.go:297 (hits goroutine(7223):2 total:2) (PC: 0x4959f0)
Warning: debugging optimized function
(dlv) clearall
Breakpoint 1 cleared at 0x86b3c0 for gvisor.dev/gvisor/pkg/tcpip/link/rawfile.NonBlockingWrite() pkg/tcpip/link/rawfile/rawfile_unsafe.go:55
Breakpoint 2 cleared at 0x4959f0 for gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket() pkg/tcpip/stack/nic.go:297
(dlv) quit
Would you like to kill the process? [Y/n] n
root@cloud:~# 
(dlv) p n
*gvisor.dev/gvisor/pkg/tcpip/stack.NIC {
        LinkEndpoint: gvisor.dev/gvisor/pkg/tcpip/stack.LinkEndpoint(*gvisor.dev/gvisor/pkg/tcpip/link/sniffer.endpoint) *{
                Endpoint: (*"gvisor.dev/gvisor/pkg/tcpip/link/nested.Endpoint")(0x40004cc150),
                writer: io.Writer nil,
                maxPCAPLen: 0,
                logPrefix: "",},
        stack: *gvisor.dev/gvisor/pkg/tcpip/stack.Stack {
                transportProtocols: map[gvisor.dev/gvisor/pkg/tcpip.TransportProtocolNumber]*gvisor.dev/gvisor/pkg/tcpip/stack.transportProtocolState [...],
                networkProtocols: map[gvisor.dev/gvisor/pkg/tcpip.NetworkProtocolNumber]gvisor.dev/gvisor/pkg/tcpip/stack.NetworkProtocol [...],
                linkAddrResolvers: map[gvisor.dev/gvisor/pkg/tcpip.NetworkProtocolNumber]gvisor.dev/gvisor/pkg/tcpip/stack.LinkAddressResolver [...],
                rawFactory: gvisor.dev/gvisor/pkg/tcpip/stack.RawFactory(gvisor.dev/gvisor/pkg/tcpip/transport/raw.EndpointFactory) *(*"gvisor.dev/gvisor/pkg/tcpip/stack.RawFactory")(0x40002c1098),
                demux: *(*"gvisor.dev/gvisor/pkg/tcpip/stack.transportDemuxer")(0x40003c1f00),
                stats: (*"gvisor.dev/gvisor/pkg/tcpip.Stats")(0x40002c10b0),
                linkAddrCache: *(*"gvisor.dev/gvisor/pkg/tcpip/stack.linkAddrCache")(0x40003cdd80),
                mu: (*"gvisor.dev/gvisor/pkg/sync.RWMutex")(0x40002c1480),
                nics: map[gvisor.dev/gvisor/pkg/tcpip.NICID]*gvisor.dev/gvisor/pkg/tcpip/stack.NIC [...],
                cleanupEndpointsMu: (*"gvisor.dev/gvisor/pkg/sync.Mutex")(0x40002c14a0),
                cleanupEndpoints: map[gvisor.dev/gvisor/pkg/tcpip/stack.TransportEndpoint]struct {} [],
                routeTable: []gvisor.dev/gvisor/pkg/tcpip.Route len: 3, cap: 4, [
                        (*"gvisor.dev/gvisor/pkg/tcpip.Route")(0x4000502000),
                        (*"gvisor.dev/gvisor/pkg/tcpip.Route")(0x4000502038),
                        (*"gvisor.dev/gvisor/pkg/tcpip.Route")(0x4000502070),
                ],
                PortManager: *(*"gvisor.dev/gvisor/pkg/tcpip/ports.PortManager")(0x400038f710),
                tcpProbeFunc: (*"sync/atomic.Value")(0x40002c14d0),
                clock: gvisor.dev/gvisor/pkg/tcpip.Clock(*gvisor.dev/gvisor/pkg/sentry/kernel.Kernel) ...,
                handleLocal: true,
                tables: *(*"gvisor.dev/gvisor/pkg/tcpip/stack.IPTables")(0x4000394700),
                resumableEndpoints: []gvisor.dev/gvisor/pkg/tcpip/stack.ResumableEndpoint len: 0, cap: 0, nil,
                icmpRateLimiter: *(*"gvisor.dev/gvisor/pkg/tcpip/stack.ICMPRateLimiter")(0x40001a8a40),
                seed: 865450639,
                nudConfigs: (*"gvisor.dev/gvisor/pkg/tcpip/stack.NUDConfigurations")(0x40002c1528),
                useNeighborCache: false,
                nudDisp: gvisor.dev/gvisor/pkg/tcpip/stack.NUDDispatcher nil,
                uniqueIDGenerator: gvisor.dev/gvisor/pkg/tcpip/stack.UniqueID(*gvisor.dev/gvisor/pkg/sentry/kernel.Kernel) ...,
                linkResQueue: (*"gvisor.dev/gvisor/pkg/tcpip/stack.packetsPendingLinkResolution")(0x40002c1598),
                randomGenerator: *(*"math/rand.Rand")(0x400038f740),
                sendBufferSize: (*"gvisor.dev/gvisor/pkg/tcpip/stack.SendBufferSizeOption")(0x40002c15c8),
                receiveBufferSize: (*"gvisor.dev/gvisor/pkg/tcpip/stack.ReceiveBufferSizeOption")(0x40002c15e0),},
        id: 2,
        name: "eth0",   //网卡名字
        context: gvisor.dev/gvisor/pkg/tcpip/stack.NICContext nil,
        stats: gvisor.dev/gvisor/pkg/tcpip/stack.NICStats {
                Tx: (*"gvisor.dev/gvisor/pkg/tcpip/stack.DirectionStats")(0x40004ce280),
                Rx: (*"gvisor.dev/gvisor/pkg/tcpip/stack.DirectionStats")(0x40004ce290),
                DisabledRx: (*"gvisor.dev/gvisor/pkg/tcpip/stack.DirectionStats")(0x40004ce2a0),
                Neighbor: (*"gvisor.dev/gvisor/pkg/tcpip/stack.NeighborStats")(0x40004ce2b0),},
        neigh: *gvisor.dev/gvisor/pkg/tcpip/stack.neighborCache nil,
        networkEndpoints: map[gvisor.dev/gvisor/pkg/tcpip.NetworkProtocolNumber]gvisor.dev/gvisor/pkg/tcpip/stack.NetworkEndpoint [
                gvisor.dev/gvisor/pkg/tcpip/header.IPv6ProtocolNumber (34525): ..., 
                gvisor.dev/gvisor/pkg/tcpip/header.ARPProtocolNumber (2054): ..., 
                gvisor.dev/gvisor/pkg/tcpip/header.IPv4ProtocolNumber (2048): ..., 
        ],
        enabled: 1,
        mu: struct { gvisor.dev/gvisor/pkg/sync.RWMutex; gvisor.dev/gvisor/pkg/tcpip/stack.spoofing bool; gvisor.dev/gvisor/pkg/tcpip/stack.promiscuous bool; gvisor.dev/gvisor/pkg/tcpip/stack.packetEPs map[gvisor.dev/gvisor/pkg/tcpip.NetworkProtocolNumber]*gvisor.dev/gvisor/pkg/tcpip/stack.packetEndpointList } {
                RWMutex: (*"gvisor.dev/gvisor/pkg/sync.RWMutex")(0x40004ce2d0),
                spoofing: false,
                promiscuous: false,
                packetEPs: map[gvisor.dev/gvisor/pkg/tcpip.NetworkProtocolNumber]*gvisor.dev/gvisor/pkg/tcpip/stack.packetEndpointList [...],},}
(dlv) 

sniffer.endpoint

root@cloud:~# dlv attach 945272
Type 'help' for list of commands.
(dlv) b tcpip/link/sniffer/sniffer.go:190
Breakpoint 1 set at 0x68c8f0 for gvisor.dev/gvisor/pkg/tcpip/link/sniffer.(*endpoint).WritePacket() pkg/tcpip/link/sniffer/sniffer.go:190
(dlv) c
> gvisor.dev/gvisor/pkg/tcpip/link/sniffer.(*endpoint).WritePacket() pkg/tcpip/link/sniffer/sniffer.go:190 (hits goroutine(7168):1 total:1) (PC: 0x68c8f0)
Warning: debugging optimized function
(dlv) bt
 0  0x000000000068c8f0 in gvisor.dev/gvisor/pkg/tcpip/link/sniffer.(*endpoint).WritePacket
    at pkg/tcpip/link/sniffer/sniffer.go:190
 1  0x0000000000495c30 in gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).writePacket
    at pkg/tcpip/stack/nic.go:342
 2  0x0000000000495ac0 in gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket
    at pkg/tcpip/stack/nic.go:324
 3  0x000000000061a33c in gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).writePacket
    at pkg/tcpip/network/ipv4/ipv4.go:368
 4  0x0000000000619fe8 in gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).WritePacket
    at pkg/tcpip/network/ipv4/ipv4.go:331
 5  0x000000000049bfd0 in gvisor.dev/gvisor/pkg/tcpip/stack.(*Route).WritePacket
    at pkg/tcpip/stack/route.go:410
 6  0x0000000000866424 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.send4
    at pkg/tcpip/transport/icmp/endpoint.go:424
 7  0x0000000000865d08 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.(*endpoint).write
    at pkg/tcpip/transport/icmp/endpoint.go:323
 8  0x00000000008657f8 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.(*endpoint).Write
    at pkg/tcpip/transport/icmp/endpoint.go:240
 9  0x00000000006435a8 in gvisor.dev/gvisor/pkg/sentry/socket/netstack.(*socketOpsCommon).SendMsg
    at pkg/sentry/socket/netstack/netstack.go:2818
10  0x000000000058cf50 in gvisor.dev/gvisor/pkg/sentry/syscalls/linux.sendTo
    at pkg/sentry/syscalls/linux/sys_socket.go:1110
11  0x000000000058d2a8 in gvisor.dev/gvisor/pkg/sentry/syscalls/linux.SendTo
    at pkg/sentry/syscalls/linux/sys_socket.go:1123
12  0x0000000000522ea4 in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall
    at pkg/sentry/kernel/task_syscall.go:104
13  0x0000000000523c5c in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke
    at pkg/sentry/kernel/task_syscall.go:239
14  0x00000000005238dc in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter
    at pkg/sentry/kernel/task_syscall.go:199
15  0x00000000005233e0 in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall
    at pkg/sentry/kernel/task_syscall.go:174
16  0x0000000000518e00 in gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute
    at pkg/sentry/kernel/task_run.go:282
17  0x0000000000517d9c in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run
    at pkg/sentry/kernel/task_run.go:97
18  0x0000000000077c84 in runtime.goexit
    at src/runtime/asm_arm64.s:1136
// WritePacket implements the stack.LinkEndpoint interface. It is called by
// higher-level protocols to write packets; it just logs the packet and
// forwards the request to the lower endpoint.
func (e *endpoint) WritePacket(r *stack.Route, gso *stack.GSO, protocol tcpip.NetworkProtocolNumber, pkt *stack.PacketBuffer) *tcpip.Error {
        e.dumpPacket(directionSend, gso, protocol, pkt)
        return e.Endpoint.WritePacket(r, gso, protocol, pkt)
}
(dlv) n
> gvisor.dev/gvisor/pkg/tcpip/link/sniffer.(*endpoint).WritePacket() pkg/tcpip/link/sniffer/sniffer.go:192 (PC: 0x68c924)
Warning: debugging optimized function
(dlv) ct
Command failed: command not available
(dlv) bt
 0  0x000000000068c924 in gvisor.dev/gvisor/pkg/tcpip/link/sniffer.(*endpoint).WritePacket
    at pkg/tcpip/link/sniffer/sniffer.go:192
 1  0x0000000000495c30 in gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).writePacket
    at pkg/tcpip/stack/nic.go:342
 2  0x0000000000495ac0 in gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket
    at pkg/tcpip/stack/nic.go:324
 3  0x000000000061a33c in gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).writePacket
    at pkg/tcpip/network/ipv4/ipv4.go:368
 4  0x0000000000619fe8 in gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).WritePacket
    at pkg/tcpip/network/ipv4/ipv4.go:331
 5  0x000000000049bfd0 in gvisor.dev/gvisor/pkg/tcpip/stack.(*Route).WritePacket
    at pkg/tcpip/stack/route.go:410
 6  0x0000000000866424 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.send4
    at pkg/tcpip/transport/icmp/endpoint.go:424
 7  0x0000000000865d08 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.(*endpoint).write
    at pkg/tcpip/transport/icmp/endpoint.go:323
 8  0x00000000008657f8 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.(*endpoint).Write
    at pkg/tcpip/transport/icmp/endpoint.go:240
 9  0x00000000006435a8 in gvisor.dev/gvisor/pkg/sentry/socket/netstack.(*socketOpsCommon).SendMsg
    at pkg/sentry/socket/netstack/netstack.go:2818
10  0x000000000058cf50 in gvisor.dev/gvisor/pkg/sentry/syscalls/linux.sendTo
    at pkg/sentry/syscalls/linux/sys_socket.go:1110
11  0x000000000058d2a8 in gvisor.dev/gvisor/pkg/sentry/syscalls/linux.SendTo
    at pkg/sentry/syscalls/linux/sys_socket.go:1123
12  0x0000000000522ea4 in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall
    at pkg/sentry/kernel/task_syscall.go:104
13  0x0000000000523c5c in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke
    at pkg/sentry/kernel/task_syscall.go:239
14  0x00000000005238dc in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter
    at pkg/sentry/kernel/task_syscall.go:199
15  0x00000000005233e0 in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall
    at pkg/sentry/kernel/task_syscall.go:174
16  0x0000000000518e00 in gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute
    at pkg/sentry/kernel/task_run.go:282
17  0x0000000000517d9c in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run
    at pkg/sentry/kernel/task_run.go:97
18  0x0000000000077c84 in runtime.goexit
    at src/runtime/asm_arm64.s:1136
(dlv) p e
*gvisor.dev/gvisor/pkg/tcpip/link/sniffer.endpoint {
        Endpoint: gvisor.dev/gvisor/pkg/tcpip/link/nested.Endpoint {
                child: gvisor.dev/gvisor/pkg/tcpip/stack.LinkEndpoint(*gvisor.dev/gvisor/pkg/tcpip/link/packetsocket.endpoint) ...,
                embedder: gvisor.dev/gvisor/pkg/tcpip/stack.NetworkDispatcher(*gvisor.dev/gvisor/pkg/tcpip/link/sniffer.endpoint) ...,
                mu: (*"gvisor.dev/gvisor/pkg/sync.RWMutex")(0x40004cc170),
                dispatcher: gvisor.dev/gvisor/pkg/tcpip/stack.NetworkDispatcher(*gvisor.dev/gvisor/pkg/tcpip/stack.NIC) ...,},
        writer: io.Writer nil,
        maxPCAPLen: 0,
        logPrefix: "",}
(dlv) 
(dlv) bt
 0  0x00000000008d78f8 in gvisor.dev/gvisor/pkg/tcpip/link/packetsocket.(*endpoint).WritePacket
    at pkg/tcpip/link/packetsocket/endpoint.go:40
 1  0x000000000068c95c in gvisor.dev/gvisor/pkg/tcpip/link/nested.(*Endpoint).WritePacket
    at pkg/tcpip/link/nested/nested.go:117
 2  0x000000000068c95c in gvisor.dev/gvisor/pkg/tcpip/link/sniffer.(*endpoint).WritePacket
    at pkg/tcpip/link/sniffer/sniffer.go:192
 3  0x0000000000495c30 in gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).writePacket
    at pkg/tcpip/stack/nic.go:342
 4  0x0000000000495ac0 in gvisor.dev/gvisor/pkg/tcpip/stack.(*NIC).WritePacket
    at pkg/tcpip/stack/nic.go:324
 5  0x000000000061a33c in gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).writePacket
    at pkg/tcpip/network/ipv4/ipv4.go:368
 6  0x0000000000619fe8 in gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).WritePacket
    at pkg/tcpip/network/ipv4/ipv4.go:331
 7  0x000000000049bfd0 in gvisor.dev/gvisor/pkg/tcpip/stack.(*Route).WritePacket
    at pkg/tcpip/stack/route.go:410
 8  0x0000000000866424 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.send4
    at pkg/tcpip/transport/icmp/endpoint.go:424
 9  0x0000000000865d08 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.(*endpoint).write
    at pkg/tcpip/transport/icmp/endpoint.go:323
10  0x00000000008657f8 in gvisor.dev/gvisor/pkg/tcpip/transport/icmp.(*endpoint).Write
    at pkg/tcpip/transport/icmp/endpoint.go:240
11  0x00000000006435a8 in gvisor.dev/gvisor/pkg/sentry/socket/netstack.(*socketOpsCommon).SendMsg
    at pkg/sentry/socket/netstack/netstack.go:2818
12  0x000000000058cf50 in gvisor.dev/gvisor/pkg/sentry/syscalls/linux.sendTo
    at pkg/sentry/syscalls/linux/sys_socket.go:1110
13  0x000000000058d2a8 in gvisor.dev/gvisor/pkg/sentry/syscalls/linux.SendTo
    at pkg/sentry/syscalls/linux/sys_socket.go:1123
14  0x0000000000522ea4 in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall
    at pkg/sentry/kernel/task_syscall.go:104
15  0x0000000000523c5c in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke
    at pkg/sentry/kernel/task_syscall.go:239
16  0x00000000005238dc in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter
    at pkg/sentry/kernel/task_syscall.go:199
17  0x00000000005233e0 in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall
    at pkg/sentry/kernel/task_syscall.go:174
18  0x0000000000518e00 in gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute
    at pkg/sentry/kernel/task_run.go:282
19  0x0000000000517d9c in gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run
    at pkg/sentry/kernel/task_run.go:97
20  0x0000000000077c84 in runtime.goexit
    at src/runtime/asm_arm64.s:1136
原文地址:https://www.cnblogs.com/dream397/p/14299679.html