Ipq806x hardware acceleration v2

Page 1

IPQ806x Hardware acceleration

Proceedings of netdev 0.1, Feb 14-17, 2015, Ottawa, On, Canada


NSS acceleration model • Features • Designed for Home Gateways (CPE) • Flow detection based “All-or-nothing” offload • Acceleration supports: •

IPv4, IPv6, NAT, PPPoE, L2TP, VLAN, Qdisc

• Performance gain • Linux: 640k pps (bridged) – 220kpps (routed) • NSS: 7200k pps (bridged) – 7200kpps (routed) • 11x (bridged) – 32x (routed)

• Functional behavior • 0% cpu load seen in Linux • Keep Linux counters up to date • Does not require functional changes at an upper level (user space)

Proceedings of netdev 0.1, Feb 14-17, 2015, Ottawa, On, Canada


ECM Front End Inspect Packets and Events • Inspect all outgoing packets at POSTROUTING chain by registering post routing hooks. • Inspect conntrack and device events to destroy and regenerate connection. • Inspect NSS status and stats to update the connection state and statistics info in Linux and ECM DB.

IPCT_DESTROY / IPCT_MARK

INTERFACE NOTIFIER

BOND NOTIFIER

CONNTRACK NOTIFIER

LINUX CONNTRACK

MTU / UP/ DOWN /

Bond Link/ Release/ Enslave

L3 PKTs L2 PKTs

NETFILTER IPvX POST ROUTING

L3 PKTs

FRONT END

L2 PKTs

NETFILTER PF_BRIDGE POST ROUTING

NSS Status and Stats Sync NSS Driver

Proceedings of netdev 0.1, Feb 14-17, 2015, Ottawa, On, Canada

NSS Firmware


Example of IPv4 TCP rule creation Linux Linux net stack

ECM

Connection Established

Routing or Bridging Netfiter Postrouting

Netfiter Prerouting

Check TCP Connection can be accel?

NSS Driver Send the Packet to Linux

No TCP: ACK Or Syn+ACK TCP Data

Match Any Accelerated Rule?

Create IPv4 Rule

Transmit the packet

Add the rule & reply the establish cmd

Packet The Accelerated TCP flow

NSS Firmware

Proceedings of netdev 0.1, Feb 14-17, 2015, Ottawa, On, Canada


Example of IPv4 TCP rule destroy Linux Kernel

ECM

Linux net stack

Remove the connection

Conntrack destroy event

Conntrack

Connection Destroy ?

Routing / Bridging

Netfiter Postrouting

Netfiter Prerouting

NSS Driver Send the Packet to Linux

Destroy IPv4 Rule

IPv4 Rule Sync

Transmit The packet

No TCP: FIN

TCP Data

Is it a connected TCP Data?

Add the rule & reply the establish cmd

The Accelerated TCP flow

NSS Firmware

Proceedings of netdev 0.1, Feb 14-17, 2015, Ottawa, On, Canada

Packet


Example of IPv4 rule API • Common messaging interfaces • • •

Protocol type: IPv4, IPv6, PPP, LAG… Rule type: CREATE, DESTROY, CONN_STAT_SYNC , NODE_STAT_SYNC… Callback/args pointers: will be passed back in the FW ACK/NACK reply

• IPv4 rule create message structure example

struct nss_ipv4_rule_create_msg { /* Request */ uint16_t valid_flags;

struct nss_ipv4_protocol_tcp_rule tcp_rule; struct nss_ipv4_pppoe_rule pppoe_rule; struct nss_ipv4_qos_rule qos_rule; struct nss_ipv4_dscp_rule dscp_rule; struct nss_ipv4_vlan_rule vlan_primary_rule; struct nss_ipv4_vlan_rule vlan_secondary_rule;

/* Indicate which of the parameters below is filled-in Indirectly says which operation to be done on the flow */ /* Bit flags associated with the rule */ /* src_ip, dst_ip, src_port, dst_port, proto */ /* src_mac, dst_mac, src_iface, dst_iface, src_mtu, dst_mtu, nat_src_ip, nat_dst_ip, nat_src_port, nat_dst_port */ /* TCP related accleration parameters */ /* flow_session_id, flow_remote_mac, ret_session_id, ret_remote_mac */ /* flow_qos_tag, ret_qos_tag, */ /* flow_dscp, ret_dstp */ /* ingress_vlan_tag, egress_vlan_tag */ /* ingress_vlan_tag, egress_vlan_tag – for QinQ */

/* Response */ uint32_t index;

/*Slot ID for cache stats to host OS */

uint16_t rule_flags; struct nss_ipv4_5tuple tuple; struct nss_ipv4_connection_rule conn_rule;

};

Proceedings of netdev 0.1, Feb 14-17, 2015, Ottawa, On, Canada


Interfaces & Connections statistics update • Stats updates sent periodically from the Firmware • Per-interfaces stats (update net_devices) • Per-connections stats (update conntracks)

• Minor modifications to ppp/l2tp/ipsec… layers for iface look-up and stats update

conntracks

stats++

Linux ECM Look-up conntrack

ethN

ppp0 br0 tun0

Look-up interface

stats++ NSS Driver

NODE_STATS_SYNC message NSS Firmware Proceedings of netdev 0.1, Feb 14-17, 2015, Ottawa, On, Canada

CONN_STATS_SYNC message


Qdisc acceleration tbf

nsstbf

1:

10:

10:

prio 10:1 100:

tbf

f i p f o

r e d

1000:

nssprio

10:3

10:1

10:2

tbf

1:

100:

200: 300:

2000:

r e d

10:2

nsstbl

nsstbl

n f s i s f p o

n r s e s d

1000:

10:3

200: 300:

2000:

n r s e s d

# tc qdisc add dev eth0 root handle 1: tbf rate 1000Mbit burst 100k limit 100 # tc qdisc add dev eth0 root handle 1: nsstbl rate 1000Mbit burst 100k # tc qdisc add dev eth0 parent 1: handle 10: prio bands 3 # tc qdisc add dev eth0 parent 1: handle 10: nssprio bands 3 # tc qdisc add dev eth0 parent 10:1 handle 100: tbf rate 2Mbit burst 10k limit 100 # tc qdisc add dev eth0 parent 10:1 handle 100: nsstbl rate 2Mbit burst 10k # tc qdisc add dev eth0 parent 100: handle 1000: pfifo limit 100 # tc qdisc add dev eth0 parent 100: handle 1000: nsspfifo limit 100 # tc qdisc add dev eth0 parent 10:2 handle 200: tbf rate 40Mbit burst 30k limit 100 # tc qdisc add dev eth0 parent 10:2 handle 200: nsstbl rate 40Mbit burst 30k # tc qdisc add dev eth0 parent 200: handle 2000: red limit 100k min 30k max 80k \ # tc qdisc add dev eth0 parent 200: handle 2000: nssred limit 100k min 30k max 80k \ avpkt 1k burst 55 probability 0.20 avpkt 1k burst 55 probability 0.50 # tc qdisc add dev eth0 parent 10:3 handle 300: red limit 100k min 30k maxof80k # tcOttawa, qdiscOn,add dev eth0 parent 10:3 handle 300: nssred limit 100k min 30k max 80k \ Proceedings netdev\0.1, Feb 14-17, 2015, Canada avpkt 1k burst 55 probability 0.30 avpkt 1k burst 55 probability 0.50 set_default


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.