1 / 9

Chap 3. Network Interface Layer

Chap 3. Network Interface Layer. Objects Passed Between Layers. Conceptual Layer. Application. Messages or Streams. Transport. Transport Protocol Packets. Internet. IP Datagrams. Network Interface. Network-Specific Frames. Hardware.

Download Presentation

Chap 3. Network Interface Layer

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. Chap 3. Network Interface Layer Objects Passed Between Layers Conceptual Layer Application Messages or Streams Transport Transport Protocol Packets Internet IP Datagrams Network Interface Network-Specific Frames Hardware Figure 3.1 The conceptual organization of TCP/IP protocol software into layers.

  2.  Network interface Layer – controls network hardware. – performs mapping from IP addresses to hardware addresses. – encapsulates and transmits outgoing packets. – accepts and demultiplexes incoming packets.  S/W in the network interface layer provides a network interface abstraction, which defines the interface between protocol software in the O.S. and the underlying H/W. It hides hardware details and allows protocol software to interface with a variety of network H/W using the some data structures.

  3. Interface structure – Hardware - independent – Consists of an array, nif[ ], with one element for each hardware interface attached to the machine. – Each elements in the interface array are known by their index in the array. – netif.h header file. /* netif.h - NIGET */ #define NI_MAXHWA 14 /* max size of any hardware */ /* (physical) net address */ struct hwa { /* a hardware address */ int ha_len; /* length of this address */ unsigned char ha_addr[NI_MAXHWA]; /* the address */ }; struct netif { /* info about one net interface */ char ni_name[NETNLEN]; /* domain name of interface */ char ni_state; /* interface states: NIS_ above */ IPaddr ni_ip; /* IP address for this interface*/ IPaddr ni_net; /* network IP address */ IPaddr ni_subnet; /* subnetwork IP address */ IPaddr ni_mask; /* IP subnet mask for interface */ IPaddr ni_brc; /* IP broadcast address */ IPaddr ni_nbrc; /* IP net broadcast address */ unsigned int ni_mtu; /* max transfer unit (bytes) */ unsigned int ni_hwtype; /* hardware type (for ARP) */ struct hwa ni_hwa; /* hardware address of interface*/ struct hwa ni_hwb; /* hardware broadcast address */

  4. /* ether.h */ #define EPT_LOOP 0x0060 /* type: Loopback */ #define EPT_ECHO 0x0200 /* type: Echo */ #define EPT_PUP 0x0400 /* type: Xerox PUP */ #define EPT_IP 0x0800 /* type: Internet Protocol */ #define EPT_ARP 0x0806 /* type: ARP */ #define EPT_RARP 0x8035 /* type: Reverse ARP */ struct eh { /* ethernet header */ Eaddr eh_dst; /* destination host address */ Eaddr eh_src; /* source host address */ unsigned short eh_type;/* Ethernet packet type (see below) */ }; struct ep { /* complete structure of Ethernet packet*/ u_long ep_nexthop; /* niput() uses this */ short ep_ifn; /* originating interface number */ short ep_len; /* length of the packet */ short ep_order; /* byte order mask (for debugging) */ struct eh ep_eh; /* the ethernet header */ char ep_data[EP_DLEN]; /* data in the packet */ }; #define ep_dst ep_eh.eh_dst #define ep_src ep_eh.eh_src #define ep_type ep_eh.eh_type 3.3 Ethernet Definitions

  5. Logical state of An Interface (for debug) – Field ni_state provides a mechanism to control the logical state of an interface, indep. of the H/W.  network manager can assign ni_state to NS-Down to stop input and output completely.,  Later, manager can assign ni_state to NS_Up to restart I/O working Internet Network Interface H/W working

  6. Local Host Interface  This design uses a pseudo-network interface for higher-level protocol S/W on local machine. – no device driver – no real H/W Datagrams to and from local host Interface between IP and networks Interface for Net 1 Interface for Net n Pseudo-Interface for Local Host    Device Driver for Net 1 Device Driver for Net n Operating System Hardware Network 1 hardware Network n hardware Figure 3.2 The pseudo-network interface used for communication with the local host.

  7. Advantages – eliminate special cases (in IP layer), simplying IP code. – allow local machine to be represented in the routing table exactly like other destination. – allow net manger to interrogate local interface as easily as other interfaces.

  8. 3.6 Buffer Management • How to reduce the data copy during communication is import for the system performance • Large buffer solution (max IP datagram is 64Kbyte) • in general, we choose each buffer size between 4K and 8K bytes • Linked-list solution • each link (buffer) between 128 and 1 K bytes) • Our example solution • compromise between large buffers and linked list • allocate many network buffers large enough to hold a MTU packet • allocate few buffers large enough to hold large datagrams • use self-identifying buffer scheme provided by OS • getbuf: specify large or small buffer, return buffer point • freebuf: only passing buffer pointer, OS auto to deduce the buffer size • Other buffer issues (DMA) • gather-write • scatter-read

  9. Demultiplexing Incoming Packets /* ni_in.c - ni_in */ int ni_in(struct netif *pni, struct ep *pep, unsigned len) { int rv; pep->ep_ifn = pni - &nif[0]; /* record originating intf # */ pni->ni_ioctets += len; if (!memcmp(pni->ni_hwa.ha_addr, pep->ep_dst, EP_ALEN)) pni->ni_iucast++; else pni->ni_inucast++; switch (pep->ep_type) { case EPT_ARP: rv = arp_in(pni, pep); break; case EPT_RARP: rv = rarp_in(pni, pep); break; case EPT_IP: rv = ip_in(pni, pep); break; default: pni->ni_iunkproto++; freebuf(pep); rv = OK; } return rv; }

More Related