ADSD - Projeto Medição

Js Lucas

e_erkin_20_1024 <- experimentos %>% 
  select(erkin.20.1024) %>% 
  transmute(medicao = erkin.20.1024, config = "erkin.20.1024")

e_erkin_20_2048 <- experimentos %>% 
  select(erkin.20.2048) %>% 
  transmute(medicao = erkin.20.2048, config = "erkin.20.2048")

e_erkin_50_1024 <- experimentos %>% 
  select(erkin.50.1024) %>% 
  transmute(medicao = erkin.50.1024, config = "erkin.50.1024")

e_erkin_50_2048 <- experimentos %>% 
  select(erkin.50.2048) %>% 
  transmute(medicao = erkin.50.2048, config = "erkin.50.2048")

grouped_erkin_e <- rbind()

e_garcia_20_1024 <- experimentos %>% 
  select(garcia.20.1024) %>% 
  transmute(medicao = garcia.20.1024, config = "garcia.20.1024")

e_garcia_20_2048 <- experimentos %>% 
  select(garcia.20.2048) %>% 
  transmute(medicao = garcia.20.2048, config = "garcia.20.2048")

e_garcia_50_1024 <- experimentos %>% 
  select(garcia.50.1024) %>% 
  transmute(medicao = garcia.50.1024, config = "garcia.50.1024")

e_garcia_50_2048 <- experimentos %>% 
  select(garcia.50.2048) %>% 
  transmute(medicao = garcia.50.2048, config = "garcia.50.2048")

experimentos_agrupados <-
  rbind(e_garcia_20_1024, e_garcia_20_2048, e_garcia_50_1024, e_garcia_50_2048,
        e_erkin_20_1024, e_erkin_20_2048, e_erkin_50_1024, e_erkin_50_2048) %>% 
  group_by(config) %>% 
  summarise(media = mean(medicao))

experimentos_agrupados$protocolo = ifelse(grepl("erkin", experimentos_agrupados$config), "erkin", "garcia")
experimentos_agrupados$chave = ifelse(grepl("1024", experimentos_agrupados$config), 1024, 2048)
experimentos_agrupados$n_medidores = ifelse(grepl("50", experimentos_agrupados$config), 50, 20)

experimentos_agrupados <- experimentos_agrupados %>% 
  select(-c(config)) %>% 
  mutate(n_medidores = as.factor(n_medidores),
         chave = as.factor(chave))

Contexto

Durante o ano de 2016, em uma parceria firmada entre a empresa HP e o laboratório LSD na UFCG, um projeto foi realizado. Este projeto tratou de aspectos de privacidade no desenvolvimento de aplicações de internet das coisas. Surgiu então a necessidade de avaliar diferentes protocolos criptográficos de comunicação entre medidores de energia inteligentes. Por isto, algumas implementações de protocolos encontrados na literatura foram conduzidas.

Nesta investigação comparamos a performance dos diferentes protocolos. Esta comparação é útil para auxiliar na escolha do protocolo utilizado na implementação de novos sistemas.

Planejamento e Medição

Os experimentos foram rodados com variações de 3 fatores, com 2 níveis cada. Foram conduzidas 20 replicações para cada caso.

Fatores e Níveis

  • Protocolo
    • Erkin
    • Garcia
  • N° de medidores no sistema
    • 20
    • 50
  • Tamanho da chave
    • 1024
    • 2048

Os dados

Aqui está um sumário dos dados que coletamos. Os dados completos estão disponíveis em:

https://github.com/jslucassf/privacy-performance-smart-metering/blob/master/experiments_adsd.csv.

experimentos_agrupados
## # A tibble: 8 x 4
##    media protocolo chave n_medidores
##    <dbl> <chr>     <fct> <fct>      
## 1  0.321 erkin     1024  20         
## 2  0.696 erkin     2048  20         
## 3  1.18  erkin     1024  50         
## 4  3.52  erkin     2048  50         
## 5  0.772 garcia    1024  20         
## 6  4.20  garcia    2048  20         
## 7  4.87  garcia    1024  50         
## 8 26.3   garcia    2048  50

Resultados

Vamor agora analisar os efeitos de variar cada um dos fatores.

Protocolo

experimentos_agrupados %>%
  plot_ly(y = ~media, x = ~protocolo, type="scatter", mode="markers", color=~protocolo,
          marker= list(size = 10)) %>% 
  layout(xaxis = list(title = "Protocolo"))
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
media_garcia <- (experimentos_agrupados %>% filter(protocolo=="garcia") %>% select(media))$media %>% mean()
media_erkin <- (experimentos_agrupados %>% filter(protocolo=="erkin") %>% select(media))$media %>% mean()

Ao compararmos os protocolos, a presença de um valor muito alto em Garcia nos leva a crer que o Garcia seja mais lento e de fato este é o caso. Em média, o tempo de execução no protocolo em questão foi de 9.0464055 enquanto que para o protocolo de Erkin o valor foi de 1.4293064.

Número de Medidores

experimentos_agrupados %>%
  plot_ly(y = ~media, x = ~n_medidores, type="scatter", mode="markers", color=~n_medidores,
          marker= list(size = 10)) %>% 
  layout(xaxis = list(title = "Número de medidores no sistema"))
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

Parece intuitivo que o número de medidores aumentaria o tempo de processamento e isto é o que a visualização nos apresenta.

Tamanho da Chave

experimentos_agrupados %>%
  plot_ly(y = ~media, x = ~chave, type="scatter", mode="markers", color=~chave,
          marker= list(size = 10)) %>% 
  layout(xaxis = list(title = "Tamanho da chave"))
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

Mais uma vez, é intuitivo que o tamanho da chave aumenta o tempo de processamento.

Protocolo x Número de Medidores e Tamanho da Chave

Podemos comparar novamente os protocolos, agora levando em consideração as outras duas variáveis.

experimentos_agrupados %>%
  plot_ly(y = ~media, x = ~n_medidores, symbol=~chave, type="scatter", mode="markers", color=~protocolo,
          marker= list(size = 10)) %>% 
  layout(xaxis = list(title = "Protocolo"))
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

Concluímos então que de fato o protocolo Garcia é mais lento. Apesar de constatarmos que o tamanho da chave aumenta o tempo de processamento, mesmo as chaves maiores (2048) no protocolo de Erkin, ainda estão abaixo das chaves menores (1024) no protocolo de Garcia, ou seja, Com chaves grandes, Erkin ainda possui melhor performance que Garcia com chaves pequenas.

Outra coisa que podemos observar, é que provavelmente esta diferença na performance dos dois protocolos é exponencial. Para poucos medidores, a variação existe mas é mínima, entretanto com maior número de medidores a diferença é significativamente maior.