JAIST Repository
https://dspace.jaist.ac.jp/
Title ネットワーク構築と運用における設定情報の抽象化に
関する研究
Author(s) 廣瀬, 真人
Citation
Issue Date 2017‑03
Type Thesis or Dissertation Text version author
URL http://hdl.handle.net/10119/14160 Rights
Description Supervisor:篠田 陽一, 情報科学研究科, 修士
2017 3
1510046
: 2017 2
Copyright c⃝2017 by Masato Hirose
OSI
1 1
1.1 . . . 1
1.2 . . . 2
1.3 . . . 2
2 3 2.1 . . . 3
2.2 . . . 4
2.3 . . . 5
2.4 . . . 7
3 8 3.1 . . . 8
3.1.1 . . . 9
3.1.2 . . . 10
3.1.3 . . . 10
3.2 . . . 11
3.2.1 NDL . . . 12
3.2.2 INDL . . . 13
3.2.3 Multi-Layered Network Description Model . . . 13
3.2.4 YANG Data Model for Network Topology . . . 14
3.3 . . . 15
4 16
4.2.1 . . . 17
4.2.2 . . . 19
4.2.3 . . . 20
4.3 . . . 21
4.3.1 . . . 22
4.3.2 . . . 24
5 25 5.1 . . . 25
5.2 . . . 26
5.3 . . . 27
5.3.1 . . . 27
5.3.2 . . . 28
5.3.3 . . . 28
5.4 Prolog . . . 29
5.5 Prolog . . . 29
6 33 6.1 . . . 33
6.2 . . . 37
6.3 . . . 41
7 43 7.1 . . . 43
7.2 . . . 43
1
1.1
1.2
1.3
7 2
3 2
4
5 6 7
2
2.1
web
2012 2 Amazon
12
2013 KDDI
E
2.2
OS FreeBSD Linux OS
2.3
OSI
OSI 2.1
OSI 2.2
Application Presentation
Transport Network Data Link
Physical
Application Presentation
Transport Network Data Link
Physical
Application Protocol
Presentation Protocol
Transport Protocol
Network Protocol
Data Link Protocol
Physical Protocol
Session Session
Session Protocol
2.1: OSI
Application Presentation
Transport Network Data Link
Physical
Application Presentation
Transport Network Data Link
Physical
Application Protocol
Presentation Protocol
Transport Protocol
Network Protocol
Data Link Protocol
Physical Protocol
Session Session Protocol Session
Network Data Link
Physical
Network Protocol
Data Link Protocol
Physical Protocol
2.2: OSI
2.4
2.2 2.3
NETCONF
•
•
•
3
CLI
3.1
ping [6] traceroute [7] tcpdump [8]
3.1
設定情報
ソフトウェア
ハードウェア
ネットワークの動作
ネットワーク機器
書き換え
操作
3.1:
3.1.1
Ari
Batfish [2]
Sanjay VPN MTU
[3]
3.1.2
3.1.3
I/O MAC
Anteater [4]
Anteater
Anteater IPv4 SNMP
SAT( )
SAT
•
•
•
SAT SNMP
SAT
3.2
NDL VRD INDL YANG Data Model for Network Topology
Information Model (IM) Data Model (DM) IM
DM
DM
2.4
• :
• :
• :
3.2.1 NDL
NDL(Network Description Language) 2005
[9]
NDL RDF (Resource Description Frame-
work) RDF NDL
NDL
3.2 NDL
NDL
OSI Data Link LAN VLAN
Link
Location Device Interface
lacatedAt
connectedTo
hasInterface
capacity encodingType encodingLabel
name description
3.2: NDL topology scheme
3.2.2 INDL
INDL(Infrastructire and Network Description Language) 2012 [10]
INDL
NDL NDL NDL
3.3 INDL
Resource Service
Node Component
Processor
Component Storage
Component Switching Component Memory
Component
VirtualNode Link Interface
Node Network
Element
is-a
3.3: INDL
3.2.3 Multi-Layered Network Description Model
[11] G= (V, E)
3.4
IP MAC
Server A Firewall Server B
Layer 1 Layer 2 Layer 3 Layer 4 Layer 5 Service: HTTP
Application: Apache OS: Linux
IP: 192.168.0.1 MAC: 11:11:11:11:11:11
Service: HTTP Application: Apache OS: Solaris IP: 192.168.1.1 MAC: 22:22:22:22:22:22 IP: 192.168.0.2 IP: 192.168.1.2
HTTP Apache
192.168.0.1 Linux
11:11:11:11:11:11
Server A Firewall Server B
HTTP Apache HTTP
192.168.0.2 192.168.1.2 192.168.1.1 Solaris
22:22:22:22:22:22
3.4: Multi-Layered Network Description Model
3.2.4 YANG Data Model for Network Topology
YANG Data Model for Network Topology YANG(Yet Another Next Generation) IETF
[12]
YANG RFC6020[13]
NETCONF
YANG
3.3
[2][3]
web
4
4.1
4.2
OSI
4.2.1
4.1
4.2
Protocol Function
Protocol Function Pro-
Protocol Channel
Protocol Channel Protocol Function
Protocol Channel Protocol Function
Protocol Relay
Protocol Relay Protocol Channel
Protocol Relay Protocol Function
4.1: (IP)
Layer N
Device
Protocol Relay
Protocol Channel Protocol Channel
Protocol Function
4.2:
4.2.2
Protocol Function Protocol Channel
Protocol Function Protocol Channel
4.3
4.4 4.5 Protocol Function Protocol Channel
4.3: (MAC + IP)
Layer N+1
Layer N
Device
Protocol Channel
Dependency
4.4: Protocol Function
Layer N+1
Layer N
Device
Protocol Channel Dependency
4.5: Protocol Channel
4.2.3
VLAN 2.5
Protocol Function Protocol Channel
4.6:
4.3
Protocol Function Protocol Channel Protocol Relay
4.7
Protocol Function Protocol Channel Protocol Relay
Protocol Function Protocol Channel Protocol Relay 4.8
C A B C
E A B C D E
4.3.1
Protocol Function Protocol Channel Protocol Relay
•
•
Protocol Func- tion Protocol Relay
4.7:
Rule between A, B Rule between C, D
Rule between B, C Rule between D, E
Rule A Rule B Rule C Rule D Rule E
Layer A までの検査範囲 Layer B までの検査範囲 Layer Cまでの検査範囲 Layer D までの検査範囲 Layer E までの検査範囲
Protocol Channel
4.3.2
Protocol Function Protocol Channel
Protocol Function Protocol Channel
5
•
•
5.1
5.2
5.1
ANSIBLE [15] NETCONF/YANG [16]
設定情報
一貫性検査システム
ネットワーク機器群
検査
設定作業 設定情報の編集
問い合わせ
フィードバック
ルール
5.1:
5.3
•
•
•
5.3.1
3.2.4 YANG Data Model for Network Topology 5.2
VLAN IP
Protocol Function Protocol Channel Protocol Relay
Physical
Node A Node B Node C Datalink
VLAN Network Transport
Service
※ Dependencyは省略
5.2:
5.3.2
5.3.3
• C Protocol Function 1 Protocol Function 3
• B Device 1 Device 4
5.4 Prolog
Prolog
Prolog 1970
5.5 Prolog
Protocol Function Protocol Channel
Prolog 3
Multi-Layered Network Description Model [11] YANG Data Model for Network topology [12]
Physical
Physical Protocol Function Protocol Channel
LLDP
Physical
Physical Protocol Function Protocol
physical_func(Func_id, -1, Int_name, Config_id).
physical_chan(Chan_id, -1, [Func_id_a, Func_id_b]).
Data Link
Data Link Protocol Funtion
/ MAC MTU
Physical Protocol Function Protocol Channel Protocol Function
is_datalink_func(Func_id, Ref_func_id, Int_name, Device_id) :- include_datalink_config(Int_name, Device_id),
physical_function(Reference_func_id, _, Int_name, Device_id).
is_datalink_chan(Chan_id, Ref_Chan_id, [Func_id_a, Func_id_b]) :- datalink_func(Node_id_a, Ref_func_id_a, Int_name_a, Device_id_a), datalink_func(Node_id_b, Ref_func_id_b, Int_name_b, Device_id_b), physical_chan(Ref_chan_id, _, [Ref_func_id_a, Ref_func_id_b]), P = [Func_id_a, Func_id_b],
is_different_device(P), is_same_duplex(P),
is_different_macaddr(P), is_same_mtu(P),
is_same_speed(P).
VLAN
VLAN Protocol Function VLAN
VLAN ID Data Link
Protocol Function
VLAN Data Link Protocol Function
Protocol Channel Protocol Function
vlan_func(Func_id, Ref_Func_id, Int_name, Device_id, Type, Vlan_id) :- include_vlan_config(Int_name, Device_id, Type, Vlan_id),
datalink_func(Func_id, Ref_func_id, Int_name, Device_id).
vlan_chan(Chan_id, Ref_Chan_id, [Func_id_a, Func_id_b]) :-
vlan_func(Func_id_a, Ref_func_id_a, Int_name_a, Device_id_a, Type_a, Id_a), vlan_func(Func_id_b, Ref_func_id_b, Int_name_b, Device_id_b, Type_b, Id_b), datalink_chan(Ref_chan_id, _, [Ref_func_id_a, Ref_func_id_b]),
P = [Func_id_a, Func_id_b], is_vlan_reachable(P).
Network
Network Protocol Funtion IP
VLAN
Protocol Function Protocol Channel
Protocol Function IP
ip_func(Func_id, Ref_func_id, Int_name, Device_id) :- include_ip_config(Int_name, Device_id),
vlan_func(Func_id, _, Int_name, Device_id).
ip_chan(Chan_id, Ref_chan_id, [Func_id_a, Func_id_b], Duplex) :- ip_node(Func_id_a, Ref_func_id_a, Int_name_a, Device_id_a), ip_node(Func_id_b, Ref_func_id_b, Int_name_b, Device_id_b), P = [Func_id_a, Func_id_b],
vlan_chan(Ref_chan_id, _, [Ref_func_id_a, Ref_func_id_b]), is_different_device(P),
is_reachable_ipaddr(P).
Transport
Transport Protocol Funtion
IP Protocol
Function Protocol Channel Protocol
Function
is_transport_func(Funct_id, Ref_Func_id, Int_name, Device_id, Port, Acl) :- include_transport_config(Int_name, Device_id),
ip_func(Ref_func_id, _, Int_name, Device_id).
is_transport_chan(Chan_id, Ref_Chan_id, [Func_id_a, Func_id_b], Duplex) :- transport_func(Func_id_a, Ref_Func_id_a, Int_name_a, Device_id_a, _Port_a ,
Acl_a),
transport_func(Func_id_b, Ref_Func_id_b, Int_name_b, Device_id_b, _Port_b , Acl_b),
ip_chan(Ref_chan_id, _, [Ref_func_id_a, Ref_func_id_b], Duplex).
6
Physical
Data Link VLAN Network Transport
6.1
Protocol Relay
A HTTP
B HTTP 6.1
6.4 6.1 6.5 6.6
6.10
6.1:
config(Config_id, line_protocol(’eth0’, 1)).
config(Config_id, duplex(’eth0’, auto)).
config(Config_id, mac_address(’eth0’, ’14:10:9f:e2:db:61’)).
config(Config_id, mtu(’eth0’, 1500)).
config(Config_id, speed(’eth0’, auto)).
config(Config_id, client_port(’eth0’)).
config(Config_id, ip_address(’eth0’, ’192.168.10.10/24’)).
6.2:
config(Config_id, line_protocol(’ge-1/0/1’, 1)).
config(Config_id, duplex(’ge-1/0/1’, auto)).
config(Config_id, mac_address(’ge-1/0/1’, ’14:10:9f:e2:db:62’)).
config(Config_id, mtu(’ge-1/0/1’, 1500)).
config(Config_id, speed(’ge-1/0/1’, auto)).
config(Config_id, bridge_port(’ge-1/0/1’)).
config(Config_id, line_protocol(’ge-1/0/2’, 1)).
config(Config_id, duplex(’ge-1/0/2’, auto)).
config(Config_id, mac_address(’ge-1/0/2’, ’14:10:9f:e2:db:63’)).
config(Config_id, mtu(’ge-1/0/2’, 1500)).
config(Config_id, speed(’ge-1/0/2’, auto)).
config(Config_di, bridge_port(’ge-1/0/2’)).
6.3:
config(Config_id, line_protocol(’ge-1/0/1’, 1)).
config(Config_id, duplex(’ge-1/0/1’, auto)).
config(Config_id, mac_address(’ge-1/0/1’, ’14:10:9f:e2:db:62’)).
config(Config_id, mtu(’ge-1/0/1’, 1500)).
config(Config_id, speed(’ge-1/0/1’, auto)).
config(Config_id, router_port(’ge-1/0/1’)).
config(Config_id, ip_address(’ge-1/0/1’, ’192.168.10.1/24’)).
config(Config_id, line_protocol(’ge-1/0/2’, 1)).
config(Config_id, duplex(’ge-1/0/2’, auto)).
config(Config_id, mac_address(’ge-1/0/2’, ’14:10:9f:e2:db:63’)).
config(Config_id, mtu(’ge-1/0/2’, 1500)).
config(Config_id, speed(’ge-1/0/2’, auto)).
config(Config_id, router_port(’ge-1/0/2’)).
config(Config_id, ip_address(’ge-1/0/2’, ’10.0.0.1/16’)).
config(Config_id, ip_route(’192.168.10.0/24’, ’ge-1/0/1’)).
config(Config_id, ip_route(’10.0.0.0/16’, ’ge-1/0/2’)).
6.4:
config(1, line_protocol(’ge-1/0/1’, 1)).
config(1, duplex(’ge-1/0/1’, auto)).
config(1, mac_address(’ge-1/0/1’, ’14:10:9f:e2:db:62’)).
config(1, mtu(’ge-1/0/1’, 1500)).
config(1, speed(’ge-1/0/1’, auto)).
config(1, router_port(’ge-1/0/1’)).
config(1, ip_address(’ge-1/0/1’, ’192.168.10.1/24’)).
config(1, line_protocol(’ge-1/0/2’, 1)).
config(1, duplex(’ge-1/0/2’, auto)).
config(1, mac_address(’ge-1/0/2’, ’14:10:9f:e2:db:63’)).
config(1, mtu(’ge-1/0/2’, 1500)).
config(1, speed(’ge-1/0/2’, auto)).
config(1, router_port(’ge-1/0/2’)).
config(1, ip_address(’ge-1/0/2’, ’10.0.0.1/16’)).
config(1, ip_route(’192.168.10.0/24’, ’ge-1/0/1’)).
config(1, ip_route(’10.0.0.0/16’, ’ge-1/0/2’)).
config(1, ip_access_control(10, ’permit’, ’192.168.10.0/24’, ’any’, 80)).
A
A Data Link Protocol Relay VLAN
Protocol Function B
A Network Protocol Relay IP
VLAN Protocol Function
C
A Data Link Protocol Relay A
Network Protocol Relay Protocol Relay
D VLAN
C
A VLAN Protocol Relay
VLAN ID VLAN ID Protocol Function
VLAN VLAN
E
Firewall A Transport
Protocol Relay Protocol Relay
IP
OSPF BGP
6.2
6.1: A
6.2: B
6.3: C
6.4: D
6.5: E
Physical
Server A Bridge A Server B Datalink
VLAN Network Transport
Service
6.6: A
Physical
Server A Router A Server B Datalink
VLAN Network Transport
Service
6.7: B
Physical
Server A Router A Server B Datalink
VLAN Network Transport
Service
Bridge A
6.8: C
Physical
Server A L3 SwitchA Server B Datalink
VLAN Network Transport
Service
Bridge A
6.9: D
Physical
Server A Firewall A
(stateless)Server B Datalink
VLAN Network Transport
Service
Router A
6.10: E
• OS: MAC OS X 10.12.3
• CPU: 2.7GHz Intel Core i7 (4 core)
• Memory: 16GB 1600 MHz DDR3
• Processing system: SWI-Prolog
HTTP HTTP
HTTP HTTP
6.11
ISP
6.11:
6.3
Multi-Layered Network Description Language
YANG Data Model for Network Topology YANG
YANG NETCONF
Multi-Layered Network Description Language Multi-Layered Network Description Language
6.1
6.1:
Multi-Layerd NDL YANG Data Model
⃝ ⃝ ⃝
⃝ ⃝ △
/ ⃝ ⃝ ⃝
△ × ⃝
7
7.1
7.2
Muhammad Imran tariq
[1] , , , ,
[2] Ari Fogel, Luis Pedorosa, Meg Walraed-Sullivan, Proactive Network Configuration Validation with Batfish
[3] Sanjay Narain, Rajesh Talpade,Gary Levin, Network Configuration Validation [4] Haohui Mai, Ahmed Khurshid Rachit Agarwal, Matthew Caesar, P. Brighten God-
frey, Samuel T. King, Debugging the Data Plane with Anteater
[5] Jeroen van der Ham, Mattijs Ghijsen, Paola Grosso, Cees de Laat, Trends in Com- puter Network Modeling Towards the Future Internet
[6] ping, http://linuxjm.osdn.jp/html/netkit/man8/ping.8.html [7] traceroute, https://linux.die.net/man/8/traceroute
[8] tcpdump, http://www.tcpdump.org/tcpdump man.html
[9] Network Description Language, https://ivi.fnwi.uva.nl/sne/ndl/
[10] Mattijs Ghijsen, Jeroen van der Ham, Paola Grosso, Cosmin, Dumitru, Hao Zhu, Zhiming Zhao and Cees de Laat, A Semantic-Web Approach for Modeling Computing Infrastructures
[11] , , , , ,
[13] RFC6020, YANG - A Data Modeling Language for the Network Configuration Pro- tocol (NETCONF)
[14] , , , SDN/OpenFlow
[15] ANSIBLE, https://www.ansible.com [16] NETCONF, RFC6020, RFC6241
[17] SWI-Prolog, http://www.swi-prolog.org