170 likes | 180 Views
Learn to transmit and receive Ethernet packets between DE2 boards, implementing the 5-layer Internet model primarily in C code. Connect to a DM9000A Ethernet chip and ensure protocol compliance.
E N D
ECE 354Spring 2009 Lab 3: Transmitting and Receiving Ethernet Packets
Big Picture Introduction • Transmit and Receive Ethernet packets between two DE2 boards • Implement the 5-layer Internet model • Primarily written in C code • Use a preexisting SOPC system from the DE2_NET project
Skills to learn • Understanding previously written code • Using a peripheral device: DM9000A chip • Connect to a device that you did not design: DM9000A Ethernet chip • Internet protocol stack
Additional Hardware • Two DE2 boards • Ethernet cable
Overview of Lab • Each group should specify the information in Layers 2 through 5 (Link, Network, Transport, and Application) • The payload should be 16 bits selected by 16 switches on the DE2 board and should be displayed on the LEDs of the other DE2 board • Only packets with the correct source MAC, IP, and port addresses should be allowed to update the LEDs • Each group should modify the DM9000A.H file so that the last byte of the MAC address matches their group number • Test protocol compliance by working with another group and using their MAC address as your destination MAC address and your own MAC as the source.
Overview of DE2_NET project • Sends a malformed broadcast Ethernet packet • Important files: hello_led.c, DM9000A.c, and DM9000A.h • Three functions to control DM9000A chip • DM9000_init(); • TransmitPacket(TXT, length); • ReceivePacket(RXT, &length); • Copy the DE2_NET and fixpaths from the DE2 CD • Switch the workspace and select the directory that you saved DE2_NET in • If running two boards on the same computer, make two folders with each holding a copy of the DE2_NET project
The Internet protocol stack • Consists of 5 layers: Application, Transport, Network, Link, and Physical layer • A majority of you have learned about these layers in Computer Networking course
Layers you will use • Create an Application Layer (5) message by using the sixteen switches on the DE2 board • Encapsulate the message into segment at the Transport Layer (4) • Encapsulate the segment in a datagram at the Network Layer (3) • Encapsulate the datagram in a frame at the Link Layer (2) • The frame will be sent over the Physical Layer (1)
User Datagram Protocol (UDP) – Layer 4 (Transport Layer) • The Application Data will be encapsulated within a UDP segment • The Segment Header includes the Source Port, Destination Port, Length of Segment, and Checksum (2 bytes each, total of 8 bytes) • The Source and Destination Port numbers can be determined by the user, but the Length and Checksum will have to be calculated
The Network Layer (3) - IPv4 • The Segment from the Transport Layer will be encapsulated within an IPv4 Datagram • Dominant network layer protocol on the internet • Data-oriented protocol to be used on a packet switched network, such as Ethernet • Note about Checksums: • Begin by first setting the checksum field of the header to zero. • Checksums involve the one’s compliment addition operation. In C take the one’s compliment of a number A by: unsigned int complimentA = ~A
Packet consists of two sections: The parts of each section that you will use in the is lab are: Version: IP packet version (4) Header length (between 5 and 15) Total Length (size of datagram) header and data Identification: uniquely identifying fragments Header checksum Source and Destination address Data IPv4 packet structure
Link Layer (2) – Ethernet Frame • The Datagram from the Network Layer is encapsulated within an Ethernet Frame • The Destination and Source MAC addresses should be set to uniquely identify each DE2 board • Extra credit will be awarded if you perform CRC Checksum, otherwise set it to a value of zero
The Physical Layer (1) • Refers to the network hardware or physical cabling • Provides the means of transmitting raw bits • You can also use a loopback (included with kit) to send packets back your own board
What to demonstrate • Display data payload on the red binary LEDs • Display the number of packets transmitted on the seven segment display • Only packets with the correct source MAC address, IP address, and port address should be displayed
Where does this project lead? • The next Lab (number 4) will put Lab 2 and Lab 3 together • Implement a reliable system
References • The two documents located at DE2_System\Datasheets\Ethernet • DE2_NET project • Information about the Internet protocol stack can be found here: • http://en.wikipedia.org/wiki/Main_Page • http://www.google.com/