1 / 63

Network Programming Intro to Distributed systems Fall 2015

This lecture covers the principles and goals of distributed systems, including transport protocols, version control, socket programming, and debugging with gdb. Programming Assignment 1 is also announced.

helgaj
Download Presentation

Network Programming Intro to Distributed systems Fall 2015

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Network ProgrammingIntro to Distributed systemsFall 2015 Some material taken from publicly available lecture slides including SriniSeshan’s and David Anderson’s L3-socket Dongsu Han

  2. Today’s Lecture • Lecture • Transport protocols: UDP and TCP • Version control using SVN • TA-led programming session • Editor, socket programming • Debugging with gdb • Announcement • Programming Assignment 1 is out. (Due in two weeks--추석)

  3. Review of Previous Lectures • What is a distributed system? (L1) • Definition • Example • What are some of the important decisions made in the Internet architecture? (L2) • Narrow waist: Network provides minimal functionality (best-effort) • Why?: to connect existing networks that are heterogeneous • Stateless architecture: no per-flow state inside network • Why? • For survivability

  4. Principles • P1: IP over all network (narrow waist) • P2: Layering • Principle 3: Fate Sharing • Principle 4: Soft-state • Principle 5: End-to-End Argument  Next lecture • Principle 6: network layer provides one simple service: best effort datagram (packet) delivery

  5. Principle 4: Soft-state • Soft-state (as oppose to hard-state) • Announce state • Refresh state • Timeout state • Penalty for timeout – poor performance • Robust way to identify communication flows (firewall) • Possible mechanism to provide non-best effort service • Helps survivability

  6. Goal 2: Types of Service • Principle 6: network layer provides one simple service: best effort datagram (packet) delivery • All packets are treated the same • Network layer (IP) provides “best effort” service. • Relatively simple core network elements • Other functions are implemented at the end-host at the transport layer (TCP/UDP) • Building block from which other services (such as reliable data stream) can be built • Contributes to scalability of network • Issues: No QoS support assumed from below • Hard to implement without network support • QoS is an ongoing debate…

  7. Summary • Successes: IP on everything! • Drawbacks…but perhaps they’re totally worth it in the context of the original Internet. Might not have worked without them! “This set of goals might seem to be nothing more than a checklist of all the desirable network features. It is important to understand that these goals are in order of importance, and an entirely different network architecture would result if the order were changed.”

  8. Transport Protocols • Lowest level end-to-end protocol. • Header generated by sender is interpreted only by the destination • Routers view transport header as part of the payload; they are not supposed to see the transport header. 7 7 6 6 5 5 Transport Transport IP IP IP Datalink 2 2 Datalink Physical 1 1 Physical router

  9. What does the transport layer do? • No per-flow (connection) state in the network • Transport layer maintains the connection state. Transport layer identifies an end-to-end connection. • How does the transport layer identify an end-point (application)?

  10. De-multiplexing: Port numbers • Network layer gets you to the host. • A port identifies the sending or receiving socket (application). • A socket is one endpoint of a two-way communication between two programs running on the network. A socket is bound to a port number so that the transport layer can identify the application that data is destined to be sent. • Identifying two end-points: An endpoint = <IP address, Port #> • Source endpoint = <SrcIPAddr, SrcPort> • destination endponit = <DestIPAddr, DestPort>

  11. Protocol and Port Demultiplexing • Multiple choices at each layer • Applications open a socket (identified by the port number) Port 80 Port 22 Port 80 Port 22 TCP UDP Network IP TCP/UDP IP Type Field =IP Protocol Field = TCP Port Number = 80 NET1 NET2 … NETn

  12. TCP/UDP TCP/UDP IP IP Server Server and Client Server and Client exchange messages over the network through a common Socket API Clients user space ports Socket API kernel space Ethernet Adapter Ethernet Adapter hardware

  13. Transport protocols • UDP • Provides only integrity and de-multiplexing • TCP adds…

  14. “bare bones” Internet transport protocol, “Best effort” service UDP segments may be: Lost, duplicated (bug, spurious retransmission at L2) Delivered out of order to app Connectionless: No handshaking between UDP sender, receiver Each UDP segment handled independently UDP: User Datagram Protocol [RFC 768] • Why is there a UDP? • No connection establishment (which can add delay) • Simple: sender, receiver state is minimal • Small header • No congestion control: UDP can blast away as fast as desired

  15. Often used for streaming multimedia apps (e.g., Skype) Loss tolerant Rate sensitive Other UDP uses (why?): DNS Reliable transfer over UDP Must be at application layer Application-specific error recovery UDP, cont. 32 bits Source port # Dest port # Length, in bytes of UDP segment, including header Checksum Length Application data (message) UDP segment format

  16. Transport protocols • UDP • Provides only integrity and de-multiplexing • TCP adds… • Connection-oriented • Reliable (error control) • Ordered byte stream (in-order delivery) • Bi-directional byte-stream • Flow and congestion controlled

  17. TCP • Protocol implemented entirely at the ends • Fate sharing • Abstraction provided • Connection oriented protocol (hand-shake or connection establishment) • In-order byte-stream • Implemented functionality (next lecture) • Flow control • Reliability (error control) • Reassembly (in-order delivery) • Congestion control

  18. TCP Client Example /* get the server host entry */ hp = gethostbyname(argv[1]); if (hp == NULL) { perror("gethostbyname"); return -1; } /* create stream socket */ sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sockfd < 0) { perror("socket"); return -1; } /* set the destination address */ daddr.sin_family = AF_INET; memcpy(&daddr.sin_addr.s_addr, hp->h_addr, hp->h_length); daddr.sin_port = htons(PORT);

  19. TCP Client Example /* connect to the destination */ if (connect(sockfd, (structsockaddr *)&daddr, sizeof(structsockaddr_in))) { close(sockfd); perror("connect"); return -1; } inet_ntop(AF_INET, &daddr.sin_addr, s, sizeof(s)); printf("client: connecting to %s\n", s); /* receive message sent from the server */ if ((numbytes = recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) { perror("recv"); exit(1); } /* print the received message */ buf[numbytes] = '\0'; printf("client: received '%s'\n", buf); close(sockfd);

  20. Difference in abstraction • UDP • Recv(len) call gives you a packet (the payload part) • TCP • Connection establishment (hand-shake)  Will see in the TA led session. • Recv(len) call give you a sequence of bytes len len UDP segment (packet) UDP segment (packet) Application send() len len Application Recv() Byte stream Byte stream Incoming stream

  21. TCP– What goes on underneath Packet (9~11) Packet (1~7) Packet (8~10) Byte stream Receive buffer Packet (8~10) I need seq# 8.

  22. Example UDP applications Multimedia, voice over IP • Postal Mail • Single mailbox to receive letters • Unreliable  • Not necessarily in-order delivery • Letters sent independently • Must address each reply User Datagram Protocol(UDP): An Analogy • UDP • Single socket to receive messages • No guarantee of delivery • Not necessarily in-order delivery • Datagram – independent packets • Must address each packet

  23. Example TCP applications Web, Email, Telnet Transmission Control Protocol (TCP): An Analogy TCP • Reliable – guarantee delivery • Byte stream – in-order delivery • Connection-oriented – single socket per connection • Setup connection followed by data transfer • Telephone Call • Guaranteed delivery • In-order delivery • Connection-oriented • Setup connection followed by conversation

  24. Revision control & make

  25. Overview • Revision control systems • Motivation • Features • Subversion primer • Make • Simple gcc • Make basics and variables • Testing • Useful Unix commands

  26. Dealing with large codebases • Complications • Code synchronization • Backups • Concurrent modifications • Solution: Revision Control System (RCS) • Store all of your code in a repository on a server • Metadata to track changes, revisions, etc… • Also useful for writing books, papers, etc…

  27. Basic RCS features (1/2) • Infinite undo • go back to previous revisions • Automatic backups • all your code ever, forever saved • Changes tracking • see differences between revisions

  28. Basic RCS features (2/2) • Concurrency • Multiple people working at the same time • Snapshots • Save stable versions on the side (i.e. handin) • Branching • Create diverging code paths for experimentation

  29. Typical RCS workflow • Create repository on RCS server • Checkout the repository to your local machine • Work locally: create, delete and modify files • Update the repository to check for changes other people might have made • Resolve any existing conflicts • Commit your changes to the repository

  30. RCS implementations • Concurrent Versions System (CVS) • Concurrency, versioning of single files • Subversion (SVN) • File and directory moving and renaming, atomic commits • Git • Modern, de-facto standard

  31. Concurrent edits (1/2) John File v1 David Both check out file Edits (lines 30-40) Edits (lines 1-20) commit File v2 Update Merged automatically!

  32. Concurrent edits (2/2) John File v1 David Both check out file Edits (lines 10-20) Edits (lines 1-20) commit File v2 Update Conflict needing manual intervention!

  33. Resolving conflicts • When changes can’t be merged automatically • SVN gives you 3 files: • file.mine : your file • file.rx : the remote file • file : original file with marked conflicts • You can • Discard your changes • Discard others’ changes • Go over each conflict and arbitrate as appropriate

  34. Interacting with SVN • Command line • Readily available on your lab machines • Graphical tools • Easier to use • Subclipse for Eclipse gives IDE/SVN integration • tortoiseSVN

  35. 실습 server • IP: 143.248.141.40, 143.248.141.42~143.248.141.44 • ID: ee<your student id> (e.g., ee20110111) • Password: ee324EE#@$

  36. Svn password • 20100456 6390020100667 2683420100967 4801320110198 81020110227 3961720110319 1641120110468 5770020110548 6430220110968 3086020120184 1942420120277 1297620120508 1727820120677 4002920120973 61034 • 20121092 42821 20130098 4280720130185 3079120130234 1344820130363 1442120130394 2079620130451 1300820130477 5370520130478 4512220130505 480520130842 74220140055 2038920140244 4533620140544 2379320153347 5044

  37. Command line SVN example (1/2) $ svn co –-username=<<student id>> https://ina.kaist.ac.kr/svn/test $ cd test $ vim <<student id>>.txt $ vim <<student id>>. $ svn add <<student id>>.txt $ svn commit -m 'adding a text file with my student id‘ $ svn update $ cd ../ $ svncp trunk tags/<<student id>>_submission $ svn commit -m 'making a tag of the trunk for submission!‘ $ svn up $ echo -e ”<<student id>>" >> student.txt $ svn commit –m “added my student id”

  38. Command line SVN example (2/2) Revision control lets you note (and then see) what you changed: > svn log student.txt r986 | ntolia | 2006-08-01 17:13:38 -0400 (Tue, 01 Aug 2006) | 6 lines This allows the sp to get rid of chunks early before a transfer is complete. Useful when a file is requested in-order and the file size > mem cache size > svn diff -r 1:2 student.txt Index: file =================================================================== --- file (revision 1) +++ file (revision 2) @@-1,2+1,3@@ This isatestfile -It startedwithtwolines +It nolongerhastwolines +it hasthree

  39. General SVN tips • Update, make, test, only then commit • Merge often (svn up) • Comment commits • Avoid commit races • Modular design avoids conflicts

  40. Know more • subversion.tigris.org for SVN software & info • svnbook.red-bean.com for SVN book

  41. Makefile • You are on your own.

  42. Make • Utility for executable building automation • Saves you time and frustration • Helps you test more and better

  43. Simple gcc If we have files: • prog.c: The main program file • lib.c: Library .c file • lib.h: Library header file % gcc -c prog.c -o prog.o % gcc -c lib.c -o lib.o % gcc lib.o prog.o -o binary

  44. gcc flags • Useful flags • -g: debugging hook • -Wall: show all warnings • -Werror: treat warning as errors • -O0, -O1, -O2, -O3: optimization level • -DDEBUG: macro for DEBUG (#define DEBUG) • Avoid using dangerous optimizations that could affect correctness

  45. More gcc • gcc -g -Wall -Werror -c prog.c -o prog.o • gcc -g -Wall -Werror -c lib.c -o lib.o • gcc -g -Wall -Werror lib.o prog.o -o binary • This gets boring, fast!

  46. Makefile basics • Build targets • target: dependency1 dependency2 ... • unix command (start line with TAB)‏ • unix command

  47. Makefile example binary: lib.o prog.o gcc -g -Wall lib.o prog.o -o binary lib.o: lib.c gcc -g -Wall -c lib.c -o lib.o prog.o: prog.c gcc -g -Wall -c prog.c -o prog.o clean: rm *.o binary

  48. Makefile variables (1/7) • Variables • CC = gcc • CFLAGS = -g -Wall -Werror • OUTPUT = binary

  49. Makefile variables (2/7) binary: lib.o prog.o gcc-g -Wall lib.o prog.o -o binary lib.o: lib.c gcc-g -Wall -c lib.c -o lib.o prog.o: prog.c gcc-g -Wall -c prog.c -o prog.o clean: rm *.o binary

  50. Makefile variables (3/7) CC = gcc CFLAGS = -g -Wall OUTPUT = binary $(OUTPUT): lib.o prog.o $(CC) $(CFLAGS) lib.o prog.o -o binary lib.o: lib.c $(CC) $(CFLAGS) -c lib.c -o lib.o prog.o: prog.c $(CC) $(CFLAGS) -c prog.c -o prog.o clean: rm *.o $(OUTPUT)‏

More Related