A. BGP 속성
- IGP의 메트릭에 해당하는 것을 BGP에서는 속성이라고 함
- 동일한 IGP가 동작하는 모든 라우터들은 해당 IGP의 메트릭을 모두 알고 있어야 함
- IGP와 달리, BGP가 사용하는 다양한 종류의 메트릭은 모든 BGP 라우터가 반드시 다 알고 구현해야 하는 것은 아님
- BGP는 최적 경로가 가려질 때까지 각 속성을 개별적으로 비교해 내려감 (동시에 다 알고있어야 하는 것은 아님)
B. BGP 속성들의 종류
1) Well-known mandatory
- 모든 BGP 라우터가 지원해야 하고, BGP 라우팅 정보에 반드시 포함되어야만 함
2) Well-known discretionary
- 모든 BGP 라우터가 이 속성을 지원해야 하지만, BGP 라우팅 정보 전송시 반드시 포함될 필요는 없음
3) Optional transitive
- 모든 BGP가 지원할 필요는 없지만, 이 속성을 지원하지 않는 라우터라도 해당 경로를 수용함과 동시에 네이버에게도 넘겨줘야 함
4) Optional nontransitive
- 모든 BGP가 지원할 필요도 없고, 이 속성을 지원하지 않으면 해당 라우팅 정보를 무시하고, 네이버에게도 넘겨주지 않음
C. BGP 경로결정 우선 순위
- IGP는 광고받은 네트워크 중에서 메트릭 값이 가장 작은 경로를 선택하여 라우팅 테이블에 저장함
- BGP는 광고받은 네트워크들의 속성을 혼합하여 하나의 값으로 변환하여 비교하지 않음
대신, 다음과 같은 기준에 의해서 선택 대상인 네트워크들의 우선순위가 가려질 때까지 속성들을 차례로 비교해 나감
- BGP는 넥스트 홉으로 가는 경로를 알고 있고, 동기 문제가 해결된 네트워크에 대해서만 다음과 같이 속성을 비교하여 경로를 결정함
1. 웨이트가 가장 큰 경로
2. 로컬 프레퍼런스가 가장 큰 경로
3. 현재의 라우터가 BGP에 포함시킨 경로 - network나 redistribute를 사용한 경로 > aggregate-address를 사용한 경로
4. AS 경로 길이가 가장 짧은 경로
5. 오리진 코드 비교 - i > e > ?
6. MED가 가장 작은 경로
7. eBGP로 받은 경로
8. BGP 넥스트 홉까지 IGP 메트릭이 가장 작은 경로
9. maximum-paths 명령어로 부하 분산을 하도록 설정되어 있으면, 최대 6개까지의 경로를 모두 저장
10. 비교대상 경로가 모두 외부 경로인 경우, 먼저 광고받은 경로
11. 라우터 ID가 가장 낮은 네이버로부터 수신한 경로 - 루트 리플렉터를 사용하는 경우, 클러스터 리스트 길이가 가장 짧은 경로
12. 루트 리플렉터를 사용하는 경우, 클러스터 리스트 길이가 가장 짧은 경로
13. BGP 설정 시 neighbor 명령어에서 사용한 네이버 IP 주소가 가장 낮은 경로
D. BGP 속성들의 분류
1. ORIGIN (오리진)
- 해당 네트워크를 BGP에 포함시킨 방법을 표시
- IGP, EGP, Incomplete가 있음
- 오리진은 BGP 경로 결정 기준의 하나이며, 다른 조건이 같다면 IGP > EGP > incompete 순으로 결정됨
- Well-known mandatory
1) IGP
- 오리진이 IGP 인 것은 network 명령어를 사용하여 BGP에 포함된 것을 의미함
# IGP로 (network 명령어 이용) R1# show ip bgp BGP table version is 5, local router ID is 2.2.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 *> 2.2.1.0/24 0.0.0.0 0 32768 i *> 2.2.2.0/24 2.2.12.2 0 0 2 i *> 2.2.3.0/24 2.2.13.3 0 0 34 i *> 2.2.4.0/24 2.2.13.3 0 34 i |
2) EGP
- 지금은 사용되지 않는 EGP라는 라우팅 프로토콜을 통해 BGP에 포함된 것을 의미함
3) incomplete
- IGP나 EGP가 아닌 방법으로 BGP에 포함된 것을 말하며, 보통 BGP로 재분배된 네트워크를 의미함
# 재분배 R1(config)# interface loopback 1 R1(config-if)# ip add 201.1.0.1 255.255.255.0 R1(config-if)# exit R1(config)# route-map Loopback1_Only R1(config-route-map)# match interface loopback 1 R1(config-route-map)# exit R1(config)# router bgp 1 R1(config-router)# redistribute connected route-map Loopback1_Only # 확인 R1# show ip bgp BGP table version is 6, local router ID is 2.2.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 *> 2.2.1.0/24 0.0.0.0 0 32768 i *> 2.2.2.0/24 2.2.12.2 0 0 2 i *> 2.2.3.0/24 2.2.13.3 0 0 34 i *> 2.2.4.0/24 2.2.13.3 0 34 i *> 201.1.0.0 0.0.0.0 0 32768 ? |
4) 기타
- 축약된 경로의 오리진은 축약 전의 상세 네트워크 중에서 가장 높은 순위의 것을 취함
- 오리진이 각각 IGP와 incoomplete인 네트워크를 축약하면 축약 네트워크의 오리진은 IGP가 됨
# 네트워크 축약 R1# conf t R1(config)# interfface lo 2 R1(conifg-if)# ip addr 201.1.1.1 255.255.255.0 R1(config-if)# router bgp 1 R1(config-router)# aggregate-address 201.1.0.0 255.255.254.0 # 확인 R1#show ip bgp BGP table version is 8, local router ID is 2.2.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 (생략) *> 201.1.0.0 0.0.0.0 0 32768 ? *> 201.1.0.0/23 0.0.0.0 32768 i *> 201.1.1.0 0.0.0.0 0 32768 i |
2. AS PATH (AS 경로)
- AS 경로는 해당 네트워크까지 가는 경로상에 있는 AS의 번호들을 기록해 놓은 속성
- BGP에서 AS 경로 속성의 중요한 역할 중의 하나는 라우팅 루프를 방지하는 것임
- eBGP 네이버에게서 라우팅 정보를 수신한 BGP 라우터는 AS경로를 확인하고, 자신이 속한 AS 번호가 이미 포함되어 있으면
루프가 발생했음을 의미하므로 버림
- BGP의 경로결정 과정에서 다른 조건이 같다면 AS 경로의 길이가 짧은 경로가 선택됨
- AS 세트와 AS 시퀀스 두 가지가 있음
1) AS 시퀀스
- AS 시퀀스는 해당 네트워크가 소속된 AS 번호가 가장 오른쪽에 기록되고, 현재의 AS와 인접한 AS 번호가 가장 왼쪽에 기록
- 2.2.2.0 /24 네트워크가 AS 1과 AS 34를 경유할 경우, AS 시퀀스는 1 2로 표시됨
- AS를 빠져나올 때 AS 경로가 추가됨
- 동일한 AS 내에서는 AS번호가 추가되지 않음
# AS 시퀀스 예시 R4# show ip bgp BGP table version is 9, local router ID is 2.2.4.4 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 *>i 2.2.1.0/24 2.2.13.1 0 100 0 1 i *>i 2.2.2.0/24 2.2.13.1 0 100 0 1 2 i r>i 2.2.3.0/24 2.2.3.3 0 100 0 i *> 2.2.4.0/24 0.0.0.0 0 32768 i *>i 201.1.0.0 2.2.13.1 0 100 0 1 ? *>i 201.1.1.0 2.2.13.1 0 100 0 1 i |
2) AS 세트
- AS 세트는 AS번호를 순서 없이 기록한 것을 말함
- 보통 축약 네트워크에 사용됨
- AS 경로에 축약되기 전의 상세 네트워크가 통과해 온 AS번호들이 순서없이 기록되어 있음
- AS 세트는 괄호 안에 표시됨
- R3에서 다음의 네트워크를 축약하는 것을 가정함 (201.1.0.0 /22)
① R1 : 201.1.0.0 , 201.1.1.0
② R2 : 201.1.2.0 , 201.1.3.0
# AS 세트 예시 R2(config)# int lo 1 R2(config-if)# ip add 201.1.2.1 255.255.255.0 R2(config-if)# ip add 201.1.3.1 255.255.255.0 secondary R2(config-if)# router bgp 2 R2(config-if)# network 201.1.2.0 R2(config-if)# network 201.1.3.0 ※ R1은 기 설정되어 있음 R3(config)# router bgp 34 R3(config-router)# aggregate-address 201.1.0.0 255.255.252.0 as-set # 확인 R4# show ip bgp BGP table version is 19, local router ID is 2.2.4.4 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 *>i 2.2.1.0/24 2.2.13.1 0 100 0 1 i *>i 2.2.2.0/24 2.2.13.1 0 100 0 1 2 i r>i 2.2.3.0/24 2.2.3.3 0 100 0 i *> 2.2.4.0/24 0.0.0.0 0 32768 i *>i 201.1.0.0/22 2.2.3.3 0 100 0 {1,2} i *>i 201.1.1.0 2.2.13.1 0 100 0 1 i *>i 201.1.2.0 2.2.13.1 0 100 0 1 2 i *>i 201.1.3.0 2.2.13.1 0 100 0 1 2 i |
3. Next hop (넥스트 홉)
- 해당 네트워크로 가는 넥스트 홉을 표시함
- 라우터 자신이 BGP에 포함시킨 네트워크의 넥스트 홉 IP는 0.0.0.0으로 표시함
- Well-known mandatory
# 확인 R4# show ip bgp BGP table version is 19, local router ID is 2.2.4.4 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 *>i 2.2.1.0/24 2.2.13.1 0 100 0 1 i *>i 2.2.2.0/24 2.2.13.1 0 100 0 1 2 i r>i 2.2.3.0/24 2.2.3.3 0 100 0 i *> 2.2.4.0/24 0.0.0.0 0 32768 i *>i 201.1.0.0/22 2.2.3.3 0 100 0 {1,2} i *>i 201.1.1.0 2.2.13.1 0 100 0 1 i *>i 201.1.2.0 2.2.13.1 0 100 0 1 2 i *>i 201.1.3.0 2.2.13.1 0 100 0 1 2 i |
4. MED
- Multi-exit discriminator
- 인접 AS의 라우팅 결정에 영향을 미쳐서, 인접 AS에서 입력되는 트래픽의 입력 경로를 지정할 때 사용되는 옵션
- BGP 경로 결정 시 다른 조건이 같다면, MED 값이 낮은 것을 선택함
- MED를 BGP의 메트릭이라고도 부름
- MED 값의 결정 및 전송 방법
1) iBGP 네이버간에는 MED 값이 변경 없이 전송됨
2) eBGP 네이버로 전송할 때는 다음과 같이 동작함
+ iBGP 네이버에게서 수신한 MED 값은 무시하고, 전송하지 않음
+ 자신이 BGP에 포함시킨 네트워크의 MED 값은 전송함
이때의 MED 값은 라우팅 테이블상의 해당 네트워크 메트릭 값이 사용됨
+ 위의 항목들과 무관하게 루트맵을 사용하여 eBGP에게 전송하는 네트워크의 MED 값을 변경시킬 수 있음
- R3에서는 2.2.3.0/24 뿐만 아니라 2.2.4.0/24도 광고해줌
- R4에서는 2.2.4.0/24 뿐만 아니라 2.2.3.0/24도 광고해줌
- R3에서 R1으로 라우팅 정보를 전송할 때, 2.2.3.0 네트워크는 자신이 만들었으므로 MED값 0으로 전송함
- R4에서는 RIP을 통해 받았으므로, Cost 값이 1임
따라서 R2에게 라우팅 정보를 전송할 때, 2.2.3.0 네트워크는 MED 값이 1이라고 전송함
- R1과 R2 사이에서 2.2.3.0/24 네트워크에 대한 MED 값을 서로 교환함
- R1은 2.2.3.0/24 네트워크의 MED값이 0이라고 전송함
- R2는 이것을 수신하고 MED값을 비교하여, MED 값이 낮은 R1이 우선한다는 것을 알게됨
- R2가 R1에게 자신의 MED 값을 전송한 경우라면, 취소 메시지를 보내고 전송전이면 MED 값을 R1에게 전송하지 않음
- 이후 R1이나 R2가 2.2.3.0 네트워크가 목적지인 IP패킷을 수신하면, R1,R2는 R1-R3간의 링크를 통해 AS34로 전송함
# 확인 R2# show ip bgp 2.2.3.0 BGP routing table entry for 2.2.3.0/24, version 6 Paths: (2 available, best #2, table default) Advertised to update-groups: 3 Refresh Epoch 1 34 2.2.13.3 (inaccessible) from 2.2.1.1 (2.2.1.1) Origin IGP, metric 0, localpref 100, valid, internal, best rx pathid: 0, tx pathid: 0 Refresh Epoch 1 34 2.2.24.4 from 2.2.24.4 (2.2.4.4) Origin IGP, metric 1, localpref 100, valid, external rx pathid: 0, tx pathid: 0x0 |
1) 최적 출구 라우팅 (Best exit routing)
- 인접 AS와 연결되는 라우터에서 직접 BGP에 포함시킨 네트워크는, 현재 AS에서 각 네트워크의 IGP 메트릭이 MED값으로 변환되어 인접 AS로 전송됨
- 따라서, 현재의 BGP 라우터에서 멀리 떨어진 네트워크의 MED 값은 크고, 가까운 네트워크의 MED 값은 작음
- 동일 네트워크를 모든 경계 라우터에서 중복 지정하면 최적 출구 라우팅이 일어남
- 만약 AS 12가 규모가 큰 ISP라면 AS 34의 입장에서는 내부 링크의 사용을 최소화시키면서, R1-R2간의 고속 회선을 사용할 수 있어 네트워크 성능 향상에 도움이 되어 아주 좋음
- 이와 같이 ISP가 MED 값을 사용하여 다른 AS를 위한 최선의 라우팅을 한 후에 트래픽을 넘기는 것을 최적 출구 라우팅이다.
- 외부 AS와 연결되는 모든 BGP 라우터에서 특정 네트워크나 전체 네트워크를 BGP에 포함시키면 됨
2) 근접 출구 라우팅 (Closet exit routing)
- eBGP 네이버로 MED 값을 전송할 때, iBGP 네이버에게서 수신한 MED 값은 무시하고 전송하지 않으며,
수신한 라우팅 정보에 MED 값이 없으면 0으로 간주함
- 동일 AS에 속한 네트워크를 하나의 라우터에서만 BGP에 포함시키면, 이를 수신한 iBGP 네이버들은 MED 값을 무시하고,
eBGP에게 전송하지 않아 결과적으로 상대 AS에서의 MED 값이 0이 됨
- 핫 포테이토 라우팅이라고도 함 (hot potato routing)
- 만약 R3-R4간의 링크가 고속이고, R1-R3 및 R2-R4간의 속도가 비슷하다면 이 방식도 적용할 만 함
5. Local preference
- AS 외부로 가는 경로를 결정할 때 사용됨
- MED의 개념과는 반대로, 인접 AS로 나가는 경로를 조정할 때 사용함
- 로컬 프레퍼런스는 iBGP 피어 간에만 전달되며, AS 외부로는 전송되지 않음
- MED와 달리 로컬 프레퍼런스는 값이 높은 것이 우선함
- 디폴트 값은 100 임
# 설정 R3(config)# route-map Higher_Preference R3(config-route-map)# set local-preference 1000 R3(config-route-map)# exit R3(config)# router bgp 34 R3(config-router)# neighbor 2.2.13.1 route-map Higher_Preference in |
- R3에 루트맵을 적용하여 R1으로부터 수신하는 네트워크에 대한 로컬 프레퍼런스 값을 1000으로 설정함
- R4는 R2에게서 2.2.2.0 네트워크에 대한 라우팅 정보를 수신하면서 별도의 로컬 프레퍼런스 값을 지정하지 않음
- R3는 로컬 프레퍼런스 값이 1000으로 설정된 2.2.2.0 네트워크에 대한 라우팅 정보를 iBGP 네이버인 R4에게 전송함
- R4는 R3가 우선한다는 것을 알게됨
- 이후 R3와 R4는 2.2.2.0 네트워크에 대해 모두 R1-R3 구간을 거쳐 송신함 (로컬 프레퍼런스에 의해 출력 경로가 조정됨)
6. Atomic aggregate (아토믹 애그리기트)
- 축약으로 인하여 원래 가지고 있던 AS 경로 정보가 없어졌을 수도 있음을 표시할 때 사용
- 이 속성을 가진 네트워크는 다시 상세 네트워크로 분할해서는 안 됨
- 만약 상세 네트워크로 분할하면, 축약되기 전의 동일한 상세 네트워크와 혼동되어 제대로 라우팅 되지 않음
- 예시로 R1에서 201.1.16.1, 201.1.17.1, 201.1.18.1, 201.1.19.1 네트워크를 loopback 1에 설정하고 BGP에서 광고해줌
그 후에 BGP에서 201.1.16.0 255.255.252.0 으로 축약함 (aggregate-address)
# R4 R4#show ip bgp 201.1.16.0 255.255.252.0 BGP routing table entry for 201.1.16.0/22, version 11 Paths: (2 available, best #2, table default) Advertised to update-groups: 2 Refresh Epoch 1 12, (aggregated by 12 2.2.1.1) 2.2.24.2 from 2.2.24.2 (2.2.2.2) Origin IGP, localpref 100, valid, external, atomic-aggregate rx pathid: 0, tx pathid: 0 Refresh Epoch 1 12, (aggregated by 12 2.2.1.1) 2.2.13.1 (metric 1) from 2.2.3.3 (2.2.3.3) Origin IGP, metric 0, localpref 1000, valid, internal, atomic-aggregate, best rx pathid: 0, tx pathid: 0x0 |
- R3에서 축약할 때, as-set 옵션을 사용하여 상세 네트워크들이 거쳐온 AS 번호 정보를 가지고 있게 하면, 아토믹 애그리키트 속성이 생성되지 않음
7. Aggregator (애그리게이터)
- 축약된 네트워크에 표시하는 속성
- 해당 네트워크가 축약된 AS의 번호와 축약한 라우터의 라우터 ID로 표시함
- 다음의 예를 보면, 해당 네트워크가 AS 12에서 축약되었으며, 축약을 한 라우터의 라우터 ID는 2.2.3.3이라는 것을 표시함
# R4 R4#show ip bgp 201.1.16.0 255.255.252.0 BGP routing table entry for 201.1.16.0/22, version 12 Paths: (2 available, best #2, table default) Advertised to update-groups: 2 Refresh Epoch 1 12, (aggregated by 12 2.2.1.1) 2.2.24.2 from 2.2.24.2 (2.2.2.2) Origin IGP, localpref 100, valid, external, atomic-aggregate rx pathid: 0, tx pathid: 0 Refresh Epoch 1 12, (aggregated by 34 2.2.3.3) 2.2.3.3 (metric 1) from 2.2.3.3 (2.2.3.3) Origin IGP, metric 0, localpref 1000, valid, internal, best rx pathid: 0, tx pathid: 0x0 |
8. Community (커뮤니티)
- 4바이트의 값을 가지는 옵셔널 트랜지티브 속성
- 네트워크를 특정 그룹으로 묶어서 라우팅 정책 설정을 쉽게 해 줌
- 1 ~ 4294967295 사이의 숫자를 사용하거나, as:nn 형식으로 사용할 수 있음 ( aa : AS번호 / nn : 커뮤니티 번호)
- 커뮤니티를 지정할 때는 커뮤니티 이름, 16진수, 10진수, aa:nn 중 어떤 양식을 사용해도 무방함
- 커뮤니티를 aa:nn 양식으로 표시하면 이해하기 쉬움 (ip bgp-community new-format 입력)
- 커뮤니티 번호가 미리 정해진 것을 Well-known community라고 함
1) no-export (0xFFFFFF01) : 라우팅 정보를 수신한 AS 이외의 다른 AS로 전송되어서는 안 됨
2) no-advertise (0xFFFFFF02) : 광고받은 라우터 이외의 다른 라우터로 전송되어서는 안 됨
3) local-AS (0xFFFFFF03) : 컨페더레이션 내의 특정 서브 AS 외부로 전송되어서는 안 됨
9. Originator ID (오리지내이터 ID)
- 루트 리플렉터가 만드는 옵셔널 논 트랜지티브 속성
- 현재의 AS에서 특정 경로를 BGP에 포함시킨 라우터의 라우터 ID를 의미함
- 이 속성은 해당 AS 내부에서만 사용됨
- 오리지내이터 ID는 클러스터 내부에서 오리지내이터가 사용하는 라우팅 루프 방지 대책임
- 광고받은 특정 경로의 오리지내이터 ID가 자시 자신이면 해당 라우터는 이를 무시함
10. Cluster list (클러스터 리스트)
- 옵셔널 논 트랜지티브 속성
- 특정 경로가 통과해 온 클러스터 ID를 나열한 것
- 클러스터 리스트는 AS 내부에서 루트 리플렉터가 라우팅 루프를 방지할 때 사용함
- 루트 리플렉터는 iBGP로 수신한 정보를 iBGP 네이버에게 광고할 때는 클러스트 ID를 첨부함
- 만약 클러스터 외부에서 받은 광고에 자신이 속한 클러스터의 ID가 포함되어 있다면 라우팅 루프가 발생한 것이므로 무시함
11. Weight (웨이트)
- 웨이트는 BGP 속성은 아니지만 시스코 라우터에서 경로 결정을 할 때 속성과 같이 중요하게 사용됨
- 웨이트는 해당 라우터에서만 의미를 가지며, 다른 네이버에게 전송되지 않는 값
- 시스코 라우터가 BGP 경로를 선택할 때 웨이트 값이 높은 경로가 가장 우선함
- 로컬 프레퍼런스와 같이 외부로 가는 경로를 결정할 때 사용됨 (차이점은 다른 BGP 네이버게 직접적인 영향을 주지 않음)
- 웨이트는 다른 라우터의 라우팅 결정에는 영향을 미치지 않으면서, 자신만의 외부 경로를 지정하기 위하여 사용됨
- 기본값은 32768이고, 다른 라우터에게서 전송받은 네트워크는 0 임
- 자신에게 직접 접속된 네트워크라도 다른 라우터가 재분해 시킨 것을 다시 받으면 0 임
- 다른 라우터에 접속되어 있는 네트워크를 IGP를 통해 광고받은 후, 자신이 BGP 프로세스에 넣은 네트워크는 웨이트 값이 32768로 설정됨
[Tool] Camunda Modeler - BPMN (비즈니스 프로세스 모델 및 표기법)
[금융보안] 안전한 소프트웨어를 위한 시큐어코딩의 이해 - 시큐어코딩, SQL인젝션, URL파라미터 조작, 보안취약점, 보안약점, COQ절감, 시큐어소프트웨어
[CCNA] OSPF - 동작 과정, 패킷 종류, 구성법, 검증, 인접성, DR&BDR