인프라/네트워크

L2,L3,L4 기본 개념 정리

nix-be 2024. 1. 7. 18:01
728x90

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

네트워크 과정 (L2) - Ethernet

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

Ethernet 프레임 구조는 다음과 같습니다:

Preamble (7바이트) - SFD (1바이트) - DA (6바이트) - SA (6바이트) - Type/IP(2바이트) - Payload(1500바이트) - FCS(4바이트)

프레임의 총 길이는 1518 바이트입니다.

Type 필드에 사용되는 값들은 다음과 같습니다:

  • 0x0800: IPv4
  • 0x88DD: IPv6
  • 0x0806: ARP
  • 0x8100: IEEE 802.1Q(Tag)
  • 0x8809: IEEE 802.3
  • 0x8870: Jumbo Frame

Native VLAN: untag 패킷을 받은 경우, 해당 패킷을 전달할 때 Native VLAN을 참조합니다.

  • *MTU(Maximum Transmission Unit)**은 Layer3 계층에서의 최대 전송 단위입니다. Ethernet의 MTU는 일반적으로 1500 바이트, IPv4 Path MTU는 최소한으로 감소시킬 경우에도 보장되어야하는 크기인 최소값인64 바이트, IPv6에서는 이 값은1280 바이트로 정해져 있습니다.

Path MTU Discovery: IP 헤더 내 Don't Fragment 비트를 설정하여 패킷을 전송하고 ICMP Error를 리턴 받아 분석하는 방법입니다.

QoS(Quality of Service) 과정은 다음 순서로 진행됩니다: Classification -> Metering(bits/sec measure) -> Marking -> Conditioning(shaping/policing)-> Queuing

STP(Spanning Tree Protocol, 802.1D): Layer2 구조에서 루프 형성을 방지하기 위한 프로토콜입니다.

STP의 동작 과정은 다음과 같습니다:

  1. Root Bridge 선출: 각 스위치는 BPDU(Bridge Protocol Data Unit)를 교환하여 Root Bridge를 선출합니다. Bridge ID는 Priority 값과 MAC 주소로 결정되며, 값이 작을수록 우선순위가 높습니다.
  2. Root Port 선출: 각 스위치는 Root Bridge로부터 수신된 BPDU 값에서 Path cost가 가장 작은 포트를 Root Port로 선출합니다.
  3. Designated Port 선출과 Block: 인접한 스위치들은 서로의 BPDU를 비교하여 Bridge ID가 작은 포트를 Designated Port로 선출하고, 나머지 포트는 Block 상태로 만듭니다.
    • 업링크가 2개인 경우에는 포트 번호가 작은 포트가 Block 상태가 됩니다.

토폴로지 변경 순서:

  • 토폴로지 변경 발생 시 TCN(Topology Change Notification) 발생 스위치가 Root Bridge에게 BPDU TCN을 전송합니다.
  • Root Bridge는 TCA(Topology Change Acknowledgement)으로 보고한 스위치에게 회신하고, 모든 스위치에게 토폴로지 변경을 지시하는 TC BPDU를 발생시킵니다.
  • 이 후 STP 계산이 진행됩니다.

포트 상태 변경 순서:

Block (20초 대기) -> Listen (15초 대기)-> Learn (15초 대기)-> Forwarding

MAC 주소 학습 및 NDP(block), 패킷 전송(Learn)

그 외 동작(Forwarding):

  • Flooding: 인입된 패킷의 DMAC(Destination MAC Address) 주소 정보가 없거나 MAC 테이블이 가득 찬 경우, 동일 VLAN 내의 모든 포트에 패킷을 전송하는 것입니다.

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

네트워크 과정 (L3)

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

이 계층에서의 주요 프로토콜에는 IP, ARP, RARP, ICMP, IGMP 등이 있습니다.

IP (Internet Protocol): 패킷을 분할하여 전송할 때 각각의 조각에 구분자를 붙여서 전송합니다.

Fragmentation: L3 장비는 MTU Size가 동일해야 Fragmentation 동작을 수행합니다. 인입 패킷이 DF(Don't Fragment) 비트가 0인 경우에만 수행됩니다.

  • DF(Don't Fragment): Fragmentation 수행을 막습니다.
  • MF(More Fragment): 추가로 분할된 패킷이 존재함을 알립니다.
  • Fragment offset: 패킷 크기를 나타냅니다. 1 offset은 8바이트입니다.

Static Routing: 연결된 네트워크를 검색하고 라우팅 테이블을 확인한 후 게이트웨이로 전송하며, 필요한 경우 ICMP Error 메시지를 전송합니다. 다중 경로가 있는 경우 Longest Prefix 기법을 사용하여 가장 많은 부분과 매칭되는(즉 범위가 좁은) 경로를 선택하여 전송합니다.

ICMP(Internet Control Message Protocol): 운영체제 오류 메시지를 전송하는 데 사용됩니다.

VRRP(Virtual Router Redundancy Protocol): 장비 이중화를 위해 사용됩니다. Active 장비는 vmac(virtual MAC address)를 생성하고 인접 장비에게 GARP(Gratuitous ARP) 메시지를 보내 MAC 테이블 갱신 요청합니다. VRRP 상태 변화 과정은 다음과 같습니다:

  1. VRRP advertisement ID 확인
  2. VRRP priority 확인
  3. Master 상태 변경
  4. 인접장비로 GARP 메시지 보내어 MAC 테이블 갱신 요청

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

네트워크 과정 (L4)

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

이 계층에서 주요 프로토콜로는 TCP와 UDP가 있습니다.

TCP(Transmission Control Protocol): TCP 헤더는 20바이트를 차지하며, 나머지 1460바이트가 payload(실제 데이터)입니다.

Segment: Layer7의 일련의 바이트가 모여 하나의 패킷으로 그룹화된 것을 말합니다. 이 때 MSS(Maximum Segment Size, 최대 세그먼트 크기)는 TCP에서 한 번에 전송할 수 있는 최대 크기인 1460 바이트입니다.

TCP 3-way Handshake / 4-way Handshake: TCP 연결 설정과 해제 과정을 의미합니다.

Out of Order: 송신자에서 순차적으로 전송된 패킷이 수신자에게 비순차적으로 도착하는 현상입니다. 이 경우, 수신자는 모든 데이터가 도착할 때까지 처리를 보류합니다.

Delayed ACK: ACK(Acknowledgement) 메시지 전송을 지연하는 기법입니다.

Fast Retransmission: 패킷 누락으로 인해 수신부에서 재요청을 3회 보낼 경우, 송신부에서 해당 패킷을 즉시 재전송하는 기능입니다.

다음은 성능 측정 지표들에 대한 설명입니다:

  • CPS(Connections Per Second): 초당 연결 및 해제되는 세션 수를 나타냅니다.
  • TPS(Transactions Per Second): 세션마다 발생하는 트랜잭션 횟수를 나타냅니다.
  • CC(Concurrent Connection): 동시에 유지되는 연결 세션의 수를 나타냅니다.
  • Throughput: 데이터 전송률을 나타내며, 단위로는 bps(byte per second) 또는 pps(packet per second) 등이 사용됩니다. 여기서 주어진 정보에 따르면, 1bps(byte per second)은 약 1/672pps(packet per second)과 같습니다.

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

PAS-K 설명

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

포트바운더리 (Port-Boundary)

  • 정책: 인입 패킷에만 적용되며, ID 값이 작을수록 우선순위가 높습니다(1~16). 모든 포트바운더리와 매칭되지 않으면 L2 처리를 진행합니다.
  • 알고리즘: 목적지 IP가 L4인 경우 MGMT로, 아닌 경우 포트바운더리를 확인합니다. 물리적 포트 매칭 후 정책 매칭을 진행하며, 없으면 다음 포트바운더리에서 동일한 과정을 반복합니다. 모든 항목과 매칭되지 않으면 L2 처리를 진행합니다.
  • 구성별 특징:
    • 라우터 모드/버추얼 브릿지 모드: 1개의 포트 바운더리와 promisc off 상태입니다.
    • 브릿지 모드: 2개의 포트 바운더리를 가집니다. 상단은 promisc off, 하단은 promisc on 상태입니다.
  • promisc on : 수신 패킷을 무조건 PP로 전달

엔트리 (Entry)

  • 처리 과정: 패킷 수신 > PP로 패킷 전달 > 기존 엔트리 검색 > 존재 시 LB서비스 없이 기존 엔트리 통해 패킷 전달, 미존재 시 LB서비스 통해 엔트리 형성 후 패킷 전달
  • 종류:
    • Session Entry : 세션별 부하분산 서비스 정보 기록
    • Persist Entry : 연결 유지 보장, 동일한 SIP는 기존 Entry로 전달

엔트리 삭제 조건

엔트리(Entry)는 세션별 부하분산 서비스 정보나 연결 유지 보장 등을 위해 기록되는 정보입니다. 이러한 엔트리가 삭제되는 조건은 다음과 같습니다

  1. Timeout 만료: show session-timeout 명령어를 통해 확인할 수 있는 시간이 만료된 경우, Persist Entry가 만료됩니다. 그 후, Session Entry의 존재 여부를 확인합니다.
    • Session Entry가 존재하는 경우: 해당 Session Entry는 만료 처리됩니다.
    • Session Entry가 존재하지 않는 경우: Sticky time 설정에 따라 Persist Entry를 갱신합니다.
  2. Health-check 실패: 네트워크 장비의 상태를 주기적으로 검사하는 Health-check 과정에서 실패한 경우에도 엔트리가 삭제됩니다. 이 상황은 show health-check 또는 show info slb 명령어로 확인할 수 있습니다.
  3. 강제 삭제: 관리자에 의해 강제로 삭제 요청이 들어온 경우(no entry, no persist 명령 사용), 해당 엔트리는 바로 삭제됩니다.

이러한 방식을 통해 네트워크 장비는 필요 없어진 정보를 지우고, 필요한 정보만을 유지함으로써 효율적인 리소스 관리와 성능 유지에 기여합니다.

장애감시 (Health-check)

tcp, udp, icmp 등 다양한 프로토콜 지원(ssl은 ssl 카드 장착 시 지원 가능). tcp 통신의 경우 half-open enable 옵션 사용 가능(기본값 disable).

예시) [icmp] [tcp] [http] health-check 1 health-check 1 health-check 1

type icmp type tcp type http apply port 80 port 80 exit apply uri /index.html exit expect "Piolink Web" apply exit [script] health-check 1 script 2 script 4 type script command send command close script 1 data "http header & data" exit command open exit apply port 80 script 3 exit protocol tcp command expect

exit data "Response data" exit 실제서버 (Real Server) name은 필수 아님, rport는 장애감시와 별도로 포트 변경 시 사용 기본값 0 fwlb/gwlb의 경우 interface 필수 지정 clsb의 경우 mac 필수 지정 예시) [slb] [fwlb/gwlb] [cslb] real 1 real 1 real 1 name server name fw1 name server rip 1.1.1.1 rip 1.1.1.1 rip 1.1.1.1 rport 8080 interface fw1 mac 00:00:00:00:00:AA apply apply apply exit exit exit 브릿지 모드 & 버츄얼브릿지 모드

구분 브릿지 모드 버츄얼 브릿지 모드

LOOP STP 설정 LOOP-FREE
장애분석 어려움 쉬움
Proxy-arp disable enable
vlan 수 1개 2개
포트바운더리 2개 1개
  • Proxy-arp : 버츄얼브릿지 모드는 필히 백본에서 mac table 갱신하여 Real server 의 mac을 L4 mac으로 변경해야 함

############################################# SLB #############################################

lb 우선순위 기본값 cslb/gslb(0) > slb(50) > fwlb/gwlb(100)

패킷 처리 순서 요청 패킷 수신 entry table 확인하여 server로 전달

  • 존재하는 경우 : 바로 server로 전달
  • 미존재하는 경우 : lb 생성하고 entry table 생성 후, server로 전달
  • lb 생성 : vip&vport 확인 > act 확인 > lb-method 확인 match되는 lb 없으면 routing 처리 routing 없으면 drop nat mode dnat : 기본값 both-nat : dnat+snat, l4에서 sip를 변경해서 server로 전달, 서버에서 sip는 1개로 수신 dsr : l4에서 dmac을 sever mac으로 변경해서 전달, 서버에서 lo를 slb vip로 설정 필요
  • one-armed 구성에서 sip와 server가 같은 대역일 경우 패킷 drop 해결 : both-nat, dsr lan-to-lan : slb#1에서 slb#2로 slb로 재질의 하는 경우 사용, slb#1에서 요청하는 패킷을 l4에서 slb vip로 sip 변경하여 server로 전달 실습 [라우트 모드] [버츄얼브릿지 모드] [브릿지 모드] vlan wan vid 10 vlan wan vid 10 vlan wan vid 10 vlan wan port ge9 untagged vlan wan port ge9 untagged vlan wan port ge9,ge13 untagged vlan lan vid 20 vlan lan vid 20 vlan lan port ge13 untagged vlan lan port ge13 untagged interface wan ip 1.1.1.1/24 interface wan ip 1.1.1.1/24 interface wan ip 1.1.1.1/24 interface lan ip 2.2.2.1/24 interface lan ip 1.1.1.1/32 route default-gateway 1.1.1.254 route default-gateway 1.1.1.254 route default-gateway 1.1.1.254 route network 1.1.1.101/32 interface lan arp proxy-arp enable port-boundary 1 port-boundary 1 port-boundary 1 port ge9,ge13 port ge9,ge13 port ge9 promise off promise off promise off apply apply apply port-boundary 2 port ge13 promise on apply real 1 real 1 real 1 name real-1 name real-1 name real-1 rip 2.2.2.101 rip 1.1.1.101 rip 1.1.1.101 rport 8080 rport 8080 rport 8080 apply apply apply health-check 1 type tcp port 8080 apply slb test vip 1.1.1.100 protocol tcp vport 80 nat-mode dnat lb-method rr real 1 health-check 1 apply

############################################# FWLB ############################################# 패킷 처리 순서 요청 패킷 수신 entry table 확인하여 firewall로 전달

  • 존재하는 경우 : 바로 firewall로 전달
  • 미존재하는 경우 : lb 생성하고 entry table 생성 후, firewall로 전달
  • lb 생성 : exclude/include filter > act 확인 > lb-method 확인 match되는 lb 없으면 routing 처리 routing 없으면 drop Filter rule 우선순위 : exclude > include, ID 작을수록 Entry Forward : L4 SW > firwall 방향, 부하분산 동작 [예시 : ext] sip:sport dip:dport sip:sport dip:dport service:real server 1.1.1.1:8881 2.2.2.1:80 2.2.2.1:80 1.1.1.1:8881 fwlb:real#1 Reverse : firewall > L4 SW 방향, 부하분산 미동작, 요청패킷에 대한 응답 패킷을 동일 firewall로 전송하기 위해 생성 [예시 : int] sip:sport dip:dport sip:sport dip:dport service:real server 1.1.1.1:8881 2.2.2.1:80 2.2.2.1:80 1.1.1.1:8881 [R]fwlb:real#1 실습 (주의 : 방화벽에서 방화벽 인터페이스 IP 외 DNAT, SNAT 사용하는 경우 configuration 달라질 수 있음) [라우트 모드_EXT #1 : 네트워크 3개] [라우트 모드_EXT #1 : 네트워크 2개] [버츄얼브릿지 모드_EXT #1 : 네트워크 1개]

vlan wan vid 10

vlan wan port ge9 untagged

vlan fw1 vid 20

vlan fw1 port ge13 untagged

vlan fw2 vid 30

vlan fw2 port ge15 untagged

interface wan ip 1.1.1.1/24 interface wan ip 1.1.1.1/24 interface wan ip 1.1.1.1/24

interface fw1 ip 2.2.2.1/24 interface fw1 ip 2.2.2.1/32 interface fw1 ip 1.1.1.1/32 interface fw2 ip 3.3.3.1/24 interface fw2 ip 2.2.2.1/32 interface fw2 ip 1.1.1.1/32

route default-gateway 1.1.1.254

route network 2.2.2.101/32 interface fw1 route network 1.1.1.101/32 interface fw1 route network 2.2.2.102/32 interface fw2 route network 1.1.1.102/32 interface fw2 arp proxy-arp enable port-boundary 1

port ge9,ge13,ge15

promise off

apply

real 1 real 1 real 1 name fw1 name fw1 name fw1 rip 2.2.2.101 rip 2.2.2.101 rip 1.1.1.101 interface fw1 interface fw1 interface fw1 apply apply apply real 2 real 2 real 2 name fw2 name fw2 name fw2 rip 3.3.3.101 rip 2.2.2.102 rip 1.1.1.102 interface fw2 interface fw2 interface fw2 apply apply apply health-check 1

type icmp

tip 4.4.4.1 //INT L4 uplink IP apply

fwlb test real 1,2 health-check 1 apply filter 1 type include apply filter 2 filter 2 type exclude type exclude dip 2.2.2.101/32 dip 1.1.1.101/32 apply apply filter 3 filter 3 filter 3 type exclude type exclude type exclude dip 3.3.3.101/32 dip 2.2.2.102/32 dip 1.1.1.102/32 apply apply apply

[라우트 모드_INT #1 : 네트워크 3개] [라우트 모드_INT #1 : 네트워크 2개] [버츄얼브릿지 모드_INT #1 : 네트워크 1개]

vlan lan vid 10

vlan lan port ge9 untagged

vlan fw1 vid 20

vlan fw1 port ge13 untagged

vlan fw2 vid 30

vlan fw2 port ge15 untagged

interface lan ip 4.4.4.1/24 interface lan ip 4.4.4.1/24 interface lan ip 4.4.4.1/24 interface fw1 ip 5.5.5.1/24 interface fw1 ip 5.5.5.1/32 interface lan ip 4.4.4.1/32 interface fw2 ip 6.6.6.1/24 interface fw2 ip 5.5.5.1/32 interface lan ip 4.4.4.1/32 route network 5.5.5.101/32 interface fw1 route network 4.4.4.101/32 interface fw1 route network 5.5.5.102/32 interface fw2 route network 4.4.4.102/32 interface fw2 arp proxy-arp enable route default-gateway 5.5.5.101 route default-gateway 5.5.5.101 route default-gateway 4.4.4.101 port-boundary 1

port ge9,ge13,ge15

promise off

apply

real 1 real 1 real 1 name fw1 name fw1 name fw1 rip 5.5.5.101 rip 5.5.5.101 rip 4.4.4.101 interface fw1 interface fw1 interface fw1 apply apply apply real 2 real 2 real 2 name fw2 name fw2 name fw2 rip 6.6.6.101 rip 5.5.5.102 rip 4.4.4.102 interface fw2 interface fw2 interface fw2 apply apply apply health-check 1

type icmp

tip 1.1.1.1 //EXT L4 uplink IP apply

fwlb test real 1,2 health-check 1 apply filter 1 type include apply filter 2 filter 2

type exclude type exclude dip 5.5.5.101/32 dip 4.4.4.101/32 apply apply filter 3 filter 3 filter 3 type exclude type exclude type exclude dip 6.6.6.101/32 dip 5.5.5.102/32 dip 4.4.4.102/32

apply apply apply

############################################# 이중화 #############################################

VRRP : 동일 네트워크에 연결된 여러대 장비를 1대 장비처럼 동작 모드 : A-S(None/Stateful), A-A(Single VRRP Failover/Multiful VRRP Failover)

  • VPNLB : A-A 사용 불가 master 장비 동작 vrrp광고 패킷(vrrp id/total priority/vrrp vip list)을 100ms마다 slave로 전달 arp 요청에 대한 vmac으로 응답 라우팅 및 lb 처리 Total priority Track port : 지정된 물리포트 링크 다운되면 Track port 우선순위 0으로 변경되고 failover 수행 Total priority = 기본 우선순위 + Track port 우선순위 110 = 100 + 10 100 = 100 + 0 Stateful (A-S) stateful : master 장애 시 master에서 생성된 entry를 backup으로 전송하여 세션 끊김없이 서비스 제공 방식
    • live : 신규 세션 정보 공유
    • full : vrrp 연동 장비 재부팅 시 모든 세션 공유 gracefull shutdown : master가 shutdown될 때 세션 정보를 모두 backup으로 전송하여 세션 끊김없이 서비스 제공 브릿지모드 promisc on 구조 : Loop 구조로 backup장비 업링크 block 포트
  • master에서 lb처리하여 backup통해 서버로 전송되고 서버에서 backup으로 리턴
  • backup은 promisc on이므로 패킷을 pp로 전달하지만 backup은 세션 정보 없으니 drop
  • 이를 방지하기 위해 backup 상태는 포트 바운더리 예외 처리되어 L2 스위칭 처리하여 master로 전달
728x90