DCE Cradle - nsnam.org

29
DCE Cradle Simulate Network Protocols with Real Stacks for Better Realism Hajime Tazaki (NICT, Japan) Frédéric Urbani (INRIA, France) Thierry Turletti (INRIA, France) WNS3 2013, March, 2013, Cannes

Transcript of DCE Cradle - nsnam.org

Page 1: DCE Cradle - nsnam.org

DCE CradleSimulate Network Protocols with Real Stacks for Better Realism

Hajime Tazaki (NICT, Japan)Frédéric Urbani (INRIA, France)Thierry Turletti (INRIA, France)

WNS3 2013, March, 2013, Cannes

Page 2: DCE Cradle - nsnam.org

•ns-3 already has a wide range of network stacks• native ns-3 stack• FreeBSD/OpenBSD/lwip/Linux 2.6 (Network Simulation

Cradle)• Direct Code Execution (Linux)• Using Host OS’s stack

•Why current network stacks of ns-3 are not enough?

Motivation 

2

application

ns-3-real[Abraham WNS12]

[Carneiro SIMPAT11]

networkstack

ns-3socket

ns-3

ns-3socket

linux/bsd/lwip(tcp)

POSIXsocket

ns-3

POSIXsocket

linux

ns-3socket

Host OS

NSC[Jansen WSC05]

DCE[Lacage 10]

DCE-Linux[Lacage 10]

ns-3basic

Page 3: DCE Cradle - nsnam.org

1) Adding new simulation models

• If we port SCTP or DCCP from other existing codes then,• Linux• 34K LOC (SCTP), 10K (DCCP)• ns-2.35• 20K LOC (SCTP), 9.5K (DCCP)

•Need much effort if we implement such models

3

Page 4: DCE Cradle - nsnam.org

2) Validation of new protocols

•Simulated protocols often only simplified model of a real one• If protocol re-implemented scratch• need first to validate its implementation (complex task)

•Various misbehaviors of simulated models• Failure in neighbor discovery (IPv6) with specific option• Fixed size of TTL value• Different default values of simulated protocols

4

Page 5: DCE Cradle - nsnam.org

Using Direct Code Execution (DCE)

•A way to reuse running code• Linux network stack

•Without manual patching• Easy to track the latest version of the code

•Still ns-3 applications cannot use DCE•Only POSIX socket applications can benefit with DCE...

5

Page 6: DCE Cradle - nsnam.org

Outline

6

•Motivation•Existing studies•Design of DCE Cradle•Evaluations•Conclusion

Page 7: DCE Cradle - nsnam.org

How many kind of network stacks does ns-3 have ?

7

Page 8: DCE Cradle - nsnam.org

Network Simulation Cradle (NSC)[Jansen WSC05]

• Utilize real TCP codes in network simulators (ns-2/ns-3)

• Various OSes

• FreeBSD5, Linux-2.6, OpenBSD, lwip

• Hard to extend (UDP, DCCP)

• Hard to track latest kernel

8

ns-3socket

linux/bsd/lwip(tcp)

InternetStackHelper internet;internet.SetTcp ("ns3::NscTcpL4Protocol", "Library", StringValue("liblinux2.6.26.so"));PacketSinkHelper sink ("ns3::TcpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), port));

Page 9: DCE Cradle - nsnam.org

Direct Code Execution[Lacage 10]

• POSIX socket applications run on ns-3 (without any modifications)

• Can utilize available network stacks in ns-3 (NSC, native)

9

DceApplicationHelper dce;dce.SetBinary ("tcp-loopback");dce.Install (nodes.Get (0));

POSIXsocket

ns-3

Page 10: DCE Cradle - nsnam.org

DCE Linux kernel module[Lacage 10]

• Allow using Linux network stack

• with DCE-enabled POSIX socket application

• Designed to track latest kernel

• virtually introduced “sim” architecture in kernel

• It’s not available for ns-3 applications

10

DceManagerHelper dceMng;dceMng.SetNetworkStack ("ns3::LinuxSocketFdFactory", "Library", StringValue ("liblinux.so"));dceMng.Install (nodes);DceApplicationHelper dce;dce.SetBinary ("tcp-loopback");dce.Install (nodes.Get (0));

POSIXsocket

linux

Page 11: DCE Cradle - nsnam.org

Using Host-OS’s stack[Abraham WNS12][Carneiro SIMPAT11]

• Using hosted OS network stack from ns-3

• ns-3 applications can run

• on ns-3 (as simulations)

• on (directly) host OS

• Avoid writing application codes twice

11

PacketSinkHelper("ns3 :: RealTcpSocketFactory" ,InetSocketAddress (Ipv4Address::GetAny (), port));

ns-3socket

Host OS

Page 12: DCE Cradle - nsnam.org

•There is still a gap• ns-3 applications (e.g., PacketSink/OnOff/Bulk application)

+ latest Linux kernel via DCE

What is possible today?

12

application

ns-3-real[Abraham WNS12]

[Carneiro SIMPAT11]

networkstack

ns-3socket

ns-3

ns-3socket

linux/bsd/lwip(tcp)

POSIXsocket

ns-3

POSIXsocket

linux

ns-3socket

Host OS

NSC[Jansen WSC05]

DCE[Lacage 10]

DCE-Linux[Lacage 10]

ns-3socket

linuxDCE cradle(this work)

ns-3basic

Page 13: DCE Cradle - nsnam.org

•Goal of DCE Cradle• ns-3 applications + latest Linux kernel network stack• make ns-3 scenarios/applications transparent

•3 Key components• Socket wrapper• Linux stack helper, Layer-3 proxy• DCE scheduler (blocking vs non-blocking)

How to fill the gap?

13

Page 14: DCE Cradle - nsnam.org

Socket wrapper

• A series of socket factories

• ns3::LinuxIpv4RawSocketFactory

• ns3::LinuxTcpSocketFactory

• ns3::LinuxUdpSocketFactory

• ns3::LinuxDccpSocketFactory

• (can be extended)

• ns-3 applications should only care about the socket name

14

ns3:application

ns3::Socket

(Proxy)

ns3::NetDevice

DCE

Linux IPv4

Linux TCP

ns3 L3Protocol

DCE Cradle Socket

Page 15: DCE Cradle - nsnam.org

Layer-3 Proxy

• ns3::LinuxStackHelper class

• Replacement of ns3::InternetStackHelper

• ns3::Ipv4Linux class in the backend

• to configure IP addresses and routes

• Useful to make the ns-3 applications transparent to network stacks

15

ns3:application

ns3::Socket

(Proxy)

ns3::NetDevice

DCE

Linux IPv4

Linux TCP

ns3 L3Protocol

DCE Cradle Socket

Page 16: DCE Cradle - nsnam.org

DCE core extension

• Design consideration

• ns-3 asynchronous socket API vs POSIX socket API

• Introduce Fake-task

• won’t schedule tasks for DCE Cradle operation

• Set (statically) O_NONBLOCK for DCE Cradle Linux sockets

16

Elf Loader

Process/Thread Task

File I/O Signals

Time

Scheduler (softirq/tasklet/timer/workqueue)

jiffies emulation

netdev emulation

User-spaceService

Kernel-spaceService

Elf Loader

Fake-Task

Task Scheduler

ns-3 simulation core

Architecture of Direct Code Execution

Page 17: DCE Cradle - nsnam.org

How DCE Cradle looks like ?

• Specifying

• library name of network stack (e.g., liblinux.so)

• socket names of DCE Cradle (ns3::LinuxYYYYSocketFactory)

• That’s it

17

DceManagerHelper dceMng;dceMng.SetNetworkStack ("ns3::LinuxSocketFdFactory", "Library", StringValue ("liblinux.so"));dceMng.Install (nodes);

PacketSinkHelper sink = PacketSinkHelper (“ns3::LinuxIpv4RawSocketFactory”, InetSocketAddress (Ipv4Address::GetAny (), 9));

ns-3socket

linux

Page 18: DCE Cradle - nsnam.org

•How similar DCE Cradle is to other approaches ?•How much overhead does DCE Cradle introduce ?•How is DCE Cradle able to reduce implementation

cost ?

Evaluation

18

Page 19: DCE Cradle - nsnam.org

Network Configuration

•Simple dumbbell topology• Multiple traffic flows through a bottleneck link

19

2Mbps bandwidth100ms delay5% packet lossOnOffApplication

DataRate = 1MbpsPacket Size=1024 bytes

Page 20: DCE Cradle - nsnam.org

Goodput measurement

• Variants

• 1) DCE Cradle (Linux 2.6.36)

• 2) DCE Cradle (3.4.5)

• 3) ns-3 native

• 4) NSC (Linux 2.6.26)

• 5) Real Linux (2.6.32-28)

• Traffic generator

• OnOffApplication (1-4)

• iperf (5)

20

26%35%

83%

Page 21: DCE Cradle - nsnam.org

Goodput measurement

• Variants

• 1) DCE Cradle (Linux 2.6.36)

• 2) DCE Cradle (3.4.5)

• 3) ns-3 native

• 4) NSC (Linux 2.6.26)

• 5) Real Linux (2.6.32-28)

• Traffic generator

• OnOffApplication (1-4)

• iperf (5)

20

Change ns-3 default values:TCP/SegmentSize (MSS) 576=>1448

TCP/DelAckCount , 2=>1

Page 22: DCE Cradle - nsnam.org

Overhead (vs #nodes)

• Varying the number of Tx/Rx nodes

• Fixing simulation time

• 64 seconds

• Measure execution time

• NSC = (DCE Cradle * 1.05)

• ns-3 native is faster

21

Page 23: DCE Cradle - nsnam.org

Overhead (v.s. simulation time)

• Fixing the number of Tx/Rx nodes (2)

• Varying simulation time: 5 - 400 seconds

• Measure execution time

• NSC = (DCE Cradle * 1.3)

• ns-3 = (DCE Cradle / 2.2)

22

Page 24: DCE Cradle - nsnam.org

Linux DCCP with ns-3

• Build DCE enabled kernel

• with CONFIG_NET_DCCP option

• and a bit of glue code

• DCE Cradle provided wrapper socket (ns3::LinuxDccpSocketFactory)

23

2Mbps bandwidth100ms delay5% packet lossOnOffApplication

DataRate = 1MbpsPacket Size=1024 bytes

DCCP OnOffApplicationiperf DCCP extension

Page 25: DCE Cradle - nsnam.org

DCCP simulation

• Difference

• DCE Cradle/Linux 2.6.32 = 1.11

• Successfully simulate DCCP

• Similar behavior to real network/code

24

Page 26: DCE Cradle - nsnam.org

Summary

25

•DCE is able to use with ns-3 applications• Linux TCP, as well as UDP and DCCP

•Performance overhead is negligible•The code will be merged ns-3-dce soon

Page 27: DCE Cradle - nsnam.org

Thanks

26

Latest information will be at DCE Web pagehttp://www.nsnam.org/projects/direct-code-execution/

Page 28: DCE Cradle - nsnam.org

Lessons learnt

• Importance of reproducible result• Easily and quickly reproduce the results• All instructions described in the paper are available• http://www.nsnam.org/~thehajime/ns-3-dce-doc/dce-

cradle-usecase.html

•Default values should carefully be chosen when comparing 2 implementations of a same protocol

27

Page 29: DCE Cradle - nsnam.org

Future plan

28

•Development version is available• will be announced soon

•1st Release• IPv4 (UDP/TCP/DCCP/raw socket)

•2nd• SCTP (depends on DCE feature)• IPv6

Latest information will be at DCE Web pagehttp://www.nsnam.org/projects/direct-code-execution/