atm signaling project
play

ATM Signaling Project ARL Washington University Dakang Wu - PDF document

ATM Signaling Project ARL Washington University Dakang Wu dakang@arl.wustl.edu Hui Shen shen@arl.wustl.edu Jeyashankher Ramamirtham jai@arl.wustl.edu Outline ATM signaling project overview Project current status Demo setting


  1. ATM Signaling Project ARL Washington University Dakang Wu dakang@arl.wustl.edu Hui Shen shen@arl.wustl.edu Jeyashankher Ramamirtham jai@arl.wustl.edu Outline • ATM signaling project overview • Project current status • Demo setting • How to use signaling on Linux (Hui) • How to use signaling with SEAN (Jai) • Future work 1

  2. Project Overview • Started August 1999 • Team members – Dakang Wu – Hui Shen – Jeyashankher Ramamirtham – Jon Turner and John DeHart • Use existing software as much as possible – Current UNI/NNI is built on NRL’s SEAN/PROUST signaling software simulation package – Linux-ATM Project Overview App w\ API kernel UNI NNI UNI NNI PNNI UNI APP SSCOP NNI AAL5 API lib Sigd UNI kernel 2

  3. Signaling Software and GBNSC Jammer NCMO socket socket GSMP Daarder a c d Mux w sd eer a c d sd 23 34 Daarder w sd eer LoMux qw 23 12 sd 23 34 VPVC Mux qw 23 12 sigl PNNel Inel VXT ATriver MP PRoust GBNSC Signaling Control connection Channels ATM Driver … (0, 5) (0, 5) (0, 18) (0, 18) Project Status We will soon release: • PNNI v.01 – It can talk to either Linux ATM or SEAN – P-to-p only – Simple admission control • GBNSC with GSMP support • SEAN (NRL version of UNI) • Linux 2.4.x ☺ Of course, it’s not our mission 3

  4. Demo Setting Zev (Linux w\ ENI) Deak (NetBSD) PNNI PNNI GBNSC GBNSC Demand3 (BSD) Demand5 (BSD) 1 1 UNI 4 3 3 2 UNI 6 Demand1 (Linux, APIC) WUGS1 WUGS2 UNI Future Work • Work on p-to-mp • More sophisticated admission control • Support more QOS modules • Ilmi, Arp support • More application examples • Integrated with Multi-Service Router 4

  5. ATM on Linux Features • Support UNI 3.0 and 3.1 unicast signaling, Partially support UNI 4.0 • Limited support for point-to-multipoint Only works as a single leaf of a p2mp tree • Support various ATM NICs Check http://icawww1.epfl.ch/linux-atm/info.html • Support IP over ATM, LANE, ANS, etc. • Now included in Linux 2.4.x ATM Subsystem Information in Linux Check status in /proc/net/atm • devices: lists all active ATM devices Interface# Type MAC Address Statistics • File for individual ATM device Named as: <type>:<number> (e.g. eni:0) • pvc & svc List all PVC and SVC sockets and their information 5

  6. Linux ATM API – Functions API Name Server Client socket(domain, type, prot) Yes Yes getsockopt(s, level, opt, &optval, optlen) Yes Yes setsockopt(s, level, opt, &optval, optlen) Yes Yes txt2atm(buf, &addr, size, flag) Yes Yes bind(s, &addr, addrlen) Yes Opt listen(s, backlog) Yes accept(s, &addr, &addrlen) Yes connect(s, &addr, addrlen) Yes read/write(s, &buf, bufsize) Yes Yes close(s) Yes Yes Linux ATM API – Connection setup Server Side Client Side bind/ connect accept socket socket 0,5 0,5 listen UNI ATM cloud ATM Connection 6

  7. ATM API – Connection control summary • Connection preparation socket creation ( socket ) set QOS parameter settings with setsockopt set SAP parameter settings with setsockopt ATM API – Connection control summary (cont’d) • Server side • Client side Set local address Optional: Address & binding local side Binding of local side ( bind ) ( bind ) Set remote address SAP registration ( listen ) Connection setup Connection acceptance ( connect ) ( accept ) 7

  8. ATM API – Connection control summary (cont’d) • Data exchange Sending and receiving ( read , write ,…) • Connection teardown Closing ( close ) Linux ATM API – Code example Common Part: (Server & Client) /*create socket*/ s=socket(PF_ATMSVC,SOCK_DGRAM,ATM_AAL5) /*set QoS */ qos.txtp.traffic_class=ATM_CBR; qos.txtp.min_pcr=MIN_PCR; qos.txtp.max_pcr=MAX_PCR; qos.txtp.max_sdu=SDU; qos.txtp.max_cdv=CDV; qos.aal=ATM_AAL5; qos.rxtp.traffic_class=ATM_NONE; (same as qos.txtp) setsocketopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) /*set SAP*/ sap.blli[0].l2_proto = ATM_L2_ISO8802; sap.blli[0].l3_proto = ATM_L3_NONE; setsockopt(s, SOL_ATM, SO_ATMSAP,&sap,sizeof(sap)); 8

  9. Linux ATM API – Code example Different Parts /*set address */ text2atm(txt, &addr, sizeof(addr),T2A_SVC|T2A_NAME); addr.sas_family=AF_ATMSVC; addr.sas_addr.prv[19]=10; Server Side Client Side to_addr.sas_family=AF_ATMSVC bind(s,&addr, sizeof(addr)); ; listen(s, 3); addr.sas_addr.prv[19]=10; m=accept(s,&conn,&connlen); connect(s,&to_addr, rc=read(m, buf, 256); sizeof(to_addr)); write(s, buf, amt); Note: You may also need to bind address in sender side. ATM Address Management Name service • Use local configure file: /etc/hosts.atm – Format: numeric_address host name – Numeric address: Now we use 13-byte net addr 6-byte MAC addr 0x00 – Manage address Use command atmaddr 2) Use ilmid, automatic name configuration, ANS needed 9

  10. Documentation Some very useful websites: • ARL signaling group homepage http://www.arl.wustl.edu/arl/projects/sig/ • ATM on Linux homepage: http://icawww1.epfl.ch/linux-atm • Linux ATM API doc ftp://icaftp.epfl.ch/pub/linux/atm/api/ • ATM on Linux mailing list majordome@lrc.di.epfl.ch SEAN ( Signaling Entity for ATM Networks ) • Developed by Navy Research Laboratory (NRL) • Originally, developed for FORE systems and simulation • UNI 4.0 implementation • User space implementation • Extensible environment (C++) • Compiles and runs on SunOS 5.x (Solaris), SunOS 4.x, Linux 2.x and NetBSD 1.3.x • We have tested on NetBSD 1.4.1 and Linux 2.4.0 10

  11. Features • Features that work – Point-to-point calls – Signaling of QoS parameters • Features that SEAN claims to support – Point to multipoint calls – Leaf initiated join – ATM anycast – ABR signaling for point to point calls SEAN architecture • Live signaling daemon ( SD ) • Application programming interface ( API ) • Driver • Address registration daemon ( ILMID ) • Simulated signaling daemon ( SIM ) 11

  12. SEAN architecture (contd.) Application Application Application Application API API API API Signaling daemon Signaling daemon Driver Driver ATM cloud Signaling path Data path The live signaling daemon ( SD ) Implemented as a 6 layer stack • driver interface • QSAAL layer (SSCOP and SSCF) – reliable transport for signaling messages • signaling layer (Q.2931, Q.2971 and UNI-4.0) • service registration layer – application specification of call profiles to be matched with incoming calls • call control layer • API interface layer – IPC for signaling sessions between SD and applications 12

  13. Application Programming Interface (API) • Based on a Call-back model, i.e. call-back functions are used to report network events to the application • Call-back functions are atomic operations • Five kinds of API objects: – ATM_Interface – ATM_Service – ATM_Call – Controller – ATM_Leaf • ATM_Service and ATM_Call objects have ATM_Attributes corresponding to UNI Information Elements that can be set by the application. Controller Call-backs • The various call-backs – Service_Active(ATM_Service) – Service_Inactive(ATM_Service) – Call_Active(ATM_Call) – Call_Inactive(ATM_Call) – Incoming_Call(ATM_Service) – Incoming_Data(ATM_Call) – PeriodicCallback() – Incoming_LIJ(ATM_Call) – Incoming_Call_From_Root(Leaf_Initiated_ATM_Call) 13

  14. API (contd.) Application Controller Controller Incoming_ Incoming_ Outgoing_ ATM_Service ATM_Service ATM_Call ATM_Call ATM_Call ATM_Interface ATM_Interface Client/Server example Connection Establishment ATM_Service.Register() Outgoing_ATM_Call.Establish() UNI: Setup ( ) v e i c t A _ c e v i r e S Incoming_Call() Server application Signaling daemon Signaling daemon Client application Incoming_ATM _Call.Accept() UNI:Connect Call_Active() k A c _ c t n e n o C I : N U ( ) e i v c t A _ a l l C Network 14

  15. Client/Server example Data transfer & Tear down ATM_Call.SendData() Data Server application Incoming_Data() Signaling daemon Signaling daemon Client application + ATM_Call.RecvData() ATM_Call.Teardown() UNI: Release Call_Inactive() UNI: Release comp Call_Inactive() ATM_Service.Deregister() Service_Inactive() Network Skeleton code Service registration Server side Client side ServerController::Boot() { ATM_Service *service; … // Set service attributes service->Set_aal_5(…); service->Set_called_party_num(..); … // Register service service->Register(); … } ServerController::Service_Active() { // The service has been registered } 15

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend