140 likes | 341 Views
DOCSIS 3.0 Channel Bonding Scheduling Algorithms and Issues: Design Figures. Document ‘Design Documents.ppt’ last updated: 11/13/2008. Principal Investigators: J. Martin, M. Westall School of Computing Clemson University jim.martin /westall@cs.clemson.edu. Students: Biswajit Mazumder
E N D
DOCSIS 3.0 Channel Bonding Scheduling Algorithms and Issues: Design Figures Document ‘Design Documents.ppt’ last updated: 11/13/2008 Principal Investigators: J. Martin, M. Westall School of Computing Clemson University jim.martin/westall@cs.clemson.edu Students: Biswajit Mazumder School of Computing Clemson University bmazumd@g.clemson.edu
V.9 Design • Much of the PHY is located in the MAC
Mac netif_ MacDocsis recvHandler() recv() MacDocsisCMTS RecvFrame() SendFrame() CmtsSendHandler() MacDocsisCM RecvFrame() -> handle_indata() ->handle_inmgmt () sendDown() -> sendData () RxPktDocsisTimer mhTxPkt_[numDChan] RxPktDocsisTimer mhRxPkt_[numUChan] channel_muxer Check Slide 5 Phy Channels
Handler MacDocsisTimer constructor(mac) Packet *e; start() *mac stop() busy_ handle() paused_ busy() intr (Event) expire() stime, rtime Event rxintr_, txintr_; RxPktDocsisTimermhRxPkt_ handle() TxPktDocsisTimer mhTxPkt_ handle() CmtsTxPktDocsisTimer mhCmtsTxPkt_ handle() CmTxPktDocsisTimermhCmTxPkt_ handle()
NsObject (C-TCL interaction) BiConnector SendUp() downtarget_ SendDown() uptarget_
T1 – T0 = Channel Propagation Delay T2 – T0 (CMTS TX time) = T3 – T1 (CM RX time) = Time to get ‘n’ number of bits onto a network with fixed bandwidth CMTS sends data DownStream T0 T1 T2 T3 Start with packet MacDocsisBase: recv() sendDown() CMTS: RateControl() - > sendFrame() Start timer for T2 Downtarget_->recv() Each Node: Phy::recv() MacDocsisCM::recv() MacDocsisCM::sendUp() ->start Rx timer Start Timer For T4 mhRxPkt_[channelNum] Packet copied in DocsisTimer object CMTS: MacDocsisCMTS::sendHandler() -> set TX state Idle Free Packet RxPktDocsisTimer Handler: MacDocsisBase::recvHandler() -> consume Pkt MacDocsisCM::recvFrame() MacDocsisCM::handle_indata() MacDocsisCM::handle_inmgmt() Free Packet Phy::recv() WiredPhy::sendDown() Channel::recv() Channel::sendUp() Packet Copied each Node s.schedule Event e Free main Packet
channel_muxer Methods: Variables: constructor: channel_muxer() Event rxintr_; channel_muxer(channelNumber) int channelNumber_; init(); getCollisionState(); int collision; setCollisionState(); clearCollisionState(); getTxState(); MacState rx_state_; setTxStateSEND(); setTxStateIDLE(); getRxState(); MacState rx_state_; setRxStateRECV(); setRxStateIDLE(); getDirection(); int ch_direction; setDirectionUS(); setDirectionDS(); setDirectionDUPLEX(); getNumberCollisions(); double numberCollisions;
Channel Transmission states when CMTS sends Data Downstream T0 T1 T2 T3 MacDocsisCMTS: sendFrame() -> TxState to MAC_SEND CMTS: MacDocsisCMTS: sendHandler() ->TxState to MAC_IDLE Channel Transmission states when CM sends Data Upstream T0 T1 T2 T3 MacDocsisCM: State Machine -> TxState to MAC_SEND MacDocsisCMTS: SendUp -> RxState to MAC_RECV MacDocsisCM: CmSndHandler() ->TxState to MAC_IDLE MacDocsisCMTS: RecvHandler -> RxState to MAC_IDLE
RxDocsisTimer mhRxPkt_ [channelNum].start(); CMTS NODE sendHandler() Reset TX State, Restart if another packet in Q CmtsTxDocsisTimer mhCmtsTxPkt_ [channelNum].start(); CM NODE recvHandler() -> recvFrame -> handle_indata() / handle_inmgmt() Reset RX State CMTS NODE sendDown() -> SendFrame() -> downtarget_->recv() Set TX State CM NODE recv() -> sendUp() Set RX State CHANNEL MUXER DOWNSTREAM PHY recv() -> sendDown() -> downtarget_->recv() CHANNEL recv() -> sendUp() UPSTREAM PHY recv() -> uptarget_->recv() Schedule the Channel Propagation Delay Event
T1 – T0 = Channel Propagation Delay T2 – T0 (CM TX time) = T3 – T1 (CMTS RX time) = Time to get ‘n’ number of bits onto a network with fixed bandwidth CM sends data UpStream T0 T1 T2 T3 Start with packet MacDocsisBase:recv() CM:sendDown() -> SendData() / Sendreq() / decide_frag() / send_frag_data()-> downtarget->recv() Each Node: Phy::recv() MacDocsisCMTS::recv() MacDocsisCMTS::sendUp() -> start Rx timer Start Timer For T4 mhRxPkt_[channelNum] Packet copied in DocsisTimer object CMTS: MacDocsisCM::CmSndHandler() -> set TX state Idle Free Packet Phy::recv() WiredPhy::sendDown() Channel::recv() Channel::sendUp() Packet Copied each Node s.schedule Event e Free main Packet RxPktDocsisTimer Handler: MacDocsisBase::recvHandler() -> consume Pkt MacDocsisCMTS::RecvFrame() MacDocsisCMTS::Handleindata() MacDocsisCMTS::Handleinmgmt() Free Packet
V1.0 Design • As much of the PHY as possible is located in the medium
CM NODE recvHandler()->recvFrame -> handle_indata() / handle_inmgmt() CMTS NODE sendHandler() :Reset TX State, Restart if another packet in Q CmtsTxDocsisTimer startCmtsTxDocsistimer() RxDocsisTimer startRxDocsistimer(); CMTS NODE Choose available Channel sendDown() -> SendFrame() -> myMedium->transmit() CM NODE recv() -> sendUp() Set RX State MEDIUM transmit() -> transmitDown() -> myChannel[].sendUp() MEDIUM transmitUp() mySendDownNodeList CHANNELABSTRACTION CHANNELABSTRACTION CHANNELABSTRACTION mySendUpNodeList NODE LIST DATA myMac ChTxPktDocsisTimer CmtsTxPktDocsisTimer CmTxPktDocsisTimer RxPktDocsisTimer prev next prev next prev next Channel Prop.Delay ChTxPktDocsistimer
Create the cable network. Make-CableNet $nodeList $UchanProperties $DChanProperties $delay $lltype $NumDChan $NumUChan Add nodes to the created network $lan addNode $nodelist $bw $delay $llType $ifqType $macType $phyType $mactrace $ifqLen Add the number of DS and US channels & no of nodes $medium_ setup-channels $numDSCh $numUSCh $numNodes Create the medium splitobject (C++/TCL) $ set medium_ [new Medium] Send the medium object to the Lan Interface set nif [new LanIface $src $self $medium . . .] Setup “medium” command for each mac_ to medium_ $mac_ medium $medium_ Configure mySendUpList for DS channels if {$macType_ == "Mac/DocsisCMTS"} { $medium_ add-node-to-ds-channel-up $mac_ 1 } Configure mySendUpList for DS channels else { $medium_ add-node-to-us-channel –up $mac_ 0 } Configure mySendDownList for DS channels if {$macType_ == "Mac/DocsisCMTS"} { $medium_ add-node-to-ds-channel $mac_ } Configure mySendDownList for US channels else { $medium_ add-node-to-us-channel $mac_ } Figure: Step by step setup of basic Medium layer with corresponding TCL code snippet