This document provides an overview of Asterisk, an open source IP PBX system, comparing it to Opensips and describing some of its key features and functions. Asterisk can be used as a SIP B2BUA, gateway to connect various protocols, and media server for tasks like IVR, music on hold, call parking, and transcoding. It has an easy to learn configuration but only supports IPv4 and UDP transport. The document also covers Asterisk configuration files, dialplan syntax, use of macros and variables, and the AstDB database.
OpenSIPS is an open source SIP proxy, registrar and router. It has many features including acting as a stateless or stateful SIP server, supporting multiple protocols and databases. Its modular architecture allows additional functionality to be added via modules. Core modules provide functions like transaction handling, registration and authentication, while other modules provide presence, ENUM lookup and DoS protection capabilities. OpenSIPS uses a text configuration file and scripting variables and functions to define routing logic and actions.
The document provides an overview of Session Initiation Protocol (SIP) basics including:
- SIP was originally developed for setting up voice and video calls but now supports many other applications.
- SIP uses HTTP-like requests (INVITE, ACK, BYE etc.) to setup and teardown calls between endpoints.
- Key SIP concepts include its distributed design, use of URIs to identify users, and establishment of sessions through transactions and dialogs between user agents.
Kamailio 5.0 allows writing full routing logic in Lua scripting language, opening the door for easy integration with external services and increasing the flexibility of optimizing SIP routing.
Cluecon 2015
Use of external controller applications to fetch the next routes and let Kamailio handle the SIP layer.
Example with Node.js external application and evapi+rtjson modules in Kamailio
OpenSIPS is an open source SIP proxy, registrar and router. It has many features including acting as a stateless or stateful SIP server, supporting multiple protocols and databases. Its modular architecture allows additional functionality to be added via modules. Core modules provide functions like transaction handling, registration and authentication, while other modules provide presence, ENUM lookup and DoS protection capabilities. OpenSIPS uses a text configuration file and scripting variables and functions to define routing logic and actions.
The document provides an overview of Session Initiation Protocol (SIP) basics including:
- SIP was originally developed for setting up voice and video calls but now supports many other applications.
- SIP uses HTTP-like requests (INVITE, ACK, BYE etc.) to setup and teardown calls between endpoints.
- Key SIP concepts include its distributed design, use of URIs to identify users, and establishment of sessions through transactions and dialogs between user agents.
Kamailio 5.0 allows writing full routing logic in Lua scripting language, opening the door for easy integration with external services and increasing the flexibility of optimizing SIP routing.
Cluecon 2015
Use of external controller applications to fetch the next routes and let Kamailio handle the SIP layer.
Example with Node.js external application and evapi+rtjson modules in Kamailio
The document discusses REST and gRPC APIs. It describes REST as a design pattern that uses HTTP and represents resources with JSON or XML. While REST is widely used, it has disadvantages like bloated data payloads and lack of a formal contract. gRPC is introduced as an alternative that is high performance, uses protocol buffers for compact payloads, and has generated client/server code in many languages. The document also describes how grpc-gateway can be used to expose existing gRPC services through a RESTful JSON API via HTTP to support existing clients.
This slides deck presents mobile network protocol interworking idea of which the mobile networking IDs in GTP-U are mapped into IPv6 address with SRv6 concept in stateless. We adopt VPP as the target platform for prototyping the SRv6/GTP-U stateless translation. IETF104 hackathon was the venue where we hacked VPP to implement it.
Slides from Talk by Jan Medved on Yang modeling and its support in OpenDaylight meetup
http://www.meetup.com/OpenDaylight-Silicon-Valley/events/212834752
Yang is a data modeling language that is rapidly being adopted to model Netconf, an IETF standardized network management protocol, as well as to model other data interfaces in OpenDaylight. Join us for the talk by expert Jan Medved to learn about Yang and its usage within OpenDaylight.
The document discusses requirements for network nodes in the hybrid cloud era. It notes that network nodes will need to have common interfaces regardless of location, provide a seamless experience for operators via CLI, and reduce learning costs. It then provides details on Zebra 2.0, an open source network operating stack, including its architecture, modules, scalable configuration system, and support for protocols like SRv6. It demos Zebra 2.0's SRv6 CLI functionality on a Linux dataplane.
This document discusses hardware offloading of VXLAN encapsulation and decapsulation in OVS-DPDK. It proposes representing virtual ports (vPorts) as tables to enable hardware offloading of VXLAN processing. Matching and actions on the vPort table would occur in hardware before decapsulation. Fallback processing using software would be used if full hardware offloading is not possible. The goal is to leverage intelligent NIC capabilities to accelerate VXLAN tunnel processing and improve performance for cloud, NFV, and storage workloads.
Kernel Recipes 2013 - Deciphering OopsiesAnne Nicolas
The Linux kernel is a very complex beast living in millions of households and data centers around the world. Normally, you’re not supposed to notice its presence but when it gets cranky because of something not suiting it, it spits crazy messages called colloquially
oopses and panics.
In this talk, we’re going to try to understand how to read those messages in order to be able to address its complaints so that it can get back to work for us.
LF_OVS_17_OvS manipulation with Go at DigitalOceanLF_OpenvSwitch
The document discusses DigitalOcean's past and present use of Open vSwitch (OvS) for virtual networking. In the past, OvS was manipulated using Perl scripts that built flow strings and called ovs-ofctl. This had issues like lack of testing and non-atomic flow applications. Now, a Go package called ovs is used to programmatically control OvS. It builds flows without string manipulation and applies them atomically. DigitalOcean also uses packages like hvflow and gRPC services hvflowctl and hvflowd to configure OvS flows from network parameters. The future may involve orchestrating OvS directly through OpenFlow to avoid parsing tool outputs and directly applying flows.
Cilium – Kernel Native Security & DDOS Mitigation for Microservices with BPFCynthia Thomas
We have introduced Cilium at DockerCon US 2017 this year. Cilium provides application-aware network connectivity, security, and load-balancing for containers. This talk will follow up on the introduction and deep dive into recent kernel developments that address two fundamental questions: How can I provide application-aware security and routing efficiently without overhead embedded into every service? How can container hosts protect themselves from internal and external DDoS attacks? The solutions include:
kproxy: a kernel-based socket proxy which allows for application-aware routing and security enforcement with minimal overhead.
XDP: A lightning-fast packet processing datapath using BPF. The technology is intended for DDoS mitigation, load-balancing, and forwarding.
This talk will deep dive into these exciting technologies and show how Cilium makes BPF and these kernel features available on Linux for your Docker containers.
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Thomas Graf
Open vSwitch (OVS) has long been a critical component of the Neutron's reference implementation, offering reliable and flexible virtual switching for cloud environments.
Being an early adopter of the OVS technology, Neutron's reference implementation made some compromises to stay within the early, stable featureset OVS exposed. In particular, Security Groups (SG) have been so far implemented by leveraging hybrid Linux Bridging and IPTables, which come at a significant performance overhead. However, thanks to recent developments and ongoing improvements within the OVS community, we are now able to implement feature-complete security groups directly within OVS.
In this talk we will summarize the existing Security Groups implementation in Neutron and compare its performance with the Open vSwitch-only approach. We hope this analysis will form the foundation of future improvements to the Neutron Open vSwitch reference design.
This document provides an overview and summary of Frame Relay and PPP technologies:
- Frame Relay uses DLCI to identify virtual circuits and supports point-to-point, multipoint, and hub-and-spoke topologies. It uses LMI, inverse ARP, and static mappings for L2-L3 address resolution.
- PPP can be used over Frame Relay virtual circuits to provide routing between sites. A virtual-template interface is used to represent each PPP session.
- Authentication for PPP connections can be provided by PAP or CHAP protocols. CHAP provides one-way authentication via a three-way handshake by default.
This document summarizes a large European service provider's plans for deploying IPv6 across its various networks, including residential, L3 MPLS VPN, and public networks. It discusses challenges around operating multivendor networks with interdependent services. The service provider is taking a dual-stack approach, initially exposing only external-facing services to IPv6. Configuration details are provided for residential broadband network elements like Juniper E320/ERX routers, covering topics like interfaces, routing, subscriber addressing, DNS servers, accounting, and LNS configuration. The goal is a transparent rollout that maintains existing IPv4 customer experiences while introducing IPv6 connectivity.
How to set up an IPv6 LAN with Linux. Using IPv6 requires two steps, firstly setting up the local LAN to support IPv6 and secondly connecting to the internet. The exact mechanism to connect to the Internet depends on your ISP. If you have an IPv4 address of IPv6 and whether you trying to access an IPv4 or IPv6 host.
Jumping Bean offers IPv6 training for businesses (http://www.jumpingbean.co.za/ipv6-training)
Linux Native, HTTP Aware Network SecurityThomas Graf
Cilium is open source software for transparently securing the network connectivity between application services deployed using Linux container management platforms like Docker and Kubernetes.
At the foundation of Cilium is a new Linux kernel technology called BPF, which enables the dynamic insertion of powerful security visibility and control logic within Linux itself. Because BPF runs inside the Linux kernel itself, Cilium security policies can be applied and updated without any changes to the application code or container configuration.
Release 4 from a Business Perspective - Peter Kriens, OSGi Alliance Fellow; T...mfrancis
This document discusses OSGi Release 4 from a business perspective. It notes that OSGi addresses opportunities in accessories, appliances, applications, and adapters for networked devices. OSGi provides an execution environment for these devices that allows applications to run across different devices, is not device-constrained, and has relatively low adoption costs. The key opportunities OSGi addresses are enabling new features, protocols, bug fixes, and third-party software for devices after sale.
The document summarizes suggestions for migrating to 4-byte AS numbers in BGP. It discusses upgrading routers in a network in stages, beginning with either border routers, route reflectors, or iBGP clients. While this approach is acceptable, operational issues still need to be considered, such as how to handle AS paths if a border router does not support 4-byte AS numbers. The document provides examples of different upgrading strategies and considerations for various common BGP configurations.
The document discusses Pugs, an implementation of the Perl 6 programming language. It provides background on Pugs, describing it as a Perl 6 compiler, runtime, and test suite. It then discusses various aspects of Pugs such as its hybrid runtime architecture, support for multiple backends including Perl 5 and JavaScript, extensive testing, and open development model.
LF_OVS_17_Enabling hardware acceleration in OVS-DPDK using DPDK Framework.LF_OpenvSwitch
The document discusses enabling hardware acceleration in OVS-DPDK using the DPDK 'Framework'. It describes challenges with hardware acceleration and introduces the DPDK Framework, which provides APIs and components to abstract different hardware features. The Framework is used in OVS-DPDK by initializing it for hardware offload, adding ports to the switch, reporting exception packets, installing flows in software and hardware pipelines. Next steps include publishing Framework APIs, getting early feedback, and implementing OVS-DPDK integration using the Framework.
String Comparison Surprises: Did Postgres lose my data?Jeremy Schneider
Comparisons are fundamental to computing - and comparing strings is not nearly as straightforward as you might think. Come learn about the history, nuance and surprises of “putting words in order” that you never knew existed in computer science, and how that nuance impacts both general programming and SQL programming. Next, walk through a few actual scenarios and demonstrations using PostgreSQL as a user and administrator, which you can re-run yourself later for further study, including one way you could easily corrupt your self-managed PostgreSQL database if you aren't prepared. Finally we’ll dive into an explanation of the surprising behaviors we saw in PostgreSQL, and learn more about user and administrative features PostgreSQL provides related to localized string comparison.
GCC compilers use several stages to compile C/C++ code into executable programs:
1. The preprocessor handles #include, #define, and other preprocessor directives.
2. The front-end parses the code into an abstract syntax tree (AST) and performs type checking and semantic analysis.
3. The middle-end converts the AST into the GIMPLE intermediate representation and performs optimizations like dead code elimination and constant propagation before generating register transfer language (RTL).
4. The back-end selects target-specific instructions, allocates registers, schedules instructions, and outputs assembly code, which is then linked together with other object files by the linker into a final executable.
ASTs are an incredibly powerful tool for understanding and manipulating JavaScript. We'll explore this topic by looking at examples from ESLint, a pluggable static analysis tool, and Browserify, a client-side module bundler. Through these examples we'll see how ASTs can be great for analyzing and even for modifying your JavaScript. This talk should be interesting to anyone that regularly builds apps in JavaScript either on the client-side or on the server-side.
The document discusses REST and gRPC APIs. It describes REST as a design pattern that uses HTTP and represents resources with JSON or XML. While REST is widely used, it has disadvantages like bloated data payloads and lack of a formal contract. gRPC is introduced as an alternative that is high performance, uses protocol buffers for compact payloads, and has generated client/server code in many languages. The document also describes how grpc-gateway can be used to expose existing gRPC services through a RESTful JSON API via HTTP to support existing clients.
This slides deck presents mobile network protocol interworking idea of which the mobile networking IDs in GTP-U are mapped into IPv6 address with SRv6 concept in stateless. We adopt VPP as the target platform for prototyping the SRv6/GTP-U stateless translation. IETF104 hackathon was the venue where we hacked VPP to implement it.
Slides from Talk by Jan Medved on Yang modeling and its support in OpenDaylight meetup
http://www.meetup.com/OpenDaylight-Silicon-Valley/events/212834752
Yang is a data modeling language that is rapidly being adopted to model Netconf, an IETF standardized network management protocol, as well as to model other data interfaces in OpenDaylight. Join us for the talk by expert Jan Medved to learn about Yang and its usage within OpenDaylight.
The document discusses requirements for network nodes in the hybrid cloud era. It notes that network nodes will need to have common interfaces regardless of location, provide a seamless experience for operators via CLI, and reduce learning costs. It then provides details on Zebra 2.0, an open source network operating stack, including its architecture, modules, scalable configuration system, and support for protocols like SRv6. It demos Zebra 2.0's SRv6 CLI functionality on a Linux dataplane.
This document discusses hardware offloading of VXLAN encapsulation and decapsulation in OVS-DPDK. It proposes representing virtual ports (vPorts) as tables to enable hardware offloading of VXLAN processing. Matching and actions on the vPort table would occur in hardware before decapsulation. Fallback processing using software would be used if full hardware offloading is not possible. The goal is to leverage intelligent NIC capabilities to accelerate VXLAN tunnel processing and improve performance for cloud, NFV, and storage workloads.
Kernel Recipes 2013 - Deciphering OopsiesAnne Nicolas
The Linux kernel is a very complex beast living in millions of households and data centers around the world. Normally, you’re not supposed to notice its presence but when it gets cranky because of something not suiting it, it spits crazy messages called colloquially
oopses and panics.
In this talk, we’re going to try to understand how to read those messages in order to be able to address its complaints so that it can get back to work for us.
LF_OVS_17_OvS manipulation with Go at DigitalOceanLF_OpenvSwitch
The document discusses DigitalOcean's past and present use of Open vSwitch (OvS) for virtual networking. In the past, OvS was manipulated using Perl scripts that built flow strings and called ovs-ofctl. This had issues like lack of testing and non-atomic flow applications. Now, a Go package called ovs is used to programmatically control OvS. It builds flows without string manipulation and applies them atomically. DigitalOcean also uses packages like hvflow and gRPC services hvflowctl and hvflowd to configure OvS flows from network parameters. The future may involve orchestrating OvS directly through OpenFlow to avoid parsing tool outputs and directly applying flows.
Cilium – Kernel Native Security & DDOS Mitigation for Microservices with BPFCynthia Thomas
We have introduced Cilium at DockerCon US 2017 this year. Cilium provides application-aware network connectivity, security, and load-balancing for containers. This talk will follow up on the introduction and deep dive into recent kernel developments that address two fundamental questions: How can I provide application-aware security and routing efficiently without overhead embedded into every service? How can container hosts protect themselves from internal and external DDoS attacks? The solutions include:
kproxy: a kernel-based socket proxy which allows for application-aware routing and security enforcement with minimal overhead.
XDP: A lightning-fast packet processing datapath using BPF. The technology is intended for DDoS mitigation, load-balancing, and forwarding.
This talk will deep dive into these exciting technologies and show how Cilium makes BPF and these kernel features available on Linux for your Docker containers.
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Thomas Graf
Open vSwitch (OVS) has long been a critical component of the Neutron's reference implementation, offering reliable and flexible virtual switching for cloud environments.
Being an early adopter of the OVS technology, Neutron's reference implementation made some compromises to stay within the early, stable featureset OVS exposed. In particular, Security Groups (SG) have been so far implemented by leveraging hybrid Linux Bridging and IPTables, which come at a significant performance overhead. However, thanks to recent developments and ongoing improvements within the OVS community, we are now able to implement feature-complete security groups directly within OVS.
In this talk we will summarize the existing Security Groups implementation in Neutron and compare its performance with the Open vSwitch-only approach. We hope this analysis will form the foundation of future improvements to the Neutron Open vSwitch reference design.
This document provides an overview and summary of Frame Relay and PPP technologies:
- Frame Relay uses DLCI to identify virtual circuits and supports point-to-point, multipoint, and hub-and-spoke topologies. It uses LMI, inverse ARP, and static mappings for L2-L3 address resolution.
- PPP can be used over Frame Relay virtual circuits to provide routing between sites. A virtual-template interface is used to represent each PPP session.
- Authentication for PPP connections can be provided by PAP or CHAP protocols. CHAP provides one-way authentication via a three-way handshake by default.
This document summarizes a large European service provider's plans for deploying IPv6 across its various networks, including residential, L3 MPLS VPN, and public networks. It discusses challenges around operating multivendor networks with interdependent services. The service provider is taking a dual-stack approach, initially exposing only external-facing services to IPv6. Configuration details are provided for residential broadband network elements like Juniper E320/ERX routers, covering topics like interfaces, routing, subscriber addressing, DNS servers, accounting, and LNS configuration. The goal is a transparent rollout that maintains existing IPv4 customer experiences while introducing IPv6 connectivity.
How to set up an IPv6 LAN with Linux. Using IPv6 requires two steps, firstly setting up the local LAN to support IPv6 and secondly connecting to the internet. The exact mechanism to connect to the Internet depends on your ISP. If you have an IPv4 address of IPv6 and whether you trying to access an IPv4 or IPv6 host.
Jumping Bean offers IPv6 training for businesses (http://www.jumpingbean.co.za/ipv6-training)
Linux Native, HTTP Aware Network SecurityThomas Graf
Cilium is open source software for transparently securing the network connectivity between application services deployed using Linux container management platforms like Docker and Kubernetes.
At the foundation of Cilium is a new Linux kernel technology called BPF, which enables the dynamic insertion of powerful security visibility and control logic within Linux itself. Because BPF runs inside the Linux kernel itself, Cilium security policies can be applied and updated without any changes to the application code or container configuration.
Release 4 from a Business Perspective - Peter Kriens, OSGi Alliance Fellow; T...mfrancis
This document discusses OSGi Release 4 from a business perspective. It notes that OSGi addresses opportunities in accessories, appliances, applications, and adapters for networked devices. OSGi provides an execution environment for these devices that allows applications to run across different devices, is not device-constrained, and has relatively low adoption costs. The key opportunities OSGi addresses are enabling new features, protocols, bug fixes, and third-party software for devices after sale.
The document summarizes suggestions for migrating to 4-byte AS numbers in BGP. It discusses upgrading routers in a network in stages, beginning with either border routers, route reflectors, or iBGP clients. While this approach is acceptable, operational issues still need to be considered, such as how to handle AS paths if a border router does not support 4-byte AS numbers. The document provides examples of different upgrading strategies and considerations for various common BGP configurations.
The document discusses Pugs, an implementation of the Perl 6 programming language. It provides background on Pugs, describing it as a Perl 6 compiler, runtime, and test suite. It then discusses various aspects of Pugs such as its hybrid runtime architecture, support for multiple backends including Perl 5 and JavaScript, extensive testing, and open development model.
LF_OVS_17_Enabling hardware acceleration in OVS-DPDK using DPDK Framework.LF_OpenvSwitch
The document discusses enabling hardware acceleration in OVS-DPDK using the DPDK 'Framework'. It describes challenges with hardware acceleration and introduces the DPDK Framework, which provides APIs and components to abstract different hardware features. The Framework is used in OVS-DPDK by initializing it for hardware offload, adding ports to the switch, reporting exception packets, installing flows in software and hardware pipelines. Next steps include publishing Framework APIs, getting early feedback, and implementing OVS-DPDK integration using the Framework.
String Comparison Surprises: Did Postgres lose my data?Jeremy Schneider
Comparisons are fundamental to computing - and comparing strings is not nearly as straightforward as you might think. Come learn about the history, nuance and surprises of “putting words in order” that you never knew existed in computer science, and how that nuance impacts both general programming and SQL programming. Next, walk through a few actual scenarios and demonstrations using PostgreSQL as a user and administrator, which you can re-run yourself later for further study, including one way you could easily corrupt your self-managed PostgreSQL database if you aren't prepared. Finally we’ll dive into an explanation of the surprising behaviors we saw in PostgreSQL, and learn more about user and administrative features PostgreSQL provides related to localized string comparison.
GCC compilers use several stages to compile C/C++ code into executable programs:
1. The preprocessor handles #include, #define, and other preprocessor directives.
2. The front-end parses the code into an abstract syntax tree (AST) and performs type checking and semantic analysis.
3. The middle-end converts the AST into the GIMPLE intermediate representation and performs optimizations like dead code elimination and constant propagation before generating register transfer language (RTL).
4. The back-end selects target-specific instructions, allocates registers, schedules instructions, and outputs assembly code, which is then linked together with other object files by the linker into a final executable.
ASTs are an incredibly powerful tool for understanding and manipulating JavaScript. We'll explore this topic by looking at examples from ESLint, a pluggable static analysis tool, and Browserify, a client-side module bundler. Through these examples we'll see how ASTs can be great for analyzing and even for modifying your JavaScript. This talk should be interesting to anyone that regularly builds apps in JavaScript either on the client-side or on the server-side.
- Xslate is a template engine for Perl5 that is written in C using XS. It aims to be fast, safe from XSS attacks, and support multiple template syntaxes including Kolon and TTerse.
- Xslate templates are first preprocessed, parsed into an AST, compiled into bytecode, and then executed by a virtual machine for high performance. Automatic HTML escaping also helps prevent XSS issues.
- Future goals include adding features like loop controls and context controls, as well as exploring more template syntaxes and better integrations with web frameworks.
This document provides an overview of Asynchronous I/O (ASIO) and how it can be used for network programming in C++. It discusses ASIO's implementation of the Proactor pattern and how this allows for asynchronous and non-blocking I/O. It then demonstrates how to build a simple TCP echo server using ASIO that handles multiple concurrent connections through the use of connection objects and an I/O service. It also discusses how ASIO can be used beyond just networking for other asynchronous tasks like signal handling, timers, and stream I/O.
The document discusses Intel Threading Building Blocks (TBB), a C++ template library for parallel programming. TBB provides features like parallel_for to simplify parallelizing loops across CPU cores without managing threads directly. It uses generic programming principles and provides common parallel algorithms, concurrent data structures, and synchronization primitives to make parallel programming more accessible. TBB aims to improve both correctness through avoiding race conditions and performance through efficient hardware utilization.
The document discusses Intel Threading Building Blocks (TBB), a C++ template library for parallel programming. TBB provides features like parallel_for to simplify parallelizing loops across CPU cores without needing expertise in threads. It uses generic programming principles and provides common parallel algorithms, concurrent data structures, and task scheduling to make parallel programming more accessible and scalable. The example shows converting a serial velocity update loop to parallel using TBB.
These slides were presented on a Software Craftsmanship meetup @ EPAM Hungary on 26 January, 2017.
During the talk we went through the evolution of structured data analytics in Spark. We compared the RDD, the SparkSQL (DataFrame) and the DataSet APIs. We used the very latest and greatest Spark 2.1, released on December 28, went through code samples and dove deep into Spark optimizations. The code samples can be downloaded from here: https://github.com/symat/spark-api-comparison
This document provides an overview of Groovy, a dynamic language for the Java Virtual Machine. It discusses Groovy's features like properties, closures, and integration with Java. The document outlines what's new in Groovy 1.5, including Java 5 features like annotations and generics. It also covers how to integrate Groovy in applications using mechanisms like the GroovyShell and GroovyClassLoader. The presentation aims to help attendees learn about Groovy and how they can use it in their projects.
This document discusses bypassing address space layout randomization (ASLR) protections to execute shellcode on the stack. It begins with an overview of stack-based buffer overflows and modern protections like non-executable stacks. It then describes using return-oriented programming (ROP) techniques like ret2libc to hijack control flow and call library functions like system() to spawn a shell. Specifically, it outlines overwriting a return address to call mprotect() to make the stack executable, then jumping to shellcode on the stack. The document provides example exploit code and steps to find needed addresses in memory.
The presentation shows major features of the new C++ standard (language and the library). The full list of new things is very broad, so I've categorized them to be easier to understand.
The document discusses bypassing address space layout randomization (ASLR) on Linux. It begins with a refresher on buffer overflows and modern protections like ASLR and DEP. It then explores finding fixed addresses in the .text section that are not subject to ASLR to redirect execution, such as calls and jumps to registers. The document shows searching binaries for these instruction sequences and checking register values to leverage them for exploiting a vulnerable program while ASLR is enabled.
Next Generation Indexes For Big Data Engineering (ODSC East 2018)Daniel Lemire
Maximizing performance in data engineering is a daunting challenge. We present some of our work on designing faster indexes, with a particular emphasis on compressed indexes. Some of our prior work includes (1) Roaring indexes which are part of multiple big-data systems such as Spark, Hive, Druid, Atlas, Pinot, Kylin, (2) EWAH indexes are part of Git (GitHub) and included in major Linux distributions.
We will present ongoing and future work on how we can process data faster while supporting the diverse systems found in the cloud (with upcoming ARM processors) and under multiple programming languages (e.g., Java, C++, Go, Python). We seek to minimize shared resources (e.g., RAM) while exploiting algorithms designed for the single-instruction-multiple-data (SIMD) instructions available on commodity processors. Our end goal is to process billions of records per second per core.
The talk will be aimed at programmers who want to better understand the performance characteristics of current big-data systems as well as their evolution. The following specific topics will be addressed:
1. The various types of indexes and their performance characteristics and trade-offs: hashing, sorted arrays, bitsets and so forth.
2. Index and table compression techniques: binary packing, patched coding, dictionary coding, frame-of-reference.
The document provides an overview of various design patterns including the Strategy Pattern, Template Method Pattern, Component Configuration Pattern, Reflection Pattern, Pipe and Filter Pattern, Factory Pattern, Observer Pattern, and Chain of Responsibility Pattern. It discusses the core principles and intents of each pattern, provides examples of how they can be implemented in code, and notes the relationships between different patterns.
The document discusses optimizing code and data for CPU caches through various techniques like improving data locality, reducing unnecessary memory accesses, and reusing cached data. It covers optimizing code layout, data structures, prefetching, and addressing issues like aliasing.
The document discusses various techniques for optimizing memory usage and cache performance in code. It begins by justifying the need for memory optimization given trends in CPU and memory speeds. It then provides an overview of memory hierarchies and caches. The rest of the document discusses specific techniques for optimizing data structures, prefetching, layout of data in memory, reducing aliasing, and other strategies to improve cache utilization and performance.
Presentation with a brief history of C, C++ and their ancestors along with an introduction to latest version C++11 and futures such as C++17. The presentation covers applications that use C++, C++11 compilers such as LLVM/Clang, some of the new language features in C++11 and C++17 and examples of modern idioms such as the new form compressions, initializer lists, lambdas, compile time type identification, improved memory management and improved standard library (threads, math, random, chrono, etc). (less == more) || (more == more)
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...Positive Hack Days
Ведущий: Асука Накадзима (Asuka Nakajima)
Практика повторного использования исходного кода позволяет сократить расходы на разработку программного обеспечения. Тем не менее, если в оригинальном исходном коде кроется уязвимость, она будет перенесена и в новое приложение. Докладчик расскажет о необычном способе обнаружения «наследуемых» уязвимостей в бинарных файлах без необходимости обращаться к исходному коду или символьным файлам.
Nyílt forráskódú VideoKonferencia mindenkinek! (A GÉANT4 JRA4 T4 és T5 eredmé...Mihály Mészáros
Az előadásomban összefoglalom a nemrég befejeződött GÉANT4 projekt második fázisának JointResearchActivity4(JRA4) Task4(T4) és Task5(T5) Valósidejű kommunikációval foglalkozó munkacsoportjainak eredményeit, a Task5 által készített két pilot szolgáltatást, és az ezek mögött álló nyílt forrású fejlesztéseket. Bemutatom a GÉANT Meet, és a TURN pilot szolgáltatásokat és az ezeket lehetővé tevő coTURN és Multiparty Meeting nyílt forrású projekteket. Megvizsgáljuk a multiparty meeting architektúráját és azt hogy miként is épül fel ezekből a komponensekből egy "egyszerű" videokonferencia szolgáltatás. A fenti videokonferencia megoldás minden komponense nyílt forráskódú, így egy átlátható transzparens szolgáltatást tesz lehetővé, ami nem követ. (Ami sajnos a mai világban egyre inkább érték). A nyílt forrás előnye hogy ezen szolgáltatások reprodukálhatóak és szabadon integrálhatóak, továbbfejleszthetőek, így válhat potenciálisan mindenki videokonferencia rendszerévé.
Az előadás célja hogy bemutassa a valós idejű kommunikáció szabványosításának jelenét és jövőjét. Szeretném áttekinteni a W3C WebRTC munkacsoportjának és az IETF rtcweb és tram munkacsoportjának legújabb kommunikációs szabványait és ezek releváns újdonságait. Rövid történelmi visszatekintés után bemutatom a W3C WebRTC technológia jelenét, hogyan jutottunk el lassan az 1.0-ig. Milyen változások várhatóak a következő generációjában amelynek a műhely neve jelenleg WebRTC-NV (Next Version).
This document outlines the agenda for a 4-day SIP tutorial. The first day covers basic and advanced SIP call flows, services, RFCs and dialplans. The second day focuses on the OpenSIPS proxy including routing, modules and hands-on configuration. The third day is about Asterisk including theory, configuration, extensions and troubleshooting. The fourth day may cover SIP and NAT, interworking with ISDN/POTS, network environments and backups.
The document discusses various implementations of WebRTC technologies like STUN/TURN, MCU/SFU, gateways, and recording/streaming. It summarizes the status of standards for STUN/TURN with OAuth and efforts to standardize them in the W3C. It also outlines open source projects for WebRTC components and areas that need more work, such as refactoring code for a STUN/TURN PoC service and improving collaboration.
This document summarizes the agenda for the 5th TF-WebRTC meeting hosted by NORDUnet Conference 2016 in Helsinki. The key points are:
1) The meeting will bring together technical experts from browser vendors, universities, and network research and education networks to discuss the latest developments in WebRTC standardization, implementations, and services.
2) Presentations will cover topics like the WebRTC 1.0 release, CERN's integration of Vidyo with WebRTC, FCCN's WebRTC web app demos, a T4 tender for WebRTC conferencing, GN4-2 activities, and UNINETT's work on WebRTC peer-to-peer developments.
3
OAuth and STUN, TURN in WebRTC context RFC7635Mihály Mészáros
This document discusses using OAuth authentication with STUN/TURN servers in the context of WebRTC. It provides an overview of RFC 7635 and outlines the step-by-step process for a client to request an access token from an authentication server and for the STUN/TURN server to validate that token. The goal is to explain how STUN/TURN servers can leverage OAuth to authenticate clients in a WebRTC environment.
This document summarizes experiences from a proof of concept (PoC) federated STUN/TURN service. Key points include:
- The PoC used STUN, TURN, and ICE to enable real-time communications across firewalls and NATs.
- It explored different authentication methods like long-term credentials, REST APIs, and OAuth.
- The distributed service was deployed across multiple research networks in Europe.
- Lessons learned from the PoC included designing for security, using open source components, and supporting multiple authentication standards.
It gives an overview about the WebRTC Identity and Security model, and our in-place SAML based Identity Federations. It gives detailed description about the combination and integration possibilities and difficulties. Demonstrating the integration with an example web application.
https://youtu.be/aeXaWDNU_sg
This document provides an agenda and overview for a WebRTC workshop. The summary includes:
- The workshop will cover the history, technology, and potential applications of WebRTC, including an overview of the API and standards, demonstrations of real-world services, and a discussion of whether WebRTC is ready for adoption.
- WebRTC allows real-time communication like voice, video, and data sharing directly in web browsers using peer-to-peer connections while abstracting away complexity through the JavaScript API.
- The document discusses topics like ICE, STUN/TURN, security, coding standards, and the ongoing debate around mandatory video codecs.
The document provides an overview of WebRTC, including:
- WebRTC allows real-time communication via voice, video and data sharing directly in web browsers.
- It has been standardized by the IETF RTCWEB working group and W3C.
- Key components include the JavaScript API, ICE for firewall/NAT traversal, DTLS-SRTP for encryption, and codecs like Opus and VP8.
- WebRTC is implemented in browsers like Chrome and Firefox but compatibility and which video codec to mandate are still issues.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
OpenID AuthZEN Interop Read Out - AuthorizationDavid Brossard
During Identiverse 2024 and EIC 2024, members of the OpenID AuthZEN WG got together and demoed their authorization endpoints conforming to the AuthZEN API
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxSitimaJohn
Ocean Lotus cyber threat actors represent a sophisticated, persistent, and politically motivated group that poses a significant risk to organizations and individuals in the Southeast Asian region. Their continuous evolution and adaptability underscore the need for robust cybersecurity measures and international cooperation to identify and mitigate the threats posed by such advanced persistent threat groups.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceIndexBug
Imagine a world where machines not only perform tasks but also learn, adapt, and make decisions. This is the promise of Artificial Intelligence (AI), a technology that's not just enhancing our lives but revolutionizing entire industries.
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
Project Management Semester Long Project - Acuityjpupo2018
Acuity is an innovative learning app designed to transform the way you engage with knowledge. Powered by AI technology, Acuity takes complex topics and distills them into concise, interactive summaries that are easy to read & understand. Whether you're exploring the depths of quantum mechanics or seeking insight into historical events, Acuity provides the key information you need without the burden of lengthy texts.
2. Slide 2 Asterisk Basics (SIP)
OpenSIPS vs Asterisk from SIP point of view
⬤ Opensips
⬛ Proxy, no media handling
⬛ IPv6 and Ipv4 and multicast
⬛ Transport protocols
⬜ sctp,tcp,udp,tls
⬛ RFC3263
⬜ NAPTR, SRV
⬛ Very felxible so you should know
very well what you are doing, so
need more knowledge.
⬛ Commitred to strictly follow the
IETF SIP RFC-s
⬛ Sip register binding AoR to many
SIPURI
⬛ Forking, or sequntial sip
forwarding
⬤ Asterisk
⬛ B2BUA,Media server
⬛ Ipv4 only
⬛ Transport prtocols
⬜ 1.4 only udp!
⬜ 1.6 udp,tcp,tls
⬛ Easy to learn and use
⬛ Lazy and quick and dirty SIP
implementation
⬛ Trancoding and MCU features
⬛ sip register implementation can
only handle AoR <=>ip:port
binding
⬛ MoH is activated if there is
established call with only single
direction media.
⬛ No SRTP
3. Slide 3 Asterisk Basics (SIP)
Few from asterisk functions
⬤ SIP B2BUA
⬤ GW
⬛ SIP,ISDN/POTS,H.323,MGCP,XMPP etc.
⬤ Media Server
⬛ IVR
⬛ MoH
⬛ Call Park
⬛ Call pickup
⬛ Voicemail
⬛ Monitor (Lawful interception etc.)
⬛ Transcoding
⬛ MCU
⬛ Call Queue
4. Slide 4 Asterisk Basics (SIP)
History
⬤ Goal:Bridging the gap between Traditional and Network
Telephony
⬤ Asterisk is an IP PBX wit interface to other systems and
protols (IAX,SIP,H.323,XMPP,MGCP,SCCP,ISDN/POTS,etc.)
⬤ Motivation
⬛ Price
⬛ Flexibility
⬛ Security
⬛ Interoperability
⬤ The community led by Mark Spencer of Digium
⬤ Zapta Jim Dixon
⬛ CPU has enough power to software can replace DSP in some cases.
⬤ Digium PC POTS/ISDN cards
5. Slide 5 Asterisk Basics (SIP)
DAHDI
⬤ The old name: ZAPTEL
⬤ Drivers for Digium PC cards
⬛ ISDN
⬜ Primary rate ISDN
⬜ Basic Rate ISDN
⬛ POTS analog
⬜ FXO/FXS
⬛ DSP for media transcoding
⬛ DSP for echo cancellation
⬤ Asterisk Timer
⬛ ztdummy
⬛ dahdi_dummy
⬛ At least meetme application is depending on it.
6. Slide 6 Asterisk Basics (SIP)
Versions
⬤ 1.2.x
⬛ obsoleted
⬤ 1.4.x
⬛ Old stable
⬛ 1.4.29
⬜ Branch Release Date: 2006-12-23
⬜ Security only fixes: 2010-12-23
⬜ End of Life (EOL): 2011-12-23
⬤ 1.6.x
⬛ devel
⬤ 1.8.x
⬛ LTS Long Term Support
⬛ Release date: TBD (estimated Q3 2010)
⬤ Roadmap
⬛ https://issues.asterisk.org/roadmap_page.php
7. Slide 7 Asterisk Basics (SIP)
Architecture
⬤ Architecture
⬛ Core
⬛ Modules
⬜ app
⬜ funct
⬜ format
⬜ chan
⬜ res
⬜ bridge
⬛ API
9. Slide 9 Asterisk Basics (SIP)
Config templating (sip.conf)
[basic-options](!) ; a template
dtmfmode=rfc2833
context=from-office
type=friend
[natted-phone](!,basic-options) ; another template inheriting basic-options
nat=yes
canreinvite=no
host=dynamic
[public-phone](!,basic-options) ; another template inheriting basic-options
nat=no
canreinvite=yes
[my-codecs](!) ; a template for my preferred codecs
disallow=all
allow=ilbc
allow=g729
allow=gsm
allow=g723
allow=ulaw
[ulaw-phone](!) ; and another one for ulaw-only
disallow=all
allow=ulaw
; and finally instantiate a few phones
[2133](natted-phone,my-codecs)
secret = peekaboo
[2134](natted-phone,ulaw-phone)
secret = not_very_secret
[2136](public-phone,ulaw-phone)
secret = not_very_secret_either
10. Slide 10 Asterisk Basics (SIP)
Logger/Asterisk CLI
⬤ Logger
⬛ logger.conf
⬜ [general]
⬜ [logfiles]
console => notice,warning,error
messages => notice,warning,error
⬛ Type
⬜ debug
⬜ verbose
⬜ notice
⬜ warning
⬜ error
⬤ asterisk -r
⬛ Asterisk -vvvvvvr
increase verbosity level to 6
⬤ asterisk -rx "logger reload"
⬤ Auto-complete <tab>, <?>
⬤ Commands
⬛ Core commands
⬜ debug verosity level
- Core set debug
- Core set verbosity
⬜ codecs
- core show codecs
- core show translation
⬜ Help
- core show applications
- core show function
⬜ Core
- core show uptime
- core show settings
⬜ etc.
11. Slide 11 Asterisk Basics (SIP)
General dialplan
⬤ Static or dynamic (extensions.conf)
⬤ Dialplan reload from CLI
⬤ Dialplan broken into section called “context” for example
context “blabla” is seems like:
[blabla]
⬤ “,” and “|” as separator char. When Asterisk parses the
dialplan, it converts any commas in the application arguments
to pipes.
⬤ Extensions (number and/or letters)
exten => 3rt45
exten => _361X.
⬤ Applications
⬛ For example application: Dial(),WaitExten(),Goto(),Macro(),
NoOp(),Set(), etc.
12. Slide 12 Asterisk Basics (SIP)
Dialplan syntax
⬤ Pattern prefixed by “_”
⬛ X
any digit from 0-9
⬛ Z
any digit from 1-9
⬛ N
any digit from 2-9
⬛ [1235-9]
any digit in the brackets (in this
example, 1,2,3,5,6,7,8,9)
⬛ .
wildcard, matches anything remaining
(e.g. _9011. matches anything starting
with 9011 excluding 9011 itself)
⬛ !
wildcard, causes the matching process
to complete as soon as it can
unambiguously determine that no
other matches are possible
⬤ Priority
⬛ 1
integer
⬛ n
next previous+1
regardless of whether the previous priority was
associated with the current extension or not
⬛ s
same
⬛ + int
integer n+2 or s+2
⬛ () label/alias
jump to this with goto()
⬤ Most important standard extensions
⬛ s
start: no extension
⬛ t
timeout
⬛ h
hangup: clean up the call
⬛ i
invalid: unknown extension
13. Slide 13 Asterisk Basics (SIP)
dialplan / extensions example
[default]
exten => 6245,hint,SIP/Grandstream1&SIP/Xlite1(Joe Schmoe) ; Channel hints for presence
exten => 6245,1,Dial(SIP/Grandstream1,20,rt) ; permit transfer
exten => 6245,n(dial),Dial(${HINT},20,rtT) ; Use hint as listed
exten => 6245,n,Voicemail(6245,u) ; Voicemail (unavailable)
exten => 6245,s+1,Hangup ; s+1, same as n
exten => 6245,dial+101,Voicemail(6245,b) ; Voicemail (busy)
exten => 6361,1,Dial(IAX2/JaneDoe,,rm) ; ring without time limit
exten => 6389,1,Dial(MGCP/aaln/1@192.168.0.14)
include => context1
[context1]
exten => 6391,1,Dial(JINGLE/asterisk@digium.com/mogorman@astjab.org);Dial via jingle
exten => 6390,1,Dial(JINGLE/caller/callee) ; Dial via jingle using labels
14. Slide 14 Asterisk Basics (SIP)
Dialplan syntax
⬤ Special Contexts
⬛ general
general settings like: static, writeprotect, autofallthrough, priorityjumping
⬛ globals
global variables definition and initiation
⬛ “regcontext” see sip.conf
⬤ example
[context]
exten => someexten,{priority|label{+|-}offset}[(alias)],application(arg1,arg2,...)
⬤ Contexts contain several lines, one for each step of each extension. One may include
another context in the current one as well, optionally with a date and time. Included
contexts are included in the order they are listed. Switches may also be included within a
context. The order of matching within a context is always exact extensions, pattern match
extensions, includes, and switches. Includes are always processed depth-first. So for
example, if you would like a switch "A" to match before context "B", simply put switch "A" in
an included context "C", where "C" is included in your original context before "B".
⬤ Location and mapping
⬛ ENUM E164 Number to URI mapping
⬛ DuNDi Distributed Universal Number Discovery
16. Slide 16 Asterisk Basics (SIP)
Operators and function
⬤ boolean / logical
⬛ expr1 | expr2
⬛ expr1 & expr2
⬛ !expr1
⬤ comparison
⬛ expr1 = expr2
⬛ expr1 != expr2
⬛ expr1 < expr2
⬛ expr1 > expr2
⬛ expr1 <= expr2
⬛ expr1 >= expr2
⬤ Arithmetic
⬛ expr1 + expr2
⬛ expr1 - expr2
⬛ - expr (unary negation operator)
⬛ expr1 * expr2
⬛ expr1 / expr2
⬛ expr1 % expr2
⬤ Regular expression
⬛ expr1 : regexp2
The regular expression is anchored to the beginning
of the string with an implicit '^'.
⬛ expr1 =~ expr2
The match is not anchored to the beginning of the
string.
⬤ Conditional operator
⬛ expr1 ? expr2 :: expr3
⬤ Operator Precedence
1. Parentheses: (, )
2. Unary operators !, -
3. Regular expression comparison: :, =~
4. Multiplicative arithmetic operators: *, /, %
5. Additive arithmetic operators: +, -
6. Comparison operators: =, !=, <, >, <=, >=
7. Logical operators: |, &
8. Conditional operator: ? :
⬤ Function
⬛ FUNCTION_NAME(argument)
⬛ ${FUNCTION_NAME($
{FUNCTION_NAME(argument)})}
17. Slide 17 Asterisk Basics (SIP)
Macro
⬤ Example
[macro-xyz]
exten => s,1,Dial(${ARG1},${ARG2},t)
⬛ Macro definition is similar to context
⬛ xyz is the name of the macro
⬛ Can triggered from any context with
[default]
exten => 6601,1,Macro(xyz,SIP/1000,10)
⬛ Where SIP/100 is ARG1 and 10 is Arg2
⬤ In a macro context, extra channel variables are available.
⬛ ${ARG1}: The first argument passed to the macro
⬛ ${ARG2}: The second argument passed to the macro (and so on)
⬛ ${MACRO_CONTEXT}: The context of the extension that triggered this macro
⬛ ${MACRO_EXTEN}: The extension that triggered this macro
⬛ ${MACRO_OFFSET}: Set by a macro to influence the priority where execution will
continue after exiting the macro
⬛ ${MACRO_PRIORITY}: The priority in the extension where this macro was triggered
18. Slide 18 Asterisk Basics (SIP)
AstDB database
⬤ Berkley DB version 1
⬤ familly, key, value
⬤ Used to store for example SIP registration
⬤ Functions what can be used from dialplan to manipulate data in
this database
⬛ DB(family/key)
Read from or write to the Asterisk database.
⬛ DB_DELETE(family/key)
Return a value from the database and delete it.
⬛ DB_EXISTS(family/key)
Check to see if a key exists in the Asterisk database.
⬤ Example
exten => 456,1,Set(DB(test/count)=1)
exten => 456,n,Set(COUNT=${DB(test/count)})
exten => 456,n,SayNumber(${COUNT})
19. Slide 19 Asterisk Basics (SIP)
Asterisk as B2BUA vs. reINVITE direct media
21. Slide 21 Asterisk Basics (SIP)
sip.conf
⬤ [general]
⬛ Fax pass trough T.38
⬛ Outgoing registration
⬛ Sip domain
⬛ Realtime
⬛ NAT
⬛ Media
⬛ Subscribe
⬛ Session-timer
⬜ Check call keep-alive sending sip messages
⬛ RTP timer
⬜ Check call keep-alive using rtp timout
⬛ SIP timer
⬤ [authentication]
⬛ Realm,user,pass to auth outgoing
requests it requested by UAS or by
proxy.
⬤ Sip devices
⬛ [devicename]
⬜ type
- User
» search incoming message with the
From: header user part
- Peer
» Search incoming message peer ip
addr
- Friend= User and Peer
» search incoming message with the
From: header user part and after if
no match found then search by src
ip.
⬜ canreinvite
- bridged media
- direct media
⬜ qualify
- SIP Option “ping”
⬜ dtmfmode
⬜ host
22. Slide 22 Asterisk Basics (SIP)
voicemail.conf
⬤ imap or disk storage
⬛ Default file storage /var/spool/asterisk/voicemail/
⬜ Voicemail files are inside this folder are grouped by context/voicemailbox
⬤ Sections
⬛ [general]
⬜ format
⬜ Email options
⬛ [zonemessages]
⬜ Time zone greetings and date/time format
⬛ Voicemail contexts
⬜ [default]
- Format: mailbox => password,name[,email[,pager_email[,options]]]
- Eample:
4200 => 9855,Mark Spencer,markster@linux-support.net,mypager@digium.com,attach=no|
serveremail=myaddy@digium.com|tz=central|maxmsg=10
⬜ [other]
⬜ [etc]
25. Slide 25 Asterisk Basics (SIP)
CDR
⬤ calldate: datetime of the started call
⬤ clid: Caller*ID with text (80 characters)
⬤ src: Caller*ID number (string, 80 characters)
⬤ dst: Destination extension (string, 80 characters)
⬤ dcontext: Destination context (string, 80 characters)
⬤ channel: Channel used (80 characters)
⬤ dstchannel: Destination channel if appropriate (80 characters)
⬤ lastapp: Last application if appropriate (80 characters)
⬤ lastdata: Last application data (arguments) (80 characters)
⬤ duration: Total time in system, in seconds (integer), from dial to hangup
⬤ billsec: Total time call is up, in seconds (integer), from answer to hangup
⬤ disposition: What happened to the call: ANSWERED, NO ANSWER, BUSY, FAILED
⬤ amaflags: What flags to use: see amaflags: DOCUMENTATION, BILLING, IGNORE etc.
⬤ accountcode: What account number to use: Asterisk billing account, (string, 20 characters)
⬤ uniqueid: Unique Channel Identifier (32 characters)
(In some cases, uniqueid is appended)
⬤ user field: A user-defined field, maximum 255 characters
26. Slide 26 Asterisk Basics (SIP)
Accounting / CDR
⬤ CDR
⬛ asterisk-stat
⬤ Billing
⬤ Backends
⬛ CSV
⬛ custom(file)
⬛ Manager interface
⬛ ODBC
⬛ PostgreSQL
⬛ radius
⬛ sqlite
⬛ Tds
⬛ MySQL
⬜ not installed by default
⬜ Can be installed from asterisk addons
packagae
⬤ MySQL
CREATE TABLE `cdr` (
`calldate` datetime NOT NULL default '0000-00-
00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`userfield` varchar(255) NOT NULL default ''
);