# Assignment 2

The assignment is due Friday, March 27, 5 pm EDT, to be submitted via CourseWorks.

Some of the questions below are research questions, where you are asked to find information about a particular issue. You may use the Engineering Library, any text books you have, one of the paper from the class readings, or the web to come up with answers. Be sure to cite your sources. Generally, a paragraph or two should be sufficient to answer the question. There is no need to write a tutorial.

## Problems

1. (a) What is the output power in dBm of a 1200 W microwave oven? (b) What is the signal-to-noise ratio when the input signal is 50 μW and the noise level is 60 μW?
2. Compute the number of cross points for a single matrix switch with N=128 inputs, as well as a Clos switch with the smallest number of total crosspoints.
3. Find examples of specifications for current SRAMs and TCAM, in terms of access speed and memory size. For a single-chip design, could you come up with a design that provides 512,000 routing table entries? What are the advantages and drawbacks of your design?
4. We can use vinyl records as a retro data storage medium, soon to be sold by Urban Outfitters. Compute the theoretical two-sided storage capacity of a 22-minute per-side record. Assume that such a record has a signal-to-noise ratio of 50 dB and a frequency range of 20 Hz to 20 kHz. (Early personal computers such as the TRS-80 and PET used cassette tapes for data storage, so this is not completely fanciful.)
5. Estimate the relative symmetry of Internet traffic using netstat. Retrieve a number of web pages and compare the incoming vs. outgoing packet and byte counts. Can you draw conclusions about the packet sizes? Perform the same test when running an interactive video or audio session (e.g., Skype, FaceTime or a SIP client).
6. Compute the approximate cost of purchasing Internet transit services, measured in dollars per GB, as incurred by an ISP or large enterprise or university. Compare to the "retail" cost using typical (median) household usage. You will need to make a variety of assumptions, e.g., on costs, so please name your sources and justify your assumptions.
7. Using netalyzr, determine what kind of Internet you have access to, either from your home/dorm room, your mobile device (this only works on Android) or an on-campus wired computer, using the classification found in the AIS slides. Include characteristics such as IPv6, provider-indepdent addresses, NAT, and port blocking.
8. "Ping" two servers (e.g., at university) both close by (e.g., on the east coast) and in another country and compare the round trip time measured to how long it takes for light to traverse the geographic distance from New York to that location. What fraction of the round trip time is due to the speed of light?
9. For this problem, we will take a look at quadrature amplitude modulation, used for some cable modems and VDSL. Generate a sample rectangular constellation in I and Q space for 16-QAM and justify your answer. For the "southernmost" (most negative) code point closest to the Q axis, show the wave form that would be generated during that symbol. Show both the I and Q waveforms, as well as the sum.
10. Programming problem (DNS): Some of the protocols that we will be discussing will use specialized DNS records. To allow you to become more familiar with those newer uses of DNS, you are asked to program a simple "stub resolver", in either C/C++, Java, or Python.

For C/C++, you can use adns and the GNU web site. RULI is another option; a synchronous library supporting SRV is a modified version of resparse.

Java libraries include dnsjava and the Java Naming and Directory Interface (JNDI).

You should build an application that allows to retrieve DNS records from a commandline tool, specified as `adns type domain`, where type is the resource record (RR) type and domain is the domain name to be resolved. You only need to support A, CNAME and SRV (RFC 2782) records, but can support any additional types. You can use the `_sip._udp.columbia.edu` DNS SRV and `www.cs.columbia.edu` CNAME records for testing.

Capture the DNS exchange using Ethereal or tcpdump. You can use an output format similar to host, but feel free to create your own layout.

Include any libraries; provide a Makefile.