SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Semihalf Confidential
Kilka słów o PCI, PCIe
i wirtualizacji IO
Wojciech Macek
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Karta Intel-x520
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
Semihalf Confidential
Semihalf Confidential
Semihalf Confidential
Semihalf Confidential
Semihalf Confidential
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
Semihalf Confidential
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Rodzaje elementów PCI
l
Kontroler (Host Bridge, Root Complex)
l
„Gospodarz domu” dla magistrali PCI
l
Zapewnia dostęp procesorowi do urządzeń
l
Zapewnia dostęp urządzeniom do pamięci (localbus)
l
Przyjmuje przerwania od urządzeń i wysyła do CPU
l
Urządzenie (Device, End Point)
l
Np. karta sieciowa, SCSI, graficzna
l
Ma własne obszary przestrzeni, do których może odwoływać się
system (np. rejestry)
l
Oferuje od 1 do 8 funkcji
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Połączenia elektryczne i adresacja
l
Adresacja PCI ma strukturę drzewa
l
Każde złącze PCI posiada odrębny adres
w formacie
<bus>:<device>
l
Urządzenia dziedziczą adres po
macierzystym złączu, rozszerzając go o
funkcję
<bus>:<device>:<function>
l
W systemie może istnieć 256 magistral
(bus)
l
Każda magistrala może mieć 32
urządzenia (device)
l
Każde urządzenie może oferować 8
funkcji (function)
Semihalf Confidential
l
Połączenia elektryczne i adresacja
l
Każde urządzenie udostępnia
specjalny obszar zwany
„przestrzenią konfiguracyjną”
l
Dostęp do niej również jest specjalny
i odbywa się z użyciem adresów
<bus>:<device>:<func>
l
W Linuksie:
l
pci_read_config(bus, dev, func,
reg)
l
pci_write_config(bus, dev, func,
reg, val)
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Dostęp pamięciowy
l
Każde urządzenie udostępnia co najmniej jeden obszar „pamięciowy”, do
którego CPU może pisać i czytać. Znajdują się tam zwykle rejestry.
l
Rozmiar tych „okienek” można odczytać z... <piwo>
l
Po skonfigurowaniu, procesor może korzystać z nich jak z normalnej
pamięci, np.:
uint32_t *addr = dma_map(WIN0_PHYS_ADDR, WIN0_SIZE);
*addr = 0xdeadbeef;
Semihalf Confidential
l
Dostęp pamięciowy
l
Każde urządzenie udostępnia co najmniej jeden obszar „pamięciowy”, do
którego CPU może pisać i czytać. Znajdują się tam zwykle rejestry.
l
Rozmiar tych „okienek” można odczytać z rejestrów BAR przestrzeni
konfiguracyjnej urządzenia.
l
Po skonfigurowaniu, procesor może korzystać z nich jak z normalnej
pamięci, np.:
uint32_t *addr = dma_map(WIN0_PHYS_ADDR, WIN0_SIZE);
*addr = 0xdeadbeef;
Semihalf Confidential
l
Dostęp pamięciowy
l
System operacyjny, poprzez zapis do rejestrów BAR mówi
urządzeniu, na jakie adresy fizyczne ma „reagować”.
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Enumeracja
l
System komputerowy ma pewien obszar
przestrzeni fizycznej przeznaczony na okienka
urządzeń PCI.
l
System operacyjny przeprowadza
„enumerację” według poniższego algorytmu:
1. Ustaw początkowy numer magistralu bus=0
2. Odczytaj DEV_ID i VEND_ID każdego urządzenia
i funkcji (bus:0:0 – bus:31:7).
3. Jeśli urządzenie jest podłączone, określ jego typ.
1. Jeśli jest to urządzenie EndPoint, sprawdź jakie
okna udostępnia.
1. Ulokuj dane okno w nieprzydzielonej części
„obszar PCI”.
2. Zapisz odpowiedni adres fizyczny do rejestru
BAR[X] urządzenia
2. Jeśli jest to urządzenie Bridge, zwiększ numer
„bus” o 1 i wykonaj enumerację na nowej
magistrali.
Semihalf Confidential
l
Enumeracja
l
Po enumeracji, w przestrzeni PCI pojawiają się
wmapowane okna BAR urządzeń.
l
Każdy rejestr BAR urządzenia zawiera odpowiedni
adres fizyczny, by wiedziało ono jakie transakcje są
adresowane do niego.
l
Od tego momentu, system operacyjny może używać
urządzeń.
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Lepsze jest wrogiem dobrego
l
Standard PCI miał wady:
l
Stał się zbyt wolny w stosunku do wymagań (max. 266MB/s)
l
Zwiększenie szybkości okazało się niemożliwe z powodu
integralności sygnałów cyfrowych
l
Miał tylko 32-bitową linię adresową
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Co nowego? - transmisja szeregowa
Semihalf Confidential
l
Co nowego? - połączenia point-to-point
Semihalf Confidential
l
Co nowego? - połączenia point-to-point
Adres (odpowiednik MAC), złożony z bus:device:function
Przykładowy pakiet zapisu uint32_t pod 32-bitowy adres
Semihalf Confidential
l
Co nowego? - prędkość
l
PCIe 1.0 x1 oferowało taką samą prędkość jak dotychczasowy interfejs PCI
l
Możliwość agregacji sprawiła, że efektywnie był on 16 razy szybszy
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Co zostaje po staremu?
l
Warstwa logiczna jest w pełni kompatybilna z PCI
l
Dotychczasowy kod sterowników może działać bez modyfikacji
Wszystko inne!
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Karta Intel-x520
Semihalf Confidential
l
Karta Intel-x520
[root@localhost ~]# lspci -s 03:00.0
03:00.0 Ethernet controller: Intel Corporation 82599EB 10-
Gigabit SFI/SFP+ Network Connection (rev 01)
[root@localhost ~]# lspci -s 03:00.1
03:00.1 Ethernet controller: Intel Corporation 82599EB 10-
Gigabit SFI/SFP+ Network Connection (rev 01)
Semihalf Confidential
l
Karta Intel-x520 – w środku
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Przykład sterownika
Semihalf Confidential
l
Przykład sterownika
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
W dużej chmurze
Problemy:
● Emulowany interfejs jest
wolny
● Dzięki PCI-passthrough jest
szybki, ale tylko jeden
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Co nowego? - połączenia point-to-point
Semihalf Confidential
l
Plan
l
Jak to drzewiej bywało
l
PCI w szczegółach
l
Rodzaje elementów PCI
l
Połączenie elektryczne i adresacja
l
Dostęp pamięciowy
l
Enumeracja
l
Lepsze jest wrogiem dobrego – PCIe
l
Co nowego?
l
A co zostaje po staremu?
l
Przykład z życia wzięty, karta IXGBE
l
Co w karcie piszczy?
l
Przykład sterownika
l
Wirtualizacja SR-IOV
l
W dużej chmurze
l
Wirtualizacja
l
SR-IOV
Semihalf Confidential
l
Funkcje wirtualne
● Funkcja wirtualna jest „lekką” funkcją, duplikującą funkcjonalność funkcji
fizycznej z jaką jest skojarzona
● Każde urządzenie może oferować 4095 funkcji wirtualnych
● Można je dynamicznie włączać i wyłączać
● Z punktu widzenia użytkownika są to pełnoprawne urządzenia PCIe
● Z punktu widzenia sterowników, funkcje wirtualne nie mająnie mają
configuration spaceconfiguration space
SR-IOV – Single Root I/O Virtualization
Semihalf Confidential
l
Funkcje wirtualne - włączanie
Semihalf Confidential
l
Funkcje wirtualne - włączanie
Od strony użytkownika:
modprobe ixgbe max_vfs=3
Od strony sterownika:
err = pci_enable_sriov(adapter->pdev, adapter->num_vfs);
root@node1:~# lspci
08:00.0 Ethernet controller: Intel Corporation 82599ES 10-
Gigabit
SFI/SFP+ Network Connection (rev 01)
08:10.0 Ethernet controller: Intel Corporation 82599
Ethernet
Controller Virtual Function (rev 01)
08:10.2 Ethernet controller: Intel Corporation 82599
Ethernet
Controller Virtual Function (rev 01)
08:10.4 Ethernet controller: Intel Corporation 82599
Ethernet
Controller Virtual Function (rev 01)
Semihalf Confidential
l
Funkcje wirtualne – okna BAR
Semihalf Confidential
l
Funkcje wirtualne – okna BAR
Semihalf Confidential
l
Funkcje wirtualne – okna BAR
Semihalf Confidential
l
Karta Intel-x520 – w środku
Semihalf Confidential
l
Funkcje wirtualne – przykład sterownika
static DEFINE_PCI_DEVICE_TABLE(ixgbevf_pci_tbl) = {
{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF), board_82599_vf },
{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF), board_X540_vf },
/* required last entry */
{0, }
};
MODULE_DEVICE_TABLE(pci, ixgbevf_pci_tbl);
static struct pci_driver ixgbevf_driver = {
.name = ixgbevf_driver_name,
.id_table = ixgbevf_pci_tbl,
.probe = ixgbevf_probe,
...
};
Semihalf Confidential
l
Q&A
Pytania

Más contenido relacionado

La actualidad más candente

Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Semihalf
 
OpenSSH Kombajn z Wodotryskiem
OpenSSH Kombajn z WodotryskiemOpenSSH Kombajn z Wodotryskiem
OpenSSH Kombajn z Wodotryskiemlinuxcamp
 
Bezpieczna infrastruktura serwisu www w chmurze - WordPress
Bezpieczna infrastruktura serwisu www w chmurze - WordPressBezpieczna infrastruktura serwisu www w chmurze - WordPress
Bezpieczna infrastruktura serwisu www w chmurze - WordPressMichał Smereczyński
 
Onet barcamp 4 - Cloud Storage
Onet barcamp 4  - Cloud StorageOnet barcamp 4  - Cloud Storage
Onet barcamp 4 - Cloud StorageOnetIT
 
Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Semihalf
 
Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Semihalf
 
Python i elektronika
Python i elektronikaPython i elektronika
Python i elektronikariklaunim
 

La actualidad más candente (12)

GlusterFS
GlusterFSGlusterFS
GlusterFS
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
 
Es jak FTPS SFTP
Es jak FTPS SFTPEs jak FTPS SFTP
Es jak FTPS SFTP
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
OpenSSH Kombajn z Wodotryskiem
OpenSSH Kombajn z WodotryskiemOpenSSH Kombajn z Wodotryskiem
OpenSSH Kombajn z Wodotryskiem
 
Bezpieczna infrastruktura serwisu www w chmurze - WordPress
Bezpieczna infrastruktura serwisu www w chmurze - WordPressBezpieczna infrastruktura serwisu www w chmurze - WordPress
Bezpieczna infrastruktura serwisu www w chmurze - WordPress
 
Python io
Python ioPython io
Python io
 
Onet barcamp 4 - Cloud Storage
Onet barcamp 4  - Cloud StorageOnet barcamp 4  - Cloud Storage
Onet barcamp 4 - Cloud Storage
 
Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.
 
Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02
 
Python i elektronika
Python i elektronikaPython i elektronika
Python i elektronika
 
(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze
 

Similar a Wirtualizacja urządzeń PCI (SR-IOV).

Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejŁukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejPROIDEA
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. Redge Technologies
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PROIDEA
 
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...PROIDEA
 
Bios, isa, pci, chipset
Bios, isa, pci, chipsetBios, isa, pci, chipset
Bios, isa, pci, chipsetBorek12345
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2arkulik
 
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Redge Technologies
 
PLNOG 13: Artur Gmaj: Architecture of Modern Data Center
PLNOG 13: Artur Gmaj: Architecture of Modern Data CenterPLNOG 13: Artur Gmaj: Architecture of Modern Data Center
PLNOG 13: Artur Gmaj: Architecture of Modern Data CenterPROIDEA
 
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...PROIDEA
 
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...PROIDEA
 
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic NetworkingPLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic NetworkingPROIDEA
 
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PROIDEA
 
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPROIDEA
 
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitchmichalpodoski
 
Interfejsy i rodzaje transmisji danych
Interfejsy i rodzaje transmisji danychInterfejsy i rodzaje transmisji danych
Interfejsy i rodzaje transmisji danychDamian Kita
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Semihalf
 
PLNOG14: Nowości w protokole BGP, optymalizacja routingu na brzegu sieci - Łu...
PLNOG14: Nowości w protokole BGP, optymalizacja routingu na brzegu sieci - Łu...PLNOG14: Nowości w protokole BGP, optymalizacja routingu na brzegu sieci - Łu...
PLNOG14: Nowości w protokole BGP, optymalizacja routingu na brzegu sieci - Łu...PROIDEA
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPROIDEA
 

Similar a Wirtualizacja urządzeń PCI (SR-IOV). (20)

Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejŁukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
 
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
 
Bios, isa, pci, chipset
Bios, isa, pci, chipsetBios, isa, pci, chipset
Bios, isa, pci, chipset
 
Magistrale 3TIR
Magistrale 3TIRMagistrale 3TIR
Magistrale 3TIR
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2
 
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
 
PLNOG 13: Artur Gmaj: Architecture of Modern Data Center
PLNOG 13: Artur Gmaj: Architecture of Modern Data CenterPLNOG 13: Artur Gmaj: Architecture of Modern Data Center
PLNOG 13: Artur Gmaj: Architecture of Modern Data Center
 
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
PLNOG15: 10 questions before you deploy Cisco ACI (or any other programmable ...
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
 
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic NetworkingPLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic Networking
 
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
 
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
 
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
 
Interfejsy i rodzaje transmisji danych
Interfejsy i rodzaje transmisji danychInterfejsy i rodzaje transmisji danych
Interfejsy i rodzaje transmisji danych
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
 
PLNOG14: Nowości w protokole BGP, optymalizacja routingu na brzegu sieci - Łu...
PLNOG14: Nowości w protokole BGP, optymalizacja routingu na brzegu sieci - Łu...PLNOG14: Nowości w protokole BGP, optymalizacja routingu na brzegu sieci - Łu...
PLNOG14: Nowości w protokole BGP, optymalizacja routingu na brzegu sieci - Łu...
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
 

Más de Semihalf

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
 
Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Semihalf
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Semihalf
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Semihalf
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!Semihalf
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Semihalf
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Semihalf
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.Semihalf
 
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipSemihalf
 

Más de Semihalf (18)

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
 
Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.
 
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a Chip
 

Wirtualizacja urządzeń PCI (SR-IOV).

  • 1. Semihalf Confidential Kilka słów o PCI, PCIe i wirtualizacji IO Wojciech Macek
  • 2. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 4. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 11. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 14. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 15. Semihalf Confidential l Rodzaje elementów PCI l Kontroler (Host Bridge, Root Complex) l „Gospodarz domu” dla magistrali PCI l Zapewnia dostęp procesorowi do urządzeń l Zapewnia dostęp urządzeniom do pamięci (localbus) l Przyjmuje przerwania od urządzeń i wysyła do CPU l Urządzenie (Device, End Point) l Np. karta sieciowa, SCSI, graficzna l Ma własne obszary przestrzeni, do których może odwoływać się system (np. rejestry) l Oferuje od 1 do 8 funkcji
  • 16. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 17. Semihalf Confidential l Połączenia elektryczne i adresacja l Adresacja PCI ma strukturę drzewa l Każde złącze PCI posiada odrębny adres w formacie <bus>:<device> l Urządzenia dziedziczą adres po macierzystym złączu, rozszerzając go o funkcję <bus>:<device>:<function> l W systemie może istnieć 256 magistral (bus) l Każda magistrala może mieć 32 urządzenia (device) l Każde urządzenie może oferować 8 funkcji (function)
  • 18. Semihalf Confidential l Połączenia elektryczne i adresacja l Każde urządzenie udostępnia specjalny obszar zwany „przestrzenią konfiguracyjną” l Dostęp do niej również jest specjalny i odbywa się z użyciem adresów <bus>:<device>:<func> l W Linuksie: l pci_read_config(bus, dev, func, reg) l pci_write_config(bus, dev, func, reg, val)
  • 19. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 20. Semihalf Confidential l Dostęp pamięciowy l Każde urządzenie udostępnia co najmniej jeden obszar „pamięciowy”, do którego CPU może pisać i czytać. Znajdują się tam zwykle rejestry. l Rozmiar tych „okienek” można odczytać z... <piwo> l Po skonfigurowaniu, procesor może korzystać z nich jak z normalnej pamięci, np.: uint32_t *addr = dma_map(WIN0_PHYS_ADDR, WIN0_SIZE); *addr = 0xdeadbeef;
  • 21. Semihalf Confidential l Dostęp pamięciowy l Każde urządzenie udostępnia co najmniej jeden obszar „pamięciowy”, do którego CPU może pisać i czytać. Znajdują się tam zwykle rejestry. l Rozmiar tych „okienek” można odczytać z rejestrów BAR przestrzeni konfiguracyjnej urządzenia. l Po skonfigurowaniu, procesor może korzystać z nich jak z normalnej pamięci, np.: uint32_t *addr = dma_map(WIN0_PHYS_ADDR, WIN0_SIZE); *addr = 0xdeadbeef;
  • 22. Semihalf Confidential l Dostęp pamięciowy l System operacyjny, poprzez zapis do rejestrów BAR mówi urządzeniu, na jakie adresy fizyczne ma „reagować”.
  • 23. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 24. Semihalf Confidential l Enumeracja l System komputerowy ma pewien obszar przestrzeni fizycznej przeznaczony na okienka urządzeń PCI. l System operacyjny przeprowadza „enumerację” według poniższego algorytmu: 1. Ustaw początkowy numer magistralu bus=0 2. Odczytaj DEV_ID i VEND_ID każdego urządzenia i funkcji (bus:0:0 – bus:31:7). 3. Jeśli urządzenie jest podłączone, określ jego typ. 1. Jeśli jest to urządzenie EndPoint, sprawdź jakie okna udostępnia. 1. Ulokuj dane okno w nieprzydzielonej części „obszar PCI”. 2. Zapisz odpowiedni adres fizyczny do rejestru BAR[X] urządzenia 2. Jeśli jest to urządzenie Bridge, zwiększ numer „bus” o 1 i wykonaj enumerację na nowej magistrali.
  • 25. Semihalf Confidential l Enumeracja l Po enumeracji, w przestrzeni PCI pojawiają się wmapowane okna BAR urządzeń. l Każdy rejestr BAR urządzenia zawiera odpowiedni adres fizyczny, by wiedziało ono jakie transakcje są adresowane do niego. l Od tego momentu, system operacyjny może używać urządzeń.
  • 26. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 27. Semihalf Confidential l Lepsze jest wrogiem dobrego l Standard PCI miał wady: l Stał się zbyt wolny w stosunku do wymagań (max. 266MB/s) l Zwiększenie szybkości okazało się niemożliwe z powodu integralności sygnałów cyfrowych l Miał tylko 32-bitową linię adresową
  • 28. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 29. Semihalf Confidential l Co nowego? - transmisja szeregowa
  • 30. Semihalf Confidential l Co nowego? - połączenia point-to-point
  • 31. Semihalf Confidential l Co nowego? - połączenia point-to-point Adres (odpowiednik MAC), złożony z bus:device:function Przykładowy pakiet zapisu uint32_t pod 32-bitowy adres
  • 32. Semihalf Confidential l Co nowego? - prędkość l PCIe 1.0 x1 oferowało taką samą prędkość jak dotychczasowy interfejs PCI l Możliwość agregacji sprawiła, że efektywnie był on 16 razy szybszy
  • 33. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 34. Semihalf Confidential l Co zostaje po staremu? l Warstwa logiczna jest w pełni kompatybilna z PCI l Dotychczasowy kod sterowników może działać bez modyfikacji Wszystko inne!
  • 35. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 37. Semihalf Confidential l Karta Intel-x520 [root@localhost ~]# lspci -s 03:00.0 03:00.0 Ethernet controller: Intel Corporation 82599EB 10- Gigabit SFI/SFP+ Network Connection (rev 01) [root@localhost ~]# lspci -s 03:00.1 03:00.1 Ethernet controller: Intel Corporation 82599EB 10- Gigabit SFI/SFP+ Network Connection (rev 01)
  • 39. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 42. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 43. Semihalf Confidential l W dużej chmurze Problemy: ● Emulowany interfejs jest wolny ● Dzięki PCI-passthrough jest szybki, ale tylko jeden
  • 44. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 45. Semihalf Confidential l Co nowego? - połączenia point-to-point
  • 46. Semihalf Confidential l Plan l Jak to drzewiej bywało l PCI w szczegółach l Rodzaje elementów PCI l Połączenie elektryczne i adresacja l Dostęp pamięciowy l Enumeracja l Lepsze jest wrogiem dobrego – PCIe l Co nowego? l A co zostaje po staremu? l Przykład z życia wzięty, karta IXGBE l Co w karcie piszczy? l Przykład sterownika l Wirtualizacja SR-IOV l W dużej chmurze l Wirtualizacja l SR-IOV
  • 47. Semihalf Confidential l Funkcje wirtualne ● Funkcja wirtualna jest „lekką” funkcją, duplikującą funkcjonalność funkcji fizycznej z jaką jest skojarzona ● Każde urządzenie może oferować 4095 funkcji wirtualnych ● Można je dynamicznie włączać i wyłączać ● Z punktu widzenia użytkownika są to pełnoprawne urządzenia PCIe ● Z punktu widzenia sterowników, funkcje wirtualne nie mająnie mają configuration spaceconfiguration space SR-IOV – Single Root I/O Virtualization
  • 49. Semihalf Confidential l Funkcje wirtualne - włączanie Od strony użytkownika: modprobe ixgbe max_vfs=3 Od strony sterownika: err = pci_enable_sriov(adapter->pdev, adapter->num_vfs); root@node1:~# lspci 08:00.0 Ethernet controller: Intel Corporation 82599ES 10- Gigabit SFI/SFP+ Network Connection (rev 01) 08:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 08:10.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 08:10.4 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
  • 54. Semihalf Confidential l Funkcje wirtualne – przykład sterownika static DEFINE_PCI_DEVICE_TABLE(ixgbevf_pci_tbl) = { {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF), board_82599_vf }, {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF), board_X540_vf }, /* required last entry */ {0, } }; MODULE_DEVICE_TABLE(pci, ixgbevf_pci_tbl); static struct pci_driver ixgbevf_driver = { .name = ixgbevf_driver_name, .id_table = ixgbevf_pci_tbl, .probe = ixgbevf_probe, ... };