Skip to content

Commit 5ac7430

Browse files
author
Elena Crenguta Lindqvist
committed
iii
1 parent af802a1 commit 5ac7430

File tree

2 files changed

+155
-9
lines changed

2 files changed

+155
-9
lines changed

itnot/index.html

Lines changed: 149 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,13 @@
7373
</p>
7474
</tr>
7575
<aside class="notes">
76-
A quick one about ericsson - 40% mobile traffic, erlang, bluetooth - NOT DONE YET , need to write it - advance to next slide -
76+
If you don't mind, I'd like to tell you a few things about Ericsson. We're NOT making phones! as most of the people think ....
77+
I can tell you that no matter where you are in the world, when you are connected to a mobile network and you access the internet, there is a high chance that your traffic goes through our stuff, radio base stations, servers running ericsson software etc...
78+
40% of all mobile traffic world wide goes through our stuff.
79+
80+
And since we are at an Openstack meetup and talking about open source, it is probably good to mention that Ericsson has given to open source Erlang (Ericsson Language, or named after a Danish mathematician, whichever you prefer)
81+
In Openstack, RabbitMQ uses Erlang.
82+
Bluetooth comes from Ericsson too ...
7783
</aside>
7884
</section>
7985
<!–– Slide6 ––>
@@ -94,7 +100,13 @@
94100

95101
Some applications require high throughput and Ericsson's EPC is one notable example.
96102
EPC is the equivalent of formerly used GPRS, it is there to make mobile data traffic possible. It means you traverse it when surfing the internet from your mobile, or when watching youtube, Netflix, GoT, playing Pokemon?
97-
The monthly mobile data traffic grew close to 88% between Q4 2017 and Q4 2018, this is mainly due to the increased traffic per smartphone in China. - advance to next slide -
103+
According to Ericsson Mobility Report, the monthly mobile data traffic grew close to 88% between Q4 2017 and Q4 2018, this is mainly due to the increased traffic per smartphone in China.
104+
According to the same report, mobile traffic is 50% video today and it will increase to 75% video in 2020, driven by, amongst others, AR/VR applications.
105+
106+
This increase in number of devices using the mobile network and the traffic generated by them, it boils down to EPC will need to handle all this traffic.
107+
How to cope with this in a performant way, well, maybe smartNICs could have the answer.
108+
gtp tunnel to EPC VMs , descapsulate traffic inside the VM
109+
- advance to next slide -
98110
</aside>
99111
</section>
100112
<!–– Slide7 ––>
@@ -163,15 +175,70 @@
163175
What security concerns are raised with introducing a smartNIC with linux running on it. I'm looking at you, Kim!
164176

165177
When should you use a smartNIC?
166-
(Intel info) If on your host you use more than 4CPUs for OVS, then you should switch to using smartNICs, it makes sense from a business point of view. - advance to next slide -
178+
(Intel info) If on your host you use more than 4CPUs for OVS, then you should switch to using smartNICs, it makes sense from a business point of view.
179+
(Also, smartNIC is a good idea if you need low latency and don't care so much about migration)
180+
- advance to next slide -
167181
</aside>
168182
</section>
169183

170184
<!–– Slide10 ––>
171185
<section> Openstack working with SmartNICs
172186
<aside class="notes">
173-
Now the question is where are we in Openstack when it comes to integrating the new coming smartNICs?
174-
Work is done in several Openstack components, like ironic and neutron of course.
187+
Now the question is where are we in Openstack when it comes to integrating the wide range of smartNICs appearing on the market?
188+
Work is done in several Openstack projects, like ironic, nova and neutron of course.
189+
190+
For instance when it comes to neutron, we need changes in the Neutron OVS driver and Neutron OVS agent in order to bind the Neutron port for the baremetal host with the smartNIC.
191+
This is needed so that neutron ovs agent can configure the OVS running on the smartNIC.
192+
193+
We can have neutron ovs agent running locally on the smartNIC or remotely and manages the OVS bridges for all baremetal smartNICs.
194+
195+
In ironic
196+
Steps:
197+
(https://specs.openstack.org/openstack/neutron-specs/specs/stein/neutron-ovs-agent-support-baremetal-with-smart-nic.html)
198+
1. Create Neutron port with smart-nic vnic_type , this is done in Neutron OVS ML2 driver
199+
2. local_link_information wiht info like smartNIC hostname , port ID, ssh public key, ovsdb ssl certificate
200+
201+
Picture on the slide with vnic-type
202+
root@cic-1:~# openstack port create
203+
usage: openstack port create [-h] [-f {json,shell,table,value,yaml}]
204+
[-c COLUMN] [--max-width <integer>] [--fit-width]
205+
[--print-empty] [--noindent] [--prefix PREFIX]
206+
--network <network> [--description <description>]
207+
[--device <device-id>]
208+
[--mac-address <mac-address>]
209+
[--device-owner <device-owner>]
210+
[--vnic-type <vnic-type>] [--host <host-id>]
211+
[--dns-name dns-name]
212+
[--fixed-ip subnet=<subnet>,ip-address=<ip-address>]
213+
[--binding-profile <binding-profile>]
214+
[--enable | --disable] [--project <project>]
215+
[--project-domain <project-domain>]
216+
[--security-group <security-group> | --no-security-group]
217+
[--qos-policy <qos-policy>]
218+
[--enable-port-security | --disable-port-security]
219+
[--allowed-address ip-address=<ip-address>[,mac-address=<mac-address>]]
220+
[--tag <tag> | --no-tag]
221+
<name>
222+
--vnic-type <vnic-type>
223+
VNIC type for this port (direct | direct-physical | macvtap | normal | baremetal, default: normal)
224+
225+
There are many interesting questions raised, like how do you know which smartNIC hostname belongs to which server.
226+
Ovs
227+
228+
229+
Ironic
230+
Is Openstack ready to use smartNICs?
231+
In Openstack we need to manage the smartNICs that are running full(y fledged) operating system inside the card.
232+
233+
234+
Nova:
235+
The smartNICs can do packet processing inside the NIC so in order to support this hw acceleration, nova needs some changes.
236+
237+
238+
239+
Openstack Cybborg
240+
241+
175242
Some smartNIC vendors use native virtio driver while other use proprietary
176243

177244
https://specs.openstack.org/openstack/nova-specs/specs/pike/implemented/netronome-smartnic-enablement.html
@@ -181,18 +248,90 @@
181248
Neutron integration with SmartNICs - TO BE ADDED
182249
Openstack Cyborg for integrating FPGAs with openstack - TO BE ADDED
183250

184-
Is Openstack ready to use smartNICs?
185-
In Openstack we need to manage the smartNICs that are running full(y fledged) operating system inside the card.
186-
251+
187252
- advance to next slide -
188253
</aside>
189254
</section>
190255

191256
<!–– Slide11 ––>
192257
<section> Performance
193258
<aside class="notes">
259+
260+
261+
If you care about latency and packet processing performance there are a few options.
262+
263+
We basically need to overcome the limitations in the Linux kernel which is not ideal for "lots" of packet-processing.
264+
265+
Why is the Linux kernel a problem when we talk about latency and performance ( with performance, I mean higher throughput at a lower CPU cost)?
266+
Well, the Linux kernel is monolithic, it's millions of lines of code.
267+
It contains lots of drivers which makes the Linux kernel work with any hw, not just your specific hw/smartNIC.
268+
It allows running many applications at the same time by using a time sharing layer. Resources like CPU, mem exposed by the kernel can be shared between all the processes running.
269+
270+
The networking stack inside the Linux kernel limits how many packets per second it can process.
271+
Too many packets per second means CPUs get busy just receiving packets, then either the packets are dropped or we CPU starve the applications.
272+
273+
To get better performance, one can choose to bypass the kernel, fully or partially.
274+
There are several kernel bypass options like:
275+
DPDK, (that would be the poster child of kernel bypass)
276+
Snabbswitch,
277+
PF_RING,
278+
Netmap. (I am personally more familiar with DPDK.)
279+
280+
With kernel bypass, we move the NIC to the user-space.
281+
If the NIC is managed in the user-space, it means we skip things like context switching, networking layer processing, interrupts that happen in the kernel aka IRQ storms and do the packet-processing in the user-space.
282+
This is relevant at 10Gbps already. EPC today saturates 200Gbps already.
283+
284+
NUMA awareness together with CPU isolation needs to be considered as well if we need high performance.
285+
Remember this is particularly interesting when using smartNICs, with a dual socket system using one smartNIC plugged in on PCIe slot, corresponding to one NUMA socket.
286+
287+
Moving to userspace means losing the abstraction level the kernel provides for e.g. hw resources, it means you need to load own driver.
288+
Moving to userspace means the kernel space is skipped together with the good stuff too like networking functionality that needs to be reimplemented now. (like the whole TCP stack)
289+
290+
291+
How do you move a device from kernel space to user space, in case of DPDK?
292+
293+
echo 0000:18:00.4 > /sys/bus/pci/devices/0000\:18\:00.4/driver/unbind
294+
echo 0000:18:00.3 > /sys/bus/pci/devices/0000\:18\:00.3/driver/unbind
295+
modprobe vfio
296+
modprobe vfio_pci
297+
298+
mkdir -p /dev/hugepages/
299+
mount -t hugetlbfs hugetlbfs /dev/hugepages/
300+
echo 2048 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
301+
cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
302+
303+
modprobe uio
304+
cd $RTE_SDK
305+
insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
306+
307+
./usertools/dpdk-devbind.py -b igb_uio 18:00.2 18:00.3
308+
./usertools/dpdk-devbind.py -s
309+
cd $RTE_SDK/$RTE_TARGET/app
310+
311+
312+
XDP
313+
Another way to achieve high performance would be partially bypassing the Linux kernel, for example using XDP.
314+
315+
XDP DP (eXpress Data Path) is an eBPF based high performance data path merged in the Linux kernel.
316+
317+
XDP (eXpress Data Path) is shipped with the kernel since version 4.8 and it is enabled by default, with CONFIG_BPF_SYSCALL.
318+
319+
What the heck is eBPF ?
320+
eBPF stands for "enhanced Berkeley Packet Filter" it's a linux kernel technology
321+
which is an in-kernel virtual machine that was originally used for to run mini-filter programs efficiently,
322+
323+
To check if XDP it is enabled in the kernel, it's simply grepping for it in the kernel config file
324+
325+
┌─(ecrehar@elxahkpv4m2:pts/5)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────(~/Downloads)─┐
326+
└─(15:09:%)── grep CONFIG_BPF_SYSCALL /boot/config-4.15.0-46-generic ──(mån,06.03)─┘
327+
CONFIG_BPF_SYSCALL=y
328+
329+
330+
XDP is a hook in the Linux kernel.
331+
332+
194333
Jumping between kernel space and user space cost on performance - TO BE ADDED
195-
Mention eBPF with XDP kernel hook, DPDK etc .. TO BE ADDED
334+
Mention eBPF with XDP kernel hook, DPDK, etc .. TO BE ADDED
196335
Native VirtIO driver benefits - TO BE ADDED
197336
- advance to next slide -
198337
</aside>
@@ -201,6 +340,7 @@
201340
<section> smartNICs with Storage
202341
<aside class="notes">
203342
smartNICs with Storage - TO BE ADDED
343+
Using smartNICs for NVMe termination
204344
NVMe ov TCP , Roce v2
205345
- advance to next slide -
206346
</aside>

itnot/notes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,5 +249,11 @@ https://technologyevangelist.co/2017/07/17/whats-a-smart-nic/
249249
https://en.wikipedia.org/wiki/SerDes
250250
https://cotscomputers.com/blog/pcie-lanes/
251251
https://blogs.igalia.com/dpino/2019/01/07/a-brief-introduction-to-xdp-and-ebpf/
252+
http://eavesdrop.openstack.org/irclogs/%23openstack-neutron/%23openstack-neutron.2018-12-12.log.html#t2018-12-12T17:00:19
253+
https://blog.cloudflare.com/why-we-use-the-linux-kernels-tcp-stack/
254+
https://blogs.igalia.com/dpino/2019/01/07/a-brief-introduction-to-xdp-and-ebpf/
255+
https://blogs.igalia.com/dpino/2019/01/02/build-a-kernel/
256+
https://www.oreilly.com/ideas/ebpf-and-systems-performance
257+
252258

253259

0 commit comments

Comments
 (0)