The Georgia Tech Network Simulator (GTNetS) ECE6110 August 25, 2008 George F. Riley.

Slides:



Advertisements
Similar presentations
1 The ns-2 Network Simulator H Plan: –Discuss discrete-event network simulation –Discuss ns-2 simulator in particular –Demonstration and examples: u Download,
Advertisements

1 o Two issues in practice – Scale – Administrative autonomy o Autonomous system (AS) or region o Intra autonomous system routing protocol o Gateway routers.
6.033: Intro to Computer Networks Layering & Routing Dina Katabi & Sam Madden Some slides are contributed by N. McKewon, J. Rexford, I. Stoica.
CCNA – Network Fundamentals
CCNA Guide to Cisco Networking Fundamentals Fourth Edition
Router Architecture : Building high-performance routers Ian Pratt
Lab 4: Simple Router CS144 Lab 4 Screencast May 2, 2008 Ben Nham Based on slides by Clay Collier and Martin Casado.
Multiple Processor Systems Chapter Multiprocessors 8.2 Multicomputers 8.3 Distributed systems.
1 6/14/ :27 CS575Internetworking & Routers1 Rivier College CS575: Advanced LANs Chapter 13: Internetworking & Routers.
Understanding Networks. Objectives Compare client and network operating systems Learn about local area network technologies, including Ethernet, Token.
Introduction. 2 What Is SmartFlow? SmartFlow is the first application to test QoS and analyze the performance and behavior of the new breed of policy-based.
Routing.
5/12/05CS118/Spring051 A Day in the Life of an HTTP Query 1.HTTP Brower application Socket interface 3.TCP 4.IP 5.Ethernet 2.DNS query 6.IP router 7.Running.
SNMP & MIME Rizwan Rehman, CCS, DU. Basic tasks that fall under this category are: What is Network Management? Fault Management Dealing with problems.
TCP/IP Tools Lesson 5. Objectives Skills/ConceptsObjective Domain Description Objective Domain Number Using basic TCP/IP commands Understanding TCP/IP3.6.
Chapter Overview TCP/IP Protocols IP Addressing.
Network Simulation Internet Technologies and Applications.
1 TCP/IP architecture A set of protocols allowing communication across diverse networks Out of ARPANET Emphasize on robustness regarding to failure Emphasize.
Lecture 8 Modeling & Simulation of Communication Networks.
1.  A protocol is a set of rules that governs the communications between computers on a network.  Functions of protocols:  Addressing  Data Packet.
Chapter Eleven An Introduction to TCP/IP. Objectives To compare TCP/IP’s layered structure to OSI To review the structure of an IP address To look at.
CN2668 Routers and Switches Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+
Simulation and Emulation with NCTUns
INTRODUCTION TO WEB DATABASE PROGRAMMING
CP476 Internet ComputingCh.1 # 1 Lecture 2. A Brief Introduction to the Internet The objective is to understand The history of Internet What the Internet.
Hands-On Microsoft Windows Server 2003 Networking Chapter Three TCP/IP Architecture.
PA3: Router Junxian (Jim) Huang EECS 489 W11 /
1 Enabling Large Scale Network Simulation with 100 Million Nodes using Grid Infrastructure Hiroyuki Ohsaki Graduate School of Information Sci. & Tech.
Network Admin Course Plan Accede Institute Of Science & Technology.
Routing protocols Basic Routing Routing Information Protocol (RIP) Open Shortest Path First (OSPF)
Examining TCP/IP.
Modeling the Border Gateway Protocol Xenofontas Dimitropoulos George Riley Georgia Institute of Technology.
CS 6401 Internetworking Outline Internet Architecture Best Effort Service Model.
Cisco S2 C4 Router Components. Configure a Router You can configure a router from –from the console terminal (a computer connected to the router –through.
2: Application Layer1 Chapter 2 outline r 2.1 Principles of app layer protocols r 2.2 Web and HTTP r 2.3 FTP r 2.4 Electronic Mail r 2.5 DNS r 2.6 Socket.
Sharing Information across Congestion Windows CSE222A Project Presentation March 15, 2005 Apurva Sharma.
Polytechnic University1 The internetworking solution of the Internet Prof. Malathi Veeraraghavan Elec. & Comp. Engg. Dept/CATT Polytechnic University
Chapter 6-2 the TCP/IP Layers. The four layers of the TCP/IP model are listed in Table 6-2. The layers are The four layers of the TCP/IP model are listed.
Multiple Processor Systems Chapter Multiprocessors 8.2 Multicomputers 8.3 Distributed systems.
© Jörg Liebeherr, Organization Addresses TCP/IP Protocol stack Forwarding Internet.
Dynamic Source Routing (DSR) Sandeep Gupta M.Tech - WCC.
Chapter 15 – Part 2 Networks The Internal Operating System The Architecture of Computer Hardware and Systems Software: An Information Technology Approach.
Application Block Diagram III. SOFTWARE PLATFORM Figure above shows a network protocol stack for a computer that connects to an Ethernet network and.
1 Objectives Identify the basic components of a network Describe the features of Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6)
CHAPTER 5 TCP/IP PROTOCOLS. P ROTOCOL STANDARDS Protocols are formal rules of behavior When computers communicate, it is necessary to define a set of.
4061 Session 25 (4/17). Today Briefly: Select and Poll Layered Protocols and the Internets Intro to Network Programming.
CCNA 2 Week 6 Routing Protocols. Copyright © 2005 University of Bolton Topics Static Routing Dynamic Routing Routing Protocols Overview.
1 Introduction to NS-2 r Tutorial overview of NS m Create basic NS simulation r Walk-through a simple example m Model specification m Execution and trace.
Routing and Routing Protocols
Monitoring Troubleshooting TCP/IP Chapter 3. Objectives for this Chapter Troubleshoot TCP/IP addressing Diagnose and resolve issues related to incorrect.
Topic 3 Analysing network traffic
Planning and Analyzing Wireless LAN
Distributed simulation with MPI in ns-3 Joshua Pelkey and Dr. George Riley Wns3 March 25, 2011.
1 CSE 5346 Spring Network Simulator Project.
Voice Over Internet Protocol (VoIP) Copyright © 2006 Heathkit Company, Inc. All Rights Reserved Presentation 5 – VoIP and the OSI Model.
1 Objectives Identify the basic components of a network Describe the features of Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6)
Communication Networks NETW 501 Tutorial 2
Client-server communication Prof. Wenwen Li School of Geographical Sciences and Urban Planning 5644 Coor Hall
Ad Hoc – Wireless connection between two devices Backbone – The hardware used in networking Bandwidth – The speed at which the network is capable of sending.
Chapter 3 Part 3 Switching and Bridging
Scaling the Network: The Internet Protocol
Lec 2: Protocols.
Chapter 3 Part 3 Switching and Bridging
Routing.
CS 457 – Lecture 10 Internetworking and IP
Multiple Processor Systems
Scaling the Network: The Internet Protocol
Ns-3 Tutorial Xin Li.
Outline Overview of IP History of the Internet - 3-May-19
Routing.
Presentation transcript:

The Georgia Tech Network Simulator (GTNetS) ECE6110 August 25, 2008 George F. Riley

Overview Network Simulation Basics GTNetS Design Philosophy GTNetS Details BGP++ Scalability Results FAQ Future Plans Demos 2

Network Simulation Basics - 1 Discrete Event Simulation ◦ Events model packet transmission, receipt, timers, etc. ◦ Future events maintained in sorted Event List ◦ Processing events results in zero or more new events  Packet transmit event generates a future packet receipt event at next hop 3

Network Simulation Basics - 2 Create Topology ◦ Nodes, Links, Queues, Routing, etc. Create Data Demand on Network ◦ Web Browsers, FTP transfers, Peer-to-Peer Searching and Downloads, On--Off Data Sources, etc. Run the Simulation Analyze Results 4

Network Simulation Basics TCP Client 1 TCP Client 2 TCP Server 1 TCP Server Mbps, 5ms 10 Mbps, 20ms

GTNetS Designed Like Real Networks Nodes have one or more Interfaces ◦ Interfaces have IP Address and Mask ◦ Interfaces have an associated Link object Packets append and remove PDU’s Clear distinction between protocol stack layers Packet received at an Interface ◦ Forwards to Layer 2 protocol object for processing ◦ Forwards to Layer 3 based on protocol number (800 is IPV4) ◦ Forwards to Layer 4 based on protocol number (6 is TCP) ◦ Forwards to application based on port number 6

GTNetS Design Philosophy Written Completely in C++ Released as Open Source All network modeling via C++ objects User Simulation is a C++ main program Include our supplied “#include” files Link with our supplied libraries Run the resulting executable 7

GTNetS Details - Node 8 Node Interface Queue Link L2 Protocol Interface Queue Link L2 Protocol Routing Info Location Port Map

GTNetS Details - Packet 9 Packet Unique ID Size Timestamp Header

GTNetS Applications Web Browser (based on Mah’1997) Web Server - including Gnutella GCache On-Off Data Source FTP File Transfer Bulk Data Sending/Receiving Gnutella Peer-to-Peer Syn Flood UDP Storm Internet Worms VOIP 10

GTNetS Protocols TCP, complete client/server ◦ Tahoe, Reno, New-Reno ◦ Sack (in progress) ◦ Congestion Window, Slow Start, Receiver Window UDP IPV4 (IPV6 Planned) IEEE (Ethernet and point-to-point) IEEE (Wireless) Address Resolution Protocol (ARP) ICMP (Partial) 11

GTNetS Routing Static (pre-computed routes) Nix-Vector (on-demand) Manual (specified by simulation application) EIGRP BGP OSPF DSR AODV 12

GTNetS Support Objects Random Number Generation ◦ Uniform, Exponential, Pareto, Sequential, Emiprical, Constant Statistics Collection ◦ Histogram, Average/Min/Max Command Line Argument Processing Rate, Time, and IP Address Parsing ◦ Rate(“10Mb”), Time(“10ms”) ◦ IPAddr(“ ”) 13

GTNetS Distributed Simulation Split topology model into several parts Each part runs on separate workstation or separate CPU in SMP Each simulator has complete topology picture ◦ “Real” nodes and “Ghost” nodes Time management and message exchange via Georgia Tech “Federated Developers Kit”. Allows larger topologies that single simulation May run faster 14

Example UNC Chapel Hill, Feb 3, // Simple GTNetS example // George F. Riley, Georgia Tech, Winter 2002 #include "simulator.h" // Definitions for the Simulator Object #include "node.h" // Definitions for the Node Object #include "linkp2p.h" // Definitions for point-to-point link objects #include "ratetimeparse.h" // Definitions for Rate and Time objects #include "application-tcpserver.h" // Definitions for TCPServer application #include "application-tcpsend.h" // Definitions for TCP Sending app #include "tcp-tahoe.h" // Definitions for TCP Tahoe int main() { // Create the simulator object Simulator s; // Create and enable IP packet tracing Trace* tr = Trace::Instance(); // Get a pointer to global trace object tr->IPDotted(true); // Trace IP addresses in dotted notation tr->Open("intro1.txt"); // Create the trace file TCP::LogFlagsText(true); // Log TCP flags in text mode IPV4::Instance()->SetTrace(Trace::ENABLED);// Enable IP tracing all nodes // Create the nodes Node* c1 = new Node(); // Client node 1 Node* c2 = new Node(); // Client node 2 Node* r1 = new Node(); // Router node 1 Node* r2 = new Node(); // Router node 2 Node* s1 = new Node(); // Server node 1 Node* s2 = new Node(); // Server node 2 // Create a link object template, 100Mb bandwidth, 5ms delay Linkp2p l(Rate("100Mb"), Time("5ms")); // Add the links to client and server leaf nodes c1->AddDuplexLink(r1, l, IPAddr(" ")); // c1 to r1 c2->AddDuplexLink(r1, l, IPAddr(" ")); // c2 to r1 s1->AddDuplexLink(r2, l, IPAddr(" ")); // s1 to r2 s2->AddDuplexLink(r2, l, IPAddr(" ")); // s2 to r2 // Create a link object template, 10Mb bandwidth, 100ms delay Linkp2p r(Rate("10Mb"), Time("100ms")); // Add the router to router link r1->AddDuplexLink(r2, r); // Create the TCP Servers TCPServer* server1 = new TCPServer(TCPTahoe()); TCPServer* server2 = new TCPServer(TCPTahoe()); server1->BindAndListen(s1, 80); // Application on s1, port 80 server2->BindAndListen(s2, 80); // Application on s2, port 80 server1->SetTrace(Trace::ENABLED); // Trace TCP actions at server1 server2->SetTrace(Trace::ENABLED); // Trace TCP actions at server2 // Create the TCP Sending Applications TCPSend* client1 = new TCPSend(TCPTahoe(c1), s1->GetIPAddr(), 80, Uniform(1000,10000)); TCPSend* client2 = new TCPSend(TCPTahoe(c2), s2->GetIPAddr(), 80, Constant(100000)); // Enable TCP trace for all clients client1->SetTrace(Trace::ENABLED); client2->SetTrace(Trace::ENABLED); // Set random starting times for the applications Uniform startRv(0.0, 2.0); client1->Start(startRv.Value()); client2->Start(startRv.Value()); s.Progress(1.0); // Request progress messages s.StopAt(10.0); // Stop the simulation at time 10.0 s.Run(); // Run the simulation std::cout << "Simulation Complete" << std::endl; } // Simple GTNetS example // George F. Riley, Georgia Tech, Winter 2002 #include "simulator.h" #include "node.h" #include "linkp2p.h #include "ratetimeparse.h" #include "application-tcpserver.h" #include "application-tcpsend.h" #include "tcp-tahoe.h" int main() { // Create the simulator object Simulator s; // Simple GTNetS example // George F. Riley, Georgia Tech, Winter 2002 #include "simulator.h" // Definitions for the Simulator Object #include "node.h" // Definitions for the Node Object #include "linkp2p.h" // Definitions for point-to-point link objects #include "ratetimeparse.h" // Definitions for Rate and Time objects #include "application-tcpserver.h" // Definitions for TCPServer application #include "application-tcpsend.h" // Definitions for TCP Sending app #include "tcp-tahoe.h" // Definitions for TCP Tahoe int main() { // Create the simulator object Simulator s; // Create and enable IP packet tracing Trace* tr = Trace::Instance(); tr->IPDotted(true); tr->Open("intro1.txt"); TCP::LogFlagsText(true); IPV4::Instance()->SetTrace(Trace::ENABLED); // Create the nodes Node* c1 = new Node(); // Client node 1 Node* c2 = new Node(); // Client node 2 Node* r1 = new Node(); // Router node 1 Node* r2 = new Node(); // Router node 2 Node* s1 = new Node(); // Server node 1 Node* s2 = new Node(); // Server node 2 // Create and enable IP packet tracing Trace* tr = Trace::Instance(); tr->IPDotted(true); tr->Open("intro1.txt"); TCP::LogFlagsText(true); IPV4::Instance()->SetTrace(Trace::ENABLED); // Create the nodes Node* c1 = new Node(); // Client node 1 Node* c2 = new Node(); // Client node 2 Node* r1 = new Node(); // Router node 1 Node* r2 = new Node(); // Router node 2 Node* s1 = new Node(); // Server node 1 Node* s2 = new Node(); // Server node 2 // Create a link object template, //100Mb bandwidth, 5ms delay Linkp2p l(Rate("100Mb"), Time("5ms")); // Add the links to client and server leaf nodes c1->AddDuplexLink(r1, l, IPAddr(" ")); c2->AddDuplexLink(r1, l, IPAddr(" ")); s1->AddDuplexLink(r2, l, IPAddr(" ")); s2->AddDuplexLink(r2, l, IPAddr(" ")); // Create a link object template, //10Mb bandwidth, 100ms delay Linkp2p r(Rate("10Mb"), Time("100ms")); // Add the router to router link r1->AddDuplexLink(r2, r); // Create a link object template, 100Mb bandwidth, 5ms delay Linkp2p l(Rate("100Mb"), Time("5ms")); // Add the links to client and server leaf nodes c1->AddDuplexLink(r1, l, IPAddr(" ")); // c1 to r1 c2->AddDuplexLink(r1, l, IPAddr(" ")); // c2 to r1 s1->AddDuplexLink(r2, l, IPAddr(" ")); // s1 to r2 s2->AddDuplexLink(r2, l, IPAddr(" ")); // s2 to r2 // Create a link object template, 10Mb bandwidth, 100ms delay Linkp2p r(Rate("10Mb"), Time("100ms")); // Add the router to router link r1->AddDuplexLink(r2, r); // Create the TCP Servers TCPServer* server1 = new TCPServer(TCPTahoe()); TCPServer* server2 = new TCPServer(TCPTahoe()); server1->BindAndListen(s1, 80); server2->BindAndListen(s2, 80); server1->SetTrace(Trace::ENABLED); server2->SetTrace(Trace::ENABLED); // Create the TCP Sending Applications TCPSend* client1 = new TCPSend(TCPTahoe(c1), s1->GetIPAddr(), 80, Uniform(1000,10000)); TCPSend* client2 = new TCPSend(TCPTahoe(c2), s2->GetIPAddr(), 80, Constant(100000)); TCPServer* server1 = new TCPServer(TCPTahoe()); TCPServer* server2 = new TCPServer(TCPTahoe()); server1->BindAndListen(s1, 80); // Application on s1, port 80 server2->BindAndListen(s2, 80); // Application on s2, port 80 server1->SetTrace(Trace::ENABLED); // Trace TCP actions at server1 server2->SetTrace(Trace::ENABLED); // Trace TCP actions at server2 // Create the TCP Sending Applications TCPSend* client1 = new TCPSend(TCPTahoe(c1), s1->GetIPAddr(), 80, Uniform(1000,10000)); TCPSend* client2 = new TCPSend(TCPTahoe(c2), s2->GetIPAddr(), 80, Constant(100000)); // Enable TCP trace for all clients client1->SetTrace(Trace::ENABLED); client2->SetTrace(Trace::ENABLED); // Set random starting times for the applications Uniform startRv(0.0, 2.0); client1->Start(startRv.Value()); client2->Start(startRv.Value()); s.Progress(1.0); // Request progress messages s.StopAt(10.0); // Stop the simulation at time 10.0 s.Run(); // Run the simulation std::cout << "Simulation Complete" << std::endl; } // Enable TCP trace for all clients client1->SetTrace(Trace::ENABLED); client2->SetTrace(Trace::ENABLED); // Set random starting times for the applications Uniform startRv(0.0, 2.0); client1->Start(startRv.Value()); client2->Start(startRv.Value()); s.Progress(1.0); // Request progress messages s.StopAt(10.0); // Stop the simulation at time 10.0 s.Run(); // Run the simulation std::cout << "Simulation Complete" << std::endl; } TCP Client 1 TCP Client 2 TCP Server 1 TCP Server 2

Integration of Zebra bgpd into ns- 2/GTNetS Zebra bgpd: ◦ One BGP router per process (C). ◦ Works on real-time. ◦ Blocking routines. ◦ BSD sockets. ns-2/GTNetS: ◦ Multiple BGP routers per process (C++). ◦ Works on simulation-time. ◦ Non-blocking routines. ◦ Simulator’s TCP implementation. Convert C code to C++. Convert real-time to simulation-time functions. Remove blocking routines and interleave schedulers. Replace sockets with the simulator TCP implementation. 16

BGP++ scalability Compact routing table structure. ◦ Observations:  Memory demand, O(n 3 ), driven by memory required for representing routing tables.  BGP attributes account for most of the memory required for a single routing table entry.  Different entries often have common BGP attributes. ◦ Solution: Use a global data structure to store and share BGP attributes. Avoid replication. ◦ Proof of concept simulations of up to 4,000 ASs in a single workstation with 2GB RAM. Extend BGP++ to support parallel/distributed BGP simulations. Solve memory bottleneck problem. 17 Up to 62% memory savings, 47% on average.

Other BGP++ features BGP++ inherits Zebra’s CISCO-like configuration language. Develop a tool to automatically generate ns-2/GTNets configuration from simple user input. Develop a tool to automatically partition topology and generate pdns configuration from ns-2 configuration, or distributed GTNetS topology. ◦ Model simulation topology as a weighted graph: node weights reflect expected workload, link weights reflect expected traffic. ◦ Graph partitioning problem: find a partition in k parts that minimizes the edge-cut under the constraint that the sum of the nodes’ weights in each part is balanced. 18

Scalability Results - PSC Pittsburgh Supercomputer Center 128 Systems, 512 CPU’s, 64-bit HP Systems Topology Size ◦ 15,064 Nodes per System ◦ 1,928,192 Nodes Total Topology ◦ 1,820,672 Total Flows ◦ 18,650,757,866 Simulation Events ◦ 1,289 Seconds Execution Time 19

Questions? 20