This document discusses interoperability between RINA and the Internet and approaches for porting existing network applications to RINA. It describes three solutions for deploying RINA together with the Internet: using RINA as an overlay network, as a substrate, or with RINA/TCP gateways. It also proposes a POSIX-like API for RINA to help port applications and demonstrates porting SSH and web servers to RINA with small code changes.
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
The hague rina-workshop-interop-deployment_vincenzo
1. RINA interoperability with the Internet
Vincenzo Maffione, Gino Carrozzo (Nextworks)
SDN & OpenFlow World Congress
The Hague (NL) – 11-14 October 2016
1/6
2. RINA and the Internet: two practical issues
1. How do we deploy RINA together with the Internet?
● Three solutions:
o RINA as an overlay
o RINA as a substrate
o RINA/TCP gateways
2. How do we port existing network applications to RINA?
● A POSIX-like API for RINA
2/6
3. RINA as an overlay
● Shim DIFs wrap legacy technologies
○ Shim over Ethernet
○ Shim over UDP (or TCP)
● We can wrap the Internet in a shim DIF over UDP
● Pro: RINA applications benefit from QoS, mobility, security, …
● Con: Applications need to be ported to RINA
3/6
A
InternetEthernet Shim DIFs
B
Shim DIF over UDP
Ethernet Shim DIFs
RINA network RINA network
Banking DIF
Border
router
Border
router
Server
host
Client
host
4. RINA as a substrate
● Adapter applications to tunnel IP traffic through RINA flows
○ TUN/TAP software devices used to intercept IP traffic
● Pro: Unmodified TCP/IP (socket) applications can run over RINA
● Con: Tunneling introduces overhead (latency, CPU cycles)
● Applications indirectly benefit from RINA (QoS, security, …) → limitations
4/6
app1
DIF
Adapter
Lower DIFs
Host 1
TAP
app2
Adapter
Host 2
TAP
app3
Adapter
Host 3
TAP
5. RINA/TCP gateways
● Gateway applications to forward traffic between TCP sockets and RINA flows
● Pro: TCP clients can talk with RINA servers (and the other way around)
● Pro: Applications benefit from RINA
● Con: Forwarding introduces overhead
● Con: Client or server needs to be ported to RINA
5/6
RINA network
(Arbitrary composition of DIFs)
Gateway
host
Gateway
application
RINA
host
RINA
applic.
TCP
applic.
TCP/IP network
TCP
connection
TCP/IP
host
6. Porting applications to RINA
● We define an API that can be easily mapped to the socket API
○ Yet empowered with QoS capabilities
● RINA flows accessed through file descriptors
6/6
accept(fd1) -> (fd2, addr)
listen(fd)
bind(fd, addr)
connect(fd, addr)
socket() -> fd flow_alloc(name, qos) -> fd
open() -> fd
register(fd, name)
flow_accept(fd1) -> (fd2,name)
7. DEMO
● Dropbear SSH client/server and nginx web server ported to RINA using a POSIX-like
API
○ Small patches (100-400 lines of code)
● Connect to a Dropbear SSH server running over RINA
● Start nginx web server over RINA
● Use a normal browser to access web content served by RINA web server
7/6
VM B
Gateway
application
VM A
nginx web
server
Chromium
browserTCP
connections
Laptop
openssh
client
Dropbear
ssh server
n.1.DIF (normal DIF)
e.1.DIF (shim DIF over Ethernet)
RINA flows