Ref
AWS Direct Connect – DX [https://jayendrapatil.com/tag/dedicated-vs-hosted-connection/]
AWS Direct Connection 비교(Hosted vs Dedicated) [https://blog.naver.com/happy_jhyo/222365872354]
Setting up AWS Direct Connect gateway to route DX traffic to any AWS Region [https://aws.amazon.com/ko/blogs/networking-and-content-delivery/setting-up-aws-direct-connect-gateway-to-route-dx-traffic-to-any-aws-region/]
A Guide to AWS Direct Connect Locations [https://www.megaport.com/blog/guide-to-aws-direct-connect-locations/]
DX Connection 개념 (Hosted vs Dedicated)
Dedicated 방식
- AWS Portal을 통해 신청하는 방식
- AWS Location(가산, 평촌)에 회선을 직접 연결하는 방식
- 1Gbps / 10Gbps 2가지 서비스만 제공
Hosted 방식
- AWS Location에 이미 연결되어 있는 중계 사업자(Service Provider)를 통해 연결하는 방식
Cloudwatch DX - ConnectionState
- Direct Connect 커넥션 구성
- Hosted Connection 타입
- 파트너를 통해 포트를 할당 받은 구성
- DX파트너가 구성한 물리적 커넥션에소 포드를 할당 받은 구성일 경우, 실제 물리적 커넥션은 다운되지 않고, BGP 세션만 다운되기도 한다.
Virtual Interfaced의 BGP 네이버 세션
VIF-BGP 세션 모니터링 가이드 - boto3로 커스텀 메트릭 생성
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "vif",
"Effect": "Allow",
"Action": "directconnect:DescribeVirtualInterfaces",
"Resource": [
"*"
]
}
]
}
import boto3
import datetime
sts = boto3.client('sts')
assume_role = sts.assume_role(
RoleArn ='<Role ARN>'
RoleSessionName = '<아무거나 ex) AssumeRoleSession>')
dx = boto3.client('directconnect',
aws_access_key_id = assume_role['Credentials']['AccessKeyId'],
aws_secret_access_key = assume_role['Credentials']['SecretAccessKey'],
aws_session_token = assume_role['Credentials']['SessionToken'])
cw = boto3.client('cloudwatch')
def put_metirc(value, dimensions):
response = cw.put_metric_data(
Namespace = 'Service-Custom-Metric',
MetricData = [
{
'MetricName' : 'Service-ENV-DX-BGP-STATUS',
'Dimension' : dimensions,
'Timestamp' : datetime.datetime.utcnow(),
'Value' : value,
'Unit': 'Count'
}
]
)
return response
dimensions = [
{
'Name' : 'Service-ENV-DX-BGP-STATUS',
'Value' : ''
}
]
def get_name_and_stat(virtual):
name = virtual['virtualInterfaceName']
stat = virtual['bgpPeers'][0]['bgpStatus']
return name, stat
name_and_stat = []
def lambda_handler(event, context):
vi = dx.describe_virtual_interfaces()
for virtual in vi['virtualInterfaces']:
bgp_name, bgp_stat = get_name_and_stat(virtual)
if bgp_name is not None:
name_and_stat.append((bgp_name, bgp_stat))
for name, stat in name_and_stat:
if stat == 'up':
dimesions[0].update({'Value':name})
put_metric(1, dimensions)
else:
dimensions[0].update({'Value':name})
put_metric(0, dimensions)
VIF-BGP 세션 모니터링 가이드
각 온프렘 네트웍 장비 (라우터)의 Loopback IP를 주기적으로 모니터링하고 패킷 로스가 발생 시 알람을 발생시킬 수 있습니다. 패킷 로스 뿐 아니라 RTT를 주기적으로 모니터링하여 Latency를 모니터링 할 수 있습니다.
Step1) 각 Direct Connect 커넥션의 경로를 모니터링하기 위하여 온프렘 네트웍 장비(라우터)의 Loopback IP를 설정하고 해당 Loopback IP를 AWS DX 피어로 BGP 경로 업데이트하시기바랍니다.
Step2) Debugging tool for network connectivity from Amazon VPC 혹은 CloudWatch Network Monitor 도구를 활용하여 모니터링 Probe를 VPC에 설지합니다. Step1에서 설정한 각 라우터의 Loopback IP를 타겟 IP로 등록합니다. VPC에서 설치된 모니터링 Probe는 타겟 IP로 주기적으로 모니터링 패킷을 전송하여 패킷 로스 및 Latency 측정합니다.
>> AWS Direct Connect monitoring and failover with Anomaly Detection :
https://aws.amazon.com/blogs/networking-and-content-delivery/aws-direct-connect-monitoring-and-failover-with-anomaly-detection/
>> Debugging tool for network connectivity from Amazon VPC :
https://aws.amazon.com/blogs/networking-and-content-delivery/debugging-tool-for-network-connectivity-from-amazon-vpc/
>> Monitor hybrid connectivity with Amazon CloudWatch Network Monitor :
https://aws.amazon.com/blogs/networking-and-content-delivery/monitor-hybrid-connectivity-with-amazon-cloudwatch-network-monitor/
3) 패킷 로스 메트릭을 활용하여 클라우드 와치 메트릭 알람을 생성합니다.
도구 설치 및 알람 설정 내역에 대한 상세는 상기 공유드린 URL의 문서를 통해 확인하실 수 있습니다.