[Ns-developers] IEEE80211s development in NS-3
kirillano
kirillano at yandex.ru
Mon Dec 15 02:29:11 PST 2008
Hi,
In this mail I have included schemes of class hierarchy and more detailed structure of L2Routing.
First, I would like to tell about class hierarchy.
Two additional base classes for NetDevice should be added:
1. L2RoutingNetDevice - is a real NetDevice, where a MAC should be attached to, and the following additions should be implemented:
1a. virtual bool Send (Ptr<Packet> packet, const Address& destination, const Address& retransmitter, u_int16_t protocolNumber)
Doing this is really necessary only for wifi case, because all addresses needed for implementing mesh exist in normal MAC-frame, but doing this in all other cases, as I think, should simplify a realization of protocol.
1b. Added one more receive callback: Callback<bool, Ptr<NetDevice>,Ptr<Packet>,const Address&, const Address&>
The same situation (like in Send method)is in Receive method: we have to know sometimes both source address and address of last retansmitter (by this way, for example, FLAME fills its routing table)
1c. Add request/response methods as shown in L2Routing diagram
Request primitive should consist of list of destinations to be resolved and list of initial metrics (the list of addresses rather tan address is needed for HWMP, because it has limitations of sending Requests, and it can make a multiple-destination-request). Response primitives should contain the same list, but with retransmitter addresses. In both this classes should be a field, contains parameters, which are specified in each protocol (for example, list of retransmitters, if needed).
2. L2RoutingVirtualNetDevie - is a virtual net device, and each L2Routing protocol has its own L2RoutingVirtualNetDevice class (rather than setting a routing protocol like it is made in IPv4).
The following methods should be added:
2a. Method virtual bool SetInterfaces(std::list<L2RoutingNetDevice> interfaces)
2b. Method virtual bool SetRoutingTable(Ptr<L2RoutingTable>); if we want to share L2Routng table between two protocols, the routing table must be set from network-simulation script (in IPv4 routing table is stored in 'kernel', L2routing table is a part of net device private data, so, if we want to share routing table - this method is needed)
L2RoutingTable base class should contain the following:
- Destination
- Retransmitter (next-hop)
- Previous-hop
- Interface ID
- Metric (double or u_int32 value)
- Time when created (Time)
3. Now I would like to say some words about realization of HWMP (maybe this scheme should be a template for other L2-routing protocols) (represented in L2Routing diagram)
The following classes should be implemented in HWMP:
3a. Routing queue - should store packets, which can not be sent at the moment
3b. Protocol's MgtPacketManager - which is attached to real net device and stores all timeouts for sending requests, retry counters, etc.
Should be like a bridge between L2Routing and real net device: takes a request form L2routing and transforms it to request, which contains a list of addresses (HWMP-adaptated), and takes a response (list of addresses(destinations), metrics and retransmitters)and gives a L2routngTableEntry to L2RoutingProtocol.
3c. Routing table (see above)
3d. Routing protocol - should be an internal part of L2RoutingVirtualNetDevice and it has an interface similar to IPv4 routing protocol
The main purpose of making base classes (like net device) is to make the most structured model of L2 routing for all possible protocols, so I would like make as many virtual methods, as possible - so any ideas are welcome.
Best regards,
Kirill.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: class_hierarchy.png
Type: image/x-png
Size: 20724 bytes
Desc: not available
Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20081215/df3df36f/class_hierarchy-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: L2Routing.png
Type: image/x-png
Size: 133245 bytes
Desc: not available
Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20081215/df3df36f/L2Routing-0001.bin
More information about the Ns-developers
mailing list