글 작성 시기 Docker 최신 버전 :
글 작성 시기 OVS 최신 버전 :
목표 : DPKD 사용 유무에 따른 OVS의 Throughput 측정
Docker Container(Ubuntu)를 생성하고 OVS(DPDK)의 성능을 측정 하였다.
결과적으로 Container의 설정을 잘못하여 DPDK의 정확한 성능을 측정할 수 없었다.
(추후 포스팅 예정)
1. Container 생성
Docker의 Network설정은 여러가지가 있다.
Docker Bridge를 사용하지 않고 임의로 가상NIC을 만들어야 하기 때문에 net=none 옵션을 사용하였다.
docker run --net=none --name vm -i -t -d --privileged=true ubuntu /bin/bash docker run --net=none --name [Container ID] -i -t -d --privileged=true [사용할 image] /bin/bash
2. Container 내부 IP Forwarding 설정
(Server) docker attach vm (Container) echo net.ipv4.ip_forward=1 > /etc/sysctl.conf (Ubuntu) docker start vm (Ubuntu) docker exec vm sysctl -p
3. 가상 NIC 생성 및 설정
veth-a와 veth-b가 peer이고 veth-c와 veth-d가 peer이므로
아래의 과정 중 veth 생성 과정은 각각 반복하여야 한다.
또한 MAC주소와 IP 충돌도 일어나지 않도록 다르게 설정하여야 한다.
docker inspect -f '{{State.Pid}}' vm pid=3822 echo $pid mkdir -p /var/run/netns ln -s /proc/$pid/ns/net /var/run/netns/$pid
(veth-a 와 veth-b 설정) ip link add veth-a type veth peer name veth-b ovs-vsctl add-port br0 veth-a ip link set veth-a up ovs-vsctl show ip link set veth-b netns $pid ip netns exec $pid ip link set dev veth-b name eth0 ip netns exec $pid ip link set eth0 address 12:34:56:78:9a:bc ip netns exec $pid ip link set eth0 up ip netns exec $pid ip addr add 172.17.42.4/32 dev eth0 ip netns exec $pid ip route add 172.17.42.0/24 via 172.17.42.4
(veth-c 와 veth-d 설정) ip link add veth-c type veth peer name veth-d ovs-vsctl add-port br0 veth-c ip link set veth-c up ovs-vsctl show ip link set veth-d netns $pid ip netns exec $pid ip link set dev veth-d name eth1 ip netns exec $pid ip link set eth1 address 12:34:56:78:9a:de ip netns exec $pid ip link set eth1 up ip netns exec $pid ip addr add 172.17.41.4/32 dev eth1 ip netns exec $pid ip route add 172.17.41.0/24 via 172.17.41.4
4. Flow Rule
OVS에 추가한 veth-a, veth-c를 이용하여 Flow Rule을 내리고 사용한다.
'Dev > Docker' 카테고리의 다른 글
[Docker] 설치 및 콘테이너 생성 (0) | 2017.08.17 |
---|