Development of E-learning and VoIP over IPv6

Download Report

Transcript Development of E-learning and VoIP over IPv6

Development of E-learning
and VoIP over IPv6
Ren-Hung Hwang
Jenq-Muh Hsu
National Chung Cheng University
Taiwan, R.O.C.
Outline




Native IPv6 Network in CCU
Porting e-Learning to IPv6
Porting Open H.323 to IPv6
Future Works
IPv6 Development in CCU
6BONE
Tunnel
NBEN
HiNet
Native
IPv6
Tunnel
Tunnel
CS
CCU
Services

DNS


WWW



Apache 1.3.24
Apache-1.3.24-v6-20020405.diff.gz
FTP



Bind-9.2.1
Proftpd1.21
Proftpd-1.2.1-v6-20010303.patch.gz
News



inn-2.3.2
inn-2.3.2-v6-20010807.diff.gz
tin-1.5.12.tar.bz2
Mobile IPv6

Mobile IPv6 for Linux (MIPL)
e-Learning System for IPv6

A SCORM-compliant e-Learning system
ported to IPv6 networks
Wireless Campus – m-Learning

Objectives: e-Learning activities on following
platforms



Tablet PC
PDA (Pocket PC/WebPAD)
Issues




Develop a pen-based discussion tool: e-Board
Develop a PDA-based Walkie-Talkie
Enable SCORM API on handheld devices (limited
function of Javascript)
Enable streaming media on handheld devices
VoIP for IPv6

Objective: VoIP over IPv6 Network



PWLib and OpenH323 – OpenSource VoIP
Softwares
Porting PWLib and OpenH323 to IPv6
Porting H.323 Components to IPv6
H.323 System Architecture
H.323
Terminal
H.323
Gatekeeper
GSTN
V.70
H.324
Terminal Terminal
H.323 MCU
H.323
Gateway
H.323
Terminal
Guaranteed
QOS LAN
Speech
Terminal
H.322
Terminal
N-ISDN
Speech
Terminal
H.323
Terminal
Components:
Terminal,
Gateway,
MCU,
Answer Machine
B-ISDN
H.320
Terminal
H.321
Terminal
H.323 Protocol Stack
OpenH323 Applications

SimpleH323



GNOMEMeeting



Multiple Control Unit
OpenAM


H.323 Terminal (EndPoint)
Video Phone/Video Conferencing
OpenMCU


H.323 Terminal (EndPoint)
Command-Line/Voice Phone
Answering Machine
OpenGK

GateKeeper
VoIPv6 Porting Components (Conti.)
OpenAM
OpenMCU
SimpleH323
GnomeMeeting
OpenH323 (Porting to IPv6)
PWLIB (Porting to IPv6)
Answer
Machine
Multiple Control
Unit
H323 Terminal
H323 Terminal
(command line)
(support UI)
PWLib Classes

PWLib

PSocket

PIPSocket


PTCPSocket
PIPDatagramSocket
 PUDSocket
iostream
PObject
PChannel
PSocket
PIPSocket
PTCPSocket
PIPDatagramSocket
PUDPSocket
PWLib Classes Modified

PSocket


PIPSocket


A socket that uses the TCP transport on the Internet Protocol
PIPDatagramSocket


Describes a type of socket that will communicate using the
Internet Protocol
PTCPSocket


A network communications channel
Internet Protocol Datagram Socket class
PUDPSocket

A socket channel that uses the UDP transport on the Internet
Protocol
Modification Details
class PIPCacheData(src/ptlib/common/sockets.cxx)
const PString & GetHostName_v6() const { return hostname; }
const PIPSocket::Address6 & GetHostAddress_v6() const { return address6; }
class PHostByName(src/ptlib/common/sockets.cxx)
BOOL GetHostName_v6(const PString & name, PString & hostname);
BOOL GetHostAddress_v6(const PString & name, PIPSocket::Address6 & address);
PIPCacheData * GetHost_v6(const PString & name);
class PHostByAddr(src/ptlib/common/sockets.cxx)
BOOL GetHostName_v6(const PIPSocket::Address6 & addr, PString & hostname);
BOOL GetHostAddress_v6(const PIPSocket::Address6 & addr,
PIPSocket::Address6 & address);
BOOL GetHostAliases_v6(const PIPSocket::Address6 & addr,
PStringArray & aliases);
PIPCacheData * GetHost_v6(const PIPSocket::Address6 & addr);
Modification Details
class PIPSocket(src/ptlib/common/sockets.cxx、src/ptlib/unix/socket.cxx)
Class Address6
virtual PString GetName_v6() const
virtual BOOL Connect_v6()
virtual BOOL Listen_v6()
static PString GetHostName_v6()
static BOOL GetHostAddress_v6()
virtual BOOL GetLocalAddress_v6()
virtual BOOL GetPeerAddress_v6()
PString GetLocalHostName_v6()
PString GetPeerHostName_v6()
static BOOL GetInterfaceTable_v6()
class PSocket(src/ptlib/common/sockets.cxx)
virtual BOOL OpenSocket_v6() = 0;
Modification Details
class PTCPSocket(src/ptlib/common/sockets.cxx)
virtual BOOL Listen_v6()
virtual BOOL Accept_v6()
virtual BOOL OpenSocket_v6()
class PUDPSocket(src/ptlib/common/sockets.cxx)
BOOL Connect_v6()
void SetSendAddress_v6()
void GetSendAddress_v6()
void GetLastReceiveAddress_v6()
virtual BOOL OpenSocket_v6()
OpenH323 Classes
PObject
H323Connection
MyH323Connect
-OpenAudioChannel(BOOL, unsigned, H323AudioCodec & codec);
-OnAnswerCall(const PString &, const H323SignalPDU &, H323SignalPDU &);
-OnStartLogicalChannel(H323Channel & channel);
-StartRecording();
PThread
ConsoleThread
-Main();
H323EndPoint
PProcess
MyH323EndPoint
-Initialise(PConfigArgs & args);
-CreateConnection(unsigned callReference)
OpenAM
PChannel
+Main();
+RecordFile(PArgList & args);
+PlayFile(PArgList & args);
-GetCodec(const PString & codecname);
-GetDevice(const PString & device);
PObject
PIndircetChannel
PObject
PCM_OGMChannel
-AdjustFrame(void * buffer, PINDEX amount);
-CreateSilenceFrame(PINDEX amount);
-QueueFile(const PString & cmd);
-Synchronise(PINDEX amount);
-Read(void * buffer, PINDEX amount);
G7231_File_Codec
-GetFrameLen(int val);
-Read(BYTE * buffer, unsigned & length, RTP_DataFrame &);
-Write(const BYTE * buffer, unsigned length, const RTP_DataFrame & rtp, unsigned & frames);
H323Capability
PCM_RecordFile
-Write(const void * buf, PINDEX len);
G7231_OGMChannel
-CreateSilenceFrame(PINDEX amount);
-Synchronise(PINDEX amount);
H323RealTimeCapability
H323AudioCapability
G7231_RecordFile
-WriteFrame(const void * buf, PINDEX len);
G7231_File_Capability
-.........
OpenH323 Libraries Architecture
H323Ca pa bilities
H323_xxx_Ca pa bility
H323EndPoint
MakeCall();
InternalMak
eCall();
H323Connection
H225CallThread
H323Transport
H323Transport
Address
H245NegLogicalChannels
H245NegLogicalChannel
H245Transport
Thread
H323_xxx_Channel
RTP_Session
H323Logical
ChannelThread
H323Transport
TCP
H323_xxx_Codec
H323TransportUDP
PIPSocket
PIPSocket
PTCPSocket
PTCPSocket
PChannel
PUDPSocket_
DataSocket
PUDPSocket_
ControlSocket
SoundCard / File /
Others
OpenH323 Classes Modified






H323TransportAddress
H323Transport
H323ListenerTCP
H323TransportIP
H323TransportTCP
H323TransportUDP
Changing the IP Addressing Format
in OpenH323

The Original IP Address Format for IPv4



The Modified IP Address Format for IPv6



ip$xxx.xxx.xxx.xxx:oooo
ip$IPv4 Address:Port Number
ip$[xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]oooo
ip$[IPv6 Address]Port Number
Change the delimitation between IP address
and port number

:  []
OpenH323 Applications IPv6 Porting

Ported Components





SimpleH323
GNOMEMeeting
OpenMCU
OpenAM
In Progress

OpenGK
Snapshot of the GnomeMeeting for
IPv6
IPv6 Address
Conclusion


Experimental IPv6 network in CCU
IPv6 applications



e-Learning, m-Learning
VoIP
Future works



IPv6/v4 Transition
IPv6 multicast
IPv6 QoS (broadband, WLAN, MANET)