5. Rumba presentation

Rumba
A Python framework enabling large scale
experimentation with the Recursive InterNetwork
Architecture (RINA)
X Y
C2 C1
A1 A2 B1 B2
E1 E2
X Y
C2 C1
A1 A2 B1 B2
E1 E2
Normal IPC Process
(IPCP)
D1
X Y
C2 C1
A1 A2 B1 B2
E1 E2
Provides IPC to higher layers (DIFs/DAFs)
Uses IPC from lower layers (DIFs)
Normal IPC Process
(IPCP)
D1
X Y
A1 A2 B1 B2
C2 C1 E1 E2D1
IPCP D1 registers in 2 DIFs (A, B)
D1/A2 D1/B1
X Y
A1 A2 B1 B2
C2 C1 E1 E2D1D2
D1/A2
D2/A1
D1/B1
Create IPCP D2, can register in DIF A (optional)
X Y
A1 A2 B1 B2
C2 C1 E1 E2D1D2
IPCP D2 allocates a flow with D1
D2 can now send messages to D1
D1/A2
D2/A1
D1/B1
X Y
A1 A2 B1 B2
C2 C1 E1 E2D1D2
A new operation: enrollment: “joining a DIF”
authentication
exchanging some basic information
configuration parameters
addresses
current equivalent: joining a wifi network
D1D2
D1/A2
D2/A1
D1/B1
X Y
A1 A2 B1 B2
C2 C1 E1 E2
D3 performs the same procedures. DIF “D” now has 3 members
D1 D3D2
D1/A2
D2/A1
D1/B1
X Y
A1 A2 B1 B2
C2 C1 E1 E2
F1 F2F3 F4
D1 D3D2
5. Rumba presentation
Rumba core
jFed plugin
Emulab plugin
QEMU VMs
plugin
IRATI plugin
rlite plugin
Ouroboros
plugin
User program
5. Rumba presentation
Node A Node B
DIF e1
DIF n1
rinaperf
client
rinaperf
server
#!/usr/bin/env python
# An example script using the rumba package
from rumba.model import *
# import testbed plugins
import rumba.testbeds.emulab as emulab
import rumba.testbeds.jfed as jfed
import rumba.testbeds.qemu as qemu
# import prototype plugins
import rumba.prototypes.ouroboros as our
import rumba.prototypes.rlite as rl
import rumba.prototypes.irati as irati
import rumba.log as log
log.set_logging_level('DEBUG')
n1 = NormalDIF("n1")
n1.add_policy("rmt.pff", "lfa")
n1.add_policy("security-manager", "passwd")
e1 = ShimEthDIF("e1")
a = Node("A",
difs = [n1, e1],
dif_registrations = {n1 : [e1]})
b = Node("B",
difs = [e1, n1],
dif_registrations = {n1 : [e1]},
client = True)
tb = jfed.Testbed(exp_name = "example1",
username = "user1",
cert_file = "/home/user1/cert.pem")
exp = rl.Experiment(tb, nodes = [a, b])
print(exp)
try:
exp.swap_in()
exp.bootstrap_prototype()
c1 = Client("rinaperf",
options ="-t perf -s 1000 -c 10000")
s1 = Server("rinaperf", arrival_rate=2,
mean_duration=5,
options = "-l",
nodes = [a],
clients = [c1])
sb = StoryBoard(exp, 3600, servers = [s1])
sb.start()
finally:
exp.swap_out()
C2 C1 E1 E2
F1 F2F3 F4
D1 D3D2
A1 A2 B1 B2
IPCPs for node a: [{IPCP=c2,DIF=c,N-1-DIFs=(),bootstrapper}, {IPCP=f3,DIF=f,N-1-DIFs=(c),bootstrapper}]
IPCPs for node b: [{IPCP=c1,DIF=c,N-1-DIFs=(),bootstrapper}, {IPCP=a1,DIF=a,N-1-DIFs=(),bootstrapper},
{IPCP=d2,DIF=d,N-1-DIFs=(a),bootstrapper}, {IPCP=f1,DIF=f,N-1-DIFs=(c d)}]
IPCPs for node c: [{IPCP=b1,DIF=b,N-1-DIFs=(),bootstrapper}, {IPCP=a2,DIF=a,N-1-DIFs=(),bootstrapper}, {IPCP=d1,DIF=d,N-1-DIFs=(a b)}]
IPCPs for node d: [{IPCP=b2,DIF=b,N-1-DIFs=(),bootstrapper}, {IPCP=e1,DIF=e,N-1-DIFs=(),bootstrapper}, {IPCP=d3,DIF=d,N-1-DIFs=(b)},
{IPCP=f2,DIF=f,N-1-DIFs=(e d)}]
IPCPs for node e: [{IPCP=e2,DIF=e,N-1-DIFs=(),bootstrapper}, {IPCP=f4,DIF=f,N-1-DIFs=(e),bootstrapper}]
Node a Node b Node c Node d Node e
Client Server
Client
Client
Client
Server
Server
Server
5. Rumba presentation
5. Rumba presentation
Node DNode A Node B
DIF e1
Node C
DIF e2
DIF n1
DIF e3
DIF n2
Sander Vrijders (sander.vrijders@ugent.be)
Vincenzo Maffione (v.maffione@nextworks.it)
Marco Capitani (m.capitani@nextworks.it)
Dimitri Staessens (dimitri.staessens@ugent.be)
1 of 21

More Related Content

Recently uploaded(20)

DU_SERIES_Session1.pdfDU_SERIES_Session1.pdf
DU_SERIES_Session1.pdf
RohitRadhakrishnan8711 views
AI Powered event-driven translation botAI Powered event-driven translation bot
AI Powered event-driven translation bot
Jimmy Dahlqvist11 views
google forms survey (1).pptxgoogle forms survey (1).pptx
google forms survey (1).pptx
MollyBrown8613 views
Sustainable MarketingSustainable Marketing
Sustainable Marketing
Theo van der Zee6 views
WalkingWalking
Walking
Ed Sullivan37 views
Pen Testing - Allendevaux.pdfPen Testing - Allendevaux.pdf
Pen Testing - Allendevaux.pdf
SourabhKumar328076 views
KHNOG 5: APNIC ServicesKHNOG 5: APNIC Services
KHNOG 5: APNIC Services
APNIC381 views
 FS Design 2024 V2.pptx FS Design 2024 V2.pptx
FS Design 2024 V2.pptx
paswanlearning7 views
DU Series - Day 4.pptxDU Series - Day 4.pptx
DU Series - Day 4.pptx
UiPathCommunity55 views
childcare.pdfchildcare.pdf
childcare.pdf
fatma alnaqbi13 views
Existing documentaries (1).docxExisting documentaries (1).docx
Existing documentaries (1).docx
MollyBrown8613 views
Serverless cloud architecture patternsServerless cloud architecture patterns
Serverless cloud architecture patterns
Jimmy Dahlqvist10 views
informing ideas.docxinforming ideas.docx
informing ideas.docx
MollyBrown8612 views
Technical SEO: How Anomalies Are Your New Best Friend." Technical SEO: How Anomalies Are Your New Best Friend."
Technical SEO: How Anomalies Are Your New Best Friend."
Kristine Schachinger SEO and Online Marketing55 views

5. Rumba presentation

  • 1. Rumba A Python framework enabling large scale experimentation with the Recursive InterNetwork Architecture (RINA)
  • 2. X Y C2 C1 A1 A2 B1 B2 E1 E2
  • 3. X Y C2 C1 A1 A2 B1 B2 E1 E2 Normal IPC Process (IPCP) D1
  • 4. X Y C2 C1 A1 A2 B1 B2 E1 E2 Provides IPC to higher layers (DIFs/DAFs) Uses IPC from lower layers (DIFs) Normal IPC Process (IPCP) D1
  • 5. X Y A1 A2 B1 B2 C2 C1 E1 E2D1 IPCP D1 registers in 2 DIFs (A, B) D1/A2 D1/B1
  • 6. X Y A1 A2 B1 B2 C2 C1 E1 E2D1D2 D1/A2 D2/A1 D1/B1 Create IPCP D2, can register in DIF A (optional)
  • 7. X Y A1 A2 B1 B2 C2 C1 E1 E2D1D2 IPCP D2 allocates a flow with D1 D2 can now send messages to D1 D1/A2 D2/A1 D1/B1
  • 8. X Y A1 A2 B1 B2 C2 C1 E1 E2D1D2 A new operation: enrollment: “joining a DIF” authentication exchanging some basic information configuration parameters addresses current equivalent: joining a wifi network D1D2 D1/A2 D2/A1 D1/B1
  • 9. X Y A1 A2 B1 B2 C2 C1 E1 E2 D3 performs the same procedures. DIF “D” now has 3 members D1 D3D2 D1/A2 D2/A1 D1/B1
  • 10. X Y A1 A2 B1 B2 C2 C1 E1 E2 F1 F2F3 F4 D1 D3D2
  • 12. Rumba core jFed plugin Emulab plugin QEMU VMs plugin IRATI plugin rlite plugin Ouroboros plugin User program
  • 14. Node A Node B DIF e1 DIF n1 rinaperf client rinaperf server
  • 15. #!/usr/bin/env python # An example script using the rumba package from rumba.model import * # import testbed plugins import rumba.testbeds.emulab as emulab import rumba.testbeds.jfed as jfed import rumba.testbeds.qemu as qemu # import prototype plugins import rumba.prototypes.ouroboros as our import rumba.prototypes.rlite as rl import rumba.prototypes.irati as irati import rumba.log as log log.set_logging_level('DEBUG') n1 = NormalDIF("n1") n1.add_policy("rmt.pff", "lfa") n1.add_policy("security-manager", "passwd") e1 = ShimEthDIF("e1") a = Node("A", difs = [n1, e1], dif_registrations = {n1 : [e1]}) b = Node("B", difs = [e1, n1], dif_registrations = {n1 : [e1]}, client = True) tb = jfed.Testbed(exp_name = "example1", username = "user1", cert_file = "/home/user1/cert.pem") exp = rl.Experiment(tb, nodes = [a, b]) print(exp) try: exp.swap_in() exp.bootstrap_prototype() c1 = Client("rinaperf", options ="-t perf -s 1000 -c 10000") s1 = Server("rinaperf", arrival_rate=2, mean_duration=5, options = "-l", nodes = [a], clients = [c1]) sb = StoryBoard(exp, 3600, servers = [s1]) sb.start() finally: exp.swap_out()
  • 16. C2 C1 E1 E2 F1 F2F3 F4 D1 D3D2 A1 A2 B1 B2 IPCPs for node a: [{IPCP=c2,DIF=c,N-1-DIFs=(),bootstrapper}, {IPCP=f3,DIF=f,N-1-DIFs=(c),bootstrapper}] IPCPs for node b: [{IPCP=c1,DIF=c,N-1-DIFs=(),bootstrapper}, {IPCP=a1,DIF=a,N-1-DIFs=(),bootstrapper}, {IPCP=d2,DIF=d,N-1-DIFs=(a),bootstrapper}, {IPCP=f1,DIF=f,N-1-DIFs=(c d)}] IPCPs for node c: [{IPCP=b1,DIF=b,N-1-DIFs=(),bootstrapper}, {IPCP=a2,DIF=a,N-1-DIFs=(),bootstrapper}, {IPCP=d1,DIF=d,N-1-DIFs=(a b)}] IPCPs for node d: [{IPCP=b2,DIF=b,N-1-DIFs=(),bootstrapper}, {IPCP=e1,DIF=e,N-1-DIFs=(),bootstrapper}, {IPCP=d3,DIF=d,N-1-DIFs=(b)}, {IPCP=f2,DIF=f,N-1-DIFs=(e d)}] IPCPs for node e: [{IPCP=e2,DIF=e,N-1-DIFs=(),bootstrapper}, {IPCP=f4,DIF=f,N-1-DIFs=(e),bootstrapper}] Node a Node b Node c Node d Node e
  • 20. Node DNode A Node B DIF e1 Node C DIF e2 DIF n1 DIF e3 DIF n2
  • 21. Sander Vrijders (sander.vrijders@ugent.be) Vincenzo Maffione (v.maffione@nextworks.it) Marco Capitani (m.capitani@nextworks.it) Dimitri Staessens (dimitri.staessens@ugent.be)