|
|
|
UDP Tx and order of delivery considerations | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] |
|
Hi, I am developing a UDP based networking app for an embedded system on a multicore CPU. I would like to understand the ordering of delivery in the Tx path as we have unique requirements that packets be on the wire in the chronological order of send()/write() calls. 1) If UDP corking is not enabled and ARP is already resolved, does send()/write() return only after the packet is queued in the ethernet driver? * I have analyzed the code paths and this seems to be the case but I would like to double check to make sure if I haven't missed some paths. 2) Process A on core0 does a send()/write() at t0 and Process B on the same core does another send()/write() at later point in time, is it guaranteed that the packets are delivered on the wire in the order of send() calls? 3) Process A on core0 does a send()/write() at t0 and Process B on a different core does another send()/write() at later point in time, are there any simple tricks to guarantee order of delivery? * I am currently planning to implement a FIFO queue for serialization where sends() across the cores are buffered and drained from a single process. The packets are delivered to a custom chip on the same board with a direct SGMII connection from the CPU and packet loss is a non-issue for us by design. Also as this is a point-to-point connection out of order delivery through routers does not arise for us. Thanks, Mohan -- To unsubscribe from this list: send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
[Netdev] [Ethernet Bridging] [Linux 802.1Q VLAN] [Linux Wireless] [Kernel Newbies] [Security] [Linux for Hams] [Netfilter] [Git] [Bugtraq] [Photo] [Yosemite] [Yosemite News and Information] [MIPS Linux] [ARM Linux] [Linux RAID] [Linux PCI] [Linux Admin] [Samba] [Video 4 Linux] [Linux Resources]