1 / 13

DOCSIS 3.0 Channel Bonding Scheduling Algorithms and Issues: Design Figures

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

arvin
Download Presentation

DOCSIS 3.0 Channel Bonding Scheduling Algorithms and Issues: Design Figures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. V.9 Design • Much of the PHY is located in the MAC

  3. 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

  4. 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()

  5. NsObject (C-TCL interaction) BiConnector SendUp() downtarget_ SendDown() uptarget_

  6. 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

  7. 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;

  8. 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

  9. 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

  10. 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

  11. V1.0 Design • As much of the PHY as possible is located in the medium

  12. 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

  13. 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

More Related