Download presentation
Presentation is loading. Please wait.
1
廣安知之 + クラスタ研究グループ 同志社大学
ネットワーク入門 廣安知之 + クラスタ研究グループ 同志社大学
2
ネットワーク 通信 パラレルプログラミングには直接関係無い 現在のシステムでは不可欠 電子メイル,web 各種設定 PCクラスタの構築
ネットワーク 通信 パラレルプログラミングには直接関係無い 現在のシステムでは不可欠 電子メイル,web 各種設定 PCクラスタの構築 分散メモリ型マシンでの並列・分散処理 無線LAN,ネットワークストレージ,ネットワークブート
3
プロトコル TCP/IP
4
FTP, SMTP, telnet, TCP/IP, AppleTalk, ….
プロトコル 通信をする上での約束ごと FTP, SMTP, telnet, TCP/IP, AppleTalk, …. こんにちは Hello
5
IP
6
何を規定すれば通信が行えるのか?
7
AからBへ“Hello”を送るには あて先の指定 ネット上で一つ Hello Hello A B Hello Hello Hello
8
IPアドレス インターネットなどのネットワークに 接続されたコンピュータの識別番号 202.23.129.104
インターネットなどのネットワークに 接続されたコンピュータの識別番号 10111111 11001000 11111110 11111110
9
AからCへ“Hello”を送るには Hello Hello B A Hello Hello Hello C Hello ネットワークの表示
ネットワークを橋渡すマシンの表示
10
ネットワークアドレス
11
ネットマスク ネットワーク部とホスト部の切れ目を示す IPアドレス:192.168.6.121
ネットワーク部 ホスト部 サブネットマスク: ネットワーク部 ホスト部
12
クラス ネットワークの規模によりIPアドレスは 3つのクラスに分かれる クラスA 224=約1600万台 クラスB 216=約65000台
クラスC 28=約250台 ネットワーク部 ホスト部
13
ゲートウェイ 2つのネットワークを結ぶ働き ゲートウェイ 系統 系統
14
ブロードキャストアドレス ネットワークに接続されている全ての コンピュータと通信するためのアドレス
15
ドメイン名 IPアドレスのかわりに用いる識別名 www.doshisha.ac.jp -サーバの種類 -組織名称 ピリオドで分かれている
-組織種別 -国
16
DNS ドメイン名とIPアドレスを対応付ける doshisha.ac.jpのIPアドレスは? 192.168.6.12です コンピュータ
17
DNS② DNSの仕組み acのDNS jpのDNS ルートDNS doshisha.ac.jpのIPアドレスは? 名前解決して下さい
です jpのDNSなら分かる 了解! 名前解決して下さい acのDNSなら分かる 名前解決して下さい acのDNS jpのDNS ルートDNS
18
≪ IP version4の問題点(1) IPアドレス枯渇の危機! アドレス空間32bit PCユーザの増化 232≒43億 デバイスの増加
(地球の人口約55億) 232≒43億 デバイスの増加 IPアドレス枯渇の危機!
19
IP version4の問題点(2) セキュリティの不備 経路情報増大によりルータへの負担大 簡単な設定の要求が高まる 新しいIPが必要
20
IP version6の改良点 アドレス枯渇問題解消! アドレス空間128bit 128bit≒340澗=3.4×1038 ほぼ無限大
セキュリティ技術の導入 アドレス自動生成機能 フローラベルの導入
21
IPv6ヘッダの改良点 除去 高速化! 導入 フローラベル オプションフィールド ヘッダチェックサム 分割制御フィールド ルータ処理の
負担軽減 高速化! 導入 高品質な マルチメディア通信が可能 フローラベル
22
MACアドレス Media Access Control Addressの略 ネットワークカードに割り当てられる固有の番号
Ethernet上の機器間の物理的な通信を行う 3bytes 3bytes 00-a0-de 製造会社を示す番号 メーカーが独自に割り当てる番号
23
IPアドレスとの違い IPアドレス MACアドレス ネットワーク層におけるアドレス ソフトで設定可能 データリンク層におけるアドレス
ネットワークカードによって固定
24
ARP Address Resolution Protocolの略 例えば
IPアドレスが( )のホストが,( )のホストに対して通信を行うとする Broadcastアドレスに対して,ホスト( )を尋ねる
25
ARP Address Resolution Protocolの略 例えば
IPアドレスが( )のホストが,( )のホストに対して通信を行うとする ホスト( )は,MACアドレスを返す
26
ARP Address Resolution Protocolの略 例えば
IPアドレスが( )のホストが,( )のホストに対して通信を行うとする MACアドレスを使用して,通信を行う
27
パケット通信 長いデータは通信できない 小さな複数の情報に分割 データM データm1 データm3 データm2
28
パケット通信の問題点 パケットの順番 1 2 3 4 1 2 3 4 1 2 3 4 パケットの欠落 1 2 3 4 1 2 3 4 1 2 3 4
29
UDP UDP : User Datagram Protocol 正しく相手に届いたかの確認をしない 不確実であるが高速な通信を実現
・・・・・
30
× TCP ○ TCP : Transmission Control Protocol インターネットの通信プロトコルとして最も普及
※プロトコル こんにちは。 × Bonjour. こんにちは。 ○ こんにちは。
31
TCP 送信したデータが正しく相手に届いたかを確認 届いてなければ再送する もう1度お願いします! 了解!
32
TCPとUDP③ TCPとUDPの違い TCP UDP 信頼性 高信頼 低信頼 転送速度 低速 高速 転送形式 コネクション型
コネクションレス型 その他 端末間同士のデータ転送 上位レイヤからの送信要求が簡潔
33
ソケット通信
34
UNIXでの通信 ソケットを使ってデータの送受信 ソケットを使った通信 ソケット通信
35
ソケット 「接続の端点」 意味: コンピュータとTCP/IPを つなぐ出入り口 ソケット TCP/IP
36
ソケット通信 ソケットを使って通信を行うには 2つのプログラムが必要 クライアントプログラム サーバプログラム ソケットを用意して
サーバに接続要求を行う サーバプログラム ソケットを用意して接続要求を待つ
37
ソケット通信とは 接続待ち 接続待ちのサーバを クライアントが探す サーバを探す サーバ側 クライアント側
38
ソケット通信とは 接続を受信 サーバが見つかったら 接続して通信 サーバを見つけて接続 サーバ側 クライアント側
39
ソケット通信の流れ 1 ソケット生成 (socket) ソケット生成 (socket) クライアント サーバ
40
ソケット通信の流れ 2 サーバを探す (gethostbyname) 接続の準備 (bind/listen) クライアント サーバ
41
ソケット通信の流れ 3 接続要求 (connect) 接続受理 (accept) OK! クライアント サーバ
42
ソケット通信の流れ 4 通信 (send/recv) 通信 (send/recv) こんにちわ こんにちわ クライアント サーバ
43
ソケット通信の全体の流れ クライアント サーバ ソケット生成(socket) 接続要求(connect) サーバを探す
(gethostbyname) データ送受信(send/recv) ソケットを閉じる(close) ソケット生成(socket) 接続の準備(bind) 接続待機(listen) 識別情報 接続受信(accept) データ送受信(send/recv) ソケットを閉じる(close)
44
識別情報 IPアドレス コンピュータを識別 プログラムを識別 正しくデータを受け渡しするために 通信する相手を識別する
コンピュータを識別 ポート番号 プログラムを識別 コンピュータのアドレス プログラムの識別番号
45
ウェルノウン ポート よく使われているプログラムの ポート番号は決まっている 1024番以下は全て決められている ポート番号 プログラム
ウェルノウン ポート よく使われているプログラムの ポート番号は決まっている ポート番号 プログラム 21 ftp 22 ssh 23 telnet 80 http(web) 1024番以下は全て決められている
46
クライアントプログラム(C) //client.c #include<stdio.h>
#include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netdb.h> #include<string.h> #define PORT (u_short)10000 #define BUF_LEN 100 char hostname[]="localhost"; char buf[BUF_LEN]; main() { struct hostent *servhost; struct sockaddr_in server; int s; servhost = gethostbyname(hostname); bzero((char *)&server,sizeof(server)); server.sin_family = AF_INET; server.sin_port = PORT; bcopy(servhost->h_addr, (char *)&server.sin_addr,servhost->h_length); s = socket(AF_INET,SOCK_STREAM,0); connect(s,(void *)&server,sizeof(server)); read(s,buf,BUF_LEN); printf(buf); close(s); }
47
サーバプログラム(C) //server.c #include<stdio.h>
#include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netdb.h> #include<string.h> #define PORT (u_short)10000 char hostname[] = "localhost"; main() { struct hostent *myhost; struct sockaddr_in me; int s_waiting, s; char msg[] = "Hello World!!\n"; myhost = gethostbyname(hostname); bzero((char *)&me, sizeof(me)); me.sin_family = AF_INET; me.sin_port = PORT; bcopy(myhost->h_addr, (char *)&me.sin_addr,myhost->h_length); s_waiting = socket(AF_INET,SOCK_STREAM,0); bind(s_waiting,(void *)&me,sizeof(me)); listen(s_waiting, 1); s = accept(s_waiting, NULL, NULL); close(s_waiting); write(s, msg, strlen(msg)); close(s); }
48
クライアントプログラム(Java) import java.io.*; import java.net.*;
import java.lang.*; public class Client{ public static void main( String[] args ){ try{ //ソケットを作成 String host="localhost"; Socket socket = new Socket( host, ); //入力ストリームを作成 DataInputStream is = new DataInputStream ( new BufferedInputStream( socket.getInputStream())); //サーバ側から送信された文字列を受信 byte[] buff = new byte[1024]; int a = is.read(buff); System.out.write(buff, 0, a); //ストリーム,ソケットをクローズ is.close(); socket.close(); }catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); }
49
サーバプログラム(Java) //Server.java //ストリーム,ソケットをクローズ os.close();
import java.net.*; import java.lang.*; import java.io.*; public class Server{ public static void main( String[] args ){ try{ //ソケットを作成 ServerSocket svSocket = new ServerSocket(10000); //クライアントからのコネクション要求受付 Socket cliSocket = svSocket.accept(); //出力ストリームを作成 DataOutputStream os = new DataOutputStream( new BufferedOutputStream( cliSocket.getOutputStream())); //文字列を送信 String s = new String("Hello World!!\n"); byte[] b = s.getBytes(); os.write(b, 0, s.length()); //ストリーム,ソケットをクローズ os.close(); cliSocket.close(); svSocket.close(); }catch( Exception e ){ System.out.println(e.getMessage()); e.printStackTrace(); }
50
サーバプログラム(Java) ソケット作成,コネクション要求受付待機 出力ストリーム作成 ServerSocket svSocket =
newServerSocket(10000); Socket cliSocket = svSocket.accept(); 出力ストリーム作成 DataOutputStream os = new DataOutputStream( new BufferedOutputStream( cliSocket.getOutputStream());
51
クライアントプログラム(C) アドレス設定
servhost = gethostbyname(hostname); bzero((char *)&server,sizeof(server)); server.sin_family = AF_INET; server.sin_port = 10000; bcopy(servhost->h_addr, (char *)&server.sin_addr, servhost->h_length);
52
クライアントプログラム(C) ソケット通信
s = socket(AF_INET,SOCK_STREAM,0); connect(s,(void *)&server,sizeof(server)); read(s,buf,BUF_LEN); printf(buf); close(s);
53
サーバプログラム(C) アドレス設定 myhost = gethostbyname(hostname); bzero((char *)&me, sizeof(me)); me.sin_family = AF_INET; me.sin_port = 10000; bcopy(myhost->h_addr, (char *)&me.sin_addr,myhost->h_length);
54
サーバプログラム(C) ソケット通信 s_waiting = socket(AF_INET,SOCK_STREAM,0); bind(s_waiting,(void *)&me,sizeof(me)); listen(s_waiting, 1); s = accept(s_waiting, NULL, NULL); write(s, "Hello World!!\n", 14); close(s);
55
クライアントプログラム(Java) ソケットを作成 入力ストリームを作成 Socket socket = new Socket(
“hoge.com”, ); 入力ストリームを作成 DataInputStream is = new DataInputStream ( new BufferedInputStream( socket.getInputStream()));
56
n = is.read(buff); System.out.write(buff, 0, n);
クライアントプログラム(Java) サーバ側から送信された文字列を受信 n = is.read(buff); System.out.write(buff, 0, n); ストリーム,ソケットをクローズ is.close(); socket.close();
57
サーバプログラム(Java) ソケット作成,コネクション要求受付待機 出力ストリーム作成 ServerSocket svSocket =
newServerSocket(10000); Socket cliSocket = svSocket.accept(); 出力ストリーム作成 DataOutputStream os = new DataOutputStream( new BufferedOutputStream( cliSocket.getOutputStream());
58
サーバプログラム(Java) 文字列を送信 ストリーム,ソケットをクローズ
String s = new String("Hello World!!\n"); byte[] b = s.getBytes(); os.write(b, 0, s.length()); ストリーム,ソケットをクローズ os.close(); cliSocket.close(); svSocket.close();
59
MPIメッセージパッシングライブラリ
60
MPIとは 並列プログラミングのための通信ライブラリ 三つの利用形式(C,C++,Fortran)がある
様々なプラットフォームで利用できる優れた フリーウェアもある MPIフォーラムという任意参加の会議で 作成されたAPI仕様
61
APIとは ソフトウェアの持つすべての機能を 逐次開発するのは非効率的 機能の使い方(関数の名前や引数)を定義
ソフトウェアの持つすべての機能を 逐次開発するのは非効率的 ソフトウェアでよく使われる機能を提供 機能の使い方(関数の名前や引数)を定義 実装はハードウェアによって異なる mpich P4 TCP/IP Ethernet
62
メッセージ通信を行うためには…. OSの知識(プロセス間通信など)が必要 通信プロトコルの知識が必要
多くの関数(socket,bind,listenなど)を 必要とする
63
MPIを用いるメリット ベースとなる言語(C,C++,Fortran)にMPI の関数を加えるだけで,並列プログラムを 書くことができる
様々な実装に容易に移植することができる 例えばMPI_SENDという関数を用いるだけで送信できる
64
ネットワークアプリケーション (クラスタ構築のためのツール)
65
クラスタに必要なツール 全てのマシンを操作しなければいけない rsh 実行ファイルなどを全てのマシンが共有しな ければいけない NFS
実行ファイルなどを全てのマシンが共有しな ければいけない NFS アカウントの一貫性を保たなければいけない 全てのマシンにログインできなければいけない NIS
66
rsh Remote SHellの略 リモートホストに接続して,指定されたコマンド を実行する
リモートホストに接続して,指定されたコマンド を実行する 通信内容がそのままIPパケットに格納されて, 送られる 仕事を要求 接続する
67
rsh ー実行例ー 以下のコマンドをcherry01という名前のマ シン上で実行する rsh cherry02 cc test1.c
これは,「cherry01からcherry02に対して, ファイルtest1.cのコンパイルを依頼する」, ということである.
68
NFS Network File Systemの略 ファイルを共有するシステム
あるホストがエクスポートしたファイルシステ ムを別のホストがマウントする G C-2 D F E A B C-1
69
NIS Network Information Serviceの略 クラスタ全体の情報を管理する 分散データベース サービス コピー マスタ
クライアント database
70
NIS ●NISで提供される主な情報 ログイン名 パスワード ホームディレクトリ グループ名
71
クラスタ構築に必要なツール rsh 全てのマシンを操作するため NFS マシン全体でファイルを共有するため NIS
アカウントに一貫性を持たせるため 自由に全てのマシンにログインするため
72
NFS Network File Systemの略 ファイルを共有するシステム
あるホストがエクスポートしたファイルシステ ムを別のホストがマウントする D F E G A B
73
ハードウエアの紹介
74
Ethernet (1) Xerox社が開発したLANの規格 のちにEthernet 2.0として制定
DEC, Intel, Xeroxによる(DIX仕様) 現在はISOプロトコル層を考慮してIEEE802.3として規定 LANの規格として最も普及
75
Ethernet (2) ~10BASE-T 伝送速度: 10Mbps ケーブル: UTP CSMA/CD方式
スター型のネットワークトポロジ
76
Fast Ethernet ~100BASE-TX
伝送速度 : 100Mbps ケーブル : UTP(カテゴリー5) CSMD/CD方式 スター型のネットワークトポロジ
77
Gigabit Ethernet ~1000BASE-T
Ethernet,Fast Ethernetの拡張版 伝送速度 : 1000Mbps ケーブル : UTP(カテゴリー5) CSMD/CD方式 スター型のネットワークトポロジ
78
ATM(Asynchronous Transfer Mode)
セルと呼ばれる固定長のフレームを転送する通信方式 転送するデータがあるときだけセルを送信 データ、音声、動画などの情報を1つのネットワークで扱えるようにするため開発された LAN Emulationの技術でLANとして利用可能 伝送速度 : 25Mbps ATMセル
79
HiPPi(High Performance Parallel Interface)
スーパーコンピュータ間, 高速ネットワークなどへの接続 伝送速度:1600Mbps (64ビットパラレル通信) ケーブル : 光ケーブル 最大10kmまで伝送可能 スター型ネットワークトポロジ
80
Myrinet Myricom社が開発 PCクラスタコンピューティングの デファクト・スタンダードとして期待
EthernetやATMなどより優れた 性能,コストパフォーマンスを発揮
81
各ネットワークの性能比較(1)
82
各ネットワークの性能比較(2)
83
TCP以外のプロトコル
84
ゼロコピー通信とは 速さを最優先させた通信方法 クラスタの処理速度のボトルネックは通信 Scoreなどのシステムで実現できる
データのコピーをなくすことによって速くする Scoreなどのシステムで実現できる
85
従来の通信 通信デバイスはカーネルが扱う 通信機能が階層化されている プログラムは通信デバイスを直接使用できない
プロトコル間で何度もコピーされる ⇒通信のオーバーヘッドが大きい
86
従来の通信② 送信側 受信側 ユーザ アドレス空間 ユーザ アドレス空間 データ データ コピー コピー カーネル アドレス空間 カーネル
NIC NIC データ データ
87
ゼロコピー通信 通信速度を最優先にした通信方式 コピー回数を減らして通信速度を向上
88
ゼロコピー通信② 送信側 受信側 ユーザ アドレス空間 ユーザ アドレス空間 データ データ カーネル アドレス空間 カーネル アドレス空間
NIC NIC データ データ
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.