What is Extreme NIST Switch?
Next generation research platform for MPLS, optical, traffic
engineering research
- Builds on FreeBSD NIST Switch (1000+ downloads to date)
Gives researchers "layer 2.5" access toolkit to protocol
stacks, domains, network events
Open source, modular, meets "desperate senior criterion"
- That is, installation and usage should be straightforward
enough that it can be drafted for part of that
"less than two weeks to go" senior project.
- (Though getting started a little sooner is always
advisable!)
Obligatory Architecture Box Diagram
Platform Requirements
Linux based(!)
Network administration support
New hardware support
"Extremely" modular
Use standard interfaces where possible
SMP safe, asynchronous event support
Kernel Ingredients - Basic structure
Pre-existing FreeBSD/partial Linux NIST Switch
- + well-understood
- + fairly modular
- + good selectivity
- - wrong platform
- - functionality limited
- - some unnecessary complexities
- - not modular enough!
Kernel Ingredients - Label table + packet interception
NIST Net packet selection code and library
- + based on original NIST Switch code
- + SMP safe, 2.4.xx compatible
- + performance improvements
- + broad protocol coverage
- + "extreme" modularity
- - needs label stuff added back (done differently)
- - same for multicast
Kernel Ingredients - API
"MPLS Linux" project (sourceforge via UWisc)
- + good proc and socket interfaces
- + works with LDP implementation
- + fairly active effort
Kernel Ingredients - Classification and Queueing
Linux advanced routing/queueing code
- + modular, in some ways nicer setup than ALTQ on BSD
- + a supported part of Linux kernel development
- + includes CBQ discipline, RSVP+some DiffServ classifiers
Kernel Ingredients - Hardware
OptiStar OC12, OC48 cards and drivers
- + Linux support, maintained by Lucent
- + fairly cheap, good functionality
SysKonnect Gigabit Ethernet
- + Linux support, maintained by SysKonnect
- + Good functionality (oversize packets+trains)
User-level Ingredients - Label distribution
Nortel/UWisc (CR)LDP implementation
- + works with sourceforge/UWisc MPLS Linux interfaces
Outside versions of OSPF-TE and RSVP-TE
- + done for FreeBSD NIST Switch originally
- + "eager for Linux version"
- - IETF may be heading elsewhere
- - haven't seen the code yet!
User-level Ingredients - Other
Linux DiffServ implementation
- + exists, kernel code part of base in 2.4
- - not sure of status of user-level code for 2.4
User-ported NIST Switch RSVP
Development Sequencing - Phase I
Base platform:
Linux 2.4.x, where x=2 currently
Ethernet and POS (OC12) only for now
- ATM code exists (from FreeBSD NIST Switch and MPLS Linux), but not much interest locally
Basic label layer (April)
Label-enabled interfaces appear as net_devices (layered over real net_devices)
Labeled input goes to new packet_type
- Unlabeled input grabbed via "extreme modularity" hacks from NIST Net
On output side, grab control of fib (forwarding info base) tables
- Build on Linux policy routing code, insert ourselves via packet classification
Label table, APIs (May)
Basic label table from NIST Net with labels added back
Classifier APIs provide principal API for table manipulation
- Add/delete with all new features
Also provide routing socket interfaces
- At least for features required by CRLDP, RSVP implementations
- Some "minor conflicts" to be resolved
Scheduler (June)
Exactly analogous to FreeBSD version
Based on CBQ scheduler
- Class determined by label
Also investigate supporting other schedulers
- As needed for potential DiffServ support
User-level support (July)
"Ought to work" for existing stuff (CRLDP, our old RSVP)
- When it doesn't, see what has to give
- Revisit socket-based API merge
Add sourceforge/UWisc proc interfaces, admin tools
- Look at extending for our features
Look at standard Linux admin tools
- Some DiffServ code may be usable
Device-level stuff (July)
Link state and error monitoring code exists in isolated state
- Some other work on standard (Ethernet) diagnostic interfaces may be usable
Need to provide callout facilities for device events
- Easy enough to hack, but something standard would be nice
Phase I Summary
Currently ongoing, completion during summer
Basic label-switching platform with an interesting set of hooks
- Basic MPLS, (CR)LDP, basic labeled RSVP, labeled CBQ, GigE and POS label support, some device event support
- Other user-level code possible (RSVP-TE, OSPF-TE)
Phase II Thoughts
Fall timeframe
Local/LTS traffic engineering/fast restoration experiments
- Event distribution protocols, TE algorithms
Monet [local research network] integration
- Phase I provides only basic admin hooks
- Work with LTS to define Monet NMCS interfaces
Testbed establishment and deployment
Comments? Questions? Let us know at
nistswitch-dev@antd.nist.gov.
[
Home Page]
[Installing NIST Switch]
[Using NIST Switch]
[NIST Switch FAQ]
[Mark Carson's home page]