개요

 

Juniper OS는 LACP(Port Channel 혹은 Ether Channel 등)을 구성하려면 반드시 드라이버를 활성화 시켜야 합니다

 

위 사전 지식이 없다면 꽤 오랜 시간을 투자해야 합니다(제가 그랬어요...)

 

그래서 오늘은 Juniper OS에서 LACP를 구성하는 방법에 대해 기술합니다

 


 

LACP Driver 활성화

 

configure 모드 접속 가능한 계정 로그인 후 아래 명령어 입력해주면 됩니다

{master:0}[edit]
root# set chassis aggregated-devices ethernet device-count 5

{master:0}[edit]
root# commit
configuration check succeeds
commit complete

{master:0}[edit]
root# exit
Exiting configuration mode

{master:0}
root> show lacp interfaces ae?
Possible completions:
  <interface-name>     Name of interface
  ae0
  ae1
  ae2
  ae3
  ae4
{master:0}
root> show lacp interfaces ae

 

해당 명령어는 Port Channel을 사용할 수 있는 개수를 설정하는 명령어로 최소 1개부터 최대 32개까지 활성화 가능합니다

 

위 명령어를 입력하지 않으면 절대 활성화가 되지 않으니 나머지 설정을 해도 무용지물입니다

 

적용하게 되면 위처럼 ae(LACP) 인터페이스가 ae0 ~ ae4까지 생성됩니다

 

LACP 설정할 인터페이스 unit 제거

 

Juniper OS에서 LACP 설정을 할 경우 먼저 인터페이스의 unit을 제거해야 합니다

{master:0}[edit]
root# set interfaces ge-0/0/0 ether-options 802.3ad ae0

{master:0}[edit]
root# set interfaces ge-0/0/2 ether-options 802.3ad ae0

{master:0}[edit]
root# commit
[edit interfaces ge-0/0/0]
  'unit 0'
     logical unit is not allowed on aggregated links
error: configuration check-out failed

 

제거되지 않으면 위처럼 적용할 수 없으니 반드시 제거해줍니다

{master:0}[edit]
root# delete interfaces ge-0/0/0 unit 0

{master:0}[edit]
root# delete interfaces ge-0/0/2 unit 0

 

예제에서는 ge-0/0/0, ge0/0/2 포트를 구성할 예정이므로 위와 같이 설정했습니다

 


 

인터페이스 LACP 설정
{master:0}[edit]
root# set interfaces ge-0/0/0 ether-options 802.3ad ae0

{master:0}[edit]
root# set interfaces ge-0/0/2 ether-options 802.3ad ae0

 

인터페이스에 802.3ad 채널을 개방한 후 ae0(Juniper OS에서 사용하는 LACP 인터페이스) 를 적용해줍니다

 

이렇게 되면 두 인터페이스가 하나의 ae0 인터페이스로 묶이게 됩니다

 


 

LACP 인터페이스 설정

 

이제 LACP로 묶었으니 설정을 진행합니다

 

맨 뒤에 active인지, passive인지를 확인 후 설정해줍니다

active
- 해당 포트를 통해 데이터를 전송하는 역할

passive
- 해당 포트를 통해 데이터를 수신 후 응답하는 역할

 

1. Active 모드 설정

{master:0}[edit]
root# set interfaces ae0 aggregated-ether-options lacp active

 

2. Passive 모드 설정

{master:0}[edit]
root# set interfaces ae0 aggregated-ether-options lacp passive

 

 


 

 

이후 switching 모드를 사용할 지 아니면 non switching 모드를 사용할 지, switching 모드를 사용한다면 access인지 trunk인지를 확인해줍니다

switching 모드
- 쉽게 말해 vlan을 사용하는 인터페이스를 만들겠다는 의미

non switching 모드
- 인터페이스에 vlan을 사용하지 않겠다는 의미로 직접 IP를 할당하는 설정이 가능

 

 

1. switching 모드(Access) 설정

{master:0}[edit]
root# set interfaces ae0 unit 0 family ethernet-switching port-mode access

 

2. switching 모드(Trunk) 설정

{master:0}[edit]
root# set interfaces ae0 vlan-tagging

{master:0}[edit]
root# set interfaces ae0 unit 0 family ethernet-switching port-mode trunk

 

3. non switching 모드 설정

{master:0}[edit]
root# set interfaces ae0 unit 0 family inet

 


 

LACP 구성 

 

LACP가 잘 설정되었는지 확인하기 위해서는 configure 모드를 나간 후 명령어를 입력해야 합니다

{master:0}[edit]
root# exit
Exiting configuration mode

{master:0}
root> show lacp interfaces
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/0     Partner    No   Yes    No   No   No   Yes     Fast   Passive
      ge-0/0/2       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/2     Partner    No   Yes    No   No   No   Yes     Fast   Passive
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/0            Port disabled     No periodic           Detached
      ge-0/0/2            Port disabled     No periodic           Detached

 

링크 연결을 안해서 Receive State와 Transmit State가 Port disabled 와 Noperiodic으로 되어있지만 위처럼 결과가 나온다면 정상적인 설정이 완료된 것입니다

 


 

마무리

 

이로써 LACP 구성이 완료되었습니다

개요

 

네트워크 엔지니어로 일하면서 겪은 일 중 하나인데 이에 관한 내용을 정리하려 합니다.

 

우선 용어를 정리할 필요가 있을 것 같아 여기서 정리좀 해보려 합니다.

 

  • mDNS :
    - Apple에서 개발한 근접 호스트 탐색 프로토콜 입니다.
    - UDP 5353 포트를 통해 통신하고 자신의 호스트 명과 IP를 멀티캐스트(IPv4: 224.0.0.251, IPv6: ff02::fb)를 통해 알립니다.
    - 만약 호스트 이름이 동일한 장치가 있을 경우 동일한 호스트 전체 목록에 뒤에 숫자를 붙여 구분한 뒤 각 호스트에 대한 IP 주소를 전부 멀티캐스트를 통해 전달합니다.(호스트명이 같은 장비가 200대가 있다면 host(1): 1.1.1.1 host(2): 1.1.1.2 ... 이런 식으로 패킷을 만들어 전달합니다. 패킷이 길어져 패킷 크기가 1514를 초과한다면 패킷을 분리해 전송합니다.)
  • 멀티캐스트 스톰
    -  초당 발생할 수 있는 멀티캐스트량이 기준치를 초과하면 패킷 과다 발생으로 판단하고 이 상태를 Storm이라 칭합니다.
    - 패킷이 전달되는 목적지의 종류에 따라 다른 명칭이 있는데, 하나의 목적지에 전달하는 것이 유니캐스트, 같은 그룹의 목적지에 전달하는 것이 멀티캐스트, 같은 네트워크 전체에 전달하는 것이 브로드캐스트이다.

 

이번 글에서는 강의실 두 군데에서 모두 동일한 호스트명을 사용하게 되면서 약 100여대의 PC에서 mDNS 패킷을 과다 발생시키고 조치하는 과정에 대해서 설명하려 합니다.

 

Trouble Shooting 과정

 

우선 증상이 특이했습니다.

 

사용하는 네트워크 구성은 다음과 같습니다.

 

그림 그리기가 힘드네요.

 

네트워크 장비에 직접 붙여서 사용하는 사람이 있는 반면에, 허브를 사용하는 사용자도 있습니다.

강의실 특성상 반드시 허브에 연결하여 사용해야 하는 구성이었습니다.

 

증상은 다음과 같습니다.

 

  • 네트워크 장비에 직접 연결한 사용자는 네트워크에 이상이 없다.
  • 허브를 사용하는 사용자들 중 1G급 이상 장비를 사용하는 사용자는 이상이 없다.
  • 허브를 사용하는 사용자들 중 100M급 장비를 사용하는 사용자는 네트워크가 불안정하다.
  • 강의실에서 강의가 진행될 경우 위 허브를 사용하는 사용자들의 네트워크가 불안정하다.
  • 강의실의 PC가 모두 꺼지면 네트워크에 이상이 없다.

이를 바탕으로 각 사용자들의 장비에 이상이 없는 것을 확인하고 패킷 검사를 진행했습니다.

 

해당 패킷은 네트워크 장비에서 모니터링한 것이 아니라 클라이언트 PC에서 1분간 모니터링한 결과입니다.

 

뭐 별거 없어보이지만 중요한 것은 패킷 수량입니다.

MDNS 패킷만 피터링한 결과

무려 1분에 발생한 패킷이, 그것도 클라이언트에서 발생한 패킷이 77만건이 넘어가고 MDNS 관련 패킷만 확인한 결과 98.2%를 차지하고 있습니다. ㄷㄷㄷ

 

 

패킷 내용은 보안상의 이유로 보여드릴 수는 없지만 모두 MDNS를 통해 자신을 알리고, 동일한 PC명을 가진 호스트들의 전체적인 정보가 멀티캐스트로 뿌려지고 있습니다. 그 내용이 너무 커서 PDU 사이즈를 초과해 여러 개의 패킷으로 나누어져 보내지고 있는것이 보입니다.

 

이로써 패킷이 과다하게 발생해 클라이언트 측에서 문제가 발생했을 것으로 추정되었습니다.

 

그렇다면 네트워크 장비에 직접 연결하면 괜찮은데 허브에 연결한 장비들은 문제가 발생했을까요??

 

그것은 바로 대역폭이었습니다.

 

허브를 사용하는 사용자들 중에서도 성능이 좋은 장비를 사용하면 문제가 없지만 성능이 좋지 않으면 발생하는 것이었습니다.

 

그 이유는 저렇게 많은 MDNS 패킷을 전달하는 과정에서 대역폭을 모두 사용했기 때

문입니다.

 

조치 및 결과

 

1차 조치

네트워크 장비에서 해당 클라이언트까지의 MDNS 패킷을 차단해보았습니다.

 


1차 조치 결과 아주 많이 패킷이 줄어든 것이 확인되었습니다.

 

2차 조치

MDNS 패킷 차단 후 눈에 띄게 패킷이 줄어든 것이 확인되었고 강의실 내부의 MDNS 서비스를 모두 끄기로 했습니다.

 

 

MDNS 패킷의 비중이 거의 사라졌습니다.

 

마무리

 

해당 장애에 대한 트러블 슈팅 과정이 재미있었네요

+ Recent posts