728x90

 BGP (Border Gateway Protocol) 란?

 

BGP는 소규모 네트워크 망을 위한 프로토콜이 아닌 대규모 네트워크 망에 적합한 라우팅 프로토콜 입니다. 그리고 OSPF, RIB, EIGRP 와 같은 IGP (Inter Gateway Protocol)는 Fast Convergence에 중점을 두지만 BGP는 Fast Convergence가 아닌 안정성에 더 중점을 두고 맞춰서 설계된 라우팅 프로토콜 입니다.

 

 

 BGP (Border Gateway Protocol) 특징

  • TCP를 이용한 신뢰성 있는 라우팅 업데이트 수행
    - TCP Port 179을 사용하여 Neighbor 사이 신뢰 관계를 맺고, 업데이트가 누락되지 않도록 합니다. 

  • KeepAlive를 이용한 Neighbor 상태 확인
    - KeepAlive를 이용하여 Neighbor의 상태를 확인 합니다. 기본적인 Timer는 Hello TIme 60초, Hold Time 180초 이며 Hold TIme 이내 Hello 메시지가 들어오지 않으면 Neighbor가 죽은 것으로 판단 합니다. 

  • 주기적인 BGP 업데이트 수행
    - iBGP는 5초, eBGP는 30초 간격으로 BGP 업데이트가 수행 됩니다. 라우팅에 변화가 생길 때 마다 업데이트가 발생하게 되면 네트워크 자원소모가 많기 때문에 일정 주기로 업데이트가 수행 됩니다. 업데이트 간격 사이에 발생하는 변화는 반영하지 않고 최종 상태만 업데이트를 수행 합니다. 

  • 최적 경로 선출을 위한 다양한 기준 
    - IGP와 달리 BGP는 최적 경로 선출을 위해 CISCO 기준 11개의 기준이 있으며 해당 값을 비교하여 최적 경로로 선출 된 항목만 라우팅 테이블에 내려 갑니다. 최적 경로로 선출되지 못하더라도 BGP Table에는 존재 합니다.

  • 다양한 경로 속성 (Well-Known속성과 Optional 속성)
    - BGP는 경로 정보 전달 시 다양한 정보를 전달 합니다. 경로 정보에 포함되는 정보는 Well-Known 속성과 Optional 속성이 존재 합니다.  Well-Known 속성은 다시 Mandatory과 Discretionary로 분류 되며 모든 장비에서 지원 합니다. Optional 속성은 전달 가능한 속성 (Transitive Optional Attribute)와 전달 하지 못하는 속성 (Non-Transitive Optional Attribute)로 나뉘며 장비에 따라 지원여부를 확인해 보아야 합니다. 

  • BGP 경로 속성을 이용한 트래픽 조절
    - Local AS에서 외부로 경로를 전송할 때는 다양한 방법(Weight, Local Preference, ETC...)으로 제어가 가능하지만 유입되는 트래픽을 조절 할 수 있는 방법이 AS Path를 추가하는 방법만 존재 합니다. 

  • 인접하지 않아도 BGP Neighbor 관계 수립 가능
    - 다른 라우팅 프로토콜과 달리 BGP는 인접하지 않은 라우터와도 BGP Neighbor 관계를 맺을 수 있습니다. Neighbor를 맺기 위해 사용되는 IP까지 도달할 수 있다면 Neighbor 관계를 맺는데 문제가 없습니다. 

  • 다양한 프로토콜 지원 (MP-BGP)
    - RFC 2858번이 추가 되면서 BGP는 IP 이외 다른 프로토콜들도 지원 할 수 있게 되면서 MP BGP라는 이름으로 얻게 되었습니다. address family identifier (AFI)는 IPv4, IPv6와 관련이 있고, subsequent addressfamily identifier (SAFI)를 이용하여 유니캐스트 또는 멀티캐스트 트래픽 전송이 가능해졌습니다. 

    원래 BGP는 IPv4만 수용 가능했기에 BGP Database Table을 하나만 관리 했으나 AFI 와 SAFI 기능이 추가 되면서 BGP Database는 address family와 sub-address family 기준으로 별도로 생성되고 관리 됩니다. 
728x90
728x90

● BGP (Border Gateway Protocol) Design

 

BGP를 구성하는 방법은 일반적으로 Single-Homing, Dual-Homing, Multi-Homing 3가지를 소개합니다. 시간이 지나며 용어의 변경이 발생하여 Dual-Homing은 모두 Multi-Homing 방법으로 소개 되고 있으며, Single-Homing 방법은 굳이 BGP를 사용할 필요가 없어 소개 되지 않습니다. 

 

Redundancy와 Traffic Handling 목적으로 BGP 세션을 추가로 맺습니다. BGP 세션을 맺는 방법에 따라 4가지의 시나리오를 생각할 수 있습니다.

 

  ○ BGP (Border Gateway Protocol) Multi-Homing Design 종류

 

구성 설명
  ■ Client가 동일한 SP (Service Provider) Router와 eBGP  세션을 맺는 방법 입니다. eBGP Peer가 2개가 생기지만 Best-Path Selection Algorithm에 의해서 하나의 경로만 사용 가능하며 주 목적은 Link Redundancy 입니다. 

■ AS Prepending or MED를 사용하여 유입되는 트래픽을 조절할 수 있습니다. (A, C 트래픽은 Line 1, B,D 트래픽은 Line 2 로 들어오게 조절 가능)

■ 단일 SP Router와 eBGP 세션을 맺기 때문에 Client or SP측 네트워크 장비에 문제가 발생 하거나 내부 네트워크에 문제가 발생 또는 Client Router에 문제가 발생하면 장애가 발생합니다.
  ■ Client가 동일한 SP를 사용하지만 서로 다른 Router와 eBGP 세션을 맺는 방법 입니다. eBGP Peer가 2개가 생기지만 Best-Path Selection Algorithm에 의해서 하나의 경로만 사용 가능하며 주 목적은 Link or Device Redundancy 입니다.

■ AS Prepending or MED를 사용하여 유입되는 트래픽을 조절할 수 있습니다. (A, C 트래픽은 Line 1, B,D 트래픽은 Line 2 로 들어오게 조절 가능)

■ 동일 SP의 다른 라우터와 BGP 세션을 맺기 때문에 장비 장애에 대비할 수 있지만 SP 내부 네트워크에 문제가 발생 또는 Client Router에 문제가 발생하면 장애가 발생합니다.

  ■ Client가 서로 다른 SP와 eBGP 세션을 맺는 방법 입니다. 다른 SP에 연결 되기 때문에 Link & Device Redundancy 효과와 SP내부 네트워크 장애가 발생하더라도 서비스는 유지 됩니다. 

■ 서로 다른 AS로 부터 BGP 정보를 받아오기 때문에 AS Path 기준으로 서로 다른 경로가 선택 될 수 있어 동일 SP에 연결하는 구조보다 더 최적화된 트래픽 관리가 가능 합니다. 

■ Client Router는 단일 장비이기 때문에 단일 실패 지점이 될 수 있으며, Transit Network가 되지 않도록 필터링이 필요 합니다.
  ■ Client Router를 iBGP로 연동하고 서로 다른 SP와 eBGP 연결을 수행 합니다. Link & Device Redundancy 효과와 SP내부 네트워크 장애 그리고 Client Router에 문제가 발생하더라도 서비스는 유지 됩니다. 

■ 가장 일반적으로 사용하는 eBGP를 맺는 방법 입니다. 서로 달느 AS와 연결되기 때문에 Transit Network가 되지 않도록 필터링이 필요 합니다.

 

● BGP Transit Network 

 

Transit Netwok란 고객의 네트워크가 SP 네트워크 처럼 동작되어 다른 네트워크 트래픽이 우리 네트워크를 경유해서 전달되는 것을 의미 합니다. 고객은 SP와 eBGP를 연결할 때 Transit Network가 되지 않도록 네트워크 필터링을 설정 해 주어야 합니다. 

 

 

회사 BGP 네트워크가 위와 같은 환경으로 구성되어 있을 경우 SP3은 10.64.1.0/24 네트워크 정보를 2가지 경로를 통해 학습 합니다. 하나는 SP1 - SP2 - SP4의 경로를 통해 학습하고 다른 하나는 SP4 - AS500을 통해 학습 합니다. BGP 최적 경로 선출 알고리즘에 의해 AS PATH가 짧은 SP4 - AS500 의 경로가 최적 경로로 선출 되고 고객 네트워크인 AS500이 의도치 않게 Transit Network로 동작 하게 됩니다. 

 

Transit Network로 동작하지 않도록 하기 위해 SP와 연결하는 라우터는 필터링을 통해서 Transit Network로 동작하지 않도록 해야 합니다. 일반적으로 SP와 연결 할 때 정규식(Regular Expression)을 이용하여 Local AS만 광고하고 SP로 부터는 BGP 정보를 받지 않는 정책을 가장 많이 사용 합니다.

728x90
728x90

● BGP (Border Gateway Protocol) Types (iBGP & eBGP)

 

BGP Session 관계를 맺는 AS에 따라 iBGP와 eBGP 2가지 타입으로 분류가 되며 서로 다른 특성을 부여 받게 됩니다. 

  • Internal BGP (iBGP)
    - 같은 AS 번호 아래에 있는 라우터와 BGP 관계를 맺거나 같은 BGP Confederation 에 참여하고 라우터와 BGP 관계를 맺을 때 iBGP라고 합니다. iBGP에게 전달 받은 경로의 AD (Administrative Distance)는 200으로 Routing Table에 표기 됩니다. 
  • External BGP (eBGP)
    - 다른 AS 번호에 소속 되어 있는 라우터와 BGP 관계를 맺을 때 eBGP라고 합니다. eBGP에게 전달 받은 경로의 AD는 20으로 Routing Table에 표기 됩니다. 

 

  ○ iBGP

 

같은 AS내에서 BGP 관계가 필요한 이유는 다양한 라우팅 정책이 필요하거나 AS 번호 사이에서 경로 정보를 전달 할 때 누락되지 않아야 하기 때문입니다. 

 

AS 65100과 AS 65300 사이에 위치한 "AS 65200"은 BGP로 전달 받은 경로 정보를 누락없이 전달해야 하기 때문에 BGP 관계를 맺어 전달하는 것이 가장 안전 합니다. R2와 R4는 iBGP 관계를 맺어 eBGP로 받은 경로 정보를 안정적으로 전달 할 수 있습니다. 

 

R3은 BGP Neighbor 관계를 맺고 있지 않기 때문에 외부 AS로 가는 경로를 알지 못합니다. R3이 외부 AS경로를 학습하기 위해서는 BGP 라우터의 재분배를 통해 경로정보를 학습할 수 있지만 유연성이 저해되고, BGP 정책이 누락 되기 때문에 재분배 대신 BGP를  사용하는 것이 일반적 입니다.

 

다만, iBGP는 학습한 경로를 1 HOP 떨어진 iBGP로만 전달 할 수 있는 제약이 있습니다. (R2가 광고하는 외부 경로 정보는 R3까지 전달되고 R4까지 전달 되지 않습니다.) 이런 제약을 극복하기 위해 iBGP Full-Mesh 구조로 구성하거나 RR (Route Reflector)를 구성하여 사용 합니다.

 

 

 

  ○ eBGP

 

서로 다른 AS에 속해 있는 라우터간 Neighbor 관계를 맺으면 eBGP가 됩니다. 외부와 연결되는 eBGP는 iBGP와 비교하여 아래와 같은 차이점이 존재 합니다. 

  • eBGP의 TIme-To-Live (TTL)값은 1이 기본값 입니다. Multi-Hop eBGP Neighbor 관계를 맺기 위해 TTL값을 늘려줘야 합니다. iBGP의 TTL값은 255 입니다.
  • eBGP가 경로를 광고하면 Local AS 번호가 추가 됩니다. eBGP는 수신한 경로 정보에 Local AS 번호가 포함되어 있으면 Routing Loop라고 판단하고 해당 경로정보를 버립니다.
  • eBGP Neighbor 관계를 맺을 때는 물리 인터페이스에 부여된 주소를 사용하고 iBGP Neighbor 관계를 맺을 때는 Loopback 인터페이스 주소를 사용하는 것이 일반적 입니다. 

iBGP와 eBGP 구성을 위한 설정의 근간은 remote-as를 제외하고 크게 다르지 않으나, 세부적으로 Neighbor 관계를 맺기 위한 인터페이스 선정, Next-Hop 문제, TTL, AD, iBGP Update Issue 및 기타등등 등이 존재하기 때문에 이 부분을 고려하여 설정 하여야 합니다.

728x90
728x90

● BGP (Border Gateway Protocol) 최적 경로 선출

 

BGP 최적 경로 선출기준은 IGP 보다 풍부하며 또한 선출 기준에 따라 우선순위가 있습니다. 또한 최적 경로 선택 알고리즘은 AS로 들어오는 트래픽 또는 나가는 트래픽에 영향을 줍니다.

 

 BGP (Border Gateway Protocol) 최적 경로 선출 기준

 

BGP 경로 광고에는 Network Layer Reachability Information (NLRI)와 Path Attributes (PAs)가 포함되어 있습니다. NLRI는 Network Prefix, Network Prefix Length와 AS Path, Origin 같은 정보들로 이루어져 있습니다. BGP Table에는 동일한 목적지에 대해 여러개의 경로가 있으며, 경로에 포함된 속성들이 최적 경로 선출에 영향을 주게 됩니다. 

 

해당 속성들을 이용하여 BGP는 최적 경로를 선출하게 됩니다. 최적 경로 선출에 사용되는 기준은 총 11가지가 있습니다. 우선순위가 높은 기준이 먼저소개 됩니다. (오름차순)

  1. Longest Matching Rule 적용
    - 가장 상세한 경로정보를 우선시 하는 기준으로 최적 경로 선출시 가장 먼저 적용됩니다. 다음과 같이 경로 정보를 수신한다면 192.168.0.0/16 보다 192.168.1.0/24 경로 정보를 우선 시 하게 됩니다. /24보다는 /25 를 더 우선 합니다.

  2. Weight (Cisco Only)
    - Cisco 장비에서만 적용되는 우선순위로 Local BGP 라우터에서 수신한 BGP경로가 다수 있을 때 최적 경로 선출에 사용되는 기준이며, 해당 값은 다른 BGP 라우터에게 전달 되지 않습니다.
    - Weight 값의 범위는 0 부터 65,535 까지이며 Weight 값은 inbound route-map을 통해 설정하거나 특정 Neighbor에게 Weight 값을 설정하여 사용 합니다. 

  3. Local Preference (LOCAL_PREF or LP)
    - Local Preference는 Well-Known Discretionary Path Attribute이며 BGP 업데이트 메시지에 포함되는 속성 입니다. Local Preference는 eBGP에게 전달 되지 않으며 iBGP에서 최적 경로 선출 목적으로 사용 됩니다. 
    - 0부터 4,294,967,295사이의 값을 가질 수 있으며 기본값은 100 입니다. LP 값이 높은 경로가 최적 경로로 선출 됩니다.

  4. Local Originated (Network Statement, Redistribution, Aggregation)
    - 외부 Peer에 의해 BGP 테이블에 삽입된 경로 보다, Locally Router가 Network 명령어를 통해 BGP 테이블에 삽입한 경로를 우선시 합니다. 

  5. AIGP (Accumulated  Interior Gateway Protocol)
    - Accumulated IGP (AIGP) 는 Optional Non-Transitive 경로 속성이며, AS 내부에서만 전달이 되는 값 입니다.IGP의 경로를 BGP에 재분배하고, IGP의 메트릭 값을 이용하여 BGP가 최적 경로 선출에 사용 합니다. AIGP를 BGP Peer에게 전달하기 위해 Route-Map을 사용해야 합니다. 

    다수의 BGP AS를 관리하는 환경에서 사용 가능하며, IGP에 사용되는 IP 주소체계가 겹치지 않고 고유해야 하는 제약사항이 있습니다. 일반적인 엔터프라이즈 환경에서 적합하지 않습니다.

  6. Shortest AS Path
    - 목적지로 향하는 다양한 경로가 존재할 경우, 가장 짧은 AS 길이를 가진 경로를 선호 합니다. BGP에서 AS는 HOP Count와 같으며 짧을 수록 우선순위가 높습니다. 해당 규칙을 이용하여 BGP 트래픽 유입을 제어할 수 있습니다. AS Prepending을 사용하여 AS를 추가할 수 있습니다.

  7. Origin Type
    - Well-known mandatory BGP 속성 입니다. Network 명령어를 통해서 광고한 경로는 IGP or i 의 코드를 받고 재분배 네트워크는 imcomplete or ? 코드를 받습니다. IGP를 더 선호 합니다. 

  8. Lowest MED (Multiple-Exit Discriminator)
    - Optional Non-Transitive 속성이며 32 bit 값 (0 to 4,294,967,295)으로 표현하며 메트릭 이라고 부릅니다. BGP에서 네트워크를 광고 또는 재분배 할 때 IGP 경로 메트릭을 자동으로 설정하며 eBGP에게 경로를 학습할 때 MED값을 전달 받지 못한다면 기본값은 0 입니다. 만약 MED를 eBGP에게 수신한다면 다른 iBGP Peer에게 전달 하지만 다시 eBGP에게 전달하진 않습니다. 

    MED값을 MED 사용의 목적은 다른 Inbound Traffic을 제어하기 위한 목적으로 사용되며 낮은 MED를 더 선호 합니다.

  9. eBGP Over iBGP
    - BGP 경로를 학습하는 방법은 iBGP, eBPG, Confederation AS에게 받는 3가지 방법이 있으며, 이중에서 eBGP Peer에게 받은 경로를 가장 선호 합니다. eBGP > Confederation AS > iBGP 우선순위를 가집니다. 

  10. Lowest IGP Next-Hop Metric
    - BGP Next-Hop 주소의 IGP 메트릭 값이 가장 낮은 것을 선호 합니다. 낮은 것을 선호하는 이유는 Next Hop의 IGP Metric값이 낮으면 Next-Hop까지 더 빨리 도달하기 때문 입니다. 
  11. Oldest Path Prefer eBGP 
    - 상기 조건까지 모두 동일하다면 BGP 테이블에 먼저 학습된 경로를 선호 합니다. 가장 오래된 eBGP 경로이기 때문에 더 안정적이라 판단 합니다. 

  12. Lowest BGP Router ID
    - 가장 낮은 Router ID를 가진 eBGP 라우터를 더 선호합니다. 만약 경로를 Route Reflextor로 부터 받았다면 Router ID 대신 Originator ID를 사용 합니다. 

  13. Minium Cluster list Length
    - The cluster list 는 non-transitive BGP 속성이며 최소 Cluster List 길이를 더 선호 합니다. Route Reflector가 Cluster ID를 Cluster List에 추가하며 Route Reflector는 해당 정보를 이용하여 Routing Loop가 발생하지 않도록 합니다. 

  14. Lowest Neighbor Address
    - BGP Peer가 2개의 물리적인 링크를 통해 Neighbor 관계를 맺을 경우 가장 낮은 Neighbor 주소를 가진 경로를 더 선호 합니다. iBGP Peer 한정으로 적용되는 규칙으로 Neighbor 주소가 가장 낮은 것을 선호 합니다. (eBGP이 경우 오래된 경로를 우선 한다는 규칙이 있어 여기에는 해당 하지 않습니다.)
728x90
728x90

서브넷 마스크 계산기 및 계산 방법 2가지(CIDR, netmask)

2023-01-31 by 나루

네트워크를 설정하다보면 서브넷 마스크 또는 마스크라고 되어 있는 부분에 입력을 해야 하는 경우가 있을 것입니다. 서브넷 마스크 계산 방법을 알아보고, 또 서브넷 마스크 계산기도 함께 준비했습니다.

서브넷 마스크란? CIDR?

클래스 단위로 결정된 주소 비트를 이론적으로 어느 정도의 서브넷이라는 단위로 나눌 것인지 지정하는 것입니다. 크게 네트워크 영역과 호스트 영역으로 나뉘게 되는데, 이를 통해서 네트워크의 성능을 보장하고, 제한된 자원을 효율적으로 사용할 수 있게 됩니다. 그리고 CIDR은 Classless Inter-Domain Routing의 줄임말로 클래스 없는 도메인 간 라우팅 기법입니다.

서브넷 마스크 계산 방법: CIDR을 Netmask로 변환

그림 1의 Addresses에서의 192.168.0.31/24 와 같이 뒤에 /24 를 표기하는 것을 CIDR 값이라고 부릅니다.

그림 1. CIDR로 서브넷 표기하기

그리고 그림 2와 같이 많은 분들이 흔히 사용하는 개인 네트워크의 사설 IP 주소 192.168.0.132와 같은 값을 이용할 때 Netmask 값은 255.255.255.0으로 설정해서 이용합니다.

그림 2. Netmask로 서브넷 표기하기

위의 두 가지 값은 표현은 다르게 되나 동일하게 처리됩니다. 아래 계산기에서 24라고 입력해 보시면 2진수 Netmask에서 11111111 11111111 11111111 00000000 이라고 표현되는 것을 볼 수 있습니다. 왼쪽에서부터 몇 비트를 마스킹할 것인지 표현하는 게 CIDR 표기법입니다.

Netmask는 그걸 십진수로 8비트씩 끊어서 10진수로 표현한 것입니다. 흔히 넷마스크로 사용하는 255.255.255.0이 그 예입니다.

CIDR과 Netmask 계산기

아래 CIDR에 숫자를 입력해 주면 Netmask 값으로 변환이 됩니다. Netmask에 값을 채워넣으면 CIDR로 변환됩니다. 두가지 경우 모두 2진수 Netmask 값으로도 변환됩니다. 단, netmask 값은 페이지 하단의 표를 참고해서 사용하시기 바랍니다.

CIDR 
Netmask 
Netmask(2진수) 11111111 11111111 11111111 11111000
그림 3. 서브넷 마스크 계산 방식

192.168.121.110/24로 표기한다면, 앞의 24비트인 192.168.121 까지가 호스트 주소이고, 이후의 110 값에 해당하는 8비트가 호스트 주소가 된다고 이해하시면 됩니다. 즉, 좌측부터 24개 비트가 1로 채워져 넷마스크 값은 255.255.255.0이 됩니다.

특히 회사나 학교와 같은 곳에서는 넷마스크 값을 네트워크 관리자를 통해 명확히 확인 후 사용하시기 바랍니다. 물론 개인이 사용하는 192.168.0.xxx의 경우에는 편안하게 255.255.255.0 사용하면 되겠습니다.

CIDR & Netmask 테이블

바로 위에 계산기를 준비해 놓았지만, 아래 표를 통해서도 확인할 수 있습니다.

CIDR Mask Hosts
/32 255.255.255.255 1
/31 255.255.255.254 2
/30 255.255.255.252 4
/29 255.255.255.248 8
/28 255.255.255.240 16
/27 255.255.255.224 32
/26 255.255.255.192 64
/25 255.255.255.128 128
/24 255.255.255.000 256
/23 255.255.254.000 512
/22 255.255.252.000 1024
/21 255.255.248.000 2048
/20 255.255.240.000 4096
/19 255.255.224.000 8192
/18 255.255.192.000 16384
/17 255.255.128.000 32768
/16 255.255.000.000 65536
/15 255.254.000.000 131072
/14 255.252.000.000 262144
/13 255.248.000.000 524288
/12 255.240.000.000 1048576
/11 255.224.000.000 2097152
/10 255.192.000.000 4194304
/9 255.128.000.000 8388608
/8 255.000.000.000 16777216
/7 254.000.000.000 33554432
/6 252.000.000.000 67108864
/5 248.000.000.000 134217728
/4 240.000.000.000 268435456
/3 224.000.000.000 536870912
/2 192.000.000.000 1073741824
/1 128.000.000.000 2147483648
표. CIDR, Netmask 별 이용가능한 호스트 개수

관련자료

위의 계산기에는 stackoverflow의 netmask 관련 코드를 사용했습니다.
위키피디아의 CIDR 페이지를 참고했습니다.

함께 읽으면 좋은 글

728x90
728x90

서브넷 마스크와 서브넷팅 계산 방법

 

 

하나의 네트워크에 16,777,214개의 호스트 IP를 할당할 수 있는 A 클래스 는 엄청나게 큰 규모의 국제적인 기업 또는 단체가 아니라면 매우 비효율적이다.

 

만약 이 장치가 4개가 있는 가정집에 A 클래스를 그대로 부여한다면 Network Address와 Broadcast Address까지 포함하여 6개가 사용되고 남은 16,777,208개는 아무도 사용하지 않고 낭비된다.

 

이러한 문제를 해결하기 위해 IP를 사용하는 네트워크 장치들의 수에 따라 효율적으로 사용할 수 있는 서브넷(Subnet)이 등장하게 되었다.

 

 

서브넷 마스크는 IP주소 체계의 Network ID와 Host ID를 서브넷 마스크를 통해 변경하여서 '네트워크 영역을 분리 또는 합체' 시키는 개념이다.

 

네트워크를 분리한 것을 서브넷팅(Subnetting), 합치는 걸 슈퍼넷팅(Supernetting)이라고 한다.

 

서브넷팅은 서브넷 마스크를 이용하여 Host ID를 Network ID로 변환하게 되고, 슈퍼넷팅은 서브넷 마스크를 이용하여 Network ID를 Host ID로 변환하게 되어서 가능해진다.

 

서브넷 마스크

 

  • IP 주소에는 반드시 서브넷 마스크가 있다.
  • 서브넷 마스크는 기본적으로 255와 0으로 이루어져 있다.
  • 여기서 255는 네트워크 부분이며 0은 호스트 부분이 된다.
  • 255로 된 부분은 무시하시고 0으로 된 부분에서 IP를 나눠쓰는 혹은 IP를 쪼개는 개념이다.

 

IP를 쪼개는 이유는 IP주소가 모자라기 때문이며 네트워크를 구축시에 가장 중요한 부분이라고 할수있으며 서버관리시에 꼭 필요한 부분이다.

 

 

서브넷 마스크의 형태는 IP주소와 똑같이 32bit의 2진수로 되어있으며, 8bit(1byte)마다, .(dot)으로 구분하고 있다.

즉, IP와 똑같은 OOO, OOO, OOO, OOO의 모습을 가지고 있다.

 

형태가 똑같은 이유는 IP주소와 서브넷 마스크를 AND 연산하기 위해서이다.

 

 

 

서브넷 마스크를 사용하는 이유

브로드캐스트 영역(네트워크)를 나누기 위함 입니다.

한 네트워크에 수 많은 호스트가 있을 경우 원활한 통신이 불가능해지게 됩니다. 이를 해결하기 위해서 네트워크를 적절하게 나누어 주셔야 합니다. 또한 네트워크를 적절하게 구분지어주기 때문에 IP 주소를 아끼는 효과가 있습니다.

 

호스트 이름으로부터 IP 주소지에 대한 네트워크 이름을 규정으로 32비트 크기로 만들어진다.

 

 

혹시 IP주소 뒤에 /24 같은 것들이 붙어 있는 것을 볼 수 있을것이다.

이는 Prefix(접두어)로 (CIDR이라고도 한다.)서브넷 마스크의 bit 수를 의미한다.

 

옥탯의 8bit가 모두 1일 경우 10진수로 255가 되기에 /24는 왼쪽으로 나열된 1bit의 수가 24개라는 뜻이다.

 

예시) 192.168.0.3/24는 IP주소가 192.168.0.3 이며, 서브넷 마스크는 255.255.255.0이라는 의미다.

 

클래스 범위 표기법
A 11111111.00000000.00000000.00000000 /8 OR 255.0.0.0
B 11111111.11111111.00000000.00000000 /16 OR 255.255.0.0
C 11111111.11111111.11111111.00000000 /24 OR 255.255.255.0

 

 

Bitmask (서브넷 마스크로 사용된 1의 개수) Netmask(255.255.255.x) 네트워크 수 (서브넷 개수) 호스트 수
/25 128 2 128
/26 192 4 64
/27 224 8 32
/28 240 16 16
/29 248 32 8
/30 252 64 4
/31 254 128 2
/32(Host Rount) 255 256 1

 

 

네트워크 수는 2의 제곱의 수로 계산하면 된다.

호스트 수 256을 네트워크수로 나누면 된다.

 

서브넷 마스크의 마지막인 32bit는 (255.255.255.255)를 호스트루트(Broadcast)라고 하는데 이것은 특정 호스트로 가는 경로를 알릴때 사용한다.

 

 

 

 

서브넷팅의 이해

 

IP주소 낭비를 방지하기 위한 원본 네트워크를 여러 개의 네트워크로 분리하는 과정(자신의 네트워크 주소를 더 작은 서브 네트워크로 2의 배수로 나누는 과정)을 말한다.

 

서브넷팅을 과정중에 분리된 네트워크 단위를 서브넷이라고 하며, 서브넷팅을 하기 위해서는 서브넷 마스크의 이해가 필요하다.

 

서브넷팅(Subnetting) 하는 법

 

 

192.168.32.0/24라는 네트워크 주소 하나를 25개씩의 호스트가 있는 각각의 네트워크로 분할하려고한다.

 

Ip Address Subnet mask
192.168.32.0 255.255.255.0
11000000.10101000.00100000.00000000 11111111.11111111.11111111.00000000

 

위에 표에 서브넷마스크(Subnet mask)는 1로 표시된 부분은 Network-ID로 사용되는 부분이며,

0 으로 표시된 Host-ID 부분을 가지고 서브넷팅을 하게된다.

 

위 표와 같이 하나의 옥텟은 8bit(00000000)로 이루어져 있으며, 1개의 bit는 2개의 정보를 표현할 수 있다.

 

이번에는 Host-ID 부분을 필요한 개수인 5개의 Bit로 쪼개보겠다.

 

192.168.32.000/00000

<-(Network ID) (Host ID)->

 

0~31 192.168.32.0 ~ 192.168.32.31
32~63 192.168.32.32 ~ 192.168.32.63
64~95 192.168.32.64 ~ 192.168.32.95
96~127 192.168.32.96 ~ 192.168.32.127
128~159 192.168.32.128 ~ 192.168.32.159
160~191 192.168.32.160 ~ 192.168.32.191
192~223 192.168.32.192 ~ 192.168.32.223
224~255 192.168.32.224 ~ 192.168.32.255

 

각각의 범위가 서로 다른 네트워크를 의미한다.

범위에 있는 숫자는 각각의 네트워크 안에서 호스트로 할당해줄 수 있는 IP의 범위가 된다.

 

범위의 맨 앞에 있는 게 각 네트워크 대표주소(192.168.32.0)가 되며,

마지막의 (192.168.32.255)의 숫자가 브로드캐스트 숫자가 된다.

728x90
728x90

// 장비 전면 <MODE> 버튼을 누른 채, 뒷면 전원 케이블을 연결합니다.

C2950 Boot Loader (C2950-HBOOT-M) Version 12.1(11r)EA1, RELEASE SOFTWARE (fc1)
Compiled Mon 22-Jul-02 17:18 by antonino
WS-C2950C-24 starting...
Base ethernet MAC Address: 00:0f:90:81:98:00
Xmodem file system is available.

The system has been interrupted prior to initializing the
flash filesystem. The following commands will initialize
the flash filesystem, and finish loading the operating
system software:

flash_init
load_helper
boot

switch: flash_init

Initializing Flash...
flashfs[0]: 78 files, 3 directories
flashfs[0]: 0 orphaned files, 0 orphaned directories
flashfs[0]: Total bytes: 7741440
flashfs[0]: Bytes used: 5982208
flashfs[0]: Bytes available: 1759232
flashfs[0]: flashfs fsck took 7 seconds.
...done initializing flash.
Boot Sector Filesystem (bs:) installed, fsid: 3
Parameter Block Filesystem (pb:) installed, fsid: 4

switch: load_helper

switch: boot

Loading "flash:/c2950-i6q4l2-mz.121-19.EA1c.bin"...#############################
################################################################################
################################################################################
################################################################################
#####################

File "flash:/c2950-i6q4l2-mz.121-19.EA1c.bin" uncompressed and installed, entry
point: 0x80010000
executing...

Restricted Rights Legend

Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.

cisco Systems, Inc.
170 West Tasman Drive
San Jose, California 95134-1706

 

Cisco Internetwork Operating System Software
IOS (tm) C2950 Software (C2950-I6Q4L2-M), Version 12.1(19)EA1c, RELEASE SOFTWARE
(fc2)
Copyright (c) 1986-2004 by cisco Systems, Inc.
Compiled Mon 02-Feb-04 23:29 by yenanh
Image text-base: 0x80010000, data-base: 0x8058A000


Initializing flashfs...
flashfs[1]: 78 files, 3 directories
flashfs[1]: 0 orphaned files, 0 orphaned directories
flashfs[1]: Total bytes: 7741440
flashfs[1]: Bytes used: 5982208
flashfs[1]: Bytes available: 1759232
flashfs[1]: flashfs fsck took 7 seconds.
flashfs[1]: Initialization complete.
Done initializing flashfs.
POST: System Board Test : Passed
POST: Ethernet Controller Test : Passed
ASIC Initialization Passed

POST: FRONT-END LOOPBACK TEST : Passed
cisco WS-C2950C-24 (RC32300) processor (revision P0) with 20808K bytes of memory
.
Processor board ID FOC0814W0T4
Last reset from system-reset
Running Enhanced Image
26 FastEthernet/IEEE 802.3 interface(s)

32K bytes of flash-simulated non-volatile configuration memory.
Base ethernet MAC Address: 00:0F:90:81:98:00
Motherboard assembly number: 73-5750-13
Power supply part number: 34-0965-01
Motherboard serial number: FOC081409Z7
Power supply serial number: DAB08135KRN
Model revision number: P0
Motherboard revision number: A0
Model number: WS-C2950C-24
System serial number: FOC0814W0T4

--- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]: n

 

Press RETURN to get started!


Switch>enable

Switch#erase startup-config
Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]y[OK]
Erase of nvram: complete

Switch#delete vlan.dat
Delete filename [vlan.dat]? y
Delete flash:y? [confirm]y
%Error deleting flash:y (No such file or directory)

Switch#reload
Proceed with reload? [confirm]y
00:01:51: %SYS-5-RELOAD: Reload requested

C2950 Boot Loader (C2950-HBOOT-M) Version 12.1(11r)EA1, RELEASE SOFTWARE (fc1)
Compiled Mon 22-Jul-02 17:18 by antonino
WS-C2950C-24 starting...
Base ethernet MAC Address: 00:0f:90:81:98:00
Xmodem file system is available.
Initializing Flash...
flashfs[0]: 77 files, 3 directories
flashfs[0]: 0 orphaned files, 0 orphaned directories
flashfs[0]: Total bytes: 7741440
flashfs[0]: Bytes used: 5981184
flashfs[0]: Bytes available: 1760256
flashfs[0]: flashfs fsck took 7 seconds.
...done initializing flash.
Boot Sector Filesystem (bs:) installed, fsid: 3
Parameter Block Filesystem (pb:) installed, fsid: 4
Loading "flash:/c2950-i6q4l2-mz.121-19.EA1c.bin"...#############################
################################################################################
################################################################################
################################################################################
#####################

File "flash:/c2950-i6q4l2-mz.121-19.EA1c.bin" uncompressed and installed, entry
point: 0x80010000
executing...

Restricted Rights Legend

Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.

cisco Systems, Inc.
170 West Tasman Drive
San Jose, California 95134-1706

 

Cisco Internetwork Operating System Software
IOS (tm) C2950 Software (C2950-I6Q4L2-M), Version 12.1(19)EA1c, RELEASE SOFTWARE
(fc2)
Copyright (c) 1986-2004 by cisco Systems, Inc.
Compiled Mon 02-Feb-04 23:29 by yenanh
Image text-base: 0x80010000, data-base: 0x8058A000


Initializing flashfs...
flashfs[1]: 77 files, 3 directories
flashfs[1]: 0 orphaned files, 0 orphaned directories
flashfs[1]: Total bytes: 7741440
flashfs[1]: Bytes used: 5981184
flashfs[1]: Bytes available: 1760256
flashfs[1]: flashfs fsck took 7 seconds.
flashfs[1]: Initialization complete.
Done initializing flashfs.
POST: System Board Test : Passed
POST: Ethernet Controller Test : Passed
ASIC Initialization Passed

POST: FRONT-END LOOPBACK TEST : Passed
cisco WS-C2950C-24 (RC32300) processor (revision P0) with 20808K bytes of memory
.
Processor board ID FOC0814W0T4
Last reset from system-reset
Running Enhanced Image
26 FastEthernet/IEEE 802.3 interface(s)

32K bytes of flash-simulated non-volatile configuration memory.
Base ethernet MAC Address: 00:0F:90:81:98:00
Motherboard assembly number: 73-5750-13
Power supply part number: 34-0965-01
Motherboard serial number: FOC081409Z7
Power supply serial number: DAB08135KRN
Model revision number: P0
Motherboard revision number: A0
Model number: WS-C2950C-24
System serial number: FOC0814W0T4

--- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]: n

 

Press RETURN to get started!


00:00:14: %SPANTREE-5-EXTENDED_SYSID: Extended SysId enabled for type vlan
00:00:18: %SYS-5-RESTART: System restarted --
Cisco Internetwork Operating System Software
IOS (tm) C2950 Software (C2950-I6Q4L2-M), Version 12.1(19)EA1c, RELEASE SOFTWARE
(fc2)
Copyright (c) 1986-2004 by cisco Systems, Inc.
Compiled Mon 02-Feb-04 23:29 by yenanh
00:00:21: %LINK-5-CHANGED: Interface Vlan1, changed state to administratively do
wn
00:00:22: %LINK-3-UPDOWN: Interface FastEthernet0/24, changed state to up
Switch>
00:00:22: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1, changed state t
o down
00:00:23: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/24, chan
ged state to down
00:00:24: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/24, chan
ged state to up

Switch>enable

Switch#config terminal

Enter configuration commands, one per line. End with CNTL/Z.

Switch(config)#enable password cisco
Switch(config)#end
Switch#write memory

728x90
728x90

Cisco Catalyst 2950 Switch 기본 정보 변경 명령어 입니다.

 

Switch> enable

Switch# configure terminal

Switch(config)# enable password cisco // enable 모드 암호 설정.

 

Switch(config)# interface vlan1

Switch(config-if)# ip address 000.000.000.000 255.255.255.0 // 장비 관리용 IP주소 설정.

Switch(config-if)# no shutdown

Switch(config-if)# exit

Switch(config)# ip default-gateway 000.000.000.1 // 장비 기본 게이트웨이 주소 설정.

 

Switch(config)# ip http server // 장비 관리용 웹콘솔 활성화.

 

Switch(config)# line vty 0 4 // Telnet 모드.

Switch(config-line)# password cisco // Telnet 접속 암호 설정.

Switch(config-line)# exit

Switch(config)# end

Switch# write memory // 설정값 저장.

Switch# exit

728x90
728x90
728x90
728x90

L4 로드밸런싱 설정 및 운용


사용자 삽입 이미지

한마디로 말하면,

L4의 핵심은 'IP, 포트, 세션' 을 기반으로한 
로드 밸런싱(Load Balancing)이다!

라고 말하고 싶네요. L4에서 가장 중요한건 역시 4계층답게 
포트(port)라는 생각이 드네요.

2계층의 MAC
3계층의 IP
그럼 4계층은 바로 포트 입니다.

그리고 이 포트와 맞물려 로드 밸런싱이라는 개념이 등장 합니다.

L4 스위치는 마치 포트와 로드밸런싱의 오묘한 조합이랄까요.

L4 스위치 = 포트 + 로드밸런싱(물론 IP,세션도 중요합니다)

L4스위치가 로드밸런싱을 수행하는 장비이기 때문에 L4스위치를 
다른말로 로드 밸랜서(Load Balancer) 라고도 합니다.

로드밸런싱은, 동일한 역할을 수행하는 서버 그룹을 VIP를 통해 관리하며, 
서버로 향하는 트래픽을 일단 VIP를 가진 L4스위치로 수신한 후 
분배정책에 따라 적절한 서버에 분배해 주는 것을 말합니다.

VIP는 Virtual IP의 약자로, 서버그룹의 대표 IP라 할 수 있습니다. 
이 VIP를 로드밸런싱을 수행하는 L4 스위치가 가지고 있습니다.
서버와 통신하고자 하는 클라이언트는 VIP를 향해 트래픽을 전송하고 
L4스위치가 이 트래픽을 받아 적절한 서버에 로드밸런싱 해주는 것이 
L4스위치의 역할입니다.

한마디로, L4 스위치는 부하분산 장비입니다.
요즘 웬만한 사이트는 서버 한 대로 사용자들의 트래픽을 감당하기 
어렵기 떄문에 동일한 역할을 수행하는 서버를 여러 대 두어서 사용자들의 
트래픽이 많아져도 유연하고 안정적으로 사이트를 운영하기 위해 
L4스위치를 통한 로드밸런싱
을 하는걸로 알고 있습니다.

L4스위치, 즉 로드밸란서가 없어도 네트워크를 하는데 지장은 없습니다. 
하지만 IT가 발전하고 트래픽이 과도해지면서 로드밸런서 없이는 안정적인
네트워크를 구성하는것이 불가피해지고 있다는 생각이 드네요.


이 그림에서 보는바와 같이,
클라이언트와 서버 사이에 로드밸란서가 위치하여 서버 2대에 대해 
로드밸런싱을 수행합니다.
즉, 로드밸런서가 트래픽을 왼쪽 서버로 보낼 수도 있고, 오른쪽 서버에 보낼 
수도 있습니다.


###################################################

그러면 L4를 왜 쓰느냐??

2가지 이유가 있습니다.

첫 번째 로드를 분산하기 위해서 입니다.(로드 발란싱)

예를 들어 한 서버에 웹 서비스(80)를 하는 서버가 있습니다.

그런데 서버에 부하 때문에 서버를 증설 해야 합니다.

하지만 서버를 분리 시키면 IP가 하나 더 필요하게 되고 IP가 늘어나면 기존 서비스와 IP가 달라지는 문제가 생깁니다.

이 때 사용하는 것이 L4장비의 VIP입니다.

예를 들어 기존에 사용하는 서버의 IP가 128.x.x.1이라고 합시다.

이 IP를 L4장비에 VIP로 할당합니다. 128.x.x.1 for 80 128.x.x.1 regarding 80

(VIP는 가상의 아이피를 말합니다.)

기존 서버에는 128.x.x.2 와 새로운 서버에는 128.x.x.3을 할당합니다.

(물론 기존 서버와 새로운 서버는 데이타가 동기되어 있어야 합니다.)

그리고 L4장비에 로드발란싱이 가능하게 세팅합니다.


그러면 이제 128.x.x.1로 요청하는 응답에 대해서 L4가 처리 하게됩니다. (대표IP로 서버여러대를 가지치기 할수 있다.)

L4는 로드발란싱 규칙에 따라서 기존 서버에서 응답하게 할 수도 있고 신규 서버에서 응답하게 할 수도 있습니다.


간단하게 L4에서 홀수 번째 요청은 기존 서버에서 짝수 번째 요청은 신규 서버에서 응답하게 설정 할 경우 요청에 대한 응답을 정확하게 반으로 나눌수 있습니다.


이렇게 한 서버의 요청건수를 줄여주어 실제로 한대의 서버가 처리해야 할 요청을 두대(여러 대)의 서버가 처리하게 되는 것을 로드 발란싱이라고 합니다.

알테온으로 설명 드리면, 웹서버 두대를 로드밸런싱 하려면 먼저

웹서버를 각각 real server 로 각각 ip를 등록합니다.
그리고 웹서버 즉 real server ip 두개 를 group1 에 소속시킵니다.
그리고 virtual ip (vip=대표ip)를 하나 등록해서 그 ip로 오는
패킷중에 http(80) 패킷에 대해서는 group1으로 보내면 
설정된 
matric(hash, 라운드로빈, least connection, weighted )값에 의해
로드밸런싱 되는것입니다. 대부분 hash 방식을 사용하죠...


이렇게 하면 128.x.x.1 for 80 은 오직 80 포트만을 받고, 다른 포트는 filtering 된다.. 쓸데없는 포트로 들어오는 공격을 막을수 있다.


그리고 L4의 두번째 기능으로 무결성을 위한 fail over기능입니다.


흔히 가장 안정적으로 서비스되는 서버는 일년에 다운타임(동작 불능시간)이 50분 미만인 서버라고 합니다.

(1년동안 50분 정도 다운되면 최고로 안정적인 서버가 되는 것입니다.)


서버역시 기계인 것이라 영원히 죽지 않는 서버는 존재하지 않습니다.

그러나 사람들은 좀더 서버가 안정적으로 동작하길 윈하게 되죠

아주 중요한 서버(예를 들면 정치 관련 홈페이지나 은행과 같은 금융 그리고 그 외 쇼핑몰등)의 경우 일년에 50분의 다운이라도 서비스에 큰 타격을 입을 수 있습니다.


예를 들어 128.x.x.1이라는 서버가 있습니다.

그러나 이 서버는 중요한 서버라 절대 서버에 장애가 있으면 안됩니다.

이럴경우 사용하는 장비가 L4입니다.


L4에 VIP를 이용해서 128.x.x.1이라는 IP를 할당합니다.

기존 서버의 IP를 128.x.x.2로 변경합니다.

새로운 서버에 128.x.x.3으로 할당합니다.(물론 기존 서버와 자료가 같도록 동기화 되어 있어야 합니다.)


L4에 fail over기능을 이용 할 경우

128.x.x.1로 오는 모든 요청에 대해서 L4는 128.x.x.2가 응답하게 합니다.

그리고 128.x.x.2에 장애가 있을 경우(서버가 다운될 경우)에는 128.x.x.3서버가 자동으로 응답하게 처리하게 됩니다.


이렇게 미리 동일한 서버를 준비해 놓고 L4를 이용해서 fail over로 연결하면 첫번째 서버(마스터)에 장애가 있을 경우라도 미리 준비해 놓은 서버(슬래이브)가 동작하게 되므로

실제로 서비스에는 문제가 없게되는 것입니다.


Alteon L4 스위치 기본 설정방법


- Real 서버가 2대이고 1개의 그룹으로 설정, vitural 서버는 1개 사용
- metric(분산알고리즘) 미설정 시 default는 leastconnection
- health 체크 미설정 시 default는 tcp, inter=2(매 2초마다 체크), retry=4(4번 실패 체크 시 down으로 정의)
- DAM(Direct Access Mode)가 default로 disable (Real IP를 통한 직접 서비스 안됨)
※ 즉, 여기서는 Real IP를 이용한 http(80번 포트) 접속 안됨
(하지만 Load Balance와 무관한 서비스는 각각 가능: ssh, 터미널 접속,... 등)

Main#
Main# /cfg/l3 ; 스위치 IP 설정...
(또는 Main# /cfg/ip)
Layer 3# if 1 ; 스위치 자체 IP 설정...
IP Interface 1# addr 1.2.3.4 ; IP address 할당
IP Interface 1# mask 255.255.255.0 ; subnet mask 할당 (필요시)
IP Interface 1# ena ; IP address 활성화

IP Interface 1# /cfg/l3/gw ; default gateway 설정...
Enter default gateway number: (1-255) 1 [Enter] ; gateway 번호 입력 (필요시)
Default gateway 1# addr 1.2.3.1 ; default gateway 할당
Default gateway 1# ena ; gateway 활성화

Default gateway 1# /cfg/slb/real 1 ; 첫번째 real 서버 설정...
Real server 1# rip 1.2.3.5 ; real 서버 IP address 할당
Real server 1# ena ; 첫번째 real 서버 활성화

Real server 1# /cfg/slb/real 2 ; 두번째 real 서버 설정...
Real server 2# rip 1.2.3.6 ; real 서버 IP address 할당
Real server 2# ena ; 두번째 real 서버 활성화

Real server 2# /cfg/slb/group 1 ; real 서버 그룹 설정...
Real server group1# add 1 ; 등록된 real 서버 1번을 그룹에 추가
Real server group1# add 2 ; 등록된 real 서버 2번을 그룹에 추가

Real server group1# /cfg/slb/virt 1 ; virtual 서버 설정...
Virtual server 1# vip 1.2.3.2 ; virtual 서버 IP address 할당
Virtual server 1# ena ; virtual 서버 활성화
Virtual server 1# service http ; http 서비스 설정...
Virtual server 1 http Service# group 1 ; http 서비스를 real 서버 그룹에 할당
(필요시 Virtual server 1 http Service# rport 8080 ; http 서비스를 real 서버의 8080 포트에 매핑)

Virtual server 1# /cfg/slb/port 1 ; L4의 물리적인 포트 1번 설정...
SLB port 1# server ena ; 포트 1번을 서버 포트로 할당
SLB port 1# /cfg/slb/port 2 ; L4의 물리적인 포트 2번 설정...
SLB port 2# server ena ; 포트 2번을 서버 포트로 할당

SLB port 8# /cfg/slb/port 8 ; L4의 물리적인 포트 8번 설정...
SLB port 8# client ena ; 포트 8번을 클라이언트 포트로 할당

SLB port 8# /cfg/slb ; SLB 설정...
Layer 4# on ; Server Load Balancing 모드 On
Layer 4# apply ; 변경된 설정값 적용
Layer 4# cur ; 현재 설정값 확인
Layer 4# save ; FLASH 메모리에 현재 설정내용 저장
Layer 4# /info/slb/dump ; SLB 정보 확인


------------------------------------------------------
| ㅁ1 ㅁ2 ㅁ3 ㅁ4 ㅁ3 ㅁ4 ㅁ5 ㅁ6 ㅁ5 ㅁ6 ㅁ7 ㅁ8 | --> Alteon L4 스위치
--+---+--------------------------------------+--------
| | |
| | |--> 클라이언트 포트 (외부 연결)
| |
| |--> 서버 포트 (서버 연결)
|
|
|--> 서버 포트 (서버 연결)

사용자 삽입 이미지

※ 설정 시 port 9번은 미사용


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



L4/L7 스위치 개요 (로드밸런서)

from 이유있는 코드 2010/02/01 14:05

스위치의 분류 :

L2 : OSI 레이어 2에 속하는 MAC 어드레스를 참조하여 스위칭하는 장비


L3 : OSI 레이어 3에 속하는 IP주소를 참조하여 스위칭하는 장비


L4 : OSI 레이어 3~4에 속하는 IP 주소 및 TCP/UDP 포트 정보를 참조하여 스위칭하는 장비


L7 : OSI 레이어 3~7에 속하는 IP 주소, TCP/UDP 포트 정보 및 패킷 내용까지 참조하여 스위칭함





L4/L7 스위치의 용도 :


일반적으로 서버들의 로드밸런싱을 위해 사용됨


복수개의 웹서버가 있을 때, 임의의 웹서버에 접속을 시도하면, 스위치가 각 서버의 부하를 고려하여


적당한 서버와 연결시켜준다.


설정에 따라 순차적 연결 또는 접속이 가장 적은 서버에 연결하는 방식 등이 있다.



L4 스위치 :


Layer 4에서 패킷을 확인하고 세션을 관리하며, 로드밸런싱을 제공하는 스위치

TCP/UDP 패킷 정보를 분석해서 해당 패킷이 사용하는 서비스 종류 별로 처리(HTTP, FTP, SMTP...)

세션관리, 서버/방화벽 로드밸런싱, 네트워크 서비스 품질 보장


L7 스위치 :

L4 스위치의 서비스 단위 로드밸런싱을 극복하기 위해 포트 + 데이터 페이로드 패턴을 이용한 패킷 스위치

(e-mail 내용/제목, URL ...)

connection pooling(시스템 부하 감소), Traffic Compression (컨텐츠 압축 전송), 보안 기능


L4 vs L7 :
공통점 : 스위치로 들어온 패킷을 적절한 목적지로 전송해줌 (불필요한 패킷은 drop시킴)

차이점 : 
기능과 역할은 동일하나 패킷을 분석하는 인텔리전스가 다름

L7은 보안 기능 강화

(DOS/SYN 공격 방어, CodeRed/Nimda 등 감염 패킷 필터링, 네트워크 자원 독점 방지 등)

L7 스위치에 대한 오해 :
L7 스위치는 레이어 7 계층을 위한 스위치이다.

: 기본적으로 L2, L3 및 부분적으로 L4 스위치를 지원한다. 레이어5 세션 계층 위주이다.

L7 스위치는 URL 기반 스위치다.

: L7 스위치 기능에 대한 일부분을 말한 것이다.

L7 스위치는 모든 TCP/UDP 포트(0-65535)에 대한 인지가 가능하다.

: 알려진 일반 포트에 대한 세션처리는 가능하지만, 순간적으로 사용하는 임시 포트는 제한적이다.

sticky session :
L4 스위치를 통해 분배된 서비스 세션은 하나의 연결 요청에 1~n 중에 한 대의 서버에 분배된다.
여러 번 시도해도 그 때마다 1~n 중에 한 대에 분배되므로, 같은 서버에 접속될 확률은 1/n이 된다.
그러나 처음에 접속했던 서버와 같은 서버에 계속 연결시킬 수 있다.
바로 sticky 옵션이다.
(일반적인 상태)
사용자A -> L4 -> 1번서버
사용자A -> L4 -> 3번서버

(sticky 상태)
사용자A -> L4 -> 1번서버
사용자A -> L4 -> 1번서버

기존 사용자의 세션 상태를 timeout 시간 내에는 계속 유지시켜주는 것이 sticky session이다.

timeout 시간은 60분 이내로 조절 가능하다.
sticky session의 문제점 :

L4 스위치의 가장 큰 목적(?)인 로드밸런싱이 제대로 동작하지 않을 수 있다.
개별 사용자가 사용할 경우에는 세션 timeout이 있으므로 어느 정도 로드밸런싱을 충족시킨다.
하지만 프록시서버를 사용하는 경우 문제가 된다.
예를 들어 회사에서 외부로 나가는 경우 각 PC의 IP가 아니라 프록시서버의 IP를 달고 나간다.
여러 사람이 timeout 시간 내에 접속하는 경우, 계속해서 한 서버에만 로드가 집중된다.
(외부에서 보기에는 동일한 사람으로 보이므로)


대안 :

SSL이나 기타 다른 보안모듈을 이용해서 인증된 특정 사용자에 대해서 Cookie/DB에 기록 후
해당 사용자에 대해서만 세션을 유지하도록 한다. (단점 : performance 저하 및 기타 cost)
그래서 L7 스위치를 사용한다.

< L7 스위칭 방식 >

URL 스위칭 :

URL 주소에서 특정 String을 검사하고, 검색된 문자열을 기준으로 부하를 분산시키는 방식이다.
http://www.test.com/test.html 이라는 주소로 사용자들이 웹페이지를 요청한다.
해당 페이지는 이미지가 빈번히 변경되고, 이미지 크기도 크다. (전체적으로 로딩이 느리다)
이런 경우, client의 http request 내용에 html이 들어가면, 메인 웹서버로 전송하고..
해당 request에 jpg 등의 이미지를 요청하는 경우 이미지 웹서버로 분산할 수 있다.

Cookie 스위칭 :
Http header의 cookie 값에 따른 특정 String을 기준으로 부하를 분산하는 방식이다.
Cookie 값 필드를 보고 설정된 분류 기준에 따라 어느 서버로 보낼지 결정한다.


Content 스위칭 :
legacy한 L7 스위칭은 URL/Cookie 스위칭을 사용했으나,
최근 L7 스위칭은 Content 스위칭 방식을 이용한다.
기존에는 제한적인 기능, 즉 호스트네임, URL, Cookie 를 기준으로 로드밸런싱을 하였으나,
L7 content 스위칭은 추가적인 기능을 지원한다.
Http header 의 모든 필드를 기반으로 한다.
XML content를 기반으로 한다.
XML tags 나 multiple Http header를 기준으로 복잡한 로드밸런싱을 구현한다.
Cookie 와 http header의 insertion과 deletion을 포함한 contents-rewrite 기능을 지원한다.
alternate한 url이나 도메인의 redirecting request를 지원한다.


728x90

+ Recent posts