This is a group project. Groups were formed pseudo-randomly, based on the 2nd last digit of your student ID: You can contact members of your group by emailing them using addresses of the form firstname.lastname@example.org where z1234567 is a student ID.
Groups: grp A: 0 (5172006 5190207 5204406 3489800), grp B: 1 (5202217 5174012 5171015 3493012), grp C: 2 (5151029 5211927 5172526 5147429 5121821), grp D: 3,4 (5196135 5141132 5141143 5098445); grp E 5,6 (5166654 5148153 5140553 5093452 5187865); grp F 7,8 (5140576 5112475 5175586 5037384 5149980)
For the TELE9751 programming project you will write a module for a software-based switch. Software-based switching can be used with a PC and multiple interface cards to implement a low-performance switch, or can support processor virtualization, as in the following article: Look, Ma, No Hardware: Cisco's Virtual Switch
The module will work in the framework of the software switch developed by Dan Iuliano as a 4th year thesis. His thesis is available here (Fig. "c" on p. 44 gives a good overview of how the software modules interact) and his software that shows the framework and gives examples of a tree classifier, Banyan fabric, and round robin scheduler is available here
You can use just about any language you like to write your module, except not Matlab since an aim of this is to develop a module that is similar to what could be used in a production software switch, and nobody wants to have to include a large simulation environment with each installation of their switch. The language must support sockets in order to work with other modules of the software switch.
The framework has some existing bugs:
|Type||Sample||Group allocation||Others that you could implement|
|Classifier||Tree||Group A (0): Trie with one 5b stride then 2b strides
Group B (1): Hashing (write your own hashing function rather than using a library)
|Trie, Bridge that populates classifier by learning from traffic|
|Fabric||Banyan||Group C (2): Batcher-Banyan (you can achieve 90% of the marks by using a normal software sorting algorithm rather than simulating a batcher sorting network)
Group D (3,4): Crossbar with knockout
|Clos (circuit-switched emphasis may require rethinking classifier), Crossbar with scheduler (PIM or iSLIP)|
|Scheduler||Round Robin||Group E (5,6): Weighted Round Robin
Group F (7,8): Weighted Fair Queueing
|The types of components below are more basic => you might be asked to implement 2 of them|
|Generator||Take real packet traces in pcap format and play out in simulation|
You should attempt to measure the (simulated) performance of your module, and show trade-offs between dimensions of the module and its performance (e.g. for a buffering module: between the size of a buffer and its packet loss rate).
All members of a group will receive the same mark, since the marking is of the component, rather than the process within your group that led to the component. Each group should, internally, distribute the workload in an equitable manner. If you have difficulties with the internal operation of your group, then first try to resolve them within your group, and if that fails, contact the lecturer.