As a baseline measurement I suggest writing the same code in C; this shows how much your VM / config / machine can handle.
With gopacket -- use src.NextPacket instead of Packets. There are also: https://github.com/akrennmair/gopcap and https://github.com/miekg/pcap + Egon On Friday, 26 May 2017 19:01:20 UTC+3, Chun Zhang wrote: > > Hi, All, > > I am trying to write a small program to handle packets coming from a GigE > wire. The testing code snip is as below. > > The problem I am facing is that this is extremely slow, can only handle up > to 250Mbps-ish traffic with normal ipv4 sized packets, anything above that > resulting significant packet drop. Note that I am doing nothing with the > packet at this moment. If I try to do any packet processing, then > apparently it gets slower. > > Has anybody measured the efficiency of the gopacket package? Is there any > other faster alternatives? > > PS: the host machine is an ubuntu VM with 12-core and 12G memory, but > looks only 2 cores are used for this program. > > Thanks, > Chun > > > > // Open device > handle, err = pcap.OpenLive(device, snapshot_len, promiscuous, timeout) > if err == nil { > Info.Println("Open interface ", device, "successfully") > > } > defer handle.Close() > > > //fmt.Println("In the deafult reading case ", time.Now()) > // Use the handle as a packet source to process all packets > packetSource := gopacket.NewPacketSource(handle, handle.LinkType()) > Info.Println("pcketsourc is ", packetSource, time.Now()) > for packet := range packetSource.Packets() { > > Debug.Println("-------------------------------------------------------------------") > count++ > Warning.Println("packet count ", count) > > // write to a pcap for testing > /*err = w.WritePacket(packet.Metadata().CaptureInfo, > packet.Data()) > if err != nil { > fmt.Println(err) > }*/ > > continue > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.