반응형

 


최조 작성: 2022년 7월
내용 추가: 2023년 8월

 

 

2022년 여름, 현재 나의 IT 개발자로써의 밥벌이는 만 22년을 꽉 채우고, 23년차로 접어들고 있다. 

가끔 프로 축구 선수, 프로 야구 선수가 은퇴 후 10년 만에 인터뷰한 내용을 보면,

 


은퇴 이후 한번도 축구공을 차지 않았다.
은퇴 이후 한번도 야구공을 던져 보지 않았다.

 

이런 인터뷰 내용이 많다.

 

나도 23년 동안 한 분야에서만 일하다보니 모니터 화면의 코드를 보면서 키보드 타이핑하기가 점점 싫어진다.

23년간 일하는 사이에 개발 언어(Programming Language)도

 


C 언어 -> PHP -> JAVA -> Perl -> R -> Python -> Go

 

이 순서로 바꾸면서 개발해왔다.

이제는 소스 코드를 작성하다 보면, 여러 Programming 언어의 문법이나 흐름이 뒤죽박죽 섞여서 머릿속에 그려지다보니

Editor만 바라봐도 짜증이 확 밀려온다. 

그리고 여러 종류의 개발 언어를 쓰다보니, 구현의 깊이가 낮아지는 느낌이다.

 

 

22년간 어떤 일들이 있었나...

 

시간 순으로 있었던 굵직했던 이벤트를 보면,

  • 2000년 9월 W 회사 입사.
  • 2000년 11월 첫 프로젝트 개발 완료 - 한글.COM 도메인 등록 & 관리 시스템
  • 2002년 무선 숫자 도메인(WINC) 등록 시스템 개발
  • 2003년 9월 T 회사 입사 (이동통신시스템 개발 회사)
  • 2003년 10월 NPDB(011, 016, 017, 018, 019 등 이동통신 번호 이동 시스템) 개발
  • 2005년 HA 솔루션 개발 (서비스의 고가용성을 지원해주는 시스템을 개발)
  • 2010년 파자마5 모바일 App 개발

 

 

  • 2011년  Hetero-GW 개발
  • 2012년  MWC 2012  이종망 GW 출품 (아래 사진이 그때 개발해서 전시한 시스템)

 

[T월드 공지] ‘스마트 코리아’ 삼각편대, MWC 2012 참가 | SK텔레콤 뉴스룸

MWC는 전세계 약 220 국가의 1,000여 개 이동통신사, 휴대폰 제조사, 장비 제조사 등으로 구성된 연합기구인 GSMA(Global Systm for Mobile communicaion Association)가 주최하는 세계 최대의 정보통신 전시·컨퍼

news.sktelecom.com

 

  • 2013년   DPI(Deep Packet Inspection) 시스템 개발
  • 2015년   Machine Learning, Deep Learning 기술을 이용한 장애 예측 시스템 개발
  • 2017년   Linux Container를 이용한 Container Platform 설계 및 Demo 시스템 개발
  • 2018년   Data Center 가상화 관리 시스템 개발(일명, XOS) + Open Networking OS
  • 2019년   상반기 5G NRF 개발
  • 2019년   하반기 휴직 (건강 문제 발생, 반년 정도 병원 다니면서 요양)
  • 2020년   Kubernetes Cluster에 Deploy할 CNF 개발
  • 2021년   Container Platform 구축을 위한 TF 리딩
  • 2022년  Container Platform 도입 프로젝트 

 

이미 2018년에 정신 건상에 문제가 생겼고, 2019년 봄부터 정신건상의학과 병원을 다니기 시작했다.

제대로 병치레를 하고 보니 아플 때는 빨리 전문의를 찾아가서 상담하고 정밀하게 진단하고 치료하는 것이 제일 좋은 방법이다.

혹시 이 글을 읽는 직장인 중에서 눈에 보이지 않는 병 때문에 치료를 망설이는 직장인이 있다면, 빨리 병원부터 가기를 추천한다.

 


 

신입 사원이었을 때 마음가짐 vs. 지금의 마음가짐

신입이었을 때 나의 마음.

  • 내가 제일 잘 하는 것 같다.
  • 내가 제일 똑똑한 것 같다.
  • 내가 제일 열심히 하는 것 같다.
  • 이렇게 잘 하고, 똑똑한데 왜 연봉을 쪼금 주지...?

직장 생활 22년이 넘은 지금의 마음가짐

20년차가 넘었을 때부터 지금까지(23년차까지) 나의 마음은 

  • 나 빼고, 동료들은 다 잘하고 있는 것 같다.
      (내가 있는 회사는 대체로 농땡이 부리는 동료가 없이 평균적으로 근면하고 성실해서 더욱 이런 생각이 많이 드는 것 같다.)
  • "내가 프로젝트에서 도움이 되고 있는건 맞나?" 라는 스스로 의심하기 시작한다. (매일 자책하는 것이 일...)
  • 이미 출근하면서 하루동안 쓸 에너지 중에서 50% 정도는 소비하는 것 같다. (즉, 체력이 바닥이라는.... ㅠㅠ)
  • 출근해서 모니터를 보고 있는 것만해도 에너지가 고갈되는 느낌이다.
  • 1년만 더 버텨보자.  (이런 생각으로 3년째 버티는 중이다 ㅠㅠ) 
    진짜 올해가 IT 개발자로써 일하는 마지막 해일까...?

아무튼 23년차가 되니까 몸도 힘들고 마음가짐도 무겁다.

 

 

결혼 그리고 출산, 육아

나는 결혼을 일찍했다.

대학교 졸업 후 1년 뒤. 만 26세에 결혼했다.

아내와 나는 동갑이고 심지어 생일도 거의 비슷하다. (그래서 생일 파티도 한날 몰아서 한다.)

아내를 학생일 때 만나서, 졸업하고 1년 뒤에 결혼했기 때문에 제대로 준비된 것 없이 신혼 살림을 시작했다.

그리고 내 나이 만 27세일 때, 첫째 아기가 생겼다. 그리고 2년 뒤 둘째 아기, 그리고 또 3년 뒤에 세째 아기.

이렇게 나와 아내를 닮은 아들과 딸이 나에게 왔다.

 

지금 결혼한지 19년이 되었고, 되돌아 생각해보면 순간 순간에는 힘든 일이 많았던 것 같은데 

지금은 결혼한 것을 참 잘한 것이라 생각하고 있다.

그리고 나를 닮은 2세가 있다는 것은 더욱 기쁘다. 

결혼을 할지 말지 고민하는 사람이 나에게 결혼하는게 좋냐고 묻는다면, 나의 대답은 확실하다.

 


" 이 여자를 위해 내 모든 것을 바쳐 희생할 수 있고, 그 희생이 즐겁고 행복하다면 결혼하고 그런 생각이 없다면 하지 말라! "

 

내가 결혼할 때, 내 마음 속 다짐이 딱 위 문장과 같았다.

사랑하는 사람과 19년 동안 살아보니, 편한 것보다는 불편함이 많고 몸이 고단하거나 정신적으로 힘든 일도 많이 생긴다.

그런데 애초에 이 여자를 즐겁고 행복하게만 할 수 있다면 모든 것을 감내하리라 마음 먹어서 그런지, 힘든 순간이 딱 지나고 나면 행복은 몇배가 되는 느낌이다.

 

육아도 비슷한 것 같다.

아기 였을 때 한없이 귀엾고 예쁘다가, 아이가 점점 크면서 아이의 고집과 일탈로 아빠가 힘들어지는 경우가 있다.

아기에게 사회적 잣대(예를 들어, 학교성적 같은 것)를 들이밀고 보기 시작하면, 부모는 초조해지는 것 같다.

그래서 항상 마음속으로 다짐했었다.  건강과 웃음만 있다면, 나머지는 하늘이 주는 대로 받자 !!!

특히 학교 공부, 입시에 관해서는 입에 담지 않겠다고 다짐하고 또 다짐했다.

이것 때문에 친한 이웃들에게 "무심하고, 무책임한 부모"라는 소리도 몇번 들었다.

 


학원 안 다니는 중,고등학교 자녀가 어디있냐고?

 

아이가 싫어하는데, 굳이 학원에 보낼 필요가 있을까.

음악이 좋다고 하면, 악기 사주고

PC 게임이 좋다고 하면, PC 게임 사주고

놀러 가고 싶다면 놀러 가주고

사회적 책임이 덜한 나이일 때, 어디에 속박당하지 않고 자유를 느끼면서 놀게 해주고 싶었다.

 

 

 

2000년, 2010년, 2022년의 직장 생활. 무엇이 다를까?

 

나는 2000년에 가장 Hot했던 IT 회사에 입사했기에 분위기 자유롭게, 적당히 급여 괜찮았고, 상하/위계 질서가 없는 회사에서 일을 시작했다. 그래서 내 개인적으로는 2022년보다는 2000년의 내가 다녔던 W회사가 더 분위기가 자유롭고 출/퇴근 및 업무 시간도 내 마음대로 할 수 있었다. (심지어 내가 입사 1년차인 신입사원이었는데도 눈치주는 사람이 없었다)

다만 사회 전반적인 분위기로 보았을 때, 아래와 같이 차이가 있었던 것 같다.

 

주6일 근무 ㅠㅠ

이거 실화냐? 어떻게 주 6일을 출근할 수 있냐?

(근데 나는 주 1~2일 정도만 출근하고, 나머지는 집에서 근무했기 때문에 주6일이 크게 와닿지 않았다)

 

 

IT는 3D 중에서 극한 직업군 ㅠㅠ

2000년은 아직 IT 개발 인프라, 플랫폼이 별로 없고, 심지어 협업에서 참고할 도서, 웹 검색기도 변변치 않았다.

그런 반면, 중공업 경공업 같은 공장 시스템에 익숙한 경영자가 IT 회사를 경영하면서 업무량으로 압박하는 분위기도 있었다.

이렇다보니 IT 개발자들은 과중한 업무량에 치이고, 밤 11시~새벽 3시 까지 일하는 야근은 일상이었다.

새벽까지 일하다보니, 늦잠을 자게 되고  지각이 잦아지고, 선배와 보스 한테 지각했다고 잔소리 듣고,

애초에 기한내에 할 수 없는 업무량, 업무 난이도 였기 때문에 결국에 프로젝트 완료일에 일을 못 끝내서 또 잔소리 듣고... ㅠㅠ

나쁜 상황이 돌고 돌게 된다.

 

이런 근무 환경이 사회 전반적으로 알려지면서 IT 관련 전공을 하려는 학생이 줄어들고, 대학 입시에서도 홀대 받는 것 같았다.
(참고로, 1990년 초/중반에는 대학교 전공에서 "전자" "컴퓨터" 이런 문구만 들어가도 대입 성적 상위 1~2%의 학생이 몰리는 현상이 있었다. 지금은 입시생들이 이런 과거의 분위기를 못 믿겠지만...ㅠㅠ)

 

 

Stock Option은 유행어처럼 난무했지만, 실제 Stock Option을 행사해서 돈 번 사람은 못 본.... ㅠㅠ

 


회사 생활과 가정 생활의 균형점을 찾기

회사 생활과 가정 생활의 균형점(흔히 말하는 워라밸)을 찾기 위해 노력하지만, 지나온 20년을 뒤돌아보면

직장 생활, 경제 활동(돈 버는 일)에 더 에너지를 많이 쓴 것 같다.

동년배들보다 일찍 진급하고, 연봉 조정을 위한 평가도 매년 꾸준하게 최고 등급(Special Grade)을 받고, 이런 저런 회사의 포상도 대부분 다 받고...  그런데 이렇게 회사 생활, 경제 활동에 집중하면서 가정 구성원에 대해 소홀하지 않았나하는 후회감이 든다.

 

 

 

... 이하, 작성 중 ...

 

 

 

반응형

 


 

내가 자주 사용하는 형태는 아래와 예제와 같고, find 명령에 대한 자세한 내용은 아래 Web Docs를 참고할 것 !!!

 

$ find /proc -maxdepth 2 -name "comm" -print

$ find /proc -maxdepth 2 -name "comm" -exec cat {} \;

$ find . -maxdepth 2 -name "comm" -type f -mmin +1 -print | xargs grep kubelet
./4305/comm:kubelet
$

 

 

find 명령과 xargs 명령을 조합해서 사용하려면 많은 내용을 길게 입력해야 하는데, 아래와 같이 미리 .bashrc 파일에 function으로 등록하면 쉽게 이용할 수 있다.

 

$ cat .bashrc

... 중간 생략 ...

##
## .c 또는 .h 파일에서 특정 문자열을 찾는 함수
##
function find_xargs() {
    find . -name "*\.[ch]" -type f  -print | xargs grep $1
}

... 중간 생략 ...


##
## 위에서 .bashrc 파일에 추가한 내용을 현재 shell 환경에 적용하기
##

$ . .bashrc


## --------------------------------------------------------------

##
## 위에서 작성한 find_xargs 명령을 이용하여 Source code file에서 ip_hdr 함수를 찾는 예제
##

$ find_xargs  ip_hdr

./net/dccp/ipv6.c:		newnp->mcast_hops  = ip_hdr(skb)->ttl;
./net/dccp/ipv4.c:	return secure_dccp_sequence_number(ip_hdr(skb)->daddr,
./net/dccp/ipv4.c:					   ip_hdr(skb)->saddr,
./net/dccp/ipv4.c:	newinet->mc_ttl	   = ip_hdr(skb)->ttl;
./net/dccp/ipv4.c:	const struct iphdr *iph = ip_hdr(skb);
./net/dccp/ipv4.c:	rxiph = ip_hdr(rxskb);
./net/dccp/ipv4.c:	sk_rcv_saddr_set(req_to_sk(req), ip_hdr(skb)->daddr);
./net/dccp/ipv4.c:	sk_daddr_set(req_to_sk(req), ip_hdr(skb)->saddr);
./net/dccp/ipv4.c:	iph = ip_hdr(skb);
./net/sched/act_ipt.c:	iph = ip_hdr(skb);
./net/sched/act_ctinfo.c:		dscp = ipv4_get_dsfield(ip_hdr(skb)) & ~INET_ECN_MASK;
./net/sched/act_ctinfo.c:				ipv4_change_dsfield(ip_hdr(skb),
./net/sched/act_nat.c:	iph = ip_hdr(skb);
./net/sched/act_nat.c:		iph = ip_hdr(skb);
./net/sched/act_ct.c:	iph = ip_hdr(skb);

... 중간 생략 ...

$

 


 

아래 Web docs에 아주 자세한 설명과 예제가 있다.

 

How to Use the Linux xargs Command

 

반응형
작성일: 2024년 12월 17일

 

 

gcc 컴파일 명령어를 사용할 때는 -D 옵션을 이용해서 Source Code 밖에서 상수를 지정할 수 있었다.

그런데, Go Language에도 이런 똑같은 기능이 있을까?

 

답: Go에도 GCC와 똑같은 기능이 있다!!!

 

아래 예제처럼 하면 된다. ^^

 


 

매번 go build 명령을 입력하기 귀찮으니까, 아래처럼 go build 스크립트를 만들자.

$ cat  my_go_build.sh

#!/bin/bash

export MY_APP_VERSION=0.1.0

go build -ldflags "-X main.appVersion=${MY_APP_VERSION} -X 'main.buildDate=$(date +%F) $(date +%T)' -X 'main.devNote=New Feature ABC is added'"

$

 

 

go source code를 작성하자. (아래는 예시를 위해서 간단하게 만든 것이니까, 참고만 할것 !!!)

$ cat main.go

package main

import (
        "fmt"
)

func main() {
    getAppVersion()

	// My Main Routine ...
    fmt.Printf("My Main Routing ...\n")
}

$

 

 `go build -ldflags "-X ... -X ... -X ..."` 이런 식으로 입력한 외부 상수를 go source code 내부에서 참조(reference)할 수 있도록 아래와 같이 변수를 선언하고, 사용하자 !!!

package main

import (
        "fmt"
)

var (
    appVersion string
    buildDate string
    devNote string
)

func getAppVersion() {
    fmt.Printf("App Name   : almighty\n")
    fmt.Printf("Version    : %s\n", appVersion)
    fmt.Printf("Build Date : %s\n", buildDate)
    fmt.Printf("Dev Note   : %s\n", devNote)
}

 

 

위와 같이 go source code가 작성되었다면, 아래와 같이 build하고 실행 바이너리 파일을 실행해보자.

 

$ my_go_build.sh

$ my_example_app

App Name   : almighty
Version    : 0.1.0
Build Date : 2022-07-05 16:18:12
Dev Note   : New Feature ABC is added
My Main Routing ...

$
반응형

Shell script를 작성하다보면, 10 ~ 60초 정도 대기하는 시간에 멀뚱히 터미널을 쳐다보는 것이 지루할 때가 있다.

지루하지 않더라도 터미널에 수십초 동안 아무것도 출력되지 않으면,

"어~ 스크립트가 중간에 hang up 상태로 빠졌나?"

이런 의심을 하게 된다.

이럴 때, 시간이 흘러가는 것처럼 숫자가 올라가거나 내려가거나(count-up, count-down) 하면 좋다.

긴 설명은 필요없고, 아래 script를 활용하면 대기하는 지루함을 줄일 수 있다.

 

##
## NOTE:
##  macOS와 Ubuntu, CentOS의 date 명령에 대한 output format 옵션이 달라서 script가 조금 다르다.
##  


##
## NOTE: Ubuntu, CentOS에서 동작하는 스크립트
##

#!/usr/bin/bash

function countdown(){
   date_start=$((`date +%s` + $1));
   while [ "$date_start" -ge `date +%s` ]; do
     left_time="$(date -u --date @$(($date_start - `date +%s`)) +%M:%S)";
     echo -ne "Countdown  $left_time \r"
     sleep 0.1
   done
}

countdown 5


---


##
## NOTE: macOS에서 동작하는 스크립트
##

#!/opt/homebrew/bin/bash

function countdown(){
   date_start=$((`date +%s` + $1));

   while [ "$date_start" -ge `date +%s` ]; do
     curr_time=$((`date +%s`))

     left_time=$(($date_start - $curr_time))
     echo -ne "Countdown  $left_time \r"
     sleep 0.1
   done
}

countdown 3

 

반응형

 

Kubernetes SRIOV Network Device Plugin에 관해 Code Level 스터디를 하고 싶다면,

아래 2개의 문서를 읽어보라~~~

(지금 하고 있던 업무 끝내고, 빨리 읽고 정리해야겠다 ㅠㅠ)

 

 

 

GitHub - k8snetworkplumbingwg/sriov-network-device-plugin: SRIOV network device plugin for Kubernetes

SRIOV network device plugin for Kubernetes. Contribute to k8snetworkplumbingwg/sriov-network-device-plugin development by creating an account on GitHub.

github.com

 

 

 

GitHub - k8snetworkplumbingwg/sriov-cni: DPDK & SR-IOV CNI plugin

DPDK & SR-IOV CNI plugin. Contribute to k8snetworkplumbingwg/sriov-cni development by creating an account on GitHub.

github.com

 

반응형

아래의 순서로 .gitignore를 설정하고, 적용한다.

 

##
## 아래와 같이 .gitignore 파일에 무시하고 싶은 파일을 추가한다.
##

$ cat .gitignore
go.mod
go.sum
my_app
.gitignore

##
## 반드시 cached file을 삭제한 후에 git commit을 해야 한다.
## 대부분 이 명령을 수행하지 않아서 .gitignore가 동작하지 않는 문제가 있다.
##

$ git rm -r --cached .
$ git add .
$ git commit -m ".gitignore is now working"

'Git' 카테고리의 다른 글

Git 개요 그리고 Git 브랜치 전략 (Branch Strategy)  (0) 2021.06.30
반응형

Kubernetes 기술 문서에 대한 한글화가 참 빠르다.

2018년에 처음 Kubernetes 접할 때와 비교해보면, 4년 사이에 빠르게 한글 문서가 잘 구축되었다.

 

원문(영어 문서)로 읽으면 더 좋겠지만, 시간이 없고 급할 때는 다른 사람이 만들어준 한글 문서가 나의 시간을 많이 아껴준다 :)

 

 

쿠버네티스 문서

쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈소스 컨테이너 오케스트레이션 엔진이다. 오픈소스 프로젝트는 Cloud Native Computing Foundation에서 주관한다.

kubernetes.io

 

반응형

 


작성일: 2023년 10월 15일

 


[ 강의 동영상 ]
계영수 님이 GNS3 강의 동영상을 만든지 4년이 지나서 지금 GNS3 버전과 GUI 구성이 조금 달라서 헷갈릴 수 있지만,
이 동영상이 큰 도움이 된다.

  https://www.youtube.com/playlist?list=PL30o9a_lTg-KN4UmwKj2txuY3Vrd1nMrx

 

 


GNS3 및 CISCO Switch 명령 예제 모음

 

 

테스트할 때마다 사용하는 명령을 명령어 수행 순서대로 기록해보았다.

 

 

CISCO Switch Port에 IP Address 설정하기

##
## CISCO Switch Port에 IP Address 설정하기
## 

R1# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.

R1(config)# interface fastEthernet 0/0

R1(config-if)# ip address 10.1.1.1 255.255.255.0

R1(config-if)# no shutdown 

R1(config-if)# end
*Jul  2 21:14:42.231: %SYS-5-CONFIG_I: Configured from console by console

R1# ping 10.1.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/30/68 ms

R1#

 

 

CISCO Switch Loopback Port에 IP Address 설정하기

R1# configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.

R1(config)# interface loop0
R1(config-if)#
*Jul  3 12:59:03.859: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up

R1(config-if)# ip address 1.1.1.1 255.255.255.255
R1(config-if)# end
R1#
*Jul  3 12:59:45.647: %SYS-5-CONFIG_I: Configured from console by console
R1#

 

 

CISCO Switch에 BGP 설정하기

##
## AS 100을 관리하는 라우터(R1) 설정
##

R1# configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.

R1(config)# router bgp 100
R1(config-router)# neighbor 10.1.1.2 remote-as 200
R1(config-router)# end
R1#
*Jul  3 13:05:03.939: %SYS-5-CONFIG_I: Configured from console by console
R1#


##
## AS 200을 관리하는 라우터(R2) 설정
##

R2# configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.

R2(config)# router bgp 200
R2(config-router)# neighbor 10.1.1.1 remote-as 100
R2(config-router)# end
R2#
*Jul  3 13:07:28.543: %SYS-5-CONFIG_I: Configured from console by console
R2#
*Jul  3 13:07:35.307: %BGP-5-ADJCHANGE: neighbor 10.1.1.1 Up 
R2#

 

 

BGP 설정 내용 확인하기

##
## 간략한 BGP 정보를 보는 명령
##

R1# show ip bgp summary

BGP router identifier 1.1.1.1, local AS number 100
BGP table version is 1, main routing table version 1

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.1.1.2        4          200       7       7        1    0    0 00:02:53        0


##
## 상세한 BGP Neighbor 정보를 보는 명령
##

R1# show ip bgp neighbors 
BGP neighbor is 10.1.1.2,  remote AS 200, external link
  BGP version 4, remote router ID 2.2.2.2
  BGP state = Established, up for 00:05:43   ## <-- state 값을 확인해야 함.
  Last read 00:00:20, last write 00:00:14, hold time is 180, keepalive interval is 60 seconds
  Neighbor sessions:
    1 active, is not multisession capable (disabled)
  Neighbor capabilities:
    Route refresh: advertised and received(new)
    Four-octets ASN Capability: advertised and received
    Address family IPv4 Unicast: advertised and received
    Enhanced Refresh Capability: advertised and received
    Multisession Capability: 
    Stateful switchover support enabled: NO for session 1
  Message statistics:
    InQ depth is 0
    OutQ depth is 0
    
                         Sent       Rcvd
    Opens:                  1          1
    Notifications:          0          0
    Updates:                1          1
    Keepalives:             8          8
    Route Refresh:          0          0
    Total:                 10         10
  Default minimum time between advertisement runs is 30 seconds

 For address family: IPv4 Unicast
  Session: 10.1.1.2
  BGP table version 1, neighbor version 1/0
  Output queue size : 0
  Index 1, Advertise bit 0
  1 update-group member
  Slow-peer detection is disabled
  Slow-peer split-update-group dynamic is disabled
                                 Sent       Rcvd
  Prefix activity:               ----       ----
    Prefixes Current:               0          0
    Prefixes Total:                 0          0
    Implicit Withdraw:              0          0
    Explicit Withdraw:              0          0
    Used as bestpath:             n/a          0
    Used as multipath:            n/a          0

                                   Outbound    Inbound
  Local Policy Denied Prefixes:    --------    -------
    Total:                                0          0
  Number of NLRIs in the update sent: max 0, min 0
  Last detected as dynamic slow peer: never
  Dynamic slow peer recovered: never
  Refresh Epoch: 1
  Last Sent Refresh Start-of-rib: never
  Last Sent Refresh End-of-rib: never
  Last Received Refresh Start-of-rib: never
  Last Received Refresh End-of-rib: never
				       Sent	  Rcvd
	Refresh activity:	       ----	  ----
	  Refresh Start-of-RIB          0          0
	  Refresh End-of-RIB            0          0

  Address tracking is enabled, the RIB does have a route to 10.1.1.2
  Connections established 1; dropped 0
  Last reset never
  Transport(tcp) path-mtu-discovery is enabled
  Graceful-Restart is disabled
Connection state is ESTAB, I/O status: 1, unread input bytes: 0            
Connection is ECN Disabled, Mininum incoming TTL 0, Outgoing TTL 1
Local host: 10.1.1.1, Local port: 37711
Foreign host: 10.1.1.2, Foreign port: 179
Connection tableid (VRF): 0
Maximum output segment queue size: 50

Enqueued packets for retransmit: 0, input: 0  mis-ordered: 0 (0 bytes)

Event Timers (current time is 0x118E84):
Timer          Starts    Wakeups            Next
Retrans            10          0             0x0
TimeWait            0          0             0x0
AckHold             9          6             0x0
SendWnd             0          0             0x0
KeepAlive           0          0             0x0
GiveUp              0          0             0x0
PmtuAger            1          0        0x157854
DeadWait            0          0             0x0
Linger              0          0             0x0
ProcessQ            0          0             0x0

iss: 1109643795  snduna: 1109644028  sndnxt: 1109644028
irs:  864525182  rcvnxt:  864525415

sndwnd:  16152  scale:      0  maxrcvwnd:  16384
rcvwnd:  16152  scale:      0  delrcvwnd:    232
          
SRTT: 737 ms, RTTO: 2506 ms, RTV: 1769 ms, KRTT: 0 ms
minRTT: 48 ms, maxRTT: 1000 ms, ACK hold: 200 ms
Status Flags: active open
Option Flags: nagle, path mtu capable
IP Precedence value : 6

Datagrams (max data segment is 1460 bytes):
Rcvd: 19 (out of order: 0), with data: 10, total data bytes: 232
Sent: 20 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 10, total data bytes: 232

 Packets received in fast path: 0, fast processed: 0, slow path: 0
 fast lock acquisition failures: 0, slow path: 0
TCP Semaphore      0x6AA22B60  FREE 

R1#

 

 

IP Routing Table 정보 조회하기

R1# show ip route 

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      1.0.0.0/32 is subnetted, 1 subnets
C        1.1.1.1 is directly connected, Loopback0
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.1.1.0/24 is directly connected, FastEthernet0/0
L        10.1.1.1/32 is directly connected, FastEthernet0/0

R1#

 

 

BGP 이용하여 Network Route 광고(Advertisement)

##
## R1 라우터가 이웃 라우터에게 Advertisement하기
##

R1# configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.

R1(config)# router bgp 100
R1(config-router)# network 1.1.1.1 mask 255.255.255.255   ## <-- Route 광고하기
R1(config-router)# end
*Jul  3 14:26:39.559: %SYS-5-CONFIG_I: Configured from console by console
R1#


##
## 이웃 라이터(예: R2)에서 수신한 Route Advertisement 정보를 확인
##

R2# show ip bgp summary 
BGP router identifier 2.2.2.2, local AS number 200
BGP table version is 2, main routing table version 2
1 network entries using 148 bytes of memory
1 path entries using 64 bytes of memory
1/1 BGP path/bestpath attribute entries using 136 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 372 total bytes of memory
BGP activity 1/0 prefixes, 1/0 paths, scan interval 60 secs

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.1.1.1        4          100      83      82        2    0    0 01:11:20        1  ## <- 이 값이 1로 변경되었는지 확인
R2#

 

 

BGP Network Route 광고 정보 조회

##
## 라우터 R1에서 BGP 정보 조회
##

R1# show ip bgp
BGP table version is 2, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       0.0.0.0                  0         32768 i
 R1#
 
 
##
## 라우터 R2에서 BGP 정보 조회
##

R2# show ip bgp
BGP table version is 2, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.1/32       10.1.1.1                 0             0 100 i
R2#

 

 

 

 

 

 

 

+ Recent posts