SlideShare a Scribd company logo
AQC107 Driver and Changes
coming to network API
2019/12/12 @ BitVisor Summit 8
Ake Koomsin
Agenda
◼ Strange issues during AQC107 driver development
◼ AQC107 driver performance
◼ Changes coming to network API
1Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
Aquantia AQC107
◼ Budget 10 Gbps Ethernet Controller
– Mac Mini 2018 10 Gbps model
– Asus XG-C100C
– Etc
◼ Support 10/5/2.5/1 Gbps and 100 Mbps
◼ Support a lot of packet filtering
– L2/L3/L4
– VLAN
– Flexible Header filtering
– Etc
◼ Aquantia is acquired by Marvell in 2019/09
2Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
AQC107 strange issues
◼ Busy bit problem on Mac mini
◼ MAC address and Mac mini
3Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
AQC107 strange issues
◼ Busy bit problem on Mac mini
– To get a MAC address from AQC107, communicate with its
firmware through the mailbox mechanism
• Write a message to a register, commit, and wait for the result
– Mailbox Busy Bit is used to indicate whether data from the
firmware has arrived or not
• We know that the data has arrived when the bit is cleared
– However, the busy bit is always set for AQC107 on Mac mini
• May be due to the firmware difference? (AQC107 on Mac mini
uses Apple’s firmware)
• Workaround is required
4Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
AQC107 strange issues
◼ MAC address and Mac mini
– Typically, a driver obtains a MAC address from the device
– Interestingly, macOS ,and Mac firmware obtain the MAC
address from somewhere else
• See Mac Mini box for MAC address used by macOS, and Mac
Firmware
– To avoid unforeseen problems, it is better to use that the
MAC address that is on the Mac mini box
– The only way to obtain that MAC address programmatically
is to get it from Mac firmware
• From UEFI Device Path
– That is the reason we introduce uefiutil to allow us to
obtain additional information from the firmware
5Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
AQC107 driver performance
◼ Test environment
6Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
BitVisor Machine Another Machine
CPU Intel i5-4430 @ 3.0 GHz
Memory 4 GB 8 GB
OS Debian Live CD 10.2, kernel 4.19.67-2+deb10u1
NIC Asus XG-C100C
Link speed 10 Gbps direct connect
Test program Iperf2
AQC107 driver performance
◼ Up until “virtio-net: try to submit packets
in a batch to the device driver”
◼ Result
– TX: ~9.4 Gbps
– RX: ~6.8 Gbps
◼ There is room for RX improvement
7Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
0 1 2 3 4 5 6 7 8 9 10
RX (Gbps)
Baseline
AQC107 driver performance
◼ Enabling Receive Side Coalescing (RSC) interrupt
– Coalesce incoming interrupts so that they are not too
excessive
◼ Result
– TX: ~9.4 Gbps
– RX: from ~6.8 to ~7.4 Gbps
8Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
0 1 2 3 4 5 6 7 8 9 10
RX (Gbps)
Baseline Intr RSC
AQC107 driver performance
◼ Increase virtio_net queue size from 256 to 512
– Reduce packet drop due to out of available descriptors
◼ Result
– TX: ~9.4 Gbps
– RX: from ~7.4 Gbps to ~9.1 Gbps
9Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
0 1 2 3 4 5 6 7 8 9 10
RX (Gbps)
Baseline Intr RSC virtio_net 512
Changes coming to network API
◼ Dual MAC addresses
◼ Support for hardware offloading
10Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
Changes coming to network API
◼ Dual MAC addresses
– Unique MAC addresses for lwip and virtio_net
• Inspect incoming packets, and forward them to the appropriate
destination
– Result
• TX: ~9.4 Gbps
• RX: from ~9.1 Gbps to ~ 9.4 Gbps
11Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
0 1 2 3 4 5 6 7 8 9 10
RX (Gbps)
Baseline Intr RSC virtio_net 512 Dual MAC address
Changes coming to network API
◼ Support for hardware offloading
– Although we can saturate 10 Gbps TX throughput, it is still
possible to reduce CPU usage caused by:
• Checksum calculation
• Packet segmentation
– Need
• Ability to tell the NIC driver to perform offloading
• Ability to pass buffers to the NIC directly (zero copy)
12Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
Changes coming to network API
◼ Support for hardware offloading
– Current network API is not enough
– Tentative upcoming changes
• Unifying send/receive function signature
• Introducing struct netpkt packet descriptor
• TX zero copy implementation
• Support for hardware offloading features like TSO, and
checksum calculation
13Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
Changes coming to network API
◼ Unifying send/receive function signature
– Current send/receive function signature
14Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
/* send() is a part of struct nicfunc */
void (*send) (void *handle,
uint num_packets,
void **packets,
uint *packet_sizes,
bool print_ok);
typedef void net_recv_callback_t (void *handle,
uint num_packets,
void **packets,
uint *packet_sizes,
void *param,
long *premap);
Changes coming to network API
◼ Unifying send/receive function signature
– Current send/receive function signature
• Difference in function signature
– recv() can be used for transmitting data (like in virtio_net)
– Same for send(), it can be used for receiving data
– This can be troublesome when we want to implement TX zero
copy and hardware offloading
15Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
Changes coming to network API
◼ Unifying send/receive function signature
– Introduce net_io_fill_t and net_io_flush_t
– net_io_fill_t return value
• NET_FILL_OK
• NET_FILLL_FULL
16Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
typedef int net_io_fill_t (void *handle,
void *packet,
unsigned int packet_size,
bool print_ok,
void *opt);
typedef void net_io_flush_t (void *handle);
Changes coming to network API
◼ Unifying send/receive function signature
– send() becomes send_fill() and send_flush()
– recv() becomes recv_fill() and recv_flush()
– Return value from fill() gives the caller a chance to deal with
out of descriptor situation
– fill() allows the caller to fill data as much as possible before
flush()
• fill() and flush() should reduce number of MMIO accesses, good
for performance
– flush() usually involves MMIO register accesses if the callee is
NIC driver
17Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
Changes coming to network API
◼ Introducing struct netpkt packet descriptor
– We can change net_io_fill_t signature to
where struct netpkt is
18Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
typedef int net_io_fill_t (void *handle,
struct netpkt *pkt,
bool print_ok);
struct netpkt {
void *buf;
void *extra;
u32 buf_nbytes;
u32 flags; /* For options like TSO,
checksum offloading, etc */
};
Changes coming to network API
◼ TX zero copy implementation
– We can add struct dmabuf so that we can hand over
buffer physical addresses to the NIC
– We also need callback to notify the caller that the packet has
been consumed by the NIC
• Require NIC driver modification
19Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
struct netpkt {
struct dmabuf *dmabuf;
void *extra;
void (*callback) (void *handle,
struct netpkt *pkt,
void *param)
void *cb_handle, *cb_param;
u32 flags; /* For options like TSO,
checksum offloading, etc */
};
Changes coming to network API
◼ Support for hardware offloading
– After the API is stable, we can add hardware offloading
support
– Modification should be straightforward
20Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
Summary
◼ AQC107 driver
– We can saturate TX/RX throughput
– Still possible to reduce CPU usage
◼ Changes coming to network API
– Dual MAC addresses
– Support for hardware offloading
• Unifying send/receive function signature
• Packet descriptor
• TX zero copy support
• TSO + Checksum calculation
21Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
Thank you
22Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.

More Related Content

What's hot

BGP Prime
BGP Prime BGP Prime
BGP Prime
KHNOG
 
Eigrp
EigrpEigrp
Eigrp
Abhi Kumar
 
ACI MultiPod Config Guide
ACI MultiPod Config GuideACI MultiPod Config Guide
ACI MultiPod Config Guide
Woo Hyung Choi
 
Day 11 eigrp
Day 11 eigrpDay 11 eigrp
Day 11 eigrp
CYBERINTELLIGENTS
 
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Đồng Quốc Vương
 
Bgp multihoming
Bgp multihomingBgp multihoming
Bgp multihoming
ee38sp
 
Dhc pv4
Dhc pv4Dhc pv4
Dhc pv4
Noman Pal-og
 
Cisco vs juniper
Cisco vs juniperCisco vs juniper
Cisco vs juniper
Elshaday Gelaye
 
NAT Ccna
NAT CcnaNAT Ccna
NAT Ccna
singhsukdeep
 
NAT_Final
NAT_FinalNAT_Final
NAT_Final
Pratik Bhide
 
ACI DHCP 구성 가이드
ACI DHCP 구성 가이드ACI DHCP 구성 가이드
ACI DHCP 구성 가이드
Woo Hyung Choi
 
Transitioning IPv4 to IPv6
Transitioning IPv4 to IPv6Transitioning IPv4 to IPv6
Transitioning IPv4 to IPv6
Jhoni Guerrero
 
Network Jumbo Frame Config Guide
Network Jumbo Frame Config GuideNetwork Jumbo Frame Config Guide
Network Jumbo Frame Config Guide
Woo Hyung Choi
 
BGP Traffic Engineering / Routing Optimisation
BGP Traffic Engineering / Routing OptimisationBGP Traffic Engineering / Routing Optimisation
BGP Traffic Engineering / Routing Optimisation
Andy Davidson
 
ACI DHCP Config Guide
ACI DHCP Config GuideACI DHCP Config Guide
ACI DHCP Config Guide
Woo Hyung Choi
 
ACI MultiPod 구성
ACI MultiPod 구성ACI MultiPod 구성
ACI MultiPod 구성
Woo Hyung Choi
 
Things I wish I had known about IPv6 before I started
Things I wish I had known about IPv6 before I startedThings I wish I had known about IPv6 before I started
Things I wish I had known about IPv6 before I started
Faelix Ltd
 
DEVNET-1191 BGP Enabled Application Development
DEVNET-1191	BGP Enabled Application DevelopmentDEVNET-1191	BGP Enabled Application Development
DEVNET-1191 BGP Enabled Application Development
Cisco DevNet
 
How to configure static nat on cisco routers
How to configure static nat on cisco routersHow to configure static nat on cisco routers
How to configure static nat on cisco routers
IT Tech
 
IPv6 at Mythic Beasts - Networkshop44
IPv6 at Mythic Beasts - Networkshop44IPv6 at Mythic Beasts - Networkshop44
IPv6 at Mythic Beasts - Networkshop44
Jisc
 

What's hot (20)

BGP Prime
BGP Prime BGP Prime
BGP Prime
 
Eigrp
EigrpEigrp
Eigrp
 
ACI MultiPod Config Guide
ACI MultiPod Config GuideACI MultiPod Config Guide
ACI MultiPod Config Guide
 
Day 11 eigrp
Day 11 eigrpDay 11 eigrp
Day 11 eigrp
 
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
 
Bgp multihoming
Bgp multihomingBgp multihoming
Bgp multihoming
 
Dhc pv4
Dhc pv4Dhc pv4
Dhc pv4
 
Cisco vs juniper
Cisco vs juniperCisco vs juniper
Cisco vs juniper
 
NAT Ccna
NAT CcnaNAT Ccna
NAT Ccna
 
NAT_Final
NAT_FinalNAT_Final
NAT_Final
 
ACI DHCP 구성 가이드
ACI DHCP 구성 가이드ACI DHCP 구성 가이드
ACI DHCP 구성 가이드
 
Transitioning IPv4 to IPv6
Transitioning IPv4 to IPv6Transitioning IPv4 to IPv6
Transitioning IPv4 to IPv6
 
Network Jumbo Frame Config Guide
Network Jumbo Frame Config GuideNetwork Jumbo Frame Config Guide
Network Jumbo Frame Config Guide
 
BGP Traffic Engineering / Routing Optimisation
BGP Traffic Engineering / Routing OptimisationBGP Traffic Engineering / Routing Optimisation
BGP Traffic Engineering / Routing Optimisation
 
ACI DHCP Config Guide
ACI DHCP Config GuideACI DHCP Config Guide
ACI DHCP Config Guide
 
ACI MultiPod 구성
ACI MultiPod 구성ACI MultiPod 구성
ACI MultiPod 구성
 
Things I wish I had known about IPv6 before I started
Things I wish I had known about IPv6 before I startedThings I wish I had known about IPv6 before I started
Things I wish I had known about IPv6 before I started
 
DEVNET-1191 BGP Enabled Application Development
DEVNET-1191	BGP Enabled Application DevelopmentDEVNET-1191	BGP Enabled Application Development
DEVNET-1191 BGP Enabled Application Development
 
How to configure static nat on cisco routers
How to configure static nat on cisco routersHow to configure static nat on cisco routers
How to configure static nat on cisco routers
 
IPv6 at Mythic Beasts - Networkshop44
IPv6 at Mythic Beasts - Networkshop44IPv6 at Mythic Beasts - Networkshop44
IPv6 at Mythic Beasts - Networkshop44
 

Similar to BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」

How our Cloudy Mindsets Approached Physical Routers
How our Cloudy Mindsets Approached Physical RoutersHow our Cloudy Mindsets Approached Physical Routers
How our Cloudy Mindsets Approached Physical Routers
Steffen Gebert
 
Approaching hyperconvergedopenstack
Approaching hyperconvergedopenstackApproaching hyperconvergedopenstack
Approaching hyperconvergedopenstack
Ikuo Kumagai
 
2014/09/02 Cisco UCS HPC @ ANL
2014/09/02 Cisco UCS HPC @ ANL2014/09/02 Cisco UCS HPC @ ANL
2014/09/02 Cisco UCS HPC @ ANL
dgoodell
 
Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2
eucariot
 
Netsft2017 day in_life_of_nfv
Netsft2017 day in_life_of_nfvNetsft2017 day in_life_of_nfv
Netsft2017 day in_life_of_nfv
Intel
 
Note I only need the last 3 sub-questions ( e, f and g) 3. Firew.pdf
Note I only need the last 3 sub-questions ( e, f and g) 3. Firew.pdfNote I only need the last 3 sub-questions ( e, f and g) 3. Firew.pdf
Note I only need the last 3 sub-questions ( e, f and g) 3. Firew.pdf
ezonesolutions
 
Ccna 2 Final V4 1
Ccna 2 Final V4 1Ccna 2 Final V4 1
Ccna 2 Final V4 1
stigerj
 
26.1.7 lab snort and firewall rules
26.1.7 lab   snort and firewall rules26.1.7 lab   snort and firewall rules
26.1.7 lab snort and firewall rules
Freddy Buenaño
 
Operational Issues inIPv6 --from vendors' point of view--
Operational Issues inIPv6 --from vendors' point of view--Operational Issues inIPv6 --from vendors' point of view--
Operational Issues inIPv6 --from vendors' point of view--
Shinsuke SUZUKI
 
BRKACI-2102_Tshoot.pdf
BRKACI-2102_Tshoot.pdfBRKACI-2102_Tshoot.pdf
BRKACI-2102_Tshoot.pdf
CcieOfPeople
 
XS Boston 2008 Network Topology
XS Boston 2008 Network TopologyXS Boston 2008 Network Topology
XS Boston 2008 Network Topology
The Linux Foundation
 
FPGA MeetUp
FPGA MeetUpFPGA MeetUp
FPGA MeetUp
Moya Brannan
 
Ethernet summit 2011_toe
Ethernet summit 2011_toeEthernet summit 2011_toe
Ethernet summit 2011_toe
intilop
 
Cisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Connect Toronto 2017 - Model-driven TelemetryCisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Canada
 
Scaling Apache Pulsar to 10 PB/day
Scaling Apache Pulsar to 10 PB/dayScaling Apache Pulsar to 10 PB/day
Scaling Apache Pulsar to 10 PB/day
Karthik Ramasamy
 
Scaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 Keynote
Scaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 KeynoteScaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 Keynote
Scaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 Keynote
StreamNative
 
DPDK: Multi Architecture High Performance Packet Processing
DPDK: Multi Architecture High Performance Packet ProcessingDPDK: Multi Architecture High Performance Packet Processing
DPDK: Multi Architecture High Performance Packet Processing
Michelle Holley
 
CCNA 1 Chapter 6 v5.0 2014
CCNA 1 Chapter 6 v5.0 2014CCNA 1 Chapter 6 v5.0 2014
CCNA 1 Chapter 6 v5.0 2014
Đồng Quốc Vương
 
Sharing your-internet-connection-on-linux
Sharing your-internet-connection-on-linuxSharing your-internet-connection-on-linux
Sharing your-internet-connection-on-linux
jasembo
 
Innovations in the Enterprise Routing & Switching Space
Innovations in the Enterprise Routing & Switching SpaceInnovations in the Enterprise Routing & Switching Space
Innovations in the Enterprise Routing & Switching Space
Cisco Canada
 

Similar to BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」 (20)

How our Cloudy Mindsets Approached Physical Routers
How our Cloudy Mindsets Approached Physical RoutersHow our Cloudy Mindsets Approached Physical Routers
How our Cloudy Mindsets Approached Physical Routers
 
Approaching hyperconvergedopenstack
Approaching hyperconvergedopenstackApproaching hyperconvergedopenstack
Approaching hyperconvergedopenstack
 
2014/09/02 Cisco UCS HPC @ ANL
2014/09/02 Cisco UCS HPC @ ANL2014/09/02 Cisco UCS HPC @ ANL
2014/09/02 Cisco UCS HPC @ ANL
 
Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2
 
Netsft2017 day in_life_of_nfv
Netsft2017 day in_life_of_nfvNetsft2017 day in_life_of_nfv
Netsft2017 day in_life_of_nfv
 
Note I only need the last 3 sub-questions ( e, f and g) 3. Firew.pdf
Note I only need the last 3 sub-questions ( e, f and g) 3. Firew.pdfNote I only need the last 3 sub-questions ( e, f and g) 3. Firew.pdf
Note I only need the last 3 sub-questions ( e, f and g) 3. Firew.pdf
 
Ccna 2 Final V4 1
Ccna 2 Final V4 1Ccna 2 Final V4 1
Ccna 2 Final V4 1
 
26.1.7 lab snort and firewall rules
26.1.7 lab   snort and firewall rules26.1.7 lab   snort and firewall rules
26.1.7 lab snort and firewall rules
 
Operational Issues inIPv6 --from vendors' point of view--
Operational Issues inIPv6 --from vendors' point of view--Operational Issues inIPv6 --from vendors' point of view--
Operational Issues inIPv6 --from vendors' point of view--
 
BRKACI-2102_Tshoot.pdf
BRKACI-2102_Tshoot.pdfBRKACI-2102_Tshoot.pdf
BRKACI-2102_Tshoot.pdf
 
XS Boston 2008 Network Topology
XS Boston 2008 Network TopologyXS Boston 2008 Network Topology
XS Boston 2008 Network Topology
 
FPGA MeetUp
FPGA MeetUpFPGA MeetUp
FPGA MeetUp
 
Ethernet summit 2011_toe
Ethernet summit 2011_toeEthernet summit 2011_toe
Ethernet summit 2011_toe
 
Cisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Connect Toronto 2017 - Model-driven TelemetryCisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Connect Toronto 2017 - Model-driven Telemetry
 
Scaling Apache Pulsar to 10 PB/day
Scaling Apache Pulsar to 10 PB/dayScaling Apache Pulsar to 10 PB/day
Scaling Apache Pulsar to 10 PB/day
 
Scaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 Keynote
Scaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 KeynoteScaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 Keynote
Scaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 Keynote
 
DPDK: Multi Architecture High Performance Packet Processing
DPDK: Multi Architecture High Performance Packet ProcessingDPDK: Multi Architecture High Performance Packet Processing
DPDK: Multi Architecture High Performance Packet Processing
 
CCNA 1 Chapter 6 v5.0 2014
CCNA 1 Chapter 6 v5.0 2014CCNA 1 Chapter 6 v5.0 2014
CCNA 1 Chapter 6 v5.0 2014
 
Sharing your-internet-connection-on-linux
Sharing your-internet-connection-on-linuxSharing your-internet-connection-on-linux
Sharing your-internet-connection-on-linux
 
Innovations in the Enterprise Routing & Switching Space
Innovations in the Enterprise Routing & Switching SpaceInnovations in the Enterprise Routing & Switching Space
Innovations in the Enterprise Routing & Switching Space
 

More from BitVisor

BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor
 
BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor Summit 11「2. BitVisor on Aarch64」BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor
 
BitVisor Summit 11「1. BitVisor 2022年の主な変更点」
BitVisor Summit 11「1. BitVisor 2022年の主な変更点」BitVisor Summit 11「1. BitVisor 2022年の主な変更点」
BitVisor Summit 11「1. BitVisor 2022年の主な変更点」
BitVisor
 
BitVisor Summit 10「1. BitVisor 2021年の主な変更点」
BitVisor Summit 10「1. BitVisor 2021年の主な変更点」 BitVisor Summit 10「1. BitVisor 2021年の主な変更点」
BitVisor Summit 10「1. BitVisor 2021年の主な変更点」
BitVisor
 
BitVisor Summit 9「2. BitVisor 2020年の主な変更点」
BitVisor Summit 9「2. BitVisor 2020年の主な変更点」 BitVisor Summit 9「2. BitVisor 2020年の主な変更点」
BitVisor Summit 9「2. BitVisor 2020年の主な変更点」
BitVisor
 
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」 BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor
 
BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」
BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」
BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」
BitVisor
 
BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」
BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」
BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」
BitVisor
 
BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」
BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」
BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」
BitVisor
 
BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」
BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」
BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」
BitVisor
 
BitVisor Summit 7「2. BitVisor 2018年の主な変更点」
BitVisor Summit 7「2. BitVisor 2018年の主な変更点」BitVisor Summit 7「2. BitVisor 2018年の主な変更点」
BitVisor Summit 7「2. BitVisor 2018年の主な変更点」
BitVisor
 

More from BitVisor (11)

BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
 
BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor Summit 11「2. BitVisor on Aarch64」BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor Summit 11「2. BitVisor on Aarch64」
 
BitVisor Summit 11「1. BitVisor 2022年の主な変更点」
BitVisor Summit 11「1. BitVisor 2022年の主な変更点」BitVisor Summit 11「1. BitVisor 2022年の主な変更点」
BitVisor Summit 11「1. BitVisor 2022年の主な変更点」
 
BitVisor Summit 10「1. BitVisor 2021年の主な変更点」
BitVisor Summit 10「1. BitVisor 2021年の主な変更点」 BitVisor Summit 10「1. BitVisor 2021年の主な変更点」
BitVisor Summit 10「1. BitVisor 2021年の主な変更点」
 
BitVisor Summit 9「2. BitVisor 2020年の主な変更点」
BitVisor Summit 9「2. BitVisor 2020年の主な変更点」 BitVisor Summit 9「2. BitVisor 2020年の主な変更点」
BitVisor Summit 9「2. BitVisor 2020年の主な変更点」
 
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」 BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
 
BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」
BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」
BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」
 
BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」
BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」
BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」
 
BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」
BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」
BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」
 
BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」
BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」
BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」
 
BitVisor Summit 7「2. BitVisor 2018年の主な変更点」
BitVisor Summit 7「2. BitVisor 2018年の主な変更点」BitVisor Summit 7「2. BitVisor 2018年の主な変更点」
BitVisor Summit 7「2. BitVisor 2018年の主な変更点」
 

Recently uploaded

Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
flufftailshop
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 

Recently uploaded (20)

Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 

BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」

  • 1. AQC107 Driver and Changes coming to network API 2019/12/12 @ BitVisor Summit 8 Ake Koomsin
  • 2. Agenda ◼ Strange issues during AQC107 driver development ◼ AQC107 driver performance ◼ Changes coming to network API 1Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 3. Aquantia AQC107 ◼ Budget 10 Gbps Ethernet Controller – Mac Mini 2018 10 Gbps model – Asus XG-C100C – Etc ◼ Support 10/5/2.5/1 Gbps and 100 Mbps ◼ Support a lot of packet filtering – L2/L3/L4 – VLAN – Flexible Header filtering – Etc ◼ Aquantia is acquired by Marvell in 2019/09 2Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 4. AQC107 strange issues ◼ Busy bit problem on Mac mini ◼ MAC address and Mac mini 3Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 5. AQC107 strange issues ◼ Busy bit problem on Mac mini – To get a MAC address from AQC107, communicate with its firmware through the mailbox mechanism • Write a message to a register, commit, and wait for the result – Mailbox Busy Bit is used to indicate whether data from the firmware has arrived or not • We know that the data has arrived when the bit is cleared – However, the busy bit is always set for AQC107 on Mac mini • May be due to the firmware difference? (AQC107 on Mac mini uses Apple’s firmware) • Workaround is required 4Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 6. AQC107 strange issues ◼ MAC address and Mac mini – Typically, a driver obtains a MAC address from the device – Interestingly, macOS ,and Mac firmware obtain the MAC address from somewhere else • See Mac Mini box for MAC address used by macOS, and Mac Firmware – To avoid unforeseen problems, it is better to use that the MAC address that is on the Mac mini box – The only way to obtain that MAC address programmatically is to get it from Mac firmware • From UEFI Device Path – That is the reason we introduce uefiutil to allow us to obtain additional information from the firmware 5Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 7. AQC107 driver performance ◼ Test environment 6Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. BitVisor Machine Another Machine CPU Intel i5-4430 @ 3.0 GHz Memory 4 GB 8 GB OS Debian Live CD 10.2, kernel 4.19.67-2+deb10u1 NIC Asus XG-C100C Link speed 10 Gbps direct connect Test program Iperf2
  • 8. AQC107 driver performance ◼ Up until “virtio-net: try to submit packets in a batch to the device driver” ◼ Result – TX: ~9.4 Gbps – RX: ~6.8 Gbps ◼ There is room for RX improvement 7Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. 0 1 2 3 4 5 6 7 8 9 10 RX (Gbps) Baseline
  • 9. AQC107 driver performance ◼ Enabling Receive Side Coalescing (RSC) interrupt – Coalesce incoming interrupts so that they are not too excessive ◼ Result – TX: ~9.4 Gbps – RX: from ~6.8 to ~7.4 Gbps 8Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. 0 1 2 3 4 5 6 7 8 9 10 RX (Gbps) Baseline Intr RSC
  • 10. AQC107 driver performance ◼ Increase virtio_net queue size from 256 to 512 – Reduce packet drop due to out of available descriptors ◼ Result – TX: ~9.4 Gbps – RX: from ~7.4 Gbps to ~9.1 Gbps 9Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. 0 1 2 3 4 5 6 7 8 9 10 RX (Gbps) Baseline Intr RSC virtio_net 512
  • 11. Changes coming to network API ◼ Dual MAC addresses ◼ Support for hardware offloading 10Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 12. Changes coming to network API ◼ Dual MAC addresses – Unique MAC addresses for lwip and virtio_net • Inspect incoming packets, and forward them to the appropriate destination – Result • TX: ~9.4 Gbps • RX: from ~9.1 Gbps to ~ 9.4 Gbps 11Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. 0 1 2 3 4 5 6 7 8 9 10 RX (Gbps) Baseline Intr RSC virtio_net 512 Dual MAC address
  • 13. Changes coming to network API ◼ Support for hardware offloading – Although we can saturate 10 Gbps TX throughput, it is still possible to reduce CPU usage caused by: • Checksum calculation • Packet segmentation – Need • Ability to tell the NIC driver to perform offloading • Ability to pass buffers to the NIC directly (zero copy) 12Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 14. Changes coming to network API ◼ Support for hardware offloading – Current network API is not enough – Tentative upcoming changes • Unifying send/receive function signature • Introducing struct netpkt packet descriptor • TX zero copy implementation • Support for hardware offloading features like TSO, and checksum calculation 13Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 15. Changes coming to network API ◼ Unifying send/receive function signature – Current send/receive function signature 14Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. /* send() is a part of struct nicfunc */ void (*send) (void *handle, uint num_packets, void **packets, uint *packet_sizes, bool print_ok); typedef void net_recv_callback_t (void *handle, uint num_packets, void **packets, uint *packet_sizes, void *param, long *premap);
  • 16. Changes coming to network API ◼ Unifying send/receive function signature – Current send/receive function signature • Difference in function signature – recv() can be used for transmitting data (like in virtio_net) – Same for send(), it can be used for receiving data – This can be troublesome when we want to implement TX zero copy and hardware offloading 15Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 17. Changes coming to network API ◼ Unifying send/receive function signature – Introduce net_io_fill_t and net_io_flush_t – net_io_fill_t return value • NET_FILL_OK • NET_FILLL_FULL 16Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. typedef int net_io_fill_t (void *handle, void *packet, unsigned int packet_size, bool print_ok, void *opt); typedef void net_io_flush_t (void *handle);
  • 18. Changes coming to network API ◼ Unifying send/receive function signature – send() becomes send_fill() and send_flush() – recv() becomes recv_fill() and recv_flush() – Return value from fill() gives the caller a chance to deal with out of descriptor situation – fill() allows the caller to fill data as much as possible before flush() • fill() and flush() should reduce number of MMIO accesses, good for performance – flush() usually involves MMIO register accesses if the callee is NIC driver 17Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 19. Changes coming to network API ◼ Introducing struct netpkt packet descriptor – We can change net_io_fill_t signature to where struct netpkt is 18Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. typedef int net_io_fill_t (void *handle, struct netpkt *pkt, bool print_ok); struct netpkt { void *buf; void *extra; u32 buf_nbytes; u32 flags; /* For options like TSO, checksum offloading, etc */ };
  • 20. Changes coming to network API ◼ TX zero copy implementation – We can add struct dmabuf so that we can hand over buffer physical addresses to the NIC – We also need callback to notify the caller that the packet has been consumed by the NIC • Require NIC driver modification 19Copyright© 2019 IGEL Co., Ltd. All Rights Reserved. struct netpkt { struct dmabuf *dmabuf; void *extra; void (*callback) (void *handle, struct netpkt *pkt, void *param) void *cb_handle, *cb_param; u32 flags; /* For options like TSO, checksum offloading, etc */ };
  • 21. Changes coming to network API ◼ Support for hardware offloading – After the API is stable, we can add hardware offloading support – Modification should be straightforward 20Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 22. Summary ◼ AQC107 driver – We can saturate TX/RX throughput – Still possible to reduce CPU usage ◼ Changes coming to network API – Dual MAC addresses – Support for hardware offloading • Unifying send/receive function signature • Packet descriptor • TX zero copy support • TSO + Checksum calculation 21Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.
  • 23. Thank you 22Copyright© 2019 IGEL Co., Ltd. All Rights Reserved.