본문 바로가기

IT Tech

[네트워크] IS-IS 정리 노트 #3 - Common Packet Format IS-IS의 공통 Header (8 byte) IRPD(Intradomain Routing Protocol Discriminator) IS-IS에 부여된 NLPID(Network Layer Protocol ID)로서 0x83이란 숫자가 배정됨. (ISO 9677) Length Indicator Header의 길이 Version/Protocol ID Extension 일반적으로 1이란 값을 갖고 있다. ID Length 발신자의 Source ID (System ID) 길이를 나태냄, Cisco의 경우 이 필드는 '0'이며 기본적으로 6B를 사용한다는 것을 의미함. --> 애매하지만 0이면 6B의 System ID를 갖는다고 이해하고 넘어감. PDU Type Version 현재 Version은 1 Maxim..
[네트워크] IS-IS 정리 노트 #2 - NSAP IS-IS가 IP Network를 처리하는 환경에서만 사용된다고 할지라도 그 근본 출발이 ISO 10589를 기초하 한 Address 구조를 갖고 있다. 1. Node-Based Address OSPF의 경우 각 연결 Link에 개별적인 IP Address를 설정하고 외부에 알리고자 하는 네트워크 정보를 설정하지만, IS-IS는 라우터 자체에 ISO의 CLNP Address를 NSAP 형식에 따라 하나만 설정하면 됩니다. 나머지 설정은 각 인터페이스에서 IS-IS 라우팅에 참여할지(Admin-State)를 설정하기만 하면 됩니다. 2. NSAP (Network Service Access Point) NSAP 는 크게 Area ID, System ID 그리고 NSEL(NSAP Selector)로 구성되어 ..
[네트워크] IS-IS 정리 노트 #1 - History 및 특징 IS-IS는 OSPF와 같은 Link-State 라우팅 프로토콜로서 주요 ISP에서 IGP로 쓰이고 있는 대표적인 라우팅 프로토콜이다. 1. History - OSI 7 Layer를 발표한 ISO(현재의 ITU의 CLNS(ConnectionLess Network Service) 환경에서 Layer 3 라우팅을 지원하기 위한 프로토콜로 사용됨. ISO의 CLNS는 TCP/IP와는 다르게 연결을 중요하게 생각하지(ConnectionLess) 않은 네트워크로서, 호스트의 Addressing과 관련된 CLNP(Connectionless Network Protocol), ARP처럼 L3L2 주소 변환을 담당하는 ES-IS(End System-Intermediate System), TCP/IP의 IP처럼 라우팅 기..
[네트워크] OSPF 정리 노트 #4 - Multi Area, LSA OSPF가 라우터간에 전송하는 정보가 작다고 하더라도 네트워크가 커지고 복잡해지면 이를 하나의 Area로 관리하는 것은 라우팅 테이블의 크기도 증가하고 네트워크의 작은 변화도 모든 라우터에게 미치기 때문에 라우터의 CPU나 메모리 사용량도 늘어나고 전체적으로 매우 비효율적이다. ==> 전체를 부분적인 Area로 나눔으로써 해결할함. 1. Area의 종류 Backbone Area - OSPF의 가장 중요한 Area로서 반드시 존재해야 한다. - Area Number 0 (0.0.0.0)을 가지며 다른 Area들 사이에 통신을 중계해 주는 역할을 수행한다. - 다른 Area는 모두 Backbone Area에 직접 연결이 되어 있어야한다. - Virtual-Link는 이미 Backbone에 연결되어 있는 Ar..
[네트워크] OSPF 정리 노트 #3 - Topology Database Updates 1. 네트워크 변경 - 자신이 알고 있는 네트워크의 Link가 다운되거나 또는 새로운 네트워크 대역이 선언되는 등과 같은 변경이 발생한 경우에는 이 사실을 즉시 전체 네트워크에 알려야 한다. - OSPF 라우터는 이럴 경우 LSU(Link State Update) 패킷을 통해 인접한 라우터에게 보내고, Broadcast Multiaccess(Ethernet) 환경인 경우 Multicast 225.0.0.6 주소을 사용해서 DR에게 보낸다. - LSU에는 Link상태나 네트워크에 대한 정보가 담겨 있는 LSA(Link-State Advertisement)패킷이 포함되어 있다. (OSPF에는 다양한 종류의 LSA가 있다.) - 라우터로부터 LSU를 받은 DR은 같은 구간에 연결되어 있는 다른 라우터들에게 L..
[네트워크] OSPF 정리 노트 #2 - OSPF의 연결 Protocol Field => 89 TCP 6, UDP 17 1. OSPF Hello Packet 라우터간에 Neighbor 관계를 맺기 위해 주고받는 패킷으로 자신은 누구인지, 어느 Area에 속해 있는지, 그리고 Hello 패킷은 얼마 간격으로 주기적으로 주고받아야 하는지 등과 같은 다양한 정보들이 포함되어 있다. [Hello Packet의 내용] Router ID Loopback Address의 IP가 사용되고, Loopback Address가 설정되지 않았을 경우 인터페이스에 설정된 IP 가운데 가장 큰 값. Hello/Dead Interval Hello Interval은 10초, 죽었다고 판단하기까지 기다리는 시간인 Dead Interval 40초 Hello Packet은 이웃이 맺어진 후에 ..
[네트워크] OSPF 정리 노트 #1 - OSPF의 특징 현재 사용되고 있는 OSPF는 버전 2이며 RFC 2328에 규정되어 있다. http://www.rfc-editor.org/rfc/pdfrfc/rfc2328.txt.pdf 1. OSPF Area - OSPF의 Area는 라우팅 정보가 전파되고 관리될 수 있는 논리적인 영역이며 반드시 하나 이상의 Area가 존재. - Multi Area로 구성할 경우에는 Area간의 통신을 중계해 주는 'Backbone Area'가 반드시 존재함. 2. OSPF Router Internal Router 한 Area에 속해 있으면서 같은 영역에 있는 라우터와 정보를 주고 받는 일반적인 라우터. Backbone Router Backbone Area(0 or 0.0.0.0)에 속해 있는 라우터로 Backbone Area 내에서..
[네트워크] MPLS VPN 간단 정리 노트 MPLS VPN MPLS VPN은 IGP를 통해 알게된 라우팅 정보를 바탕으로 한 Overlay 기술. RFC 2547bis (흔히 MP-BGP, Multi Protocol BGP)라고 부름. (MPLS+BGP) [VPN] - L3 : IPSec 3DES나 RSA와 같은 암호와 알고리즘을 사용하며, 데이터의 무결성을 위해 SHA와 같은 해시 알고리즘을 사용 ==> 오버헤드 큼 - L2 : L2TP(Layer 2 Tunneling Protocol) etc) GRE(Generic Routing Ecnapsulation), L2F(Layer 2 Forwarding) [MPLS VPN] 기존의 VPN은 소비자가 VPN 장비를 직접 구매하고 설치해야 했지만, MPLS VPN 은 ISP 측에서 제공하며 이를 위한 ..
[네트워크] MPLS 개념, 정리 노트 MPLS 기초 개념 1. Label 일반 패킷에 덧붙여진 추가 Header로 'Shim Header' 라고 합니다. Ethernet, PPP는 L2/L3 Header 사이에 4Byte 크기로 덧붙는 형태를 띄며, ATM은 VCI와 VPI에 F/R은 DLCI 필드에 저장됩니다. 전체 패킷 사이즈 [Ethernet Header,Tailer(FCS)(18 Byte) + MTU]1518 Byte + Shim Header(4 Byte) ==>1522 Byte Maximum MTU 사이즈 초과로 이를 Drop하지 않고 처리하기 위해서 L2 헤더의 EtherType 필드에 0x8847 의 값을 주어 MPLS 패킷임을 알려주어야 합니다. Label(20b) : (1~1,048,575), 라우팅 테이블의 Lookup없이..
[C언어] parse Mac Address int parse_mac_address(char *strNum, uchar_t rslt_hex[]) { int enteredNum = 0; int orgIndex = 0; int oprIndex = 0; char numChar[100]; while(orgIndex 2 ) return -1; rslt_hex[enteredNum++] = strtoul(numChar, NULL, 16); oprIndex = 0; } else { if(strNum[orgIndex] >'F' || strNum[orgIndex] < '0') return(-1); numChar[oprIndex++] = strNum[orgIndex]; } orgIndex++; } return (enteredNum); } 입력 포맷 : AA:BB:CC..
NBMA(Non-Broadcast Multi-Access) 네트워크 NBMA(Non-Broadcast Multi-Access) 네트워크는 브로드캐스트 기능이 지원되지 않는 멀티 액세스 네트워크를 말한다. 대표적인 NBMA 네트워크로는 ATM, X.25, Frame Relay 네트워크가 있다. 참고로, 이더넷의 경우는 브로드캐스트 멀티 액세스(BMA, Broadcast Multi-Access) 네트워크로 라우팅 정보를 보낼 때 B/Mcast 패킷 하나만 보내면 된다. 대부분의 NBMA 네트워크는 내부에서 가상회로(Virtual Circut) 방식을 사용하여 Multi-Access를 구현한다. 즉, 하나의 물리적 회선으로 연결되어 있지만, 내부적으로는 복수개의 가상회선을 사용하여 각각 연결되어 있다. NBMA 네트워크에서는 한 포트로 브로드캐스트 패킷을 보내도 기본적으로 다..
[네트워크] 라우팅(Routing) 개론 간략 정리 1. Classful vs Classless 1.1 classful 라우팅 정보를 교환할 때 Network Address의 경계를 나타내는 Mask가 해당 Class를 벗어나지 않는다. 즉, A,B,C클래스의 범위인 /8, /16, /24의 고정적인 크기를 갖는다.(서브넷팅이 되었다고 할지라도) - 라우터와 교환되는 주소에 대한 정보는 Class 단위로 이루어진다. - 라우팅 정보를 교환할 때 가변적인 Mask 값을 전달하지 못하고, 언제나 Class 단위로 교환된다. - IP Address의 사용이 비효율적, 몇 안되는 호스트의 네트워크도 Class단위로 할당해야하고 남은 IP Address는 다른 네트워크에서 사용할 수 없다. - Prefix를 전달하지 못하기 때문에 VLSM과 같은 유용한 기능을 사..
[네트워크] 프레임 릴레이, F/R 초기 네트워크의 규모(WAN)가 커지면서 이를 수용하기 위해서 종단간 1:1(Point-To-Point)로 연결을 해주는 전용선(PC, Permanent Circuit) 을 임대해서 사용했습니다. 하지만 원거리의 경우 설치비용이 만만치 않고 모든 서비스마다 점대점 서비스를 제공하기가 어려워 기존에 설치된 공중망을 이용한 서비스가 등장하게 되는데 그게 바로 매우 느린 서비스로 유명한 X.25 입니다. 여튼 초창기 서비스들은 비싼 임대료에 비해 실제 사용시간은 정해져 있어서 비효율적이었습니다. 그래서 사용하지 않을때는 회선을 양보할 수 있도록 고안된 Circuit Switched 방식이 등장하게 됐고,X.25프로토콜의 단점들을 보완해서 Frame-Relay(최대 45Mbps)가 그 중의 대표적인 프로토콜입니..
Packet Drop을 위한 널 인터페이스(NULL Interface) ip route 10.10.10.10 255.255.255.255 null0 ip route 10.10.20.0 255.255.255.0 null0 와 같은 방법으로 설정하면 특정 목적지의 주소를 바로 Drop 시킬 수 있다. access-list는 패킷이 cpu까지 올라가야하므로 성능면에서 좋다. 실제로 null 인터페이스로 보내질때마다 패킷의 소스 IP로 icmp unreachable 에러메시지를 전송하는데 패킷이 많을경우 부하가 될 수 있으니 icmp 에러메시지에 대한 옵션을 꺼두는 것이 좋다. [추가] 세노의 아이디를 쓰셨던 박병석이란 분이 게시판에 쓴 내용입니다. 쉽게 설명이 되어 있어서 첨부합니다. . . . 제로님께서 요청하셨던 '어떻게 null interface 가 routing loop ..
CSPF (Constrained Shortest Path First) Certain Conditions 즉, Constraints를 충족시키는 SPF route 이다. 예를 들어 두 적어도 IS System 사이에 10Mbps의 밴드위스를 만족시켜야한다는 조건이 들어간 Shortest Path를 계산하는 경우이다. Constraints는 보통 인터페이스의 Traffic Engineering 파라메터 값이고, 이는 라우팅 프로토콜(ISIS-TE, OSPF-TE)을 통해서 동기화가 이루어진다. TE를 포함한 라우팅 프로토콜이 수집한 정보는 CSPF에 직접 전달이 되며 MPLS망의 RSVP의 시그널링을 위한 경로를 구하기 위해 사용된다. + CSPF 동작 원리 [클릭]
DOS Batch Script : FTP 파일 자동 전송 1, ftp 로그인 정보와 파일 전송 명령을 txt파일에 순서대로 저장한다. 사용자이름 패스워드 디렉토리 이동 옵션 및 전송모드설정 (option) get/put quit ex) ID password cd apn320/user/sources/metaswitch/output/linux/debug bi get dcwms quit 2. 메모장을 열어 bat 확장자의 스크립트 파일을 작성한다. ftp -i -s:ftp.txt 10.3.0.15 + 2번에서 만든 xxx.bat 파일을 더블 클릭하면 자동 수행된다. 작업표시줄이나 바탕화면에 바로가기를 해두면 편하다. +
루프백 인터페이스 (Loopback Interface) 루프백 인터페이스(Loopback Interface)는 라우터나 스위치에 설정하는 가상의 인터페이스 루프백 인터페이스는 논리적인 것이어서 튼튼하다. 즉, 장애로 인하여 다운될 수 있는 이더넷, 시리얼등과 같은 물리적인 인터페이스에 비해서 루브팩 인터페이스는 네트워크 관리자가 다운시키거나 라우터가 다운되지 않는 한 동작한다. OSPF, BGP등에서 라우터 아이디로 사용됩니다. Loopback Interface를 설정하는 3가지 이유 1. 위와 같은 이유 2. Loopback Interface를 사용하는 이유는 OSPF에서 자주 사용합니다. 일반적으로 OSPF는 BroadCast 구간 내에서는 DR과 BDR을 선출을 합니다. 기존의 IS-IS와는 달리 모든 네이버와 인접관계를 맺는 방식이 아니라 OSPF의 ..
[라우팅,Routing] RIB 와 FIB RIB와 FIB를 키로 구글링을 해보면 대부분 아래와 같은 글이 여기저기서 검색된다. RFC1322의 2.1.1 Storage Overhead를 참조하면 다음과 같이 서술되어 있다. The RIB contains the routing information that entities exchange via the inter-domain routing protocol. the RIB is the input to the route computation. RIB는 inter-domain 라우팅 프로토콜을 통해 교환하는 라우팅 정보 엔터티들을 포함하고 있다. RIB는 경로 계산의 입력물이라고 할 수 있다. The FIB contains the information that the entities use to for..
[C언어] GCC Compile Option Option 설명 -c file 해당 file을 compile -o file 실행 파일명을 file로 설정함 -Wn Warning Level을 n으로 설정함. 대부분의 경우 모든 warning message를 보기위해 -Wall로 설정함 -Ipath Include directory를 path로 설정함 -Lpath Link를 위한 Library를 directory를 path로 설정함 -llib Link시 해당 lib를 같이 link하게 함 -v gcc의 version을 출력 -On Optimize Level을 n으로 설정함 이 option을 주면 실행파일의 크기가 작아지고, 실행속도가 빨라지나 그만큼 위험성이 따름. 대부분의 경우 -O1 또는 -O2를 사용함 Wn 즉, 컴파일 경고 메시지를 설정하는 옵션을..
[C언어] Endian 체크 #define LITTLE_ENDIAN 1 #define BIG_ENDIAN 2 #define PDP_ENDIAN 3 #1 int get_endian() { static long int str[2] = { 0x41424344,0x0 }; /* ASCII "ABCD" */ if (strcmp("DCBA", (char *) str) == 0) return LITTLE_ENDIAN; else if (strcmp("ABCD", (char *) str) == 0) return BIG_ENDIAN; else if (strcmp("BADC", (char *) str) == 0) return PDP_ENDIAN; } #2 int endian(void) { int i = 0x00000001; if ( ((char *)&..