SlideShare a Scribd company logo
SF-TAP Tutorial
Flow Abstractor ver.
National Institute of Information and Communications Technology
Yuuki Takano
What Flow Abstractor Do?
2
NW I/F
HTTP I/F
TLS I/F
Flow Abstractor
Flow
Classifier TLS Analyzer
HTTP Analyzer
HTTP Proxy
TCP and UDP
Handler
filter and
classifier
rule
L7 Loopback I/F
DB
Forensic
IDS/IPS
etc...
Application
Protocol Analyzer
etc...TCP Default I/F
UDP Default I/F
Analyzer PlaneAbstractor Plane
Flow
Identifier
SF-TAP Cell
IP Packet
Defragmenter
Flow Classification
TCP Reassemble
IP Defragmentation
You can easily develop
application level analyzers.
Operating Systems,
on which Flow Abstractor can Run
Linux
*BSD
MacOS X
3
Required Libraries
Dependencies
Boost C++ Library
libpcap
libevent (2.0 or later)
RE2
yaml-cpp
Other Tools
cmake
git
C++11 Compiler (gcc or clang)
4
Install Required Libraries
(Assuming Ubuntu 15.04)
5
$ sudo apt-get install build-essential cmake 
git libevent-dev libboost-all-dev libpcap-dev 
libre2-dev libyaml-cpp-dev
Download Source Code
and Compile It
6
$ git clone https://github.com/SF-TAP/flow-
abstractor.git
$ cd flow-abstractor
$ cmake -DCMAKE_BUILD_TYPE=Release CMakeLists.txt
$ make
Configuration File (cont.)
7
# global configuration
global:
home: /tmp/sf-tap # directory, on which UNIX domain files are placed
timeout: 600 # close long-lived (over 600[s]) but do-nothing connections
lru: yes # bring the least recently used pattern to front of list
cache: yes # use cache for regex
# loopback interface for injecting L7 traffic to the flow abstractor
loopback7:
if: loopback7
format: text
tcp_default:
if: default # for every flow that wasn't matched by any rules
proto: TCP
format: text
body: yes
udp_default:
if: default # for every flow that wasn't matched by any rules
proto: UDP
format: text
body: yes
Configuration File
8
http:
up: '^[-a-zA-Z]+ .+ HTTP/1.(0r?n|1r?n([-a-zA-Z]+: .+r?n)+)'
down: '^HTTP/1.[01] [1-9][0-9]{2} .+r?n'
proto: TCP # TCP or UDP
if: http # file name of UNIX domain socket
format: text # text or binary
body: yes # if specified 'no', only header is output
nice: 100 # the smaller a value is, the higher a priority is
# balance = 2 # flows are balanced by 2 interfaces
dns_udp:
proto: UDP
if: dns
port: 53 # port number
format: text
nice: 200
Run Flow Abstractor
9
$ sudo ./src/sftap_fabs -i en1 -c ./examples/fabs.yaml
run the fow abstractor
$ ls -R /tmp/sf-tap
loopback7= tcp/ udp/
/tmp/sf-tap/tcp:
default= http= smtp= torrent_tracker=
dns= http_proxy= ssh= websocket=
ftp= irc= ssl=
/tmp/sf-tap/udp:
default= dns= torrent_dht=
confirm that flow abstraction interfaces were created
Sniff HTTP Flows
10
$ sudo nc -U /tmp/sf-tap/tcp/http
$ curl http://www.google.com/
read the abstraction interface of HTTP
access some web sites
Protocol Format of Flow
Abstraction Interfaces
11
$ sudo nc -U /tmp/sf-tap/tcp/http
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4,
l4=tcp,event=CREATED
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4,
l4=tcp,event=DATA,from=2,match=down,len=494
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.co.jp/?gfe_rd=cr&ei=oVcLVvL7JsHD8AfZnYHQAQ
(omitted)
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4,
l4=tcp,event=DATA,from=1,match=up,len=78
GET / HTTP/1.1
Host: www.google.com
User-Agent: curl/7.43.0
Accept: */*
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4,
l4=tcp,event=DESTROYED
header
header
data
header
data
header
Header Format
CSV like key-value pairs.
Consisting of one line. (ended with n)
12
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,
l3=ipv4,l4=tcp,event=CREATED
{
“ip1”: “192.168.24.54”,
“ip2”: “216.58.221.196”,
“port1”: 59547,
“port2”: 80,
“hop”: 0,
“l3”: “ipv4”,
“l4”: “tcp”,
“event”: “CREATED”
}
equivalents for
Life Cycle of a Flow
13
CREATED DESTROYED
DATA
When TCP connection is established
(performed 3-way handshake),
CREATED event is invoked.
When TCP connection is destroyed
(received FIN/RST, or timeout),
DESTROYED event is invoked.
When arriving data, DATA event is invoked.
Protocols of UDP
UDP is not connection oriented.
Therefore, only DATA event is invoked.
14
Flow Identification
Each flow is identified by IP addresses,
Port numbers and hop count.
Flows are Identified by tuple of

(ip1, port1, ip2, port2, hop)
Hop filed indicates that how many times
the flow is re-injected to the L7 loopback
interface.
15
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,
hop=0,l3=ipv4,l4=tcp,event=CREATED
Origin of DATA
TCP is connection oriented.
Therefore, data is coming from 2 origins.
16
(ip1, port1) (ip2, port2)
data from host1
data from host2
host1 host2
ip1=192.168.24.54,ip2=216.58.221.196,po
rt1=59547,port2=80,hop=0,l3=ipv4,l4=tcp
,event=DATA,from=2,match=down,len=494
from field indicates the origin of data
Length of DATA
Len filed indicates the length of data.
17
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,
l3=ipv4,l4=tcp,event=DATA,from=2,match=down,len=494
header
event=DATA,len=494
data
494 bytes
Upstream and Downstream
Match filed indicates that which pattern is
used for matching.
18
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4,
l4=tcp,event=DATA,from=2,match=down,len=494
http:
up: '^[-a-zA-Z]+ .+ HTTP/1.(0r?n|1r?n([-a-zA-Z]+: .+r?n)+)'
down: '^HTTP/1.[01] [1-9][0-9]{2} .+r?n'
proto: TCP # TCP or UDP
if: http # file name of UNIX domain socket
format: text # text or binary
body: yes # if specified 'no', only header is output
nice: 100 # the smaller a value is, the higher a priority is
# balance = 2 # flows are balanced by 2 interfaces
Configuration
Matched with the pattern of downstream
Matched with the pattern of upstream
ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4,
l4=tcp,event=DATA,from=1,match=up,len=78
Write Your Own Analyzers
Skelton in Pseudo Code
19
// connect to socket
s = socket();
connect(s, “/tmp/sf-tap/tcp/http”);
for (;;) {
// read header
readline(s, line);
h = parse_header(line);
// generate session ID
sid = new sessionID(h[“ip1”], h[“ip2”],
h[“port1”], h[“port2”], h[“hop”]);
if (h[“event”] == “DATA”) {
read(s, buf, h[“len”]);
}
}
Skelton in Python
20
https://gist.github.com/ytakano/87fcb3377df3c29c60c3
Examples
Protocol Parsers
21
$ git clone https://github.com/SF-TAP/protocol-
parser.git
$ cd protocol-parser/http
$ sudo python3 sftap_http.py
more information is available on
https://github.com/SF-TAP/documents/blob/master/
tutorial_fabs_ubuntu1504.md

More Related Content

PDF
SF-TAP: Scalable and Flexible Traffic Analysis Platform (USENIX LISA 2015)
PDF
FARIS: Fast and Memory-efficient URL Filter by Domain Specific Machine
PPTX
The Next Linux Superpower: eBPF Primer
PDF
BPF - in-kernel virtual machine
PPTX
Staring into the eBPF Abyss
PDF
BPF - All your packets belong to me
PDF
Networking and Go: An Epic Journey
PDF
20170925 onos and p4
SF-TAP: Scalable and Flexible Traffic Analysis Platform (USENIX LISA 2015)
FARIS: Fast and Memory-efficient URL Filter by Domain Specific Machine
The Next Linux Superpower: eBPF Primer
BPF - in-kernel virtual machine
Staring into the eBPF Abyss
BPF - All your packets belong to me
Networking and Go: An Epic Journey
20170925 onos and p4

What's hot (20)

PDF
ebpf and IO Visor: The What, how, and what next!
PPTX
2016 NCTU P4 Workshop
PDF
The linux networking architecture
PDF
The Spectre of Meltdowns
PDF
Why my network does not work? Networking Quiz 2017
PDF
LinuxCon 2015 Linux Kernel Networking Walkthrough
PDF
Socket Programming- Data Link Access
PDF
The Next Generation Firewall for Red Hat Enterprise Linux 7 RC
PDF
Programming Protocol-Independent Packet Processors
PDF
DevConf 2014 Kernel Networking Walkthrough
PPTX
Network sockets
PDF
BPF: Next Generation of Programmable Datapath
PDF
eBPF Tooling and Debugging Infrastructure
PDF
Ebpf ovsconf-2016
PDF
Kernel Recipes 2013 - Deciphering Oopsies
PDF
2015 FOSDEM - OVS Stateful Services
PDF
[Webinar Slides] Programming the Network Dataplane in P4
PDF
ODP
Sockets and Socket-Buffer
PPT
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
ebpf and IO Visor: The What, how, and what next!
2016 NCTU P4 Workshop
The linux networking architecture
The Spectre of Meltdowns
Why my network does not work? Networking Quiz 2017
LinuxCon 2015 Linux Kernel Networking Walkthrough
Socket Programming- Data Link Access
The Next Generation Firewall for Red Hat Enterprise Linux 7 RC
Programming Protocol-Independent Packet Processors
DevConf 2014 Kernel Networking Walkthrough
Network sockets
BPF: Next Generation of Programmable Datapath
eBPF Tooling and Debugging Infrastructure
Ebpf ovsconf-2016
Kernel Recipes 2013 - Deciphering Oopsies
2015 FOSDEM - OVS Stateful Services
[Webinar Slides] Programming the Network Dataplane in P4
Sockets and Socket-Buffer
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
Ad

Similar to Tutorial of SF-TAP Flow Abstractor (20)

PDF
Go with the Flow-v2
PPTX
FlowER Erlang Openflow Controller
PDF
SDN - OpenFlow protocol
PPTX
Stateful Flow Table - SFT 2020 DPDK users pace summit
PPT
Adaptive Traffic Sampling and Management Platform
PDF
software defined network, openflow protocol and its controllers
PDF
Network visibility and control using industry standard sFlow telemetry
PDF
Network Flow Analysis
PDF
Network Flow Analysis
PPTX
Opendaylight app development
PDF
Security defined routing_cybergamut_v1_1
PPT
Intelligent Network Services through Active Flow Manipulation
PPTX
Foundation of Modern Network- william stalling
PPTX
Tutorial on SDN data plane evolution
PDF
The Challenges of SDN/OpenFlow in an Operational and Large-scale Network
PPTX
Software defined network
PDF
Banv
PPTX
Software-Defined Networking (SDN) is a transformative networking paradigm
PPT
Netflow slides
Go with the Flow-v2
FlowER Erlang Openflow Controller
SDN - OpenFlow protocol
Stateful Flow Table - SFT 2020 DPDK users pace summit
Adaptive Traffic Sampling and Management Platform
software defined network, openflow protocol and its controllers
Network visibility and control using industry standard sFlow telemetry
Network Flow Analysis
Network Flow Analysis
Opendaylight app development
Security defined routing_cybergamut_v1_1
Intelligent Network Services through Active Flow Manipulation
Foundation of Modern Network- william stalling
Tutorial on SDN data plane evolution
The Challenges of SDN/OpenFlow in an Operational and Large-scale Network
Software defined network
Banv
Software-Defined Networking (SDN) is a transformative networking paradigm
Netflow slides
Ad

More from Yuuki Takano (14)

PDF
アクターモデル
PDF
π計算
PDF
リアクティブプログラミング
PDF
Transactional Memory
PDF
CUDAメモ
PDF
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
PDF
SF-TAP: L7レベルネットワークトラフィック解析器
PDF
MindYourPrivacy: Design and Implementation of a Visualization System for Thir...
PDF
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
PDF
Measurement Study of Open Resolvers and DNS Server Version
PPTX
Security workshop 20131220
PDF
Security workshop 20131213
PDF
Security workshop 20131127
PDF
A Measurement Study of Open Resolvers and DNS Server Version
アクターモデル
π計算
リアクティブプログラミング
Transactional Memory
CUDAメモ
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
SF-TAP: L7レベルネットワークトラフィック解析器
MindYourPrivacy: Design and Implementation of a Visualization System for Thir...
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
Measurement Study of Open Resolvers and DNS Server Version
Security workshop 20131220
Security workshop 20131213
Security workshop 20131127
A Measurement Study of Open Resolvers and DNS Server Version

Recently uploaded (20)

PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Machine learning based COVID-19 study performance prediction
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Machine Learning_overview_presentation.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPT
Teaching material agriculture food technology
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Approach and Philosophy of On baking technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Encapsulation theory and applications.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Assigned Numbers - 2025 - Bluetooth® Document
Machine learning based COVID-19 study performance prediction
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Machine Learning_overview_presentation.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Teaching material agriculture food technology
The AUB Centre for AI in Media Proposal.docx
MYSQL Presentation for SQL database connectivity
Approach and Philosophy of On baking technology
Per capita expenditure prediction using model stacking based on satellite ima...
Digital-Transformation-Roadmap-for-Companies.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Encapsulation theory and applications.pdf
Unlocking AI with Model Context Protocol (MCP)
“AI and Expert System Decision Support & Business Intelligence Systems”

Tutorial of SF-TAP Flow Abstractor

  • 1. SF-TAP Tutorial Flow Abstractor ver. National Institute of Information and Communications Technology Yuuki Takano
  • 2. What Flow Abstractor Do? 2 NW I/F HTTP I/F TLS I/F Flow Abstractor Flow Classifier TLS Analyzer HTTP Analyzer HTTP Proxy TCP and UDP Handler filter and classifier rule L7 Loopback I/F DB Forensic IDS/IPS etc... Application Protocol Analyzer etc...TCP Default I/F UDP Default I/F Analyzer PlaneAbstractor Plane Flow Identifier SF-TAP Cell IP Packet Defragmenter Flow Classification TCP Reassemble IP Defragmentation You can easily develop application level analyzers.
  • 3. Operating Systems, on which Flow Abstractor can Run Linux *BSD MacOS X 3
  • 4. Required Libraries Dependencies Boost C++ Library libpcap libevent (2.0 or later) RE2 yaml-cpp Other Tools cmake git C++11 Compiler (gcc or clang) 4
  • 5. Install Required Libraries (Assuming Ubuntu 15.04) 5 $ sudo apt-get install build-essential cmake git libevent-dev libboost-all-dev libpcap-dev libre2-dev libyaml-cpp-dev
  • 6. Download Source Code and Compile It 6 $ git clone https://github.com/SF-TAP/flow- abstractor.git $ cd flow-abstractor $ cmake -DCMAKE_BUILD_TYPE=Release CMakeLists.txt $ make
  • 7. Configuration File (cont.) 7 # global configuration global: home: /tmp/sf-tap # directory, on which UNIX domain files are placed timeout: 600 # close long-lived (over 600[s]) but do-nothing connections lru: yes # bring the least recently used pattern to front of list cache: yes # use cache for regex # loopback interface for injecting L7 traffic to the flow abstractor loopback7: if: loopback7 format: text tcp_default: if: default # for every flow that wasn't matched by any rules proto: TCP format: text body: yes udp_default: if: default # for every flow that wasn't matched by any rules proto: UDP format: text body: yes
  • 8. Configuration File 8 http: up: '^[-a-zA-Z]+ .+ HTTP/1.(0r?n|1r?n([-a-zA-Z]+: .+r?n)+)' down: '^HTTP/1.[01] [1-9][0-9]{2} .+r?n' proto: TCP # TCP or UDP if: http # file name of UNIX domain socket format: text # text or binary body: yes # if specified 'no', only header is output nice: 100 # the smaller a value is, the higher a priority is # balance = 2 # flows are balanced by 2 interfaces dns_udp: proto: UDP if: dns port: 53 # port number format: text nice: 200
  • 9. Run Flow Abstractor 9 $ sudo ./src/sftap_fabs -i en1 -c ./examples/fabs.yaml run the fow abstractor $ ls -R /tmp/sf-tap loopback7= tcp/ udp/ /tmp/sf-tap/tcp: default= http= smtp= torrent_tracker= dns= http_proxy= ssh= websocket= ftp= irc= ssl= /tmp/sf-tap/udp: default= dns= torrent_dht= confirm that flow abstraction interfaces were created
  • 10. Sniff HTTP Flows 10 $ sudo nc -U /tmp/sf-tap/tcp/http $ curl http://www.google.com/ read the abstraction interface of HTTP access some web sites
  • 11. Protocol Format of Flow Abstraction Interfaces 11 $ sudo nc -U /tmp/sf-tap/tcp/http ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4, l4=tcp,event=CREATED ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4, l4=tcp,event=DATA,from=2,match=down,len=494 HTTP/1.1 302 Found Cache-Control: private Content-Type: text/html; charset=UTF-8 Location: http://www.google.co.jp/?gfe_rd=cr&ei=oVcLVvL7JsHD8AfZnYHQAQ (omitted) ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4, l4=tcp,event=DATA,from=1,match=up,len=78 GET / HTTP/1.1 Host: www.google.com User-Agent: curl/7.43.0 Accept: */* ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4, l4=tcp,event=DESTROYED header header data header data header
  • 12. Header Format CSV like key-value pairs. Consisting of one line. (ended with n) 12 ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0, l3=ipv4,l4=tcp,event=CREATED { “ip1”: “192.168.24.54”, “ip2”: “216.58.221.196”, “port1”: 59547, “port2”: 80, “hop”: 0, “l3”: “ipv4”, “l4”: “tcp”, “event”: “CREATED” } equivalents for
  • 13. Life Cycle of a Flow 13 CREATED DESTROYED DATA When TCP connection is established (performed 3-way handshake), CREATED event is invoked. When TCP connection is destroyed (received FIN/RST, or timeout), DESTROYED event is invoked. When arriving data, DATA event is invoked.
  • 14. Protocols of UDP UDP is not connection oriented. Therefore, only DATA event is invoked. 14
  • 15. Flow Identification Each flow is identified by IP addresses, Port numbers and hop count. Flows are Identified by tuple of
 (ip1, port1, ip2, port2, hop) Hop filed indicates that how many times the flow is re-injected to the L7 loopback interface. 15 ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80, hop=0,l3=ipv4,l4=tcp,event=CREATED
  • 16. Origin of DATA TCP is connection oriented. Therefore, data is coming from 2 origins. 16 (ip1, port1) (ip2, port2) data from host1 data from host2 host1 host2 ip1=192.168.24.54,ip2=216.58.221.196,po rt1=59547,port2=80,hop=0,l3=ipv4,l4=tcp ,event=DATA,from=2,match=down,len=494 from field indicates the origin of data
  • 17. Length of DATA Len filed indicates the length of data. 17 ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0, l3=ipv4,l4=tcp,event=DATA,from=2,match=down,len=494 header event=DATA,len=494 data 494 bytes
  • 18. Upstream and Downstream Match filed indicates that which pattern is used for matching. 18 ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4, l4=tcp,event=DATA,from=2,match=down,len=494 http: up: '^[-a-zA-Z]+ .+ HTTP/1.(0r?n|1r?n([-a-zA-Z]+: .+r?n)+)' down: '^HTTP/1.[01] [1-9][0-9]{2} .+r?n' proto: TCP # TCP or UDP if: http # file name of UNIX domain socket format: text # text or binary body: yes # if specified 'no', only header is output nice: 100 # the smaller a value is, the higher a priority is # balance = 2 # flows are balanced by 2 interfaces Configuration Matched with the pattern of downstream Matched with the pattern of upstream ip1=192.168.24.54,ip2=216.58.221.196,port1=59547,port2=80,hop=0,l3=ipv4, l4=tcp,event=DATA,from=1,match=up,len=78
  • 19. Write Your Own Analyzers Skelton in Pseudo Code 19 // connect to socket s = socket(); connect(s, “/tmp/sf-tap/tcp/http”); for (;;) { // read header readline(s, line); h = parse_header(line); // generate session ID sid = new sessionID(h[“ip1”], h[“ip2”], h[“port1”], h[“port2”], h[“hop”]); if (h[“event”] == “DATA”) { read(s, buf, h[“len”]); } }
  • 21. Examples Protocol Parsers 21 $ git clone https://github.com/SF-TAP/protocol- parser.git $ cd protocol-parser/http $ sudo python3 sftap_http.py more information is available on https://github.com/SF-TAP/documents/blob/master/ tutorial_fabs_ubuntu1504.md