ðã³ã³ãã¥ãŒã¿ãããã¯ãŒã¯æŠè«
- up: ðãœãããŠã§ã¢éçºãã¡ã€ã³
- refs.
- links
ã³ã³ãã¥ãŒã¿ãããã¯ãŒã¯ãšã¯ #
ã»ãã·ã§ã³ #
ã³ã³ãã¥ãŒã¿ãŒéã§ããŒã¿ãããåãããããã«èšããè«ççãªæ¥ç¶é¢ä¿.
http (web ããŒãžæäœ) ã§ã®ã»ãã·ã§ã³ #
è€æ°ã® Web ããŒãžã«ãŸããã£ãŠè¡ãããäžé£ã®åŠçã»æäœ. 1 å WEB ããŒãžã«ã¢ã¯ã»ã¹ããŠ, è€æ°ã®ããŒãžãé²èЧããããããš, 1 ã»ãã·ã§ã³ã§äœããŒãžèŠã.
WEB ã¢ããªã»ããã°ã©ã ã«ãããã»ãã·ã§ã³ #
ã»ãã·ã§ã³ã¯, ã·ã³ãã«ãªæ¹æ³ã§åã ã®ãŠãŒã¶ãŒã®ããŒã¿ãæ ŒçŽããä»çµã¿ã§, åã ã®ãŠãŒã¶ãŒã«å¯ŸããŠäžæãªã»ãã·ã§ã³ ID ãçšæããŸã. ãããçšããŠ, è€æ°ããŒãžã«ãŸããããªã¯ãšã¹ãã®éã§ç¶æ ã®æ å ±ãæ°žç¶ãããããšãã§ããŸã.
ãœã±ããããã°ã©ãã³ã° #
Socket #
å®è¡äžã®ããã°ã©ã éã§ããŒã¿ã®éåä¿¡ãè¡ãããã®æšæºçãªããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ãŒã¹ (API) ã®äžã€.
TCP/IP ã¢ããªã±ãŒã·ã§ã³ãäœæããããã®æœè±¡åãããã€ã³ã¿ãŒãã§ãŒã¹
ref. ãœã±ãã (BSD) - Wikipedia
EndPoints #
端æ«.äžæã«å®ãŸãéä¿¡å .
Socket 㯠IP Address ãš PortNo.ãã€ãã£ãŠ, éä¿¡å ã®ãœã±ãããç¹å®ãã. ãããã¯ãŒã¯ã«æ¥ç¶ãããããœã³ã³ã PDA, æºåž¯é»è©±ãªã©ã®ãããã¯ãŒã¯ç«¯æ«ã®ç·ç§°. ãšã³ããã€ã³ãã« Socket ããã€ã³ãããã.
Loopbacks #
IP ã¢ãã¬ã¹ã¯å¿ ããããªã¢ãŒããã¹ããšé¢é£ä»ããããŠããå¿ èŠã¯ãªã. ãšãã«éçºç°å¢ã§ã¯, ããŒã«ã«ãª IP ã¢ãã¬ã¹ã圹ã«ç«ã€.
èªç«¯æ«ã«å¯ŸããŠéä¿¡ããããšã LoopBack ãšãã. LoopBack ã§æå®ããã¢ãã¬ã¹ã Loopback Address ãšãã.
- ããŒããŠã§ã¢ãšé¢ä¿ãªã, è«ççãªã€ã³ã¿ãã§ãŒã¹.
- Linux ã§ã¯, localhost ãšèšãããŠãã. IP 㯠127.0.0.1
ref. ã«ãŒãããã¯ãšã¯ ã ããŒã«ã«ã«ãŒããã㯠ã
Ports #
ããŒããã©ã¯ãŒãã£ã³ã° #
ããŒã«ã«ã³ã³ãã¥ãŒã¿ã®ç¹å®ã®ããŒãã«éãããŠããããŒã¿ãå¥ã«çšæããéä¿¡çµè·¯ãçšããŠãªã¢ãŒãã³ã³ãã¥ãŒã¿ã®ç¹å®ããŒãã«éä¿¡ããããš.
ref. ããŒããã©ã¯ãŒãã£ã³ã°ãšã¯ ã port forwarding ã
ããšãã°, Windows ãã¡ã€ã«ãµãŒãã«,SSH çµç±ã§ (CIFS, port 445/tcp ã§) ã¢ã¯ã»ã¹ãã (ãã).
Stream #
ããŒã¿ã®å ¥åãŸãã¯åºåã®æ©èœãæäŸããæœè±¡ããŒã¿å. ã¡ãã»ãŒãžã®å¢çãšããå¢çããªã. TCP/IP ãããã³ã«ã¯ã¹ããªãŒã ããŒã¹ã®èšèš.
ref. ã¹ããªãŒã (ããã°ã©ãã³ã°) - Wikipedia
Buffering #
Blocking/Non-Blocking #
ããããã³ã° #
éåä¿¡ã®å®äºãåŸ ã£ãŠããä»ã®åŠçãéå§ããéä¿¡æ¹æ³.
require 'socket'
server = TCPServer.new (2803)
while client = server.accept
input = client.readline
client.write "You said: #{input}"
client.close
end
ãã³ã»ããããã³ã° #
ããŒã¿ã®éåä¿¡ãè¡ãéã«, éåä¿¡ã®å®äºãåŸ ããä»ã®åŠçãéå§ããéä¿¡æ¹æ³.
ref. ãã³ããããã³ã°éä¿¡ãšã¯ ã ãã³ããããã³ã°ã¢ãŒã ã
require 'socket'
server = TCPServer.new (2803)
loop do
Thread.new (server.accept){ |client|
input = client.readline
client.write "You said: #{input}"
client.close
}
end
Example Ruby #
Server Lifecycle #
-
create ãœã±ããã®çæ
-
bind
- ãœã±ãããå©çšãã Port ã«ãã€ã³ã.
- User ã§ãã€ã³ããã Port 㯠1025-48999
- ãœã±ãããéä¿¡ãèš±å¯ãã IP ãæå®.
- 0.0.0.0: ãã¹ãŠèš±å¯
- 127.0.0.1: èªç«¯æ«ã®ã¿èš±å¯
- xxx.xxx.xxx.xxx: ãã端æ«ã®ã¿èš±å¯
- ãœã±ãããå©çšãã Port ã«ãã€ã³ã.
-
listen éä¿¡å ãœã±ããããã®éä¿¡ããŸã€
-
accept éä¿¡å ãœã±ããããã®éä¿¡ãåãåã, éä¿¡è·¯ ããã®ã€ã©çæ (connection)
-
close éä¿¡å ãœã±ããã®æ¶æ» .
# coding: utf-8
require 'socket'
# 1. create
server = Socket.new (:INET, :STREAM)
# 2. bind
addr = Socket.pack_sockaddr_in (4481, "0.0.0.0")
server.bind (addr)
# 3. listen
server.listen (5)
# 4. accept
loop do
connection, _ = server.accept
## send message from client.
# ehco "Hello" | nc localhost 4481
p connection
# it should be closed each connection
connection.close
end
# 5. close
server.close
-
TCPServer
Ruby ã§ã¯, 以äžã®ãããªç³è¡£æ§æããã.
ref. class TCPServer
server = TCPServer.new (4481) # => # server = Socket.new (:INET, :STREAM) # addr = Socket.pack_sockaddr_in (4481, "0.0.0.0") # server.bind (addr) # server.listen (5)
Client LifeCycle #
- create ãœã±ããã®çæ
(2. bind )
- connect ãµãŒããšæ¥ç¶
- close ãœã±ããã®ç Žæ£
require 'socket'
# 1. create
socket = Socket.new (:INET, :STREAM)
# 3. connect
remote_addr = Socket.pack_sockaddr_in (80, 'google.com')
socket.connect (remote_addr)
# 4. close
socket.close
-
TCPSocket
Ruby ã§ã¯, 以äžã®ãããªç³è¡£æ§æããã.
ref. class TCPSocket
socket = TCPSocket.new ('google.com', 80) # => # socket = Socket.new (:INET, :STREAM) # remote_addr = Socket.pack_sockaddr_in (80, 'google.com') # socket.connect (remote_addr)
Simple Read #
以äžã®äŸã§ã¯, æ°žé ã«ãµãŒã㯠Read ãåŸ ã¡ç¶ããŠ, ãã®å ãé²ãŸãªã.
require 'socket'
Socket.tcp_server_loop (4481) do |connection|
puts connection.read
connection.close
end
Socket ã¯æå®ãããããŒã¿é·ã®ããŒã¿ãå°çãããŸã§åŸ ã¡ç¶ãã. ãããããã¯ãåé¿ããããã«ã¯,
- Client åŽã§ ããŒã¿ã®æåŸã§ EOF ãéä¿¡ãã.(EOF event)
- Server åŽã§äžåºŠã«èªã¿èŸŒãããŒã¿é·ãå°ãããã. (partial read)
Client ã®ãœã±ããã close ã¡ãœãããå®è¡ãããš, ãã®å»¶é·ã§ EOF ãéç¥ããã.
SDN #
Software Defined Networking.
å®çŸ© #
- åºçŸ©:ãåŸæ¥ã·ã¹ãã ã®ãããã¯ãŒã¯èŠçŽ ãæœè±¡åãåå²ãã, ã³ã³ãã¥ãŒã¿ ãããã¯ãŒã¯ãæ§ç¯ããã¢ãããŒãã (wiki ãã)
- ç矩:ã (åºçŸ©ã®ã¢ãããŒããå ·äœåããããã«) ãããã¯ãŒã¯æ©åšã®ã³ã³ãããŒã« ãã¬ãŒã³, ããŒã¿ ãã¬ãŒã³ãåé¢ã, éäžåããããœãããŠã§ã¢ããã³ã³ãããŒã«ããŠ, ãã£ãšå¹ççãªããš, 䟿å©ãªããšããã!! ã
A new networking paradigm whereby the behavior of a network is controlled by a single high-level software program. The general term for network architectures whereby the control plane (software that controls network behavior) and the data plane (the devices that forward traffic) are separate from one another.
SDN allows network administrators to manage network services through abstraction of lower level functionality.
Software-defined networking - Wikipedia, the free encyclopedia
ã³ã³ãããŒã«ãã¬ãŒã³ãšãã©ã¯ãŒãã£ã³ã°ãã¬ãŒã³ãåé¢ã, ãããã¯ãŒã¯ã«ããã°ã©ãããªãã£ãæããã
SDN æä»£ã®ããŒã¿ã»ã³ã¿ãŒã»ã¢ãŒããã¯ãã£/Forwarding Plane J-Net Community
ãããã¯ãŒã¯å šäœã§äžã€ã® OS ãšããŠèŠã, ãœãããŠã§ã¢ããèŠãã°åã ã®ãããã¯ãŒã¯æ©åšãé ãºããããŠããŸã. ããããããšã§, ãœãããŠã§ã¢ãéçºããããã°èªç±ã«ãããã¯ãŒã¯ãå¶åŸ¡ããããšãå¯èœã«ãªããŸã.
SDN ãžã®æœ®æµãš OpenFlow ã®æŽå² | Think IT (ã·ã³ã¯ã€ãã)
SDN ã®æŽå²ãšåºç€æè¡ #
Active networks #
A collection of network architecture projects in the 1990s that shared many of the same goals as software-defined networking.
Network virtualization #
ãããã¯ãŒã¯ä»®æ³å. ç©çãããã¯ãŒã¯äžã«è€æ°ã®è«çãããã¯ãŒã¯ãæ§ç¯ããããš.
The notion of instantiating many distinct logical networks on top of a single, shared physical network infrastructure.
ããããã¯ãŒã¯ä»®æ³åããšãåŒã°ã, å³å¯ã«ã¯ SDN ã®å¿çšã®äžã€ã§ãã, ãŸã, SDN ã«ãããå¥ã®æè¡ã«ãã£ãŠå®çŸããææ³ããããã, ãããã¯ãŒã¯ä»®æ³åãš SDN ãã®ãã®ãšã¯åºå¥ããå¿ èŠããã.
SDN ãšã¯ ã Software-Defined Networking ã - æå³/ 解説/ 説æ/ å®çŸ© : IT çšèªèŸå ž
æ§æèŠçŽ #
Control Plane #
The functions in the network that control the behavior of the network (e.g., network paths, forwarding behavior). Typically, the control plane is instantiated as a single, high-level software controller.
Data Plane #
ãã©ã¯ãŒãã£ã³ã°ã»ãã¬ãŒã³, Forwarding plane ãšããã.
Forwarding plane - Wikipedia, the free encyclopedia
The functions in the network that are responsible for forwarding (or not forwarding) traffic. Typically, the data plane is instantiated as forwarding tables in routers, switches, firewalls , and middleboxes.
Data plane design goals. æè¡é©æ°ã«çŽ æ©ã察å¿ã§ããããš.
- Flexible (æè»æ§)
- Extensible (æ¡åŒµæ§)
- Clean interfaces (æŽçãããã€ã³ã¿ãã§ãŒã¹)
-
Programmable Hardware
æšæºåããã, ããã°ã©ãã³ã°å¯èœãªããŒããŠã§ã¢.
ãããã, é«çŽèšèªã§ã®èšè¿°ãã§ããããã«ãªãã¯ã.
- FPGA
- Click
-
Flow ã®æ§æèŠçŽ
- ããããã£ãŒã«ã (ãããã³ã°ã«ãŒã«)
- ã¢ã¯ã·ã§ã³
- Forwarding
- Enqueue
- Drop
- çµ±èšæ å ±
OpenFlow ã®ã¢ãŒããã¯ãã£ãšä»æ§ã»æ©èœ | Think IT (ã·ã³ã¯ã€ãã)
NorthBound API #
Programming interface that allows applications and norchestration systems to program the network .Uses for Northbound API ,
- Path computation
- Loop avoidance
- Routing
- Security
Northbound API ã¯, ã¢ããªã±ãŒã·ã§ã³ãã SDN ã³ã³ãããŒã©ãå¶åŸ¡ã§ãã API ã .
- SDN/OpenFlow ã®æ°ãã課é¡:Northbound API ãšã¯äœã? - Publickey
- Northdound API ã¯, Software-Defined Network ã«ãšã£ãŠéå€§ãªæ¬ èœã - Publickey
Northbound API can help,
- Sophisticated events
- Composition of policies
- Event handling
SouthBound API #
Control Plane ãš Data Plane ãã€ãªã API.
SDN ã®ã¢ãŒããã¯ã㣠#
---
Controller Applications |
====================== |
NorthBound API | Control Plane
====================== |
Controller Platform ---
====================== |
SouthBound API | Data Plane
====================== |
OpenFlow Switches |
---
Composition #
ã·ãŒã±ã³ã·ã£ã«ãªå¶åŸ¡æ¹æ³ãšãã©ã¬ã«ãªå¶åŸ¡æ¹æ³.
- Sequential composition :Perform one operation, then the next.
- Parallel composition :Perform both operations simultaneously.
Event-Driven SDN #
ãããã¯ãŒã¯æ§æã®ã»ãšãã©ã¯, ã€ãã³ãé§åã®åŠç. ãããã¯ãŒã¯ã®ããªã·ãŒã Event-Based ã§è¡šçŸãšããèãã Event-Based Network Control.
- Event Plane
- user
- time
- history
- Dinamic Event Handler -> State Transition signal to Control Plane.
- Control Plane
-> finite state machine ã§å¶åŸ¡ããã.
- State
ãã¡ã€ã³ã®ç¶æ (value) ã®éå.
- Events
ã¹ããŒããã·ã³ã«ãããã£ãŠç¶æ é·ç§»ãçºçãããããªã¬
- Data Plane
ä»ã®çšèªãšã®éãã«ã€ããŠæŽç #
OpenFlow #
Software-Defined Network (SDN) ã¯, ã³ã³ã»ãã, ã¢ãŒããã¯ãã£. ãããå®çŸããæè¡ã®äžã€ã OpenFlow.
OpenStack #
OpenStack ã¯ã¯ã©ãŠãã OSS ã§ç®¡çããããã®ãœãããŠã§ã¢çŸ€ã®ç·ç§°. OpenStack ã®ãããã¯ãŒã¯ä»®æ³åã«ãããéšåã SDN ã®ææ³ãšéãªã.
OpenFlow #
OpenFlow ã¯, ã¹ã¿ã³ãã©ãŒã倧åŠãäžå¿ãšãªã£ãŠããã OpenFlow ã¹ã€ããã³ã°ã³ã³ãœãŒã·ã¢ã ããæå±ãããããã¯ãŒã¯å¶åŸ¡æè¡.
SDN ãå®çŸããããã®ä»£è¡šçãªãã¬ãŒã ã¯ãŒã¯.
- ASCII.jp:SDN ãçœåŒãã OpenFlow ãšã¯? æ¥çãžã®ã€ã³ãã¯ãã¯?
- OpenFlow ãšã¯ ã ãªãŒãã³ãã㌠ã - æå³/ 解説/ 説æ/ å®çŸ© : IT çšèªèŸå ž
- OpenFlow/SDN ã¯ãªãèªçããã®ã, OpenFlow 以åã«ãã£ãåé¡ãšã¯. çã¿ã®èŠªã«ãµãæ°ãå£äžã§èªã. SDN Japan 2013 - Publickey
WAN #
WAN é«éå #
TCP ã®ã¹ã«ãŒãããã¯, 以äžã§æ±ºãŸã.
- ããŒã¿ãéåä¿¡ããéã®ãããã¡å®¹éããŠã£ã³ããŠãµã€ãºã
- ãã±ãããéä¿¡ãã¹ãã®éãåŸåŸ©ããæéãã©ãŠã³ãããªããã¿ã€ã (RTT)
TCP ã¹ã«ãŒããã=ãŠã£ã³ããŠãµã€ãºÃ· RTT
ãŠã£ã³ããŠãµã€ãºã倧ãããã°äžåºŠã«å€ãã®ãã±ãããéããããšã«ãªãã, Windows 2000/XP ã§ã®ãŠã£ã³ããŠãµã€ãºã¯ããã©ã«ãã§ 16KB (æå€§ 64KB) ã«ãªã£ãŠãã. ãã¡ããé å»¶æéã® RTT ãççž®ããã°, ã¹ã«ãŒãããã¯åäžããã, æµ·å€æ ç¹ãçµã¶ WAN ãªã©ã®å Žåã«ã¯, è·é¢ã«ããé å»¶ã®åé¡ã倧ãã, ã¹ã«ãŒãããã®åäžã«ãéçããã
é«éåè£ çœ® #
éä¿¡ã®ã¬ã¹ãã³ã¹ã決ããèŠçŽ ã¯å€§ãã 3 ã€.
- é å»¶
- 1 åã®ããåãã§éä¿¡ããããŒã¿éã§ãããŠã€ã³ããŠã»ãµã€ãº
- ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¹ãè»¢éæ§
é å»¶ã®åœ±é¿ãåããããã¢ããªã±ãŒã·ã§ã³ãååšãã. ãã®ä»£è¡šæ Œã¯, ç±³ãã€ã¯ããœããã®ãã¡ã€ã«å ±æãããã³ã«ã® CIFS ã,ããŒã¿ããŒã¹ã«äœ¿ããã Microsoft SQL ãªã©ã®ã¢ã¯ã»ã¹.
é«éåæè¡ #
ãã£ãã·ã¥ #
䜿çšé »åºŠã®é«ãããŒã¿ãé«éèªã¿åºãå¯èœãªèšæ¶è£ 眮ã«èç©ããŠããä»çµã¿.
ãããã³ã«ã»ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ #
ãããã³ã«ã»ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®ç¹åŸŽã¯, 代çå¿çãšããä»çµã¿.
- å瀟㮠WAN é«éåè£ çœ®ãç»å Žããåœåã¯, ãŠãŒã¶ãŒãå€ãããšããã£ãŠ CIFS ãäž»èŠãªé«éå察象ã ã£ã.
- MAPI, NFS ã察å¿ããŠããŠãã.
- å©çšé »åºŠã®é«ããã HTTP (hypertext transfer protocol) ã«å¯Ÿå¿ãã補åãå¢ããŠãã.
-
代çå¿ç
ãµãŒããŒãããŒã¿è»¢éãå§ãããš, ãµãŒããŒåŽã® WAN é«éåè£ çœ®ãã¯ã©ã€ã¢ã³ãã®ä»£ããã« Ack ãè¿ã.
å°çšãããã³ã« #
SMB ãããã¯ãµã€ãºãå°ããããã«ã¹ã«ãŒããããäžãããªãããšã«å¯ŸããŠã¯, WAN é«éåè£ çœ®éã§ãã¡ã€ã«å ±æãããã³ã«ã䜿çšããªãããšã§å¯Ÿå¿ããŠãã.
ã·ã¹ã³ã WAN äžã§äœ¿çšããããŒãçªå·ã¯ TCP4050 ã§ãã, ãªããŒããã㯠TCP7800 ãšãªã.
Links #
CIFS ã«é¢ãã WAN Accerelation
WAN é«éåãžã®é #
- ITmedia ãšã³ã¿ãŒãã©ã€ãº:æé©åããå§ãŸã, WAN é«éåãžã®é–垯åã®æå€§æŽ»çšã§ã¯ãŒã¯ã¹ã¿ã€ã«ãå€é©ãã
- æé©åããå§ãŸã, WAN é«éåãžã®é:ãã¢ããªã±ãŒã·ã§ã³ãé ããããªããä»çµã¿ (2) (1/3) - ITmedia ãšã³ã¿ãŒãã©ã€ãº
- æé©åããå§ãŸã, WAN é«éåãžã®é:1MB ã®ãã¡ã€ã«ã¢ã¯ã»ã¹ã« 10 å–WAN ã®äœæéåºŠãæ¹åããªãã®ã¯ãªã? (1/3) - ITmedia ãšã³ã¿ãŒãã©ã€ãº