Chair of Network Architectures and Services Department of Informatics Technical University of Munich Accelerating Snabb Programs Fabian Bonk May 1, 2018 Chair of Network Architectures and Services Department of Informatics Technical University of Munich
57
Embed
Accelerating Snabb Programs€¦ · Accelerating Snabb Programs Fabian Bonk May 1, 2018 Chair of Network Architectures and Services Department of Informatics Technical University
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Accelerating Snabb Programs
Fabian Bonk
May 1, 2018
Chair of Network Architectures and ServicesDepartment of Informatics
Technical University of Munich
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb
Snabb is an extensible, virtualized, Ethernet networkingtoolkit.
Programmers write Lua modules that handle packets and connect themtogether.
Fabian Bonk – Accelerating Snabb Programs 2
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb
Snabb is an extensible, virtualized, Ethernet networkingtoolkit.
Programmers write Lua modules that handle packets and connect themtogether.
Fabian Bonk – Accelerating Snabb Programs 2
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Naming conventions
• Apps (= Modules)• Programs (= Configs)
Fabian Bonk – Accelerating Snabb Programs 3
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Naming conventions
• Apps (= Modules)
• Programs (= Configs)
Fabian Bonk – Accelerating Snabb Programs 3
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Naming conventions
• Apps (= Modules)• Programs (= Configs)
Fabian Bonk – Accelerating Snabb Programs 3
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Fabian Bonk – Accelerating Snabb Programs 4
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Fabian Bonk – Accelerating Snabb Programs 5
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb Core
Snabb Core = Snabb runtime
• initialize apps• set up links between apps• memory management• main loop
Fabian Bonk – Accelerating Snabb Programs 6
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb Core
Snabb Core = Snabb runtime
• initialize apps• set up links between apps• memory management• main loop
Fabian Bonk – Accelerating Snabb Programs 6
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb Core
Snabb Core = Snabb runtime
• initialize apps
• set up links between apps• memory management• main loop
Fabian Bonk – Accelerating Snabb Programs 6
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb Core
Snabb Core = Snabb runtime
• initialize apps• set up links between apps
• memory management• main loop
Fabian Bonk – Accelerating Snabb Programs 6
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb Core
Snabb Core = Snabb runtime
• initialize apps• set up links between apps• memory management
• main loop
Fabian Bonk – Accelerating Snabb Programs 6
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb Core
Snabb Core = Snabb runtime
• initialize apps• set up links between apps• memory management• main loop
Fabian Bonk – Accelerating Snabb Programs 6
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich
Snabb API
Appsmyapp:new(arg)myapp:push()myapp:pull()
Programslocal c = config.new()config.app(c, "app1", myapp, "params for app 1")config.app(c, "app2", myapp, "params for app 2")config.link(c, "app1.output -> app2.input")
engine.configure(c)engine.main()
Running
$ snabb run myprogram
Fabian Bonk – Accelerating Snabb Programs 7
Chair of Network Architectures and ServicesDepartment of InformaticsTechnical University of Munich